From b10de56a7562e9ba3094c2b478bf2cf6cc0d8a0a Mon Sep 17 00:00:00 2001 From: kikashy Date: Mon, 26 Oct 2026 17:33:42 -0400 Subject: [PATCH 01/11] Add opt-in retained-column preparation and custody Signed-off-by: kikashy --- cmd/jpack-runner/main.go | 19 +- cmd/jpack-runner/verify_preparation.go | 15 +- docs/design/retained-columns-draft.md | 225 + internal/retainedcolumns/convert.go | 199 + internal/retainedcolumns/corpus_test.go | 328 + internal/retainedcolumns/diagnostics_test.go | 62 + internal/retainedcolumns/doc.go | 15 + internal/retainedcolumns/frame.go | 195 + internal/retainedcolumns/json.go | 189 + internal/retainedcolumns/lineage.go | 165 + internal/retainedcolumns/number.go | 143 + internal/retainedcolumns/number_test.go | 80 + internal/retainedcolumns/plan.go | 99 + internal/retainedcolumns/reference_test.go | 171 + internal/retainedcolumns/testdata/README.md | 24 + internal/retainedcolumns/testdata/cases.json | 995 +++ .../testdata/reference-cases.json | 4417 ++++++++++ .../testdata/reference-contract.schema.json | 1305 +++ internal/retainedcolumns/validation_test.go | 422 + internal/runner/audit_bytes.go | 14 +- internal/runner/audit_bytes_test.go | 4 +- internal/runner/automatic_inputs.go | 33 +- internal/runner/background.go | 10 +- internal/runner/binding_test.go | 4 +- internal/runner/column_carrier_v1.go | 194 + internal/runner/column_carrier_v1_producer.go | 343 + .../runner/column_carrier_v1_producer_test.go | 590 ++ internal/runner/column_carrier_v1_test.go | 95 + internal/runner/column_frame_v1.go | 53 + internal/runner/column_frame_v1_case.go | 102 + internal/runner/column_limits_v1.go | 68 + internal/runner/column_read_v1.go | 259 + internal/runner/column_read_v1_reference.go | 28 + .../runner/column_read_v1_reference_test.go | 563 ++ internal/runner/column_read_v1_test.go | 175 + internal/runner/column_role_v1.go | 385 + internal/runner/column_role_v1_bounds_test.go | 316 + .../runner/column_role_v1_capabilities.go | 226 + .../runner/column_role_v1_lifecycle_test.go | 254 + internal/runner/column_role_v1_test.go | 422 + internal/runner/dialect_artifact.go | 11 +- internal/runner/dialect_v3.go | 17 +- internal/runner/dialect_v3_test.go | 8 +- internal/runner/http.go | 35 +- internal/runner/mapping_v2.go | 119 +- .../runner/mapping_v2_calculation_test.go | 14 +- internal/runner/mapping_v2_export.go | 29 +- internal/runner/mapping_v2_freshness_test.go | 8 +- .../mapping_v2_localfile_params_test.go | 2 +- internal/runner/mapping_v2_next.go | 15 +- internal/runner/mapping_v2_next_test.go | 2 +- internal/runner/mapping_v2_proof.go | 16 +- internal/runner/mapping_v2_sessions_test.go | 4 +- internal/runner/mapping_v2_test.go | 16 +- internal/runner/mapping_v2_types.go | 50 +- internal/runner/mapping_v2_unsigned_test.go | 4 +- internal/runner/mapping_v2_validate.go | 18 +- internal/runner/model.go | 3 + internal/runner/preparation.go | 47 +- .../runner/preparation_integration_test.go | 2 +- internal/runner/preparation_test.go | 2 +- internal/runner/preparation_verify_form.go | 20 +- .../runner/preparation_verify_profiles.go | 15 +- internal/runner/profile_registry_test.go | 2 +- internal/runner/profile_set_aside_test.go | 2 +- .../runner/record_delivery_contract_test.go | 2 +- internal/runner/research_plans_test.go | 4 +- internal/runner/runtime.go | 15 +- internal/runner/source_inputs.go | 35 +- internal/runner/source_inputs_test.go | 6 +- internal/runner/source_worker.go | 57 +- internal/runner/store_contract.go | 40 + internal/runner/store_memory_test.go | 12 + internal/runner/store_sqlite.go | 12 + .../retained-column-producer-draft/cases.json | 22 + .../schema.json | 25 + internal/runner/verify_disposition_test.go | 6 +- internal/runner/verify_preparation.go | 67 +- internal/runner/workflow_attempt.go | 6 +- internal/runner/workflow_checkpoint.go | 4 +- internal/runner/workflow_read_artifacts.go | 2 +- internal/runner/workflow_read_identity.go | 3 +- openapi.json | 7526 ++++++++++------- vectors/retained-column-selection.json | 581 ++ 84 files changed, 18849 insertions(+), 3243 deletions(-) create mode 100644 docs/design/retained-columns-draft.md create mode 100644 internal/retainedcolumns/convert.go create mode 100644 internal/retainedcolumns/corpus_test.go create mode 100644 internal/retainedcolumns/diagnostics_test.go create mode 100644 internal/retainedcolumns/doc.go create mode 100644 internal/retainedcolumns/frame.go create mode 100644 internal/retainedcolumns/json.go create mode 100644 internal/retainedcolumns/lineage.go create mode 100644 internal/retainedcolumns/number.go create mode 100644 internal/retainedcolumns/number_test.go create mode 100644 internal/retainedcolumns/plan.go create mode 100644 internal/retainedcolumns/reference_test.go create mode 100644 internal/retainedcolumns/testdata/README.md create mode 100644 internal/retainedcolumns/testdata/cases.json create mode 100644 internal/retainedcolumns/testdata/reference-cases.json create mode 100644 internal/retainedcolumns/testdata/reference-contract.schema.json create mode 100644 internal/retainedcolumns/validation_test.go create mode 100644 internal/runner/column_carrier_v1.go create mode 100644 internal/runner/column_carrier_v1_producer.go create mode 100644 internal/runner/column_carrier_v1_producer_test.go create mode 100644 internal/runner/column_carrier_v1_test.go create mode 100644 internal/runner/column_frame_v1.go create mode 100644 internal/runner/column_frame_v1_case.go create mode 100644 internal/runner/column_limits_v1.go create mode 100644 internal/runner/column_read_v1.go create mode 100644 internal/runner/column_read_v1_reference.go create mode 100644 internal/runner/column_read_v1_reference_test.go create mode 100644 internal/runner/column_read_v1_test.go create mode 100644 internal/runner/column_role_v1.go create mode 100644 internal/runner/column_role_v1_bounds_test.go create mode 100644 internal/runner/column_role_v1_capabilities.go create mode 100644 internal/runner/column_role_v1_lifecycle_test.go create mode 100644 internal/runner/column_role_v1_test.go create mode 100644 internal/runner/testdata/retained-column-producer-draft/cases.json create mode 100644 internal/runner/testdata/retained-column-producer-draft/schema.json create mode 100644 vectors/retained-column-selection.json diff --git a/cmd/jpack-runner/main.go b/cmd/jpack-runner/main.go index 7a152e7..cccc942 100644 --- a/cmd/jpack-runner/main.go +++ b/cmd/jpack-runner/main.go @@ -205,6 +205,7 @@ func verifyRun(args []string, stdout, stderr io.Writer) error { fmt.Fprintln(stderr, verificationCoverage) flags.PrintDefaults() } + conversionText := flags.String("conversion-contract", "", "optional: exact installed retained-column selector in canonical base64url") file := flags.String("file", "", "retained verification export") profilesPath := flags.String("profiles", "", "independently trusted input profiles JSON") release := flags.String("release-digest", "", "independently trusted frozen release digest") @@ -230,11 +231,23 @@ func verifyRun(args []string, stdout, stderr io.Writer) error { } // A version-3, 4 or 5 export may exceed 8 MiB by the record's bytes, the // chain entry and the signature sidecar it carries. - raw, err := readLimit(*file, runner.MaxExportSize) + selection, err := runner.ParseConversionSelector(*conversionText, "preparation-verification") if err != nil { return err } - p, err := readLimit(*profilesPath, 8<<20) + exportLimit, err := runner.ConversionExportLimit(selection) + if err != nil { + return err + } + raw, err := readLimit(*file, exportLimit) + if err != nil { + return err + } + profilesLimit := 8 << 20 + if selection != nil { + profilesLimit = 80 << 10 + } + p, err := readLimit(*profilesPath, profilesLimit) if err != nil { return err } @@ -242,7 +255,7 @@ func verifyRun(args []string, stdout, stderr io.Writer) error { if err != nil { return err } - verified, err := runner.VerifyInputs(raw, profiles, *release) + verified, err := runner.VerifyInputs(raw, profiles, *release, selection) // A retained disposition that differs from the audit record is a finding // beside the preparation's verification, which reads nothing of the // disposition: when the preparation verified, its checked report is kept diff --git a/cmd/jpack-runner/verify_preparation.go b/cmd/jpack-runner/verify_preparation.go index 80b99f5..e1c49db 100644 --- a/cmd/jpack-runner/verify_preparation.go +++ b/cmd/jpack-runner/verify_preparation.go @@ -62,6 +62,7 @@ func verifyPreparation(args []string, stdout, stderr io.Writer) int { fmt.Fprint(stderr, verifyPreparationUsage) flags.PrintDefaults() } + conversionText := flags.String("conversion-contract", "", "optional: exact installed retained-column selector in canonical base64url") dialect := flags.String("dialect", "", "the dialect document: bound, or, with --binding, published with unbound sources, which the binding document binds as Runner's import step does (spec/dialect.md §4.4)") unbound := flags.String("unbound", "", "the published dialect, with unbound sources, which --binding binds: --dialect with --binding, named so") binding := flags.String("binding", "", "the binding document of a dialect with unbound sources") @@ -109,7 +110,15 @@ func verifyPreparation(args []string, stdout, stderr io.Writer) int { if given["unbound"] { dialectPath = *unbound } - fixture := runner.PreparationFixture{} + selection, err := runner.ParseConversionSelector(*conversionText, "document-validation", "preview", "preparation", "preparation-verification") + if err != nil { + return couldNot("%v", err) + } + fixture := runner.PreparationFixture{ConversionContract: selection} + inputCap := int64(preparationInputCap) + if selection != nil { + inputCap = 16<<20 + 1 + } for _, file := range []struct { path string into *[]byte @@ -125,7 +134,7 @@ func verifyPreparation(args []string, stdout, stderr io.Writer) int { if !file.given { continue } - b, err := readAtMost(file.path, preparationInputCap) + b, err := readAtMost(file.path, inputCap) if err != nil { return couldNot("%v", err) } @@ -133,7 +142,7 @@ func verifyPreparation(args []string, stdout, stderr io.Writer) int { } // The pin, before anything is read: a precondition, as a file the // command can open is, and no reading of §11's (runner.PreparationPin). - if err := runner.PreparationPin(fixture.Preparation, *preparationDigest); err != nil { + if err := runner.PreparationPin(fixture.Preparation, *preparationDigest, selection); err != nil { return couldNot("%v", err) } report := runner.VerifyPreparation(fixture) diff --git a/docs/design/retained-columns-draft.md b/docs/design/retained-columns-draft.md new file mode 100644 index 0000000..bd73f94 --- /dev/null +++ b/docs/design/retained-columns-draft.md @@ -0,0 +1,225 @@ +# Retained columns: intermediate Draft integration + +This is an experimental dependency slice for Agent #171 and Draft RFC0029. +The pure conversion foundation retains its original `dd2cc944` corpus and focused +evidence. Generated consumer integration follows the reviewed Draft inventory +amendment merged in Spec `be16a0f427c881cc7428ad0ceedb7ed4a8511d6c` (tree +`00a7e3eeb8a7b3eea5ce84f0f7c97f345d193646`, schema +`d402d26ed35f9cd8a3ab5f8a0a8288d222742d1742c00ebee47d81dc4766d725`, corpus +`395381002de6f50793d4d484c48ec2fc8eb4ed34d55afcf91e1b47b14e79c10e`). +The Draft is not adopted. The earlier unselected slice advertised no public `retained-column/1` +capability. The scoped experimental Base adapter is described below; Extended +Runner remains unsupported. Old foundation corpus coverage is not a claim +that it executed the amended producer probes. + +A dialect case fact can add a closed `conversion` leaf; case evidence can add a +closed `availability` leaf. The leaves enter the dialect and read digests. +An absent profile on ordinary mappings retains historical encoding and limits; `extended` refuses +with `profile-unsupported`. Integer 2/3 and named 2.0.0/3.0.0 formats retain +their original family and identity. + +```json +{"target":"/eligible","source":"/retained","conversion":{"contractVersion":"1","column":"Eligible","kind":"boolean","trueValue":"YES","falseValue":"NO"}} +``` + +The existing `POST /v1/inputs/next` preparation path derives converted values +from the retained frame. Case source context establishes asserted classification; +caller `origin` supplies no generated authority. Generated case frames refuse. +Text, decimal, number, boolean, research-value and availability use the same +pure interpreter. Research-value needs a generated original typed declaration. +Issues and noncanonical candidates emit no successful preparation or evaluation. +Missing/blank/null/unavailable values retain distinct transformation states. + +Generated conversion requires explicit `profile:"base"`, an operation bound by +profile ID and complete profile digest, and a trusted host InputProfile annotation +`retainedColumnProducer:{contractVersion:"1",grammar:"desk-reviewed-input/1"}`. +The trusted profile must be generated/MCP, source `desk-inputs`, endpoint +`desk-local:reviewed-inputs`, only tool `read_reviewed_input`, and exact +`jpack-desk/reviewed-input` adapter version `2` with the independently trusted +digest. Adapter version 1 is unsupported for this grammar. These are host pins, +not request-provided trust objects. A wrong pin or source is refused before any +acquisition is planned. Unwrap and calculation bindings cannot select this path. +Converted leaves select exactly `/retained` in the closed carrier. + +The carrier is exactly `contractVersion`, `originalSnapshotJson`, +`originalSnapshotSha256`, and `retained`. Runner verifies the existing real +receipt signature, profile, request commitment, source/adapter/endpoint and +freshness checks. The signature domain remains the canonical result. It then +checks the full snapshot/frame relation from the reviewed Draft: complete +ordered original declaration inventory (including unselected fields), only +JSON whitespace removed from raw declaration tokens outside strings; full +unfiltered `record.values`; all original typed field statuses/raw presence and +tokens; and the exact original run/recipe-version relation. Filtered top-level +snapshot values cannot substitute. Other original snapshot members remain +retained, including historical escaped lone surrogates; decoded duplicate names +are rejected throughout. No original byte or Unicode normalization is applied. + +Both frame revisions equal the domain-separated SHA256 over the exact validated +original run ID and positive safe literal recipe version, always 71 ASCII bytes. +The current root qualification revision cannot replace the original record/run +revision. Revision identity is not authority. Production adapter v2 must actually +load the original document history at the record's recipe version and compare +its complete inventory before issuing this wrapper. This consumer and its +handwritten signed fixtures do not implement or prove that producer precondition. + +The new optional SourceValue form is exactly `{retainedResponseJson:}`, mutually exclusive with `response` and `snapshot`. Historical +ordinary forms remain unchanged. Generated input may initially use `response`; +on successful preparation Runner retains only exact envelope text, avoiding a +redundant serialized object while preserving received bytes through JSON transport. +The text is strict UTF-8/duplicate-checked and transiently parsed; the original +signature/request/profile/freshness checks run on it. Both/neither response forms, +null/empty or misspelled members and unsolicited ordinary-path use refuse. +Canonically equivalent outer whitespace/spelling is not authenticated by the +receipt; raw envelope/frame hashes remain separate local evidence identities. +The complete original snapshot string is authenticated as string content by the +existing canonical result domain. The Draft-only structural projections and +handwritten vectors are in `internal/runner/testdata/retained-column-producer-draft/`; +they confer no authority and do not change public schemas. + +The next experimental Draft amendment retains source inputs by reference. A +present transformation input is exactly +`{"state":"present","ref":{"frameSha256":"sha256:…","location":"values"}}` +(or `research-value`); missing is exactly `{"state":"missing"}`. The parent column +selects the original value. `values` resolves compact string/null JSON; +`research-value` resolves the exact original `valueJson` string. References are +recomputed from the exact raw frame UTF-8 bytes in the selected source/read/receipt +occurrence. A matching digest does not authorize another occurrence. Result, +omission reason, candidate tokens and conditional original research identity stay +inline and are independently recomputed. Preview input JSON is a separate diagnostic. +Old inline transformation inputs are refused by this new experimental wire form. + +Asserted case custody uses the existing `case` object on initial input or sole +`retainedCaseJson` exact object text on the explicit Draft Base case-conversion +route. Enclosing mapping/source/import members remain unchanged. The two case +slots are mutually exclusive; null/empty/wrong-case members, decoded duplicate +keys and unsolicited ordinary-route text refuse. Initial raw cases with column leaves also require explicit `base`; this prevents +emitting custody that cannot replay. Successful preparation retains +only exact text, preserving whitespace, raw numeric tokens and original provenance +through HTTP, checkpoints, imports, exports and offline replay. Automatic seeds +retain it before their first durable save. Workflow getters transiently materialize +it while preserving existing case digest/comparison domains. No global custom +marshaler changes ordinary absent-member bytes. Complete accounting includes string +escaping, source siblings and both imported and bound mapping documents. + +The amendment fixtures are pinned by exact schema SHA-256 +`b5c6d5fe2c4819e76de70070c4e35222e8f5fe19819166d054c0c2fc2359369b` +and corpus SHA-256 +`f5de0701bb989f6a5b606e15d3409e4d5df43fe9227cfdd672e2410ac249b571` +in `internal/retainedcolumns/testdata/reference-*`. These are experimental Draft +artifacts based on `be16a0f`; an uncommitted amendment is not an adopted revision. +The Go reader checks its seventeen new derivation/reference rows; the separate Spec +prototype evidence covers its other changed probes. Existing foundation fixtures +and their old execution evidence remain separately pinned. + +Each converted target gains optional `columnTransformation`, including conditional +original research identity, recomputed from the retained raw frame. Portable +claims retain their existing five members. `VerifyPreparation` and `VerifyInputs` +replay the same signed acquisition and complete relation; they reject substituted +transformations. Original two-member copies and absent optional profile, response +text, exact case custody and lineage members retain historical representation. + +Complete serialized dialect/case/acquisition bytes include the sole response +string and every JSON escape. Runner rechecks that aggregate after retaining +the exact text. Without an explicit selection, the unchanged Base ceiling is 2097152 bytes, original snapshot +ceiling 524288, preparation ceiling 8388608 and existing complete export/record +limits remain enforced at their actual existing entries. Ordinary body, canonical numeric and import limits remain unchanged. The new +scoped transport and optional public schema members are described below. +A valid 501280-byte snapshot formerly expanded from 1005071 to 3010488 bytes +with both response forms; the sole-text form reduces it to 2006129 and accepts it. +A maximum 524288-byte original snapshot still needs 2098161 bytes in the sole-text +combined envelope, exceeding Base by 1009; the unselected consumer refuses it. The scoped Base path now admits this +maximum-snapshot family with exact custody under its independent caps. This witness +is a lower bound on the remaining envelope decision, not a worst-case proof. Full +maximum-envelope parity remains a real dependency, not an advertised claim. + +Desk's scheduled consumer cutover owns production original-history lookup and +actual Desk/Gateway producer integration. Agent release acceptance separately +requires credible full compatibility, a concrete complete-envelope/profile +contract, exact all-role capability support, normative adoption, independently +reviewed immutable dependencies and integrated validation. Authorized upstream +Runner/Spec/Runtime/Agent work can establish those contracts and interoperability +evidence before Desk's future cutover. Neither a final Spec tag date nor an early +Desk implementation is inferred as an extra scheduling gate. This slice does not +complete or release Agent #171; Extended Runner is unsupported. Final contract adoption and complete +product/release evidence remain pending. + +The 256-target blank-column TAB regression now enters the actual HTTP preparation +endpoint and both offline consumers under unchanged limits. It retains the full +case once and resolves each input from a small reference, preserving all blank +omissions and original provenance. This case does not establish a complete maximum +Base/Extended preparation, export, execution-payload or signed-record envelope proof. +Those bounds, normative adoption and exact capability support remain release +requirements; the future production original-history producer is still Desk-owned. + + +## Scoped Base consumer and transport selection + +The experimental immutable Draft candidate is Spec commit +`ade3914b0b81ef299e5b9a8d6147f37ff3f0976c`, version `Draft RFC0029`, schema +`sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f`, corpus +`sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2`. +It remains pending independent review and adoption. These constants cannot be +replaced by an HTTP request or host configuration. Extended Runner is unsupported; +Runtime document validation alone does not establish complete Runner support. + +Authenticated `/v1/retained-column/1/inputs/next`, `/inputs/preview`, `/previews`, +`/jobs/{job}/runs`, and `/runs/{run}/verification` adapt the corresponding existing +operations. They require one `JPack-Conversion-Contract` header: strict canonical +unpadded base64url of exactly `{contract,spec,profile,roles}`. `contract` is +`retained-column/1`; `spec` has exactly `version`, `revision`, `schemaSha256` and +`corpusSha256`; profile is `base`. Roles are a nonempty unique subsequence of +`document-validation`, `preview`, `preparation`, `preparation-verification`, +`producer-carrier`, in that order. Unknown tuples/profiles/roles or a missing +operation role refuse as `capability-unsupported`; malformed/duplicate/extra +members or noncanonical role order refuse as `input-malformed`. Authentication, +origin guard and selector validation precede body reads. Unsupported scoped routes +explicitly refuse. Ordinary routes reject selected input and retain their defaults. + +Preparation operations require document-validation, preview and preparation. +Selected generated reads additionally require producer-carrier, separately from +existing grammar, profile, signature, request, freshness, inventory and revision +checks. The approved host profile carries optional `conversionContracts` entries +with the closed RFC capability shape and exact producer grammar. These are trusted +registration/configuration metadata bound to the existing profile digest. A source +input cannot install or replace them. Missing producer support refuses before +planning or dispatch. Runtime is independently queried at its actual read-only +`dialect contract` entry before selected release preview and evaluation; only an +exact document-validation tuple with sufficient document/frame capacity passes. + +The exact selector is optional `conversionContract` on SourceInput and Preparation. +Existing complete preparation bindings include it. Release sample, run input, +planned source and durable source-operation request retain it. Release/run mismatch +and resumed operation rebind refuse. The selector and frame digest add no signing +or source authority. Case and response custody remain sole exact text alternatives. + +| Complete selected artifact | Base ceiling | +| --- | ---: | +| Each published dialect or bound dialect mapping | 1 MiB | +| Retained frame | 2 MiB | +| Combined source, both documents and bindings, case and acquisitions | 12 MiB | +| Carrier, grant and adapter stdout, each | 3 MiB | +| Signed response | 5 MiB | +| Preparation | 16 MiB | +| Trusted profiles | 80 KiB | +| Incoming request | 16 MiB | +| Preparation / next-input reply | 36 MiB | +| Stored release or run, each | 40 MiB | +| Audit record line | 9 MiB | +| Export base | 72 MiB | +| Complete export wire | 86 MiB | + +The binding document retains its independent 64 KiB ceiling; the selected dialect-document ceiling does not enlarge it. +Every artifact limit applies independently; complete serialization, escaping and +sidecars count. Existing nesting, numeric, target, field, original snapshot and +string bounds remain. Exact custody strings use member-specific bounds; ordinary +canonical claims keep their canonical domain and default cap. Signature sidecar, +chain and checkpoint bounds remain independently enforced. The optional execution +admission/governance route remains explicitly unsupported for selected source inputs. + +Offline `verify-run` and `verify-preparation` accept `--conversion-contract` with +the same bounded header encoding, checked before larger files are opened. The API +`VerifyInputs` accepts an explicit optional selector and PreparationFixture carries +it separately. They never infer selection from retained bodies. Offline readers +revalidate source/preparation/release identities and complete size limits against +their own installed manifest. Existing invocations retain ordinary admission. diff --git a/internal/retainedcolumns/convert.go b/internal/retainedcolumns/convert.go new file mode 100644 index 0000000..43d0903 --- /dev/null +++ b/internal/retainedcolumns/convert.go @@ -0,0 +1,199 @@ +package retainedcolumns + +import ( + "encoding/json" + "math" + "strconv" + + "github.com/Judgment-Pack/judgment-pack-runner/internal/derivation" +) + +// Issue is a pinned deterministic diagnostic, never a claim or preparation. +type Issue struct { + Code string `json:"code"` + Message string `json:"message"` +} + +var messages = map[string]string{ + "decimal-encoding": "Use a plain decimal without separators, units, exponents, or leading zeros.", + "number-encoding": "Use an unambiguous number without separators, units, or leading zeros.", + "number-range": "Number is outside the supported precise range.", + "number-exponent": "Number exponent is outside the supported range.", + "number-precision": "This number would lose precision. Keep it as text or revise it.", + "boolean-spelling": "Does not match either declared Yes or No value.", + "research-context": "Research value requires a typed research field.", + "research-metadata": "Record metadata cannot use Research value. Choose another conversion.", + "research-declaration": "The original research field declaration is unavailable.", + "research-field": "Choose a declared research field for Research value.", + "research-type": "The research value does not match its original field type.", + "evidence-availability": "Evidence availability must be present, absent, or unknown.", +} + +// PreviewResult contains exact JSON text, never a float-coerced value. Omission +// has no candidate; Issues are record diagnostics. ClaimAdmissible only tests +// the existing claim boundary and does not establish preparation validity. +type PreviewResult struct { + ValueJSON *string `json:"valueJson,omitempty"` + Omitted string `json:"omitted,omitempty"` + Issues []Issue `json:"issues"` + ClaimAdmissible bool `json:"claimAdmissible"` +} + +func issue(code string) PreviewResult { + return PreviewResult{Issues: []Issue{{Code: code, Message: messages[code]}}} +} +func omitted(reason string) PreviewResult { return PreviewResult{Omitted: reason, Issues: []Issue{}} } +func candidate(raw string) PreviewResult { + return PreviewResult{ValueJSON: &raw, Issues: []Issue{}, ClaimAdmissible: ClaimAdmissible([]byte(raw))} +} +func resolved(status string) bool { return status == "supported" || status == "interpretation" } + +// ClaimAdmissible uses Runner's existing canonicalizer, preceded by the same +// scalar/duplicate/exact-number and depth32 input domain used by proofCanon. +// This is a domain check; no emitted spelling is replaced by canonical bytes. +func ClaimAdmissible(raw []byte) bool { + // proofCanon at the frozen Runner base also enforces MaxBody = 2 << 20. + // Every selected typed candidate is already <= 524288 bytes; this guard + // keeps direct calls to this domain helper consistent with that entry point. + if len(raw) > 2<<20 { + return false + } + if _, err := parseJSON(raw, 32, false, true); err != nil { + return false + } + _, err := derivation.Canon(raw) + return err == nil +} + +// Preview interprets one validated leaf and raw frame. It has no acquisition, +// review, authorization or evaluation effects. Zero-value inputs refuse. +func Preview(p Plan, f Frame) (PreviewResult, error) { + if !p.valid || !f.valid { + return PreviewResult{}, refuse("input-malformed") + } + if p.kind == "research-value" { + if f.origin != "generated" { + return issue("research-context"), nil + } + switch p.column { + case "name", "url", "website", "company_id", "company_name", "company_url": + return issue("research-metadata"), nil + } + r := f.research + if r.declaration == nil || r.declaration.revision != r.revision { + return issue("research-declaration"), nil + } + original, ok := r.declaration.fields[p.column] + if !ok { + return issue("research-field"), nil + } + field, ok := r.fields[p.column] + if !ok || !resolved(field.status) { + return omitted("unavailable"), nil + } + if !typedValue(field.raw, original.kind) { + return issue("research-type"), nil + } + return candidate(field.raw), nil + } + value, ok := f.values[p.column] + if !ok { + return omitted("missing"), nil + } + if value == nil { + return omitted("legacy-null"), nil + } + text := value.(string) + if blank(text) { + return omitted("blank"), nil + } + if f.origin == "generated" { + if field, ok := f.research.fields[p.column]; ok && !resolved(field.status) { + return omitted("unavailable"), nil + } + } + switch p.kind { + case "text": + return candidate(compactString(text)), nil + case "decimal": + if decimalValue(text) { + return candidate(compactString(text)), nil + } + return issue("decimal-encoding"), nil + case "number": + if code := numberIssue(text); code != "" { + return issue(code), nil + } + return candidate(text), nil + case "boolean": + if text == p.yes { + return candidate("true"), nil + } + if text == p.no { + return candidate("false"), nil + } + return issue("boolean-spelling"), nil + case "evidence-availability": + if text == "present" || text == "absent" || text == "unknown" { + return candidate(compactString(text)), nil + } + return issue("evidence-availability"), nil + } + return PreviewResult{}, refuse("input-malformed") +} + +func typedValue(raw, kind string) bool { + if len(raw) == 0 || len(raw) > 524288 || (kind == "string" || kind == "number") && len(raw) > 8192 { + return false + } + legacy := kind == "string" || kind == "number" + v, err := parseJSON([]byte(raw), 64, true, !legacy) + if err != nil { + return false + } + switch kind { + case "string": + _, ok := v.(string) + return ok + case "text": + s, ok := v.(string) + return ok && len(s) <= 8192 + case "number": + n, ok := v.(json.Number) + if !ok { + return false + } + f, e := strconv.ParseFloat(string(n), 64) + return e == nil && !math.IsInf(f, 0) && !math.IsNaN(f) + case "integer": + return integerValue(v) + case "decimal": + return decimalValue(v) + case "boolean": + _, ok := v.(bool) + return ok + case "text-list": + a, ok := v.([]any) + if !ok || len(a) > 64 { + return false + } + for _, x := range a { + s, ok := x.(string) + if !ok || len(s) > 1024 { + return false + } + } + return true + case "range": + m, ok := v.(map[string]any) + if !ok || !closed(m, "min", "max") { + return false + } + a, b := m["min"], m["max"] + if integerValue(a) && integerValue(b) { + return rat(string(a.(json.Number))).Cmp(rat(string(b.(json.Number)))) <= 0 + } + return decimalValue(a) && decimalValue(b) && rat(a.(string)).Cmp(rat(b.(string))) <= 0 + } + return false +} diff --git a/internal/retainedcolumns/corpus_test.go b/internal/retainedcolumns/corpus_test.go new file mode 100644 index 0000000..0643ee1 --- /dev/null +++ b/internal/retainedcolumns/corpus_test.go @@ -0,0 +1,328 @@ +package retainedcolumns + +import ( + "encoding/json" + "math" + "os" + "reflect" + "strconv" + "strings" + "testing" +) + +type corpusCase struct { + ID string `json:"id"` + Kind string `json:"kind"` + Column string `json:"column"` + InputJSON *string `json:"inputJson"` + InputState string `json:"inputState"` + Rule map[string]any `json:"rule"` + Origin string `json:"origin"` + Type string `json:"type"` + Status string `json:"status"` + Declaration json.RawMessage `json:"declaration"` + RevisionMismatch bool `json:"revisionMismatch"` + Undeclared bool `json:"undeclared"` + FieldEntryAbsent bool `json:"fieldEntryAbsent"` + RecordCount *int `json:"recordCount"` + Preview *struct { + ValueJSON *string `json:"valueJson"` + Omitted string `json:"omitted"` + Issues []string `json:"issues"` + } `json:"preview"` + Preparation string `json:"preparation"` + ClaimAdmissible *bool `json:"claimAdmissible"` +} +type corpus struct { + Cases []corpusCase `json:"cases"` + Boundary []struct { + ID, Kind, Repeat, Expected, ExpectedIssue, ResearchType string + Count int + } `json:"boundaryCases"` + Shortest []struct{ ID, Binary64Hex, ExpectedRational string } `json:"shortestCases"` + Interface []struct { + ID string + Request map[string]json.RawMessage + Expected json.RawMessage + } `json:"interfaceCases"` +} + +func encodeTest(t *testing.T, v any) []byte { + t.Helper() + b, e := json.Marshal(v) + if e != nil { + t.Fatal(e) + } + return b +} +func loadCorpus(t *testing.T) corpus { + t.Helper() + b, e := os.ReadFile("testdata/cases.json") + if e != nil { + t.Fatal(e) + } + if digest(b) != "sha256:c443229939deafc1c3f5020a9b3e9bdcd69707bc3a42c9571a6a59f81dfaa69d" { + t.Fatal("pinned handwritten corpus changed") + } + var c corpus + if e = json.Unmarshal(b, &c); e != nil { + t.Fatal(e) + } + return c +} +func fixture(t *testing.T, c corpusCase) (Plan, Frame) { + t.Helper() + column := c.Column + if column == "" { + column = "Column" + } + rule := map[string]any{"contractVersion": "1", "column": column} + if c.Kind != "evidence-availability" { + rule["kind"] = c.Kind + } + for k, v := range c.Rule { + rule[k] = v + } + p, e := ParsePlan(encodeTest(t, rule)) + if e != nil { + t.Fatalf("fixture plan: %v", e) + } + origin := c.Origin + if origin == "" { + origin = "asserted" + if c.Kind == "research-value" { + origin = "generated" + } + } + values := map[string]any{} + if c.Kind != "research-value" && c.InputJSON != nil { + var value any + if e = json.Unmarshal([]byte(*c.InputJSON), &value); e != nil { + t.Fatal(e) + } + values[column] = value + } + frame := map[string]any{"contractVersion": "1", "origin": origin, "values": values, "research": nil} + if origin == "generated" { + kind := c.Type + if kind == "" && c.Preview == nil { + kind = "text" + } + entries := []any{} + if !c.Undeclared { + field := string(encodeTest(t, map[string]any{"name": column, "type": kind})) + entries = append(entries, map[string]any{"name": column, "fieldJson": field}) + } + revision := "recipe:1" + if c.RevisionMismatch { + revision = "recipe:2" + } + var declaration any = map[string]any{"recipeRevision": revision, "fields": entries} + if string(c.Declaration) == "null" { + declaration = nil + } + status := c.Status + if status == "" { + status = "supported" + } + field := map[string]any{"status": status} + if c.InputJSON != nil && c.InputState != "missing" { + field["valueJson"] = *c.InputJSON + } + fields := map[string]any{} + if !c.FieldEntryAbsent { + fields[column] = field + } + frame["research"] = map[string]any{"recordRecipeRevision": "recipe:1", "declaration": declaration, "fields": fields} + } + f, e := ParseFrame(encodeTest(t, frame), Base) + if e != nil { + t.Fatalf("fixture frame: %v", e) + } + return p, f +} +func assertCase(t *testing.T, c corpusCase) { + t.Helper() + if c.RecordCount != nil && *c.RecordCount == 0 { + // Validate only the row-free plan; invent neither a frame nor a declaration. + if _, err := ParsePlan([]byte(`{"contractVersion":"1","column":"Planned","kind":"research-value"}`)); err != nil { + t.Fatal(err) + } + return + } + p, f := fixture(t, c) + got, e := Preview(p, f) + if e != nil { + t.Fatal(e) + } + wantValue, wantOmit, wantIssues := (*string)(nil), "", []string{"research-context"} + if c.Preview != nil { + wantValue, wantOmit, wantIssues = c.Preview.ValueJSON, c.Preview.Omitted, c.Preview.Issues + } + // The shared corpus spells some ordinary strings with JSON Unicode escapes. + // Normalize string quoting with the independent standard JSON encoder only; + // research/number bytes must compare verbatim. + if wantValue != nil && (c.Kind == "text" || c.Kind == "decimal" || c.Kind == "evidence-availability") { + var s string + if e = json.Unmarshal([]byte(*wantValue), &s); e != nil { + t.Fatal(e) + } + encoded := string(encodeTest(t, s)) + wantValue = &encoded + } + if !reflect.DeepEqual(got.ValueJSON, wantValue) || got.Omitted != wantOmit { + t.Fatalf("exact preview mismatch: got=%+v wantValue=%v wantOmit=%q", got, wantValue, wantOmit) + } + codes := []string{} + for _, i := range got.Issues { + codes = append(codes, i.Code) + if i.Message == "" { + t.Fatal("missing pinned message") + } + } + if !reflect.DeepEqual(codes, wantIssues) { + t.Fatalf("issue mismatch: got=%v want=%v", codes, wantIssues) + } + admissible := wantValue != nil && c.Preparation != "read-failed-no-evaluation" + if c.ClaimAdmissible != nil { + admissible = *c.ClaimAdmissible + } + if got.ClaimAdmissible != admissible { + t.Fatalf("claim boundary got=%v want=%v", got.ClaimAdmissible, admissible) + } + lineage, err := Derive(p, f) + refuseExpected := len(wantIssues) > 0 || wantValue != nil && !admissible + if refuseExpected { + if lineage != nil { + t.Fatal("failed preview produced success lineage") + } + assertRefusal(t, err, "read-failed") + } else if err != nil || lineage == nil { + t.Fatalf("missing recomputed lineage: %v", err) + } +} +func TestPinnedCompatibilityCorpus(t *testing.T) { + c := loadCorpus(t) + if len(c.Cases) != 72 { + t.Fatal("unexpected corpus size") + } + for _, row := range c.Cases { + t.Run(row.ID, func(t *testing.T) { assertCase(t, row) }) + } +} +func TestPinnedTypeBounds(t *testing.T) { + c := loadCorpus(t) + for _, b := range c.Boundary { + t.Run(b.ID, func(t *testing.T) { + value := any(strings.Repeat(b.Repeat, b.Count)) + if b.ResearchType == "text-list" { + a := make([]string, b.Count) + value = a + } + raw := string(encodeTest(t, value)) + kind := b.Kind + if b.ResearchType != "" { + kind = "research-value" + } + row := corpusCase{Kind: kind, Type: b.ResearchType, Status: "supported", InputJSON: &raw} + p, f := fixture(t, row) + got, e := Preview(p, f) + if e != nil { + t.Fatal(e) + } + if b.ExpectedIssue != "" { + if len(got.Issues) != 1 || got.Issues[0].Code != b.ExpectedIssue { + t.Fatalf("expected bound issue %s, got %+v", b.ExpectedIssue, got) + } + } else if got.ValueJSON == nil || *got.ValueJSON != raw || len(got.Issues) != 0 { + t.Fatalf("expected exact at-bound value, got %+v", got) + } + }) + } +} +func TestPinnedShortestRationals(t *testing.T) { + for _, c := range loadCorpus(t).Shortest { + t.Run(c.ID, func(t *testing.T) { + bits, e := strconv.ParseUint(c.Binary64Hex, 16, 64) + if e != nil { + t.Fatal(e) + } + got := shortestMagnitude(math.Float64frombits(bits)) + want := rat(c.ExpectedRational) + if got.Cmp(want) != 0 { + t.Fatalf("shortest rational got=%s want=%s", got.RatString(), want.RatString()) + } + }) + } +} +func TestPinnedLineageFragments(t *testing.T) { + count := 0 + for _, c := range loadCorpus(t).Interface { + raw, ok := c.Request["lineage"] + if !ok || len(raw) == 0 || raw[0] != '{' { + continue + } + count++ + t.Run(c.ID, func(t *testing.T) { + var r struct { + Rule json.RawMessage + Frame json.RawMessage + Profile Profile + } + if e := json.Unmarshal(raw, &r); e != nil { + t.Fatal(e) + } + profile := r.Profile + if profile == "" { + profile = Base + } + p, e := ParsePlan(r.Rule) + if e != nil { + t.Fatal(e) + } + f, e := ParseFrame(r.Frame, profile) + if e != nil { + t.Fatal(e) + } + got, e := Derive(p, f) + var refusal struct{ Refusal string } + if err := json.Unmarshal(c.Expected, &refusal); err != nil { + t.Fatal(err) + } + if refusal.Refusal != "" { + if got != nil { + t.Fatal("refusal emitted success lineage") + } + assertRefusal(t, e, refusal.Refusal) + return + } + if e != nil { + t.Fatal(e) + } + // Historical corpus input is an inline diagnostic, not the new wire form. + var historic struct { + ContractVersion, Column string + Input struct { + State string + JSON *string + } + Result ResultState + ResearchIdentity *ResearchIdentity + } + if e = json.Unmarshal(c.Expected, &historic); e != nil { + t.Fatal(e) + } + resolved, e := ResolveInput(p, f, got) + if e != nil || got.ContractVersion != historic.ContractVersion || got.Column != historic.Column || got.Input.State != historic.Input.State || !reflect.DeepEqual(resolved, historic.Input.JSON) || !reflect.DeepEqual(got.Result, historic.Result) || !reflect.DeepEqual(got.ResearchIdentity, historic.ResearchIdentity) { + t.Fatalf("historical diagnostic semantics differ: %v got=%s want=%s", e, encodeTest(t, got), c.Expected) + } + if got.Input.State == "present" && (got.Input.Ref == nil || got.Input.Ref.FrameSHA256 != digest(r.Frame)) { + t.Fatal("reference does not bind received frame") + } + + }) + } + if count != 9 { + t.Fatalf("expected 9 lineage fragments, read %d", count) + } +} diff --git a/internal/retainedcolumns/diagnostics_test.go b/internal/retainedcolumns/diagnostics_test.go new file mode 100644 index 0000000..88df82a --- /dev/null +++ b/internal/retainedcolumns/diagnostics_test.go @@ -0,0 +1,62 @@ +package retainedcolumns + +import "testing" + +func TestPinnedDiagnosticMessages(t *testing.T) { + for _, c := range []struct{ kind, raw, want string }{ + {"decimal", "01", "Use a plain decimal without separators, units, exponents, or leading zeros."}, + {"number", "01", "Use an unambiguous number without separators, units, or leading zeros."}, + {"number", "1e309", "Number is outside the supported precise range."}, + {"number", "0e309", "Number exponent is outside the supported range."}, + {"number", "1.0000000000000001", "This number would lose precision. Keep it as text or revise it."}, + {"boolean", "maybe", "Does not match either declared Yes or No value."}, + {"evidence-availability", "citation", "Evidence availability must be present, absent, or unknown."}, + } { + rule := map[string]any{"contractVersion": "1", "column": "A"} + if c.kind != "evidence-availability" { + rule["kind"] = c.kind + } + if c.kind == "boolean" { + rule["trueValue"] = "YES" + rule["falseValue"] = "NO" + } + p, e := ParsePlan(encodeTest(t, rule)) + if e != nil { + t.Fatal(e) + } + got, e := Preview(p, rawFrame(t, map[string]any{"A": c.raw})) + if e != nil || len(got.Issues) != 1 || got.Issues[0].Message != c.want { + t.Fatalf("pinned message mismatch: %+v %v", got, e) + } + } + for _, c := range []struct { + column string + context, declaration bool + want string + }{ + {"Column", false, false, "Research value requires a typed research field."}, + {"name", true, false, "Record metadata cannot use Research value. Choose another conversion."}, + {"Column", true, false, "The original research field declaration is unavailable."}, + {"Other", true, true, "Choose a declared research field for Research value."}, + {"Column", true, true, "The research value does not match its original field type."}, + } { + p, e := ParsePlan(encodeTest(t, map[string]any{"contractVersion": "1", "column": c.column, "kind": "research-value"})) + if e != nil { + t.Fatal(e) + } + g := generated(t, `{"name":"Column","type":"boolean"}`, ptr("null"), "supported") + if !c.context { + g = asserted(map[string]any{}) + } else if !c.declaration { + g["research"].(map[string]any)["declaration"] = nil + } + f, e := ParseFrame(encodeTest(t, g), Base) + if e != nil { + t.Fatal(e) + } + got, e := Preview(p, f) + if e != nil || len(got.Issues) != 1 || got.Issues[0].Message != c.want { + t.Fatalf("pinned research message mismatch: %+v %v", got, e) + } + } +} diff --git a/internal/retainedcolumns/doc.go b/internal/retainedcolumns/doc.go new file mode 100644 index 0000000..973b9d7 --- /dev/null +++ b/internal/retainedcolumns/doc.go @@ -0,0 +1,15 @@ +// Package retainedcolumns is an internal experiment for Draft RFC 0029 at Spec +// dd2cc94461950563729d1bbf672d785afeb1b02c. It interprets already selected +// conversion leaves and retained frames without acquiring or evaluating anything. +// It does not validate a whole dialect or establish generated-input review, +// source authenticity, capability negotiation, or preparation validity. +// +// ParsePlan accepts a closed conversion object or availability object. ParseFrame +// requires an explicit profile and measures the received projected bytes. The +// caller must separately negotiate support and account for the complete carrier. +// Frames never represent original source bytes. Preview preserves candidate JSON +// spelling; Derive additionally enforces the existing canonical claim domain and +// returns only a recomputed transformation fragment, never a preparation. +// The experimental reference amendment is separately byte-pinned in testdata; +// it changes transformation input custody without claiming normative adoption. +package retainedcolumns diff --git a/internal/retainedcolumns/frame.go b/internal/retainedcolumns/frame.go new file mode 100644 index 0000000..1c45845 --- /dev/null +++ b/internal/retainedcolumns/frame.go @@ -0,0 +1,195 @@ +package retainedcolumns + +// Profile is the explicitly negotiated Draft retained-frame budget. These are +// frame bounds only; the caller must also count the complete combined carrier. +type Profile string + +const ( + Base Profile = "base" + Extended Profile = "extended" +) + +type retainedField struct { + status, raw string + hasRaw bool +} +type declaration struct { + revision string + fields map[string]originalField +} +type originalField struct{ raw, kind string } +type research struct { + revision string + declaration *declaration + fields map[string]retainedField +} + +// Frame owns a validated projection. No mutable decoded fields are exposed. +// Its zero value is invalid. Its identity is never an original source identity. +type Frame struct { + origin string + values map[string]any + research *research + projectionDigest string + valid bool +} + +func (f Frame) ProjectedFrameSHA256() string { return f.projectionDigest } +func (f Frame) Origin() string { return f.origin } + +// ParseFrame retains exact received projection identity and embedded raw strings. +// The selected profile cannot enlarge fixed compatibility limits. It establishes +// neither original-source authenticity nor generated-input review authorization. +func ParseFrame(raw []byte, profile Profile) (Frame, error) { + max, depth := 0, 0 + switch profile { + case Base: + max, depth = 2097152, 64 + case Extended: + max, depth = 4194304, 128 + default: + return Frame{}, refuse("input-malformed") + } + if len(raw) > max { + return Frame{}, refuse("input-over-bound") + } + v, err := parseJSON(raw, depth, false, true) + if err != nil { + return Frame{}, err + } + m, ok := v.(map[string]any) + if !ok || !closed(m, "contractVersion", "origin", "values", "research") || m["contractVersion"] != "1" { + return Frame{}, refuse("input-malformed") + } + origin, ok := m["origin"].(string) + if !ok || origin != "asserted" && origin != "generated" { + return Frame{}, refuse("input-malformed") + } + values, ok := m["values"].(map[string]any) + if !ok { + return Frame{}, refuse("input-malformed") + } + if len(values) > 1000 { + return Frame{}, refuse("input-over-bound") + } + for name, value := range values { + if _, err = boundedString(name, 160, true); err != nil { + return Frame{}, err + } + if value != nil { + if _, err = boundedString(value, 16000, false); err != nil { + return Frame{}, err + } + } + } + f := Frame{origin: origin, values: values, projectionDigest: digest(raw)} + if origin == "asserted" { + if m["research"] != nil { + return Frame{}, refuse("input-malformed") + } + f.valid = true + return f, nil + } + rm, ok := m["research"].(map[string]any) + if !ok || !closed(rm, "recordRecipeRevision", "declaration", "fields") { + return Frame{}, refuse("input-malformed") + } + r := &research{} + if r.revision, err = boundedString(rm["recordRecipeRevision"], 160, true); err != nil { + return Frame{}, err + } + if rm["declaration"] != nil { + dm, ok := rm["declaration"].(map[string]any) + if !ok || !closed(dm, "recipeRevision", "fields") { + return Frame{}, refuse("input-malformed") + } + d := &declaration{fields: map[string]originalField{}} + if d.revision, err = boundedString(dm["recipeRevision"], 160, true); err != nil { + return Frame{}, err + } + entries, ok := dm["fields"].([]any) + if !ok { + return Frame{}, refuse("input-malformed") + } + if len(entries) > 1000 { + return Frame{}, refuse("input-over-bound") + } + for _, entry := range entries { + e, ok := entry.(map[string]any) + if !ok || !closed(e, "name", "fieldJson") { + return Frame{}, refuse("input-malformed") + } + name, e1 := boundedString(e["name"], 160, true) + if e1 != nil { + return Frame{}, e1 + } + rawField, e1 := boundedString(e["fieldJson"], 16384, false) + if e1 != nil { + return Frame{}, e1 + } + if _, exists := d.fields[name]; exists { + return Frame{}, refuse("input-malformed") + } + original, e1 := parseJSON([]byte(rawField), 32, false, true) + if e1 != nil { + return Frame{}, e1 + } + originalMap, ok := original.(map[string]any) + if !ok || originalMap["name"] != name { + return Frame{}, refuse("input-malformed") + } + kind, ok := originalMap["type"].(string) + if !ok { + return Frame{}, refuse("input-malformed") + } + d.fields[name] = originalField{raw: rawField, kind: kind} + } + r.declaration = d + } + fields, ok := rm["fields"].(map[string]any) + if !ok { + return Frame{}, refuse("input-malformed") + } + if len(fields) > 1000 { + return Frame{}, refuse("input-over-bound") + } + r.fields = map[string]retainedField{} + for name, value := range fields { + if _, err = boundedString(name, 160, true); err != nil { + return Frame{}, err + } + entry, ok := value.(map[string]any) + if !ok { + return Frame{}, refuse("input-malformed") + } + rawValue, present := entry["valueJson"] + if present { + if !closed(entry, "status", "valueJson") { + return Frame{}, refuse("input-malformed") + } + } else if !closed(entry, "status") { + return Frame{}, refuse("input-malformed") + } + status, ok := entry["status"].(string) + if !ok { + return Frame{}, refuse("input-malformed") + } + switch status { + case "supported", "interpretation", "missing", "conflicting", "inaccessible", "stale": + default: + return Frame{}, refuse("input-malformed") + } + field := retainedField{status: status, hasRaw: present} + // Raw typed JSON is opaque here. Its own structure/type limit is a selected + // per-record issue, even if this frame is only an inspectable proposal. + if present { + if field.raw, err = boundedString(rawValue, 4194304, false); err != nil { + return Frame{}, err + } + } + r.fields[name] = field + } + f.research = r + f.valid = true + return f, nil +} diff --git a/internal/retainedcolumns/json.go b/internal/retainedcolumns/json.go new file mode 100644 index 0000000..1fe859b --- /dev/null +++ b/internal/retainedcolumns/json.go @@ -0,0 +1,189 @@ +package retainedcolumns + +import ( + "bytes" + "crypto/sha256" + "encoding/json" + "io" + "strings" + "unicode" + "unicode/utf8" +) + +func sha256Bytes(raw []byte) [32]byte { return sha256.Sum256(raw) } + +// No JSON number is decoded through float64. Strict strings are checked before +// encoding/json can replace an unpaired escaped surrogate with U+FFFD. +func parseJSON(raw []byte, depth int, folded, strict bool) (any, error) { + if !utf8.Valid(raw) || !json.Valid(raw) || strict && !scalarEscapes(raw) { + return nil, refuse("input-malformed") + } + d := json.NewDecoder(bytes.NewReader(raw)) + d.UseNumber() + var read func(int) (any, error) + read = func(level int) (any, error) { + if level > depth { + return nil, refuse("input-over-bound") + } + tok, err := d.Token() + if err != nil { + return nil, refuse("input-malformed") + } + delim, container := tok.(json.Delim) + if !container { + return tok, nil + } + switch delim { + case '{': + m := map[string]any{} + seen := map[string]bool{} + for d.More() { + k, e := d.Token() + if e != nil { + return nil, refuse("input-malformed") + } + name, ok := k.(string) + if !ok { + return nil, refuse("input-malformed") + } + identity := name + if folded { + // RFC 0029 pins Unicode 15.0 simple lowercase, not full folding. + if unicode.Version != "15.0.0" { + return nil, refuse("input-malformed") + } + identity = strings.Map(unicode.ToLower, name) + } + if seen[identity] { + return nil, refuse("input-malformed") + } + seen[identity] = true + v, e := read(level + 1) + if e != nil { + return nil, e + } + m[name] = v + } + if end, e := d.Token(); e != nil || end != json.Delim('}') { + return nil, refuse("input-malformed") + } + return m, nil + case '[': + a := []any{} + for d.More() { + v, e := read(level + 1) + if e != nil { + return nil, e + } + a = append(a, v) + } + if end, e := d.Token(); e != nil || end != json.Delim(']') { + return nil, refuse("input-malformed") + } + return a, nil + } + return nil, refuse("input-malformed") + } + v, err := read(0) + if err != nil { + return nil, err + } + if _, err = d.Token(); err != io.EOF { + return nil, refuse("input-malformed") + } + return v, nil +} + +func hex4(b []byte) int { + if len(b) < 4 { + return -1 + } + n := 0 + for _, c := range b[:4] { + n *= 16 + switch { + case c >= '0' && c <= '9': + n += int(c - '0') + case c >= 'a' && c <= 'f': + n += int(c-'a') + 10 + case c >= 'A' && c <= 'F': + n += int(c-'A') + 10 + default: + return -1 + } + } + return n +} +func scalarEscapes(b []byte) bool { + quoted := false + for i := 0; i < len(b); i++ { + if b[i] == '"' { + quoted = !quoted + continue + } + if !quoted || b[i] != '\\' { + continue + } + i++ + if i >= len(b) { + return false + } + if b[i] != 'u' { + continue + } + code := hex4(b[i+1:]) + if code < 0 { + return false + } + i += 4 + if code >= 0xdc00 && code <= 0xdfff { + return false + } + if code >= 0xd800 && code <= 0xdbff { + if i+6 >= len(b) || b[i+1] != '\\' || b[i+2] != 'u' { + return false + } + low := hex4(b[i+3:]) + if low < 0xdc00 || low > 0xdfff { + return false + } + i += 6 + } + } + return true +} + +// compactString follows the Draft's fixed ordinary-column representation: +// literal UTF-8, C0/quote/backslash escapes, no HTML/solidus/U+2028 escaping. +func compactString(s string) string { + var b strings.Builder + b.WriteByte('"') + const hex = "0123456789abcdef" + for _, r := range s { + switch r { + case '"', '\\': + b.WriteByte('\\') + b.WriteRune(r) + case '\b': + b.WriteString(`\b`) + case '\t': + b.WriteString(`\t`) + case '\n': + b.WriteString(`\n`) + case '\f': + b.WriteString(`\f`) + case '\r': + b.WriteString(`\r`) + default: + if r < 32 { + b.WriteString(`\u00`) + b.WriteByte(hex[r>>4]) + b.WriteByte(hex[r&15]) + } else { + b.WriteRune(r) + } + } + } + b.WriteByte('"') + return b.String() +} diff --git a/internal/retainedcolumns/lineage.go b/internal/retainedcolumns/lineage.go new file mode 100644 index 0000000..5447c55 --- /dev/null +++ b/internal/retainedcolumns/lineage.go @@ -0,0 +1,165 @@ +package retainedcolumns + +import "encoding/json" + +// InputState is the Draft preparation representation. Diagnostic raw input is +// resolved from the exact retained occurrence; it is never repeated per target. +type InputState struct { + State string `json:"state"` + Ref *InputReference `json:"ref,omitempty"` +} +type InputReference struct { + FrameSHA256 string `json:"frameSha256"` + Location string `json:"location"` +} + +func (s *InputState) UnmarshalJSON(raw []byte) error { + v, e := parseJSON(raw, 4, false, true) + if e != nil { + return e + } + m, ok := v.(map[string]any) + if !ok { + return refuse("input-malformed") + } + switch m["state"] { + case "missing": + if !closed(m, "state") { + return refuse("input-malformed") + } + *s = InputState{State: "missing"} + return nil + case "present": + if !closed(m, "state", "ref") { + return refuse("input-malformed") + } + ref, ok := m["ref"].(map[string]any) + if !ok || !closed(ref, "frameSha256", "location") { + return refuse("input-malformed") + } + pin, ok := ref["frameSha256"].(string) + if !ok || len(pin) != 71 || pin[:7] != "sha256:" { + return refuse("input-malformed") + } + for _, c := range pin[7:] { + if !(c >= '0' && c <= '9' || c >= 'a' && c <= 'f') { + return refuse("input-malformed") + } + } + location, _ := ref["location"].(string) + if location != "values" && location != "research-value" { + return refuse("input-malformed") + } + *s = InputState{State: "present", Ref: &InputReference{FrameSHA256: pin, Location: location}} + return nil + } + return refuse("input-malformed") +} + +type ResultState struct { + State string `json:"state"` + JSON *string `json:"json,omitempty"` + Reason string `json:"reason,omitempty"` +} +type ResearchIdentity struct { + RecipeRevision string `json:"recipeRevision"` + FieldSHA256 string `json:"fieldSha256"` +} + +// Transformation retains each result and original identity. Its input reference +// resolves only within the caller-selected source/read/receipt occurrence. +type Transformation struct { + ContractVersion string `json:"contractVersion"` + Column string `json:"column"` + Input InputState `json:"input"` + Result ResultState `json:"result"` + ResearchIdentity *ResearchIdentity `json:"researchIdentity,omitempty"` +} + +func frameInput(p Plan, f Frame) (*string, string) { + if p.kind == "research-value" { + if f.research != nil { + if field, ok := f.research.fields[p.column]; ok && field.hasRaw { + raw := field.raw + return &raw, "research-value" + } + } + return nil, "research-value" + } + if value, ok := f.values[p.column]; ok { + raw := "null" + if value != nil { + raw = compactString(value.(string)) + } + return &raw, "values" + } + return nil, "values" +} + +// ResolveInput is a diagnostic read of the already-bound exact occurrence. The +// caller must supply that occurrence, never search or substitute by hash. The +// parent plan selects column and location; the digest grants no authority. +func ResolveInput(p Plan, f Frame, t *Transformation) (*string, error) { + if !p.valid || !f.valid { + return nil, refuse("input-malformed") + } + if t == nil || t.ContractVersion != "1" || t.Column != p.column { + return nil, refuse("read-failed") + } + preview, e := Preview(p, f) + if e != nil { + return nil, e + } + if len(preview.Issues) > 0 || preview.ValueJSON != nil && !preview.ClaimAdmissible { + return nil, refuse("read-failed") + } + input := t.Input + raw, location := frameInput(p, f) + if raw == nil { + if input.State != "missing" || input.Ref != nil { + return nil, refuse("read-failed") + } + return nil, nil + } + if input.State != "present" || input.Ref == nil || input.Ref.FrameSHA256 != f.projectionDigest || input.Ref.Location != location { + return nil, refuse("read-failed") + } + return raw, nil +} + +// Derive recomputes reference and result from the exact selected frame. It reads +// no retained result or reference supplied by a caller and emits no preparation. +func Derive(p Plan, f Frame) (*Transformation, error) { + preview, e := Preview(p, f) + if e != nil { + return nil, e + } + if len(preview.Issues) > 0 || preview.ValueJSON != nil && !preview.ClaimAdmissible { + return nil, refuse("read-failed") + } + t := &Transformation{ContractVersion: "1", Column: p.column, Input: InputState{State: "missing"}, Result: ResultState{State: "omitted", Reason: preview.Omitted}} + if preview.ValueJSON != nil { + t.Result = ResultState{State: "value", JSON: preview.ValueJSON} + } + if raw, location := frameInput(p, f); raw != nil { + t.Input = InputState{State: "present", Ref: &InputReference{FrameSHA256: f.projectionDigest, Location: location}} + } + if p.kind == "research-value" { + original := f.research.declaration.fields[p.column] + t.ResearchIdentity = &ResearchIdentity{RecipeRevision: f.research.revision, FieldSHA256: digest([]byte(original.raw))} + } + return t, nil +} + +// Input JSON is a separate preview diagnostic, not a preparation member. +func DiagnosticInputJSON(p Plan, f Frame) (json.RawMessage, error) { + t, e := Derive(p, f) + if e != nil { + return nil, e + } + raw, e := ResolveInput(p, f, t) + if e != nil || raw == nil { + return nil, e + } + return json.RawMessage(*raw), nil +} diff --git a/internal/retainedcolumns/number.go b/internal/retainedcolumns/number.go new file mode 100644 index 0000000..4c761a1 --- /dev/null +++ b/internal/retainedcolumns/number.go @@ -0,0 +1,143 @@ +package retainedcolumns + +import ( + "encoding/json" + "math" + "math/big" + "regexp" + "strconv" + "strings" +) + +var decimalSyntax = regexp.MustCompile(`^-?(0|[1-9][0-9]*)(\.[0-9]+)?$`) +var numberSyntax = regexp.MustCompile(`^-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?$`) +var integerSyntax = regexp.MustCompile(`^-?(0|[1-9][0-9]*)$`) + +const maxSafe = 9007199254740991 + +func decimalValue(v any) bool { + s, ok := v.(string) + return ok && len(s) <= 128 && decimalSyntax.MatchString(s) +} +func integerValue(v any) bool { + n, ok := v.(json.Number) + if !ok || len(n) > 17 || !integerSyntax.MatchString(string(n)) { + return false + } + i, err := strconv.ParseInt(string(n), 10, 64) + return err == nil && i >= -maxSafe && i <= maxSafe +} +func rat(text string) *big.Rat { q, _ := new(big.Rat).SetString(text); return q } +func ten(e int) *big.Rat { + power := new(big.Int).Exp(big.NewInt(10), big.NewInt(int64(abs(e))), nil) + if e < 0 { + return new(big.Rat).SetFrac(big.NewInt(1), power) + } + return new(big.Rat).SetInt(power) +} +func abs(i int) int { + if i < 0 { + return -i + } + return i +} +func floor(q *big.Rat) *big.Int { return new(big.Int).Quo(q.Num(), q.Denom()) } +func distance(a, b *big.Rat) *big.Rat { return new(big.Rat).Abs(new(big.Rat).Sub(a, b)) } +func mul(a, b *big.Rat) *big.Rat { return new(big.Rat).Mul(a, b) } +func div(a, b *big.Rat) *big.Rat { return new(big.Rat).Quo(a, b) } + +// shortestMagnitude implements the RFC's rational selection independently of +// host float formatting. The only float operations locate adjacent binary64s; +// interval membership, distances and all ties use exact integer arithmetic. +func shortestMagnitude(x float64) *big.Rat { + if x == 0 { + return new(big.Rat) + } + value := new(big.Rat).SetFloat64(x) + previous := new(big.Rat).SetFloat64(math.Nextafter(x, 0)) + next := new(big.Rat).SetFloat64(math.Nextafter(x, math.Inf(1))) + if next == nil { + next = new(big.Rat).Add(value, new(big.Rat).Sub(value, previous)) + } + lower := new(big.Rat).Quo(new(big.Rat).Add(previous, value), big.NewRat(2, 1)) + upper := new(big.Rat).Quo(new(big.Rat).Add(next, value), big.NewRat(2, 1)) + inclusive := math.Float64bits(x)&1 == 0 + magnitude := len(value.Num().String()) - len(value.Denom().String()) + if value.Cmp(ten(magnitude)) < 0 { + magnitude-- + } + for digits := 1; digits <= 17; digits++ { + var best, bestDistance *big.Rat + var bestCoefficient *big.Int + minCoefficient := new(big.Int).Exp(big.NewInt(10), big.NewInt(int64(digits-1)), nil) + maxCoefficient := new(big.Int).Sub(new(big.Int).Mul(minCoefficient, big.NewInt(10)), big.NewInt(1)) + for exponent := magnitude - digits; exponent <= magnitude-digits+2; exponent++ { + scale := ten(exponent) + lowRat, highRat := div(lower, scale), div(upper, scale) + low, high := floor(lowRat), floor(highRat) + if new(big.Rat).SetInt(low).Cmp(lowRat) < 0 || !inclusive { + low.Add(low, big.NewInt(1)) + } + if !inclusive && new(big.Rat).SetInt(high).Cmp(highRat) == 0 { + high.Sub(high, big.NewInt(1)) + } + if low.Cmp(minCoefficient) < 0 { + low.Set(minCoefficient) + } + if high.Cmp(maxCoefficient) > 0 { + high.Set(maxCoefficient) + } + if low.Cmp(high) > 0 { + continue + } + near := floor(div(value, scale)) + candidates := []*big.Int{low, new(big.Int).Add(low, big.NewInt(1)), high, new(big.Int).Sub(high, big.NewInt(1)), near, new(big.Int).Add(near, big.NewInt(1))} + for _, coefficient := range candidates { + if coefficient.Cmp(low) < 0 || coefficient.Cmp(high) > 0 || new(big.Int).Mod(coefficient, big.NewInt(10)).Sign() == 0 { + continue + } + candidate := mul(new(big.Rat).SetInt(coefficient), scale) + delta := distance(candidate, value) + better := best == nil + if !better { + cmp := delta.Cmp(bestDistance) + better = cmp < 0 || cmp == 0 && (coefficient.Bit(0) < bestCoefficient.Bit(0) || coefficient.Bit(0) == bestCoefficient.Bit(0) && candidate.Cmp(best) < 0) + } + if better { + best = candidate + bestDistance = delta + bestCoefficient = new(big.Int).Set(coefficient) + } + } + } + if best != nil { + return best + } + } + panic("binary64 has no 17-digit round-trip decimal") +} + +func numberIssue(text string) string { + if len(text) > 128 || !numberSyntax.MatchString(text) { + return "number-encoding" + } + value, err := strconv.ParseFloat(text, 64) + if err != nil || math.IsInf(value, 0) || math.IsNaN(value) || math.Abs(value) > maxSafe { + return "number-range" + } + if at := strings.IndexAny(text, "eE"); at >= 0 { + exponent := new(big.Int) + exponent.SetString(text[at+1:], 10) + if new(big.Int).Abs(exponent).Cmp(big.NewInt(308)) > 0 { + return "number-exponent" + } + } + selected := shortestMagnitude(math.Abs(value)) + if math.Signbit(value) { + selected.Neg(selected) + } + if rat(text).Cmp(selected) != 0 { + return "number-precision" + } + return "" +} diff --git a/internal/retainedcolumns/number_test.go b/internal/retainedcolumns/number_test.go new file mode 100644 index 0000000..68f5513 --- /dev/null +++ b/internal/retainedcolumns/number_test.go @@ -0,0 +1,80 @@ +package retainedcolumns + +import ( + "strconv" + "strings" + "testing" +) + +func TestExactNumberGuardOrderAndSpelling(t *testing.T) { + p := plan(t, `{"contractVersion":"1","column":"A","kind":"number"}`) + for _, c := range []struct { + raw, code string + claim bool + }{ + {"1.2500", "", false}, {"1E+003", "", false}, {"-0", "", true}, {"-0.000", "", false}, + {"0.00e-308", "", false}, {"9007199254740991.0", "", false}, + {"1424953923781206.2", "", false}, + {"1424953923781206.3", "number-precision", false}, + {"9007199254740991.1", "number-precision", false}, + {"9007199254740991.5", "number-range", false}, + {"1e999", "number-range", false}, {"0e-999", "number-exponent", false}, + {"0e+0000000000000000000000000000000000000309", "number-exponent", false}, + {"0.00000000000000001e-308", "number-precision", false}, + {"+1", "number-encoding", false}, {"1,000", "number-encoding", false}, {"1.", "number-encoding", false}, + } { + t.Run(c.raw, func(t *testing.T) { + got, e := Preview(p, rawFrame(t, map[string]any{"A": c.raw})) + if e != nil { + t.Fatal(e) + } + if c.code != "" { + if len(got.Issues) != 1 || got.Issues[0].Code != c.code { + t.Fatalf("diagnostic precedence: got=%+v want=%s", got, c.code) + } + return + } + if got.ValueJSON == nil || *got.ValueJSON != c.raw || len(got.Issues) != 0 || got.ClaimAdmissible != c.claim { + t.Fatalf("exact number spelling/domain mismatch: %+v", got) + } + }) + } +} +func TestResearchLegacyAndModernRawBounds(t *testing.T) { + p := plan(t, `{"contractVersion":"1","column":"Column","kind":"research-value"}`) + for _, c := range []struct { + kind string + raw string + valid bool + }{ + {"string", strings.Repeat(" ", 8190) + `""`, true}, + {"string", strings.Repeat(" ", 8191) + `""`, false}, + {"text", strings.Repeat(" ", 8191) + `""`, true}, + {"text", strings.Repeat(" ", 524286) + `""`, true}, + {"text", strings.Repeat(" ", 524287) + `""`, false}, + {"number", strings.Repeat(" ", 8191) + "0", true}, + {"number", strings.Repeat(" ", 8192) + "0", false}, + {"integer", `9007199254740993`, false}, + {"number", `9007199254740993`, true}, + {"number", `1e309`, false}, + } { + t.Run(c.kind+"-"+strconv.Itoa(len(c.raw)), func(t *testing.T) { + field := `{"name":"Column","type":"` + c.kind + `"}` + f, e := ParseFrame(encodeTest(t, generated(t, field, &c.raw, "supported")), Base) + if e != nil { + t.Fatal(e) + } + got, e := Preview(p, f) + if e != nil { + t.Fatal(e) + } + if c.valid { + if got.ValueJSON == nil || *got.ValueJSON != c.raw || len(got.Issues) != 0 { + t.Fatal("raw typed bytes changed/refused") + } + } else if len(got.Issues) != 1 || got.Issues[0].Code != "research-type" { + t.Fatal("invalid typed value was used") + } + }) + } +} diff --git a/internal/retainedcolumns/plan.go b/internal/retainedcolumns/plan.go new file mode 100644 index 0000000..abf69db --- /dev/null +++ b/internal/retainedcolumns/plan.go @@ -0,0 +1,99 @@ +package retainedcolumns + +import "fmt" + +// Refusal distinguishes malformed/bounded input from a per-record conversion issue. +// Details intentionally contain no retained values or declaration contents. +type Refusal struct{ Code string } + +func (e *Refusal) Error() string { return e.Code } +func refuse(code string) error { return &Refusal{Code: code} } + +// Plan is a closed validated leaf. Its zero value cannot be interpreted. +type Plan struct { + column, kind, yes, no string + valid bool +} + +// ParsePlan reads a conversion (including kind) or an availability (without kind). +// It does not validate the surrounding copy, source pointer, target or document. +func ParsePlan(raw []byte) (Plan, error) { + v, err := parseJSON(raw, 4, false, true) + if err != nil { + return Plan{}, err + } + m, ok := v.(map[string]any) + if !ok { + return Plan{}, refuse("input-malformed") + } + kind, hasKind := m["kind"] + keys := []string{"contractVersion", "column"} + p := Plan{kind: "evidence-availability"} + if hasKind { + keys = append(keys, "kind") + p.kind, ok = kind.(string) + if !ok { + return Plan{}, refuse("input-malformed") + } + switch p.kind { + case "text", "decimal", "number", "research-value": + case "boolean": + keys = append(keys, "trueValue", "falseValue") + default: + return Plan{}, refuse("input-malformed") + } + } + if !closed(m, keys...) || m["contractVersion"] != "1" { + return Plan{}, refuse("input-malformed") + } + if p.column, err = boundedString(m["column"], 160, true); err != nil { + return Plan{}, err + } + if p.kind == "boolean" { + if p.yes, err = boundedString(m["trueValue"], 160, true); err != nil { + return Plan{}, err + } + if p.no, err = boundedString(m["falseValue"], 160, true); err != nil { + return Plan{}, err + } + if blank(p.yes) || blank(p.no) || p.yes == p.no { + return Plan{}, refuse("input-malformed") + } + } + p.valid = true + return p, nil +} + +func closed(m map[string]any, names ...string) bool { + if len(m) != len(names) { + return false + } + for _, n := range names { + if _, ok := m[n]; !ok { + return false + } + } + return true +} +func boundedString(v any, max int, nonempty bool) (string, error) { + s, ok := v.(string) + if !ok || nonempty && s == "" { + return "", refuse("input-malformed") + } + if len(s) > max { + return "", refuse("input-over-bound") + } + return s, nil +} +func blank(s string) bool { + for _, r := range s { + switch { + case r >= 9 && r <= 13, r == 32, r == 0x85, r == 0xa0, r == 0x1680, + r >= 0x2000 && r <= 0x200a, r == 0x2028, r == 0x2029, r == 0x202f, r == 0x205f, r == 0x3000: + default: + return false + } + } + return true +} +func digest(raw []byte) string { return fmt.Sprintf("sha256:%x", sha256Bytes(raw)) } diff --git a/internal/retainedcolumns/reference_test.go b/internal/retainedcolumns/reference_test.go new file mode 100644 index 0000000..68cefed --- /dev/null +++ b/internal/retainedcolumns/reference_test.go @@ -0,0 +1,171 @@ +package retainedcolumns + +import ( + "bytes" + "encoding/json" + "os" + "reflect" + "strings" + "testing" +) + +func TestReferenceExactFrameAndClosedInput(t *testing.T) { + raw := []byte(`{ "contractVersion":"1", "origin":"asserted", "values":{"A":"\t","N":null}, "research":null }`) + p, e := ParsePlan([]byte(`{"contractVersion":"1","column":"A","kind":"text"}`)) + if e != nil { + t.Fatal(e) + } + f, e := ParseFrame(raw, Base) + if e != nil { + t.Fatal(e) + } + tr, e := Derive(p, f) + if e != nil { + t.Fatal(e) + } + if tr.Input.Ref == nil || tr.Input.Ref.FrameSHA256 != digest(raw) || tr.Input.Ref.Location != "values" || tr.Result.Reason != "blank" { + t.Fatal("exact frame reference not derived") + } + input, e := ResolveInput(p, f, tr) + if e != nil || input == nil || *input != `"\t"` { + t.Fatalf("raw input resolution: %v %v", input, e) + } + for _, change := range []string{"hash", "location", "column", "unresolved"} { + t.Run(change, func(t *testing.T) { + changed := *tr + ref := *tr.Input.Ref + changed.Input.Ref = &ref + switch change { + case "hash": + ref.FrameSHA256 = "sha256:" + strings.Repeat("0", 64) + case "location": + ref.Location = "research-value" + case "column": + changed.Column = "N" + case "unresolved": + changed.Input = InputState{State: "missing"} + } + if _, e := ResolveInput(p, f, &changed); e == nil { + t.Fatal("mismatched reference resolved") + } + }) + } + f2, e := ParseFrame([]byte(strings.Replace(string(raw), `{ "contractVersion"`, `{"contractVersion"`, 1)), Base) + if e != nil { + t.Fatal(e) + } + if _, e := ResolveInput(p, f2, tr); e == nil { + t.Fatal("different raw frame resolved same reference") + } + for _, raw := range []string{`{"state":"present","json":"x"}`, `{"state":"missing","ref":null}`, `{"state":"present","ref":{"frameSha256":"sha256:` + strings.Repeat("0", 64) + `","location":"values","extra":0}}`, `{"state":"present","ref":{"frameSha256":"sha256:` + strings.Repeat("A", 64) + `","location":"values"}}`, `{"state":"present","ref":{"frameSha256":"sha256:` + strings.Repeat("0", 64) + `","location":"values","locat\u0069on":"values"}}`} { + var state InputState + if json.Unmarshal([]byte(raw), &state) == nil { + t.Fatalf("open or malformed reference accepted: %s", raw) + } + } +} + +// These are the new reference rows only. The historical foundation corpus keeps +// its original pin; its prior execution is not attributed to this amendment. +func TestReferencePinnedDraftCases(t *testing.T) { + raw, e := os.ReadFile("testdata/reference-cases.json") + if e != nil { + t.Fatal(e) + } + if digest(raw) != "sha256:f5de0701bb989f6a5b606e15d3409e4d5df43fe9227cfdd672e2410ac249b571" { + t.Fatal("experimental Draft reference corpus changed") + } + schema, e := os.ReadFile("testdata/reference-contract.schema.json") + if e != nil || digest(schema) != "sha256:b5c6d5fe2c4819e76de70070c4e35222e8f5fe19819166d054c0c2fc2359369b" { + t.Fatal("experimental Draft reference schema changed") + } + var corpus struct { + References []struct { + ID string + Request json.RawMessage + Expected json.RawMessage + WireJSON string + } `json:"referenceCases"` + } + if e = json.Unmarshal(raw, &corpus); e != nil { + t.Fatal(e) + } + count := 0 + for _, row := range corpus.References { + var req map[string]json.RawMessage + wire := row.Request + if row.WireJSON == "" { + var compact bytes.Buffer + if err := json.Compact(&compact, wire); err != nil { + t.Fatal(err) + } + wire = compact.Bytes() + } + if row.WireJSON != "" { + wire = []byte(row.WireJSON) + } + if e = json.Unmarshal(wire, &req); e != nil { + t.Fatal(e) + } + action := req["lineage"] + verify := false + if action == nil { + action = req["verifyLineage"] + verify = true + } + if action == nil { + continue + } + count++ + t.Run(row.ID, func(t *testing.T) { + var r struct{ Rule, Frame, Transformation json.RawMessage } + if e := json.Unmarshal(action, &r); e != nil { + t.Fatal(e) + } + var expected struct{ Refusal string } + json.Unmarshal(row.Expected, &expected) + p, e := ParsePlan(r.Rule) + if e != nil { + if expected.Refusal == "input-malformed" { + return + } + t.Fatal(e) + } + f, e := ParseFrame(r.Frame, Base) + if e != nil { + if expected.Refusal == "input-malformed" { + return + } + t.Fatal(e) + } + got, e := Derive(p, f) + if e != nil { + t.Fatal(e) + } + if !verify { + var want Transformation + if e = json.Unmarshal(row.Expected, &want); e != nil { + t.Fatal(e) + } + if !reflect.DeepEqual(got, &want) { + t.Fatalf("Draft derivation differs: got=%s expected=%s", encodeTest(t, got), row.Expected) + } + return + } + var supplied Transformation + d := json.NewDecoder(bytes.NewReader(r.Transformation)) + d.DisallowUnknownFields() + valid := d.Decode(&supplied) == nil && reflect.DeepEqual(got, &supplied) + if valid { + _, e = ResolveInput(p, f, &supplied) + valid = e == nil + } + if valid != (expected.Refusal == "") { + t.Fatalf("Draft occurrence consistency differs: valid=%t expected=%s", valid, row.Expected) + } + }) + } + if count != 17 { + t.Fatalf("unexpected new reference row count: %d", count) + } +} diff --git a/internal/retainedcolumns/testdata/README.md b/internal/retainedcolumns/testdata/README.md new file mode 100644 index 0000000..086ffee --- /dev/null +++ b/internal/retainedcolumns/testdata/README.md @@ -0,0 +1,24 @@ +# Draft retained-column experiment fixtures + +`cases.json` is copied byte-for-byte from Spec Draft RFC 0029 at +`dd2cc94461950563729d1bbf672d785afeb1b02c`, path +`rfcs/retained-column-conversion/cases.json`. +SHA-256: `c443229939deafc1c3f5020a9b3e9bdcd69707bc3a42c9571a6a59f81dfaa69d`. +The adjacent upstream structural schema has SHA-256 +`e67a1cb62d826292f75dde89889cc46a78e987dfab56cc7325584d10e038f093`. +These are handwritten Draft expectations, not outputs recorded from this package. +No upstream reader implementation is copied. + +The package tests consume all 72 compatibility descriptions (71 record previews +and one row-free plan acceptance), seven fixed type bounds, seven shortest-decimal +probes, and the nine object-shaped lineage requests. Other interface requests in +the retained complete corpus concern capability admission, original carrier +restoration, or a prototype line protocol and are outside this package. Their +presence is not a claim that they executed here. Local tests separately handwrite +parser, profile, original-revision, raw-lineage and canonical-boundary regressions. + +This package is an internal pure foundation. It exposes no public capability or +route and does not produce or verify a preparation. The complete producer, +carrier/transport budgets, original inventory commitments, generated review, +shared preparation integration, independent review, full integrated checks, CI, +adoption and immutable release gates remain with their respective owners. diff --git a/internal/retainedcolumns/testdata/cases.json b/internal/retainedcolumns/testdata/cases.json new file mode 100644 index 0000000..674b2b4 --- /dev/null +++ b/internal/retainedcolumns/testdata/cases.json @@ -0,0 +1,995 @@ +{ + "status": "Draft handwritten expected cases; not implementation recordings", + "cases": [ + { + "id": "text-preserve", + "kind": "text", + "inputJson": "\" A \"", + "preview": { + "valueJson": "\" A \"", + "issues": [] + }, + "preparation": "same-string" + }, + { + "id": "text-empty", + "kind": "text", + "inputJson": "\"\"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "text-whitespace", + "kind": "text", + "inputJson": "\"\\u00a0\\t\"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "text-missing", + "kind": "text", + "inputState": "missing", + "preview": { + "omitted": "missing", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "historical-column-null", + "kind": "text", + "inputJson": "null", + "preview": { + "omitted": "legacy-null", + "issues": [] + }, + "preparation": "unknown-fact", + "basis": "Desk string-map decode treats null as zero string; retained input/lineage must still distinguish null from missing" + }, + { + "id": "decimal-spelling", + "kind": "decimal", + "inputJson": "\"1.2300\"", + "preview": { + "valueJson": "\"1.2300\"", + "issues": [] + }, + "preparation": "same-string" + }, + { + "id": "decimal-negative-zero", + "kind": "decimal", + "inputJson": "\"-0\"", + "preview": { + "valueJson": "\"-0\"", + "issues": [] + }, + "preparation": "same-string" + }, + { + "id": "decimal-exponent-refusal", + "kind": "decimal", + "inputJson": "\"1e2\"", + "preview": { + "issues": [ + "decimal-encoding" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "boolean-true", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"YES\"", + "preview": { + "valueJson": "true", + "issues": [] + }, + "preparation": "true" + }, + { + "id": "boolean-false", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"NO\"", + "preview": { + "valueJson": "false", + "issues": [] + }, + "preparation": "false" + }, + { + "id": "boolean-blank", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"\"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "boolean-invalid", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"yes\"", + "preview": { + "issues": [ + "boolean-spelling" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "number-integer", + "kind": "number", + "inputJson": "\"125\"", + "preview": { + "valueJson": "125", + "issues": [] + }, + "preparation": "integer-125" + }, + { + "id": "number-negative-zero", + "kind": "number", + "inputJson": "\"-0\"", + "preview": { + "valueJson": "-0", + "issues": [] + }, + "preparation": "literal-negative-zero" + }, + { + "id": "number-fraction-preview-only", + "kind": "number", + "inputJson": "\"1.25\"", + "preview": { + "valueJson": "1.25", + "issues": [] + }, + "preparation": "read-failed-no-evaluation", + "basis": "existing canon-domain refusal preserved" + }, + { + "id": "number-exponent-preview-only", + "kind": "number", + "inputJson": "\"1e3\"", + "preview": { + "valueJson": "1e3", + "issues": [] + }, + "preparation": "read-failed-no-evaluation", + "basis": "original literal retained; do not normalize to 1000" + }, + { + "id": "number-range-refusal", + "kind": "number", + "inputJson": "\"9007199254740992\"", + "preview": { + "issues": [ + "number-range" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "number-precision-refusal", + "kind": "number", + "inputJson": "\"1.0000000000000001\"", + "preview": { + "issues": [ + "number-precision" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "number-lexical-refusal", + "kind": "number", + "inputJson": "\"001\"", + "preview": { + "issues": [ + "number-encoding" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "research-empty-type-supported", + "kind": "research-value", + "type": "", + "status": "supported", + "inputJson": "\"x\"", + "preview": {"issues": ["research-type"]} + }, + { + "id": "research-empty-type-missing", + "kind": "research-value", + "type": "", + "status": "missing", + "inputJson": "\"x\"", + "preview": {"omitted": "unavailable", "issues": []} + }, + { + "id": "research-empty-type-entry-absent", + "kind": "research-value", + "type": "", + "fieldEntryAbsent": true, + "inputJson": "\"x\"", + "preview": {"omitted": "unavailable", "issues": []} + }, + { + "id": "research-unknown-type-supported", + "kind": "research-value", + "type": "future", + "status": "supported", + "inputJson": "\"x\"", + "preview": {"issues": ["research-type"]} + }, + { + "id": "research-unknown-type-missing", + "kind": "research-value", + "type": "future", + "status": "missing", + "inputJson": "\"x\"", + "preview": {"omitted": "unavailable", "issues": []} + }, + { + "id": "research-false", + "kind": "research-value", + "type": "boolean", + "status": "supported", + "inputJson": "false", + "preview": { + "valueJson": "false", + "issues": [] + }, + "preparation": "false" + }, + { + "id": "research-zero", + "kind": "research-value", + "type": "integer", + "status": "interpretation", + "inputJson": "0", + "preview": { + "valueJson": "0", + "issues": [] + }, + "preparation": "integer-zero" + }, + { + "id": "research-empty-text", + "kind": "research-value", + "type": "text", + "status": "supported", + "inputJson": "\"\"", + "preview": { + "valueJson": "\"\"", + "issues": [] + }, + "preparation": "empty-string" + }, + { + "id": "research-empty-list", + "kind": "research-value", + "type": "text-list", + "status": "supported", + "inputJson": "[]", + "preview": { + "valueJson": "[]", + "issues": [] + }, + "preparation": "empty-list" + }, + { + "id": "research-range", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":\"1.00\",\"max\":\"2.0\"}", + "preview": { + "valueJson": "{\"min\":\"1.00\",\"max\":\"2.0\"}", + "issues": [] + }, + "preparation": "same-typed-range" + }, + { + "id": "research-supported-null", + "kind": "research-value", + "type": "boolean", + "status": "supported", + "inputJson": "null", + "preview": { + "issues": [ + "research-type" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "research-missing-null", + "kind": "research-value", + "type": "boolean", + "status": "missing", + "inputJson": "null", + "preview": { + "omitted": "unavailable", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "research-stale", + "kind": "research-value", + "type": "text", + "status": "stale", + "inputJson": "\"old\"", + "preview": { + "omitted": "unavailable", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "research-original-unavailable", + "kind": "research-value", + "declaration": null, + "preview": { + "issues": [ + "research-declaration" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "research-legacy-string", + "kind": "research-value", + "type": "string", + "status": "supported", + "inputJson": "\"\"", + "preview": { + "valueJson": "\"\"", + "issues": [] + }, + "preparation": "empty-string" + }, + { + "id": "research-legacy-number", + "kind": "research-value", + "type": "number", + "status": "supported", + "inputJson": "9007199254740993", + "preview": { + "valueJson": "9007199254740993", + "issues": [] + }, + "preparation": "read-failed-no-evaluation", + "basis": "legacy Float64 validity is not modern safe-integer validity; original raw number never rounded" + }, + { + "id": "research-legacy-number-fraction", + "kind": "research-value", + "type": "number", + "status": "supported", + "inputJson": "1.25", + "preview": { + "valueJson": "1.25", + "issues": [] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "evidence-blank", + "kind": "evidence-availability", + "inputJson": "\" \"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "no-availability" + }, + { + "id": "evidence-present", + "kind": "evidence-availability", + "inputJson": "\"present\"", + "preview": { + "valueJson": "\"present\"", + "issues": [] + }, + "preparation": "present" + }, + { + "id": "evidence-invalid", + "kind": "evidence-availability", + "inputJson": "\"citation\"", + "preview": { + "issues": [ + "evidence-availability" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "planned-research-zero-records", + "kind": "research-value", + "recordCount": 0, + "originalDeclaration": null, + "expected": "retain inspectable review proposal for existing/planned column; no type/execution readiness claim", + "status": "comparative acceptance case, must verify pinned actual tool path" + }, + { + "id": "imported-research-value-error", + "kind": "research-value", + "origin": "asserted", + "expected": "legacy research-context preview issue, no evaluation; do not substitute current requested type" + }, + { + "id": "number-tenth", + "kind": "number", + "inputJson": "\"0.1\"", + "preview": { + "valueJson": "0.1", + "issues": [] + }, + "claimAdmissible": false + }, + { + "id": "number-subnormal", + "kind": "number", + "inputJson": "\"5e-324\"", + "preview": { + "issues": [ + "number-exponent" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-zero-large-exponent", + "kind": "number", + "inputJson": "\"0e309\"", + "preview": { + "issues": [ + "number-exponent" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-range-before-exponent", + "kind": "number", + "inputJson": "\"1e309\"", + "preview": { + "issues": [ + "number-range" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-underflow-within-exponent", + "kind": "number", + "inputJson": "\"0.00000000000000001e-308\"", + "preview": { + "issues": [ + "number-precision" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-extra-zeros", + "kind": "number", + "inputJson": "\"1.2500\"", + "preview": { + "valueJson": "1.2500", + "issues": [] + }, + "claimAdmissible": false + }, + { + "id": "number-max-safe", + "kind": "number", + "inputJson": "\"9007199254740991\"", + "preview": { + "valueJson": "9007199254740991", + "issues": [] + }, + "claimAdmissible": true + }, + { + "id": "decimal-leading-zero", + "kind": "decimal", + "inputJson": "\"01\"", + "preview": { + "issues": [ + "decimal-encoding" + ] + } + }, + { + "id": "text-zwsp-present", + "kind": "text", + "inputJson": "\"\\u200b\"", + "preview": { + "valueJson": "\"\\u200b\"", + "issues": [] + } + }, + { + "id": "research-decimal", + "kind": "research-value", + "type": "decimal", + "status": "supported", + "inputJson": "\"1.2300\"", + "preview": { + "valueJson": "\"1.2300\"", + "issues": [] + } + }, + { + "id": "research-range-integer", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":-0,\"max\":0}", + "preview": { + "valueJson": "{\"min\":-0,\"max\":0}", + "issues": [] + } + }, + { + "id": "research-range-reversed", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":\"2.0\",\"max\":\"1.00\"}", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-fraction-not-integer", + "kind": "research-value", + "type": "integer", + "status": "supported", + "inputJson": "1.0", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-declaration-mismatch", + "kind": "research-value", + "type": "boolean", + "status": "supported", + "inputJson": "false", + "revisionMismatch": true, + "preview": { + "issues": [ + "research-declaration" + ] + } + }, + { + "id": "research-metadata", + "kind": "research-value", + "column": "name", + "type": "text", + "status": "supported", + "inputJson": "\"x\"", + "preview": { + "issues": [ + "research-metadata" + ] + } + }, + { + "id": "research-field-absent", + "kind": "research-value", + "undeclared": true, + "type": "text", + "status": "supported", + "inputJson": "\"x\"", + "preview": { + "issues": [ + "research-field" + ] + } + }, + { + "id": "research-value-absent", + "kind": "research-value", + "type": "text", + "status": "supported", + "inputState": "missing", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "generated-text-unresolved", + "kind": "text", + "origin": "generated", + "status": "conflicting", + "inputJson": "\"display\"", + "preview": { + "omitted": "unavailable", + "issues": [] + } + }, + { + "id": "evidence-absent-present", + "kind": "evidence-availability", + "inputJson": "\"absent\"", + "preview": { + "valueJson": "\"absent\"", + "issues": [] + } + }, + { + "id": "evidence-no-trim", + "kind": "evidence-availability", + "inputJson": "\" present \"", + "preview": { + "issues": [ + "evidence-availability" + ] + } + }, + { + "id": "research-legacy-surrogate", + "kind": "research-value", + "type": "string", + "status": "supported", + "inputJson": "\"\\ud800\"", + "preview": { + "valueJson": "\"\\ud800\"", + "issues": [] + }, + "claimAdmissible": false + }, + { + "id": "research-modern-surrogate", + "kind": "research-value", + "type": "text", + "status": "supported", + "inputJson": "\"\\ud800\"", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-duplicate-range", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":1,\"min\":2,\"max\":3}", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-duplicate-case-insensitive", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":1,\"MIN\":1,\"max\":2}", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-trailing-json", + "kind": "research-value", + "type": "string", + "status": "supported", + "inputJson": "\"ok\" true", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "imported-metadata-context-first", + "kind": "research-value", + "column": "name", + "origin": "asserted", + "preview": { + "issues": [ + "research-context" + ] + } + }, + { + "id": "generated-text-missing-entry-kept", + "kind": "text", + "origin": "generated", + "fieldEntryAbsent": true, + "inputJson": "\"display\"", + "preview": { + "valueJson": "\"display\"", + "issues": [] + } + }, + { + "id": "research-missing-entry-omitted", + "kind": "research-value", + "fieldEntryAbsent": true, + "type": "text", + "inputJson": "\"retained\"", + "preview": { + "omitted": "unavailable", + "issues": [] + } + }, + { + "id": "decimal-final-newline", + "kind": "decimal", + "inputJson": "\"1\\n\"", + "preview": { + "issues": [ + "decimal-encoding" + ] + } + }, + { + "id": "number-final-newline", + "kind": "number", + "inputJson": "\"1\\n\"", + "preview": { + "issues": [ + "number-encoding" + ] + } + }, + { + "id": "generated-blank-unresolved", + "kind": "text", + "origin": "generated", + "status": "conflicting", + "inputJson": "\" \"", + "preview": { + "omitted": "blank", + "issues": [] + } + } + ], + "boundaryCases": [ + { + "id": "decimal-at-128", + "kind": "decimal", + "repeat": "1", + "count": 128, + "expected": "value" + }, + { + "id": "decimal-over-128", + "kind": "decimal", + "repeat": "1", + "count": 129, + "expectedIssue": "decimal-encoding" + }, + { + "id": "number-over-128", + "kind": "number", + "repeat": "1", + "count": 129, + "expectedIssue": "number-encoding" + }, + { + "id": "text-at-8192", + "researchType": "text", + "repeat": "a", + "count": 8192, + "expected": "value" + }, + { + "id": "text-over-8192", + "researchType": "text", + "repeat": "a", + "count": 8193, + "expectedIssue": "research-type" + }, + { + "id": "list-at-64", + "researchType": "text-list", + "count": 64, + "expected": "value" + }, + { + "id": "list-over-64", + "researchType": "text-list", + "count": 65, + "expectedIssue": "research-type" + } + ], + "shortestCases": [ + { + "id": "shortest-zero", + "binary64Hex": "0000000000000000", + "expectedRational": "0" + }, + { + "id": "shortest-tenth", + "binary64Hex": "3fb999999999999a", + "expectedRational": "1/10" + }, + { + "id": "shortest-min-subnormal", + "binary64Hex": "0000000000000001", + "expectedRational": "5e-324" + }, + { + "id": "shortest-integer-distance-tie-even", + "binary64Hex": "43143ff3c1cb0959", + "expectedRational": "1424953923781206.2" + }, + { + "id": "shortest-one-even", + "binary64Hex": "3ff0000000000000", + "expectedRational": "1" + }, + { + "id": "shortest-next-one-odd", + "binary64Hex": "3ff0000000000001", + "expectedRational": "1.0000000000000002" + }, + { + "id": "shortest-next-one-even", + "binary64Hex": "3ff0000000000002", + "expectedRational": "1.0000000000000004" + } + ], + "interfaceCases": [ + {"id":"carrier-negative-zero","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"value\":-0}","originalSnapshotSha256":"sha256:9c42950cfdae8b61c50c4abc09ce4eaf0ddf4b607f8324d8f1f07e8fd2c93b20","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{\"value\":-0}","originalSnapshotSha256":"sha256:9c42950cfdae8b61c50c4abc09ce4eaf0ddf4b607f8324d8f1f07e8fd2c93b20","originalSnapshotBytes":12}}, + {"id":"carrier-positive-zero","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"value\":0}","originalSnapshotSha256":"sha256:23d7b286bd429460b92a2a1c21b6afc34110446c5034c17363fda363aa0a7c5d","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{\"value\":0}","originalSnapshotSha256":"sha256:23d7b286bd429460b92a2a1c21b6afc34110446c5034c17363fda363aa0a7c5d","originalSnapshotBytes":11}}, + {"id":"carrier-exponent-escaped","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","originalSnapshotBytes":33}}, + {"id":"carrier-integer-unicode","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"value\":1000,\"label\":\"\u00e9\"}","originalSnapshotSha256":"sha256:4b695b28cee6df187fe2b9aee32ba201c2b0f3e335ffb6f681b194a3b69ad123","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{\"value\":1000,\"label\":\"\u00e9\"}","originalSnapshotSha256":"sha256:4b695b28cee6df187fe2b9aee32ba201c2b0f3e335ffb6f681b194a3b69ad123","originalSnapshotBytes":27}}, + {"id":"carrier-legacy-surrogate","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"legacy\":\"\\ud800\"}","originalSnapshotSha256":"sha256:b6a6140a9226b40b57decd7d8c5739d0b8973ee306c095185d4f6cfac52b0ab1","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{\"legacy\":\"\\ud800\"}","originalSnapshotSha256":"sha256:b6a6140a9226b40b57decd7d8c5739d0b8973ee306c095185d4f6cfac52b0ab1","originalSnapshotBytes":19}}, + {"id":"carrier-digest","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:0000000000000000000000000000000000000000000000000000000000000000","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"snapshot-digest"}}, + {"id":"carrier-object-embedding","request":{"restore":{"contractVersion":"1","originalSnapshotJson":{"value":1000},"originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-missing-digest","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-unknown-member","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}},"snapshot":{}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-version","request":{"restore":{"contractVersion":"2","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-asserted-frame","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"asserted","values":{"Eligible":"NO","Evidence":"absent","Historical":null},"research":null}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-snapshot-one-over","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":32,"carrierBytes":3145728}},"expected":{"refusal":"input-over-bound"}}, + {"id":"carrier-duplicate-snapshot","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"a\":0,\"a\":1}","originalSnapshotSha256":"sha256:8bad01d70be2cb2a3ec527d5412ca6bf6f8d4e4023331f9ecafe5cb682e33b94","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-non-object","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"[]","originalSnapshotSha256":"sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-complete-at","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":663}},"expected":{"originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","originalSnapshotBytes":33}}, + {"id":"carrier-complete-over","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":662}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-document-validation-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"frameBytes":2097152}}},"expected":{"admitted":true}}, + {"id":"admission-over-document-validation-base-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}},"sizes":{"documentBytes":1048577,"frameBytes":2097152}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-document-validation-base-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"frameBytes":2097153}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-document-validation-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}},"sizes":{"documentBytes":2097152,"frameBytes":4194304}}},"expected":{"admitted":true}}, + {"id":"admission-over-document-validation-extended-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}},"sizes":{"documentBytes":2097153,"frameBytes":4194304}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-document-validation-extended-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}},"sizes":{"documentBytes":2097152,"frameBytes":4194305}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preview-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"admitted":true}}, + {"id":"admission-over-preview-base-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048577,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preview-base-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291457,"frameBytes":2097152}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preview-base-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097153}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preview-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}}},"expected":{"admitted":true}}, + {"id":"admission-over-preview-extended-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}},"sizes":{"documentBytes":2097153,"combinedBytes":12582912,"frameBytes":4194304}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preview-extended-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}},"sizes":{"documentBytes":2097152,"combinedBytes":12582913,"frameBytes":4194304}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preview-extended-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194305}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preparation-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"admitted":true}}, + {"id":"admission-over-preparation-base-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048577,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-base-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291457,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-base-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097153,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-base-preparationBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388609,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-base-recordBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388609}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preparation-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"admitted":true}}, + {"id":"admission-over-preparation-extended-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097153,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-extended-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582913,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-extended-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194305,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-extended-preparationBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777217,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-extended-recordBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777217}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preparation-verification-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"admitted":true}}, + {"id":"admission-over-preparation-verification-base-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048577,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-base-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291457,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-base-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097153,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-base-preparationBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388609,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-base-recordBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388609}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preparation-verification-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"admitted":true}}, + {"id":"admission-over-preparation-verification-extended-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097153,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-extended-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582913,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-extended-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194305,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-extended-preparationBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777217,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-extended-recordBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777217}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-producer-carrier-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"admitted":true}}, + {"id":"admission-over-producer-carrier-base-originalSnapshotBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524289,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-base-carrierBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145729,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-base-grantBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145729,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-base-adapterStdoutBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145729,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-base-responseBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145729}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-producer-carrier-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"admitted":true}}, + {"id":"admission-over-producer-carrier-extended-originalSnapshotBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524289,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-extended-carrierBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145729,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-extended-grantBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145729,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-extended-adapterStdoutBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145729,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-extended-responseBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145729}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-absent","request":{"admission":{"capabilities":{"conversionContracts":[]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-missing-role","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-unknown-role","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"execution","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-unknown-contract","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/2","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-unknown-profile","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"huge","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-unsupported-role","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-missing-limit","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-extra-limit","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-extra-member","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152},"semanticValidation":true}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-weak-limit","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291455,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-duplicate-entry","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-identity-version","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-other","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-identity-revision","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-identity-schemaSha256","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:3333333333333333333333333333333333333333333333333333333333333333","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-identity-corpusSha256","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:4444444444444444444444444444444444444444444444444444444444444444"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"lineage-original-revision7","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","json":"-0"},"result":{"state":"value","json":"-0"},"researchIdentity":{"recipeRevision":"recipe:7","fieldSha256":"sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81"}}}, + {"id":"original-revision-mismatch","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:8","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":["research-declaration"],"claimAdmissible":false}}, + {"id":"original-declaration-unavailable","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":null,"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":["research-declaration"],"claimAdmissible":false}}, + {"id":"original-raw-absent","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":["research-type"],"claimAdmissible":false}}, + {"id":"original-raw-null","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"null"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":["research-type"],"claimAdmissible":false}}, + {"id":"original-raw-empty","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":""},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":["research-type"],"claimAdmissible":false}}, + {"id":"original-unavailable-before-raw","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"missing","valueJson":"bad"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":[],"omitted":"unavailable","claimAdmissible":false}}, + {"id":"original-legacy-surrogate-preview","request":{"rule":{"contractVersion":"1","column":"B","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":[],"valueJson":"\"\\ud800\"","claimAdmissible":false}}, + {"id":"lineage-legacy-surrogate-refused","request":{"lineage":{"rule":{"contractVersion":"1","column":"B","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}}},"expected":{"refusal":"read-failed"}}, + {"id":"lineage-asserted-missing","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"text"},"frame":{"contractVersion":"1","origin":"asserted","values":{},"research":null}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"missing"},"result":{"state":"omitted","reason":"missing"}}}, + {"id":"lineage-asserted-null","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"text"},"frame":{"contractVersion":"1","origin":"asserted","values":{"A":null},"research":null}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","json":"null"},"result":{"state":"omitted","reason":"legacy-null"}}}, + {"id":"lineage-asserted-empty","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"text"},"frame":{"contractVersion":"1","origin":"asserted","values":{"A":""},"research":null}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","json":"\"\""},"result":{"state":"omitted","reason":"blank"}}}, + {"id":"lineage-asserted-text","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"text"},"frame":{"contractVersion":"1","origin":"asserted","values":{"A":"\u00e9\n"},"research":null}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","json":"\"\u00e9\\n\""},"result":{"state":"value","json":"\"\u00e9\\n\""}}}, + {"id":"admission-different-known-profile","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-role-wrong-type","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":[],"limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-limit-wrong-type","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":"6291456","frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-limit-zero","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":0,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-missing-size","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-negative-size","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":-1,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-missing-spec-pin","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"lineage-unavailable-raw-missing","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"missing"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"missing"},"result":{"state":"omitted","reason":"unavailable"},"researchIdentity":{"recipeRevision":"recipe:7","fieldSha256":"sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81"}}}, + {"id":"lineage-unavailable-raw-null","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"missing","valueJson":"null"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","json":"null"},"result":{"state":"omitted","reason":"unavailable"},"researchIdentity":{"recipeRevision":"recipe:7","fieldSha256":"sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81"}}}, + {"id":"lineage-unavailable-raw-empty","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"missing","valueJson":""},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","json":""},"result":{"state":"omitted","reason":"unavailable"},"researchIdentity":{"recipeRevision":"recipe:7","fieldSha256":"sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81"}}}, + {"id":"carrier-generated-full-provenance","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"origin\":{\"source\":\"source:original\",\"recipeRevision\":\"recipe:7\",\"receipt\":\"receipt:original\"},\"values\":{\"A\":\"-0\",\"B\":\"legacy\"},\"acquisitions\":[{\"source\":\"sibling:1\",\"receipt\":\"receipt:sibling\"}],\"fields\":{\"A\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"B\":{\"status\":\"interpretation\",\"valueJson\":\"\\\"\\\\ud800\\\"\"}}}","originalSnapshotSha256":"sha256:db9ac0beecaec9714510fc3fa66677564b6dcf1c6fee754d43d343a07ff24f9b","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{\"origin\":{\"source\":\"source:original\",\"recipeRevision\":\"recipe:7\",\"receipt\":\"receipt:original\"},\"values\":{\"A\":\"-0\",\"B\":\"legacy\"},\"acquisitions\":[{\"source\":\"sibling:1\",\"receipt\":\"receipt:sibling\"}],\"fields\":{\"A\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"B\":{\"status\":\"interpretation\",\"valueJson\":\"\\\"\\\\ud800\\\"\"}}}","originalSnapshotSha256":"sha256:db9ac0beecaec9714510fc3fa66677564b6dcf1c6fee754d43d343a07ff24f9b","originalSnapshotBytes":310}}, + {"id":"lineage-malformed-null","request":{"lineage":null},"expected":{"refusal":"input-malformed"}}, + {"id":"lineage-malformed-array","request":{"lineage":[]},"expected":{"refusal":"input-malformed"}}, + {"id":"lineage-malformed-empty","request":{"lineage":""},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-malformed-null","request":{"admission":null},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-malformed-array","request":{"admission":[]},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-malformed-empty","request":{"admission":""},"expected":{"refusal":"input-malformed"}}, + {"id":"restore-malformed-null","request":{"restore":null,"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"restore-malformed-array","request":{"restore":[],"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"restore-malformed-empty","request":{"restore":"","profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}} + ] +} diff --git a/internal/retainedcolumns/testdata/reference-cases.json b/internal/retainedcolumns/testdata/reference-cases.json new file mode 100644 index 0000000..42ccc83 --- /dev/null +++ b/internal/retainedcolumns/testdata/reference-cases.json @@ -0,0 +1,4417 @@ +{ + "status": "Draft handwritten expected cases; not implementation recordings", + "cases": [ + { + "id": "text-preserve", + "kind": "text", + "inputJson": "\" A \"", + "preview": { + "valueJson": "\" A \"", + "issues": [] + }, + "preparation": "same-string" + }, + { + "id": "text-empty", + "kind": "text", + "inputJson": "\"\"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "text-whitespace", + "kind": "text", + "inputJson": "\"\\u00a0\\t\"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "text-missing", + "kind": "text", + "inputState": "missing", + "preview": { + "omitted": "missing", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "historical-column-null", + "kind": "text", + "inputJson": "null", + "preview": { + "omitted": "legacy-null", + "issues": [] + }, + "preparation": "unknown-fact", + "basis": "Desk string-map decode treats null as zero string; retained input/lineage must still distinguish null from missing" + }, + { + "id": "decimal-spelling", + "kind": "decimal", + "inputJson": "\"1.2300\"", + "preview": { + "valueJson": "\"1.2300\"", + "issues": [] + }, + "preparation": "same-string" + }, + { + "id": "decimal-negative-zero", + "kind": "decimal", + "inputJson": "\"-0\"", + "preview": { + "valueJson": "\"-0\"", + "issues": [] + }, + "preparation": "same-string" + }, + { + "id": "decimal-exponent-refusal", + "kind": "decimal", + "inputJson": "\"1e2\"", + "preview": { + "issues": [ + "decimal-encoding" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "boolean-true", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"YES\"", + "preview": { + "valueJson": "true", + "issues": [] + }, + "preparation": "true" + }, + { + "id": "boolean-false", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"NO\"", + "preview": { + "valueJson": "false", + "issues": [] + }, + "preparation": "false" + }, + { + "id": "boolean-blank", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"\"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "boolean-invalid", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"yes\"", + "preview": { + "issues": [ + "boolean-spelling" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "number-integer", + "kind": "number", + "inputJson": "\"125\"", + "preview": { + "valueJson": "125", + "issues": [] + }, + "preparation": "integer-125" + }, + { + "id": "number-negative-zero", + "kind": "number", + "inputJson": "\"-0\"", + "preview": { + "valueJson": "-0", + "issues": [] + }, + "preparation": "literal-negative-zero" + }, + { + "id": "number-fraction-preview-only", + "kind": "number", + "inputJson": "\"1.25\"", + "preview": { + "valueJson": "1.25", + "issues": [] + }, + "preparation": "read-failed-no-evaluation", + "basis": "existing canon-domain refusal preserved" + }, + { + "id": "number-exponent-preview-only", + "kind": "number", + "inputJson": "\"1e3\"", + "preview": { + "valueJson": "1e3", + "issues": [] + }, + "preparation": "read-failed-no-evaluation", + "basis": "original literal retained; do not normalize to 1000" + }, + { + "id": "number-range-refusal", + "kind": "number", + "inputJson": "\"9007199254740992\"", + "preview": { + "issues": [ + "number-range" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "number-precision-refusal", + "kind": "number", + "inputJson": "\"1.0000000000000001\"", + "preview": { + "issues": [ + "number-precision" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "number-lexical-refusal", + "kind": "number", + "inputJson": "\"001\"", + "preview": { + "issues": [ + "number-encoding" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "research-empty-type-supported", + "kind": "research-value", + "type": "", + "status": "supported", + "inputJson": "\"x\"", + "preview": {"issues": ["research-type"]} + }, + { + "id": "research-empty-type-missing", + "kind": "research-value", + "type": "", + "status": "missing", + "inputJson": "\"x\"", + "preview": {"omitted": "unavailable", "issues": []} + }, + { + "id": "research-empty-type-entry-absent", + "kind": "research-value", + "type": "", + "fieldEntryAbsent": true, + "inputJson": "\"x\"", + "preview": {"omitted": "unavailable", "issues": []} + }, + { + "id": "research-unknown-type-supported", + "kind": "research-value", + "type": "future", + "status": "supported", + "inputJson": "\"x\"", + "preview": {"issues": ["research-type"]} + }, + { + "id": "research-unknown-type-missing", + "kind": "research-value", + "type": "future", + "status": "missing", + "inputJson": "\"x\"", + "preview": {"omitted": "unavailable", "issues": []} + }, + { + "id": "research-false", + "kind": "research-value", + "type": "boolean", + "status": "supported", + "inputJson": "false", + "preview": { + "valueJson": "false", + "issues": [] + }, + "preparation": "false" + }, + { + "id": "research-zero", + "kind": "research-value", + "type": "integer", + "status": "interpretation", + "inputJson": "0", + "preview": { + "valueJson": "0", + "issues": [] + }, + "preparation": "integer-zero" + }, + { + "id": "research-empty-text", + "kind": "research-value", + "type": "text", + "status": "supported", + "inputJson": "\"\"", + "preview": { + "valueJson": "\"\"", + "issues": [] + }, + "preparation": "empty-string" + }, + { + "id": "research-empty-list", + "kind": "research-value", + "type": "text-list", + "status": "supported", + "inputJson": "[]", + "preview": { + "valueJson": "[]", + "issues": [] + }, + "preparation": "empty-list" + }, + { + "id": "research-range", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":\"1.00\",\"max\":\"2.0\"}", + "preview": { + "valueJson": "{\"min\":\"1.00\",\"max\":\"2.0\"}", + "issues": [] + }, + "preparation": "same-typed-range" + }, + { + "id": "research-supported-null", + "kind": "research-value", + "type": "boolean", + "status": "supported", + "inputJson": "null", + "preview": { + "issues": [ + "research-type" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "research-missing-null", + "kind": "research-value", + "type": "boolean", + "status": "missing", + "inputJson": "null", + "preview": { + "omitted": "unavailable", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "research-stale", + "kind": "research-value", + "type": "text", + "status": "stale", + "inputJson": "\"old\"", + "preview": { + "omitted": "unavailable", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "research-original-unavailable", + "kind": "research-value", + "declaration": null, + "preview": { + "issues": [ + "research-declaration" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "research-legacy-string", + "kind": "research-value", + "type": "string", + "status": "supported", + "inputJson": "\"\"", + "preview": { + "valueJson": "\"\"", + "issues": [] + }, + "preparation": "empty-string" + }, + { + "id": "research-legacy-number", + "kind": "research-value", + "type": "number", + "status": "supported", + "inputJson": "9007199254740993", + "preview": { + "valueJson": "9007199254740993", + "issues": [] + }, + "preparation": "read-failed-no-evaluation", + "basis": "legacy Float64 validity is not modern safe-integer validity; original raw number never rounded" + }, + { + "id": "research-legacy-number-fraction", + "kind": "research-value", + "type": "number", + "status": "supported", + "inputJson": "1.25", + "preview": { + "valueJson": "1.25", + "issues": [] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "evidence-blank", + "kind": "evidence-availability", + "inputJson": "\" \"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "no-availability" + }, + { + "id": "evidence-present", + "kind": "evidence-availability", + "inputJson": "\"present\"", + "preview": { + "valueJson": "\"present\"", + "issues": [] + }, + "preparation": "present" + }, + { + "id": "evidence-invalid", + "kind": "evidence-availability", + "inputJson": "\"citation\"", + "preview": { + "issues": [ + "evidence-availability" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "planned-research-zero-records", + "kind": "research-value", + "recordCount": 0, + "originalDeclaration": null, + "expected": "retain inspectable review proposal for existing/planned column; no type/execution readiness claim", + "status": "comparative acceptance case, must verify pinned actual tool path" + }, + { + "id": "imported-research-value-error", + "kind": "research-value", + "origin": "asserted", + "expected": "legacy research-context preview issue, no evaluation; do not substitute current requested type" + }, + { + "id": "number-tenth", + "kind": "number", + "inputJson": "\"0.1\"", + "preview": { + "valueJson": "0.1", + "issues": [] + }, + "claimAdmissible": false + }, + { + "id": "number-subnormal", + "kind": "number", + "inputJson": "\"5e-324\"", + "preview": { + "issues": [ + "number-exponent" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-zero-large-exponent", + "kind": "number", + "inputJson": "\"0e309\"", + "preview": { + "issues": [ + "number-exponent" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-range-before-exponent", + "kind": "number", + "inputJson": "\"1e309\"", + "preview": { + "issues": [ + "number-range" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-underflow-within-exponent", + "kind": "number", + "inputJson": "\"0.00000000000000001e-308\"", + "preview": { + "issues": [ + "number-precision" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-extra-zeros", + "kind": "number", + "inputJson": "\"1.2500\"", + "preview": { + "valueJson": "1.2500", + "issues": [] + }, + "claimAdmissible": false + }, + { + "id": "number-max-safe", + "kind": "number", + "inputJson": "\"9007199254740991\"", + "preview": { + "valueJson": "9007199254740991", + "issues": [] + }, + "claimAdmissible": true + }, + { + "id": "decimal-leading-zero", + "kind": "decimal", + "inputJson": "\"01\"", + "preview": { + "issues": [ + "decimal-encoding" + ] + } + }, + { + "id": "text-zwsp-present", + "kind": "text", + "inputJson": "\"\\u200b\"", + "preview": { + "valueJson": "\"\\u200b\"", + "issues": [] + } + }, + { + "id": "research-decimal", + "kind": "research-value", + "type": "decimal", + "status": "supported", + "inputJson": "\"1.2300\"", + "preview": { + "valueJson": "\"1.2300\"", + "issues": [] + } + }, + { + "id": "research-range-integer", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":-0,\"max\":0}", + "preview": { + "valueJson": "{\"min\":-0,\"max\":0}", + "issues": [] + } + }, + { + "id": "research-range-reversed", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":\"2.0\",\"max\":\"1.00\"}", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-fraction-not-integer", + "kind": "research-value", + "type": "integer", + "status": "supported", + "inputJson": "1.0", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-declaration-mismatch", + "kind": "research-value", + "type": "boolean", + "status": "supported", + "inputJson": "false", + "revisionMismatch": true, + "preview": { + "issues": [ + "research-declaration" + ] + } + }, + { + "id": "research-metadata", + "kind": "research-value", + "column": "name", + "type": "text", + "status": "supported", + "inputJson": "\"x\"", + "preview": { + "issues": [ + "research-metadata" + ] + } + }, + { + "id": "research-field-absent", + "kind": "research-value", + "undeclared": true, + "type": "text", + "status": "supported", + "inputJson": "\"x\"", + "preview": { + "issues": [ + "research-field" + ] + } + }, + { + "id": "research-value-absent", + "kind": "research-value", + "type": "text", + "status": "supported", + "inputState": "missing", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "generated-text-unresolved", + "kind": "text", + "origin": "generated", + "status": "conflicting", + "inputJson": "\"display\"", + "preview": { + "omitted": "unavailable", + "issues": [] + } + }, + { + "id": "evidence-absent-present", + "kind": "evidence-availability", + "inputJson": "\"absent\"", + "preview": { + "valueJson": "\"absent\"", + "issues": [] + } + }, + { + "id": "evidence-no-trim", + "kind": "evidence-availability", + "inputJson": "\" present \"", + "preview": { + "issues": [ + "evidence-availability" + ] + } + }, + { + "id": "research-legacy-surrogate", + "kind": "research-value", + "type": "string", + "status": "supported", + "inputJson": "\"\\ud800\"", + "preview": { + "valueJson": "\"\\ud800\"", + "issues": [] + }, + "claimAdmissible": false + }, + { + "id": "research-modern-surrogate", + "kind": "research-value", + "type": "text", + "status": "supported", + "inputJson": "\"\\ud800\"", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-duplicate-range", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":1,\"min\":2,\"max\":3}", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-duplicate-case-insensitive", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":1,\"MIN\":1,\"max\":2}", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-trailing-json", + "kind": "research-value", + "type": "string", + "status": "supported", + "inputJson": "\"ok\" true", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "imported-metadata-context-first", + "kind": "research-value", + "column": "name", + "origin": "asserted", + "preview": { + "issues": [ + "research-context" + ] + } + }, + { + "id": "generated-text-missing-entry-kept", + "kind": "text", + "origin": "generated", + "fieldEntryAbsent": true, + "inputJson": "\"display\"", + "preview": { + "valueJson": "\"display\"", + "issues": [] + } + }, + { + "id": "research-missing-entry-omitted", + "kind": "research-value", + "fieldEntryAbsent": true, + "type": "text", + "inputJson": "\"retained\"", + "preview": { + "omitted": "unavailable", + "issues": [] + } + }, + { + "id": "decimal-final-newline", + "kind": "decimal", + "inputJson": "\"1\\n\"", + "preview": { + "issues": [ + "decimal-encoding" + ] + } + }, + { + "id": "number-final-newline", + "kind": "number", + "inputJson": "\"1\\n\"", + "preview": { + "issues": [ + "number-encoding" + ] + } + }, + { + "id": "generated-blank-unresolved", + "kind": "text", + "origin": "generated", + "status": "conflicting", + "inputJson": "\" \"", + "preview": { + "omitted": "blank", + "issues": [] + } + } + ], + "boundaryCases": [ + { + "id": "decimal-at-128", + "kind": "decimal", + "repeat": "1", + "count": 128, + "expected": "value" + }, + { + "id": "decimal-over-128", + "kind": "decimal", + "repeat": "1", + "count": 129, + "expectedIssue": "decimal-encoding" + }, + { + "id": "number-over-128", + "kind": "number", + "repeat": "1", + "count": 129, + "expectedIssue": "number-encoding" + }, + { + "id": "text-at-8192", + "researchType": "text", + "repeat": "a", + "count": 8192, + "expected": "value" + }, + { + "id": "text-over-8192", + "researchType": "text", + "repeat": "a", + "count": 8193, + "expectedIssue": "research-type" + }, + { + "id": "list-at-64", + "researchType": "text-list", + "count": 64, + "expected": "value" + }, + { + "id": "list-over-64", + "researchType": "text-list", + "count": 65, + "expectedIssue": "research-type" + } + ], + "shortestCases": [ + { + "id": "shortest-zero", + "binary64Hex": "0000000000000000", + "expectedRational": "0" + }, + { + "id": "shortest-tenth", + "binary64Hex": "3fb999999999999a", + "expectedRational": "1/10" + }, + { + "id": "shortest-min-subnormal", + "binary64Hex": "0000000000000001", + "expectedRational": "5e-324" + }, + { + "id": "shortest-integer-distance-tie-even", + "binary64Hex": "43143ff3c1cb0959", + "expectedRational": "1424953923781206.2" + }, + { + "id": "shortest-one-even", + "binary64Hex": "3ff0000000000000", + "expectedRational": "1" + }, + { + "id": "shortest-next-one-odd", + "binary64Hex": "3ff0000000000001", + "expectedRational": "1.0000000000000002" + }, + { + "id": "shortest-next-one-even", + "binary64Hex": "3ff0000000000002", + "expectedRational": "1.0000000000000004" + } + ], + "interfaceCases": [ + {"id":"carrier-negative-zero","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"value\":-0}","originalSnapshotSha256":"sha256:9c42950cfdae8b61c50c4abc09ce4eaf0ddf4b607f8324d8f1f07e8fd2c93b20","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{\"value\":-0}","originalSnapshotSha256":"sha256:9c42950cfdae8b61c50c4abc09ce4eaf0ddf4b607f8324d8f1f07e8fd2c93b20","originalSnapshotBytes":12}}, + {"id":"carrier-positive-zero","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"value\":0}","originalSnapshotSha256":"sha256:23d7b286bd429460b92a2a1c21b6afc34110446c5034c17363fda363aa0a7c5d","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{\"value\":0}","originalSnapshotSha256":"sha256:23d7b286bd429460b92a2a1c21b6afc34110446c5034c17363fda363aa0a7c5d","originalSnapshotBytes":11}}, + {"id":"carrier-exponent-escaped","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","originalSnapshotBytes":33}}, + {"id":"carrier-integer-unicode","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"value\":1000,\"label\":\"\u00e9\"}","originalSnapshotSha256":"sha256:4b695b28cee6df187fe2b9aee32ba201c2b0f3e335ffb6f681b194a3b69ad123","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{\"value\":1000,\"label\":\"\u00e9\"}","originalSnapshotSha256":"sha256:4b695b28cee6df187fe2b9aee32ba201c2b0f3e335ffb6f681b194a3b69ad123","originalSnapshotBytes":27}}, + {"id":"carrier-legacy-surrogate","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"legacy\":\"\\ud800\"}","originalSnapshotSha256":"sha256:b6a6140a9226b40b57decd7d8c5739d0b8973ee306c095185d4f6cfac52b0ab1","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{\"legacy\":\"\\ud800\"}","originalSnapshotSha256":"sha256:b6a6140a9226b40b57decd7d8c5739d0b8973ee306c095185d4f6cfac52b0ab1","originalSnapshotBytes":19}}, + {"id":"carrier-digest","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:0000000000000000000000000000000000000000000000000000000000000000","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"snapshot-digest"}}, + {"id":"carrier-object-embedding","request":{"restore":{"contractVersion":"1","originalSnapshotJson":{"value":1000},"originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-missing-digest","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-unknown-member","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}},"snapshot":{}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-version","request":{"restore":{"contractVersion":"2","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-asserted-frame","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"asserted","values":{"Eligible":"NO","Evidence":"absent","Historical":null},"research":null}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-snapshot-one-over","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":32,"carrierBytes":3145728}},"expected":{"refusal":"input-over-bound"}}, + {"id":"carrier-duplicate-snapshot","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"a\":0,\"a\":1}","originalSnapshotSha256":"sha256:8bad01d70be2cb2a3ec527d5412ca6bf6f8d4e4023331f9ecafe5cb682e33b94","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-non-object","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"[]","originalSnapshotSha256":"sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"carrier-complete-at","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":663}},"expected":{"originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","originalSnapshotBytes":33}}, + {"id":"carrier-complete-over","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{ \"value\":1e3,\"label\":\"\\u00e9\" }\n","originalSnapshotSha256":"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":662}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-document-validation-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"frameBytes":2097152}}},"expected":{"admitted":true}}, + {"id":"admission-over-document-validation-base-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}},"sizes":{"documentBytes":1048577,"frameBytes":2097152}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-document-validation-base-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"frameBytes":2097153}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-document-validation-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}},"sizes":{"documentBytes":2097152,"frameBytes":4194304}}},"expected":{"admitted":true}}, + {"id":"admission-over-document-validation-extended-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}},"sizes":{"documentBytes":2097153,"frameBytes":4194304}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-document-validation-extended-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"document-validation","limits":{"documentBytes":2097152,"frameBytes":4194304}},"sizes":{"documentBytes":2097152,"frameBytes":4194305}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preview-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"admitted":true}}, + {"id":"admission-over-preview-base-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048577,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preview-base-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291457,"frameBytes":2097152}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preview-base-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097153}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preview-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}}},"expected":{"admitted":true}}, + {"id":"admission-over-preview-extended-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}},"sizes":{"documentBytes":2097153,"combinedBytes":12582912,"frameBytes":4194304}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preview-extended-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}},"sizes":{"documentBytes":2097152,"combinedBytes":12582913,"frameBytes":4194304}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preview-extended-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194305}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preparation-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"admitted":true}}, + {"id":"admission-over-preparation-base-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048577,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-base-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291457,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-base-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097153,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-base-preparationBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388609,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-base-recordBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388609}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preparation-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"admitted":true}}, + {"id":"admission-over-preparation-extended-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097153,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-extended-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582913,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-extended-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194305,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-extended-preparationBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777217,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-extended-recordBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777217}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preparation-verification-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"admitted":true}}, + {"id":"admission-over-preparation-verification-base-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048577,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-base-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291457,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-base-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097153,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-base-preparationBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388609,"recordBytes":8388608}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-base-recordBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388609}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-preparation-verification-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"admitted":true}}, + {"id":"admission-over-preparation-verification-extended-documentBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097153,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-extended-combinedBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582913,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-extended-frameBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194305,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-extended-preparationBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777217,"recordBytes":16777216}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-preparation-verification-extended-recordBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777217}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-producer-carrier-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"admitted":true}}, + {"id":"admission-over-producer-carrier-base-originalSnapshotBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524289,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-base-carrierBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145729,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-base-grantBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145729,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-base-adapterStdoutBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145729,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-base-responseBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145729}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-producer-carrier-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"admitted":true}}, + {"id":"admission-over-producer-carrier-extended-originalSnapshotBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524289,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-extended-carrierBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145729,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-extended-grantBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145729,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-extended-adapterStdoutBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145729,"responseBytes":3145728}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-over-producer-carrier-extended-responseBytes","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145729}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-absent","request":{"admission":{"capabilities":{"conversionContracts":[]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-missing-role","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-unknown-role","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"execution","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-unknown-contract","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/2","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-unknown-profile","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"huge","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-unsupported-role","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"document-validation","limits":{"documentBytes":1048576,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-missing-limit","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-extra-limit","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-extra-member","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152},"semanticValidation":true}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-weak-limit","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291455,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-over-bound"}}, + {"id":"admission-duplicate-entry","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-identity-version","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-other","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-identity-revision","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-identity-schemaSha256","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:3333333333333333333333333333333333333333333333333333333333333333","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-identity-corpusSha256","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:4444444444444444444444444444444444444444444444444444444444444444"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"lineage-original-revision7","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","ref":{"frameSha256":"sha256:9a36aa91e6097c7828dd0fa69cf1b2b1842ffcff01f61fd96267b1ad54933987","location":"research-value"}},"result":{"state":"value","json":"-0"},"researchIdentity":{"recipeRevision":"recipe:7","fieldSha256":"sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81"}}}, + {"id":"original-revision-mismatch","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:8","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":["research-declaration"],"claimAdmissible":false}}, + {"id":"original-declaration-unavailable","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":null,"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":["research-declaration"],"claimAdmissible":false}}, + {"id":"original-raw-absent","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":["research-type"],"claimAdmissible":false}}, + {"id":"original-raw-null","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"null"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":["research-type"],"claimAdmissible":false}}, + {"id":"original-raw-empty","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":""},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":["research-type"],"claimAdmissible":false}}, + {"id":"original-unavailable-before-raw","request":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"missing","valueJson":"bad"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":[],"omitted":"unavailable","claimAdmissible":false}}, + {"id":"original-legacy-surrogate-preview","request":{"rule":{"contractVersion":"1","column":"B","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"expected":{"issues":[],"valueJson":"\"\\ud800\"","claimAdmissible":false}}, + {"id":"lineage-legacy-surrogate-refused","request":{"lineage":{"rule":{"contractVersion":"1","column":"B","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}}},"expected":{"refusal":"read-failed"}}, + {"id":"lineage-asserted-missing","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"text"},"frame":{"contractVersion":"1","origin":"asserted","values":{},"research":null}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"missing"},"result":{"state":"omitted","reason":"missing"}}}, + {"id":"lineage-asserted-null","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"text"},"frame":{"contractVersion":"1","origin":"asserted","values":{"A":null},"research":null}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","ref":{"frameSha256":"sha256:f46ab73a50de36aec1c34e96116a0389177b729d474cf63fadbb5e7b6f92c331","location":"values"}},"result":{"state":"omitted","reason":"legacy-null"}}}, + {"id":"lineage-asserted-empty","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"text"},"frame":{"contractVersion":"1","origin":"asserted","values":{"A":""},"research":null}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","ref":{"frameSha256":"sha256:46d099cd734f95d5cf8894bd73d76148dc23422546704d92682bb8e738ea6f29","location":"values"}},"result":{"state":"omitted","reason":"blank"}}}, + {"id":"lineage-asserted-text","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"text"},"frame":{"contractVersion":"1","origin":"asserted","values":{"A":"\u00e9\n"},"research":null}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","ref":{"frameSha256":"sha256:bc2a3e40a1ea0942a11b12f0b4b141543e2fa434cd2c0fa6ef67d8dbb9783c47","location":"values"}},"result":{"state":"value","json":"\"\u00e9\\n\""}}}, + {"id":"admission-different-known-profile","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-role-wrong-type","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":[],"limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-limit-wrong-type","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":"6291456","frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-limit-zero","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":0,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-missing-size","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-negative-size","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":-1,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-missing-spec-pin","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preview","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152}}},"expected":{"refusal":"input-malformed"}}, + {"id":"lineage-unavailable-raw-missing","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"missing"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"missing"},"result":{"state":"omitted","reason":"unavailable"},"researchIdentity":{"recipeRevision":"recipe:7","fieldSha256":"sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81"}}}, + {"id":"lineage-unavailable-raw-null","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"missing","valueJson":"null"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","ref":{"frameSha256":"sha256:3b9ac18e5679000430ac87f13bf16ea58752dc22640ced6d6ed9a6e684b6e608","location":"research-value"}},"result":{"state":"omitted","reason":"unavailable"},"researchIdentity":{"recipeRevision":"recipe:7","fieldSha256":"sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81"}}}, + {"id":"lineage-unavailable-raw-empty","request":{"lineage":{"rule":{"contractVersion":"1","column":"A","kind":"research-value"},"frame":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"missing","valueJson":""},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}}},"expected":{"contractVersion":"1","column":"A","input":{"state":"present","ref":{"frameSha256":"sha256:c74c6c4edda614fe67733bd0c5683bd394e01eb9c2f33c20496f3f06c7097ee7","location":"research-value"}},"result":{"state":"omitted","reason":"unavailable"},"researchIdentity":{"recipeRevision":"recipe:7","fieldSha256":"sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81"}}}, + {"id":"carrier-generated-full-provenance","request":{"restore":{"contractVersion":"1","originalSnapshotJson":"{\"origin\":{\"source\":\"source:original\",\"recipeRevision\":\"recipe:7\",\"receipt\":\"receipt:original\"},\"values\":{\"A\":\"-0\",\"B\":\"legacy\"},\"acquisitions\":[{\"source\":\"sibling:1\",\"receipt\":\"receipt:sibling\"}],\"fields\":{\"A\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"B\":{\"status\":\"interpretation\",\"valueJson\":\"\\\"\\\\ud800\\\"\"}}}","originalSnapshotSha256":"sha256:db9ac0beecaec9714510fc3fa66677564b6dcf1c6fee754d43d343a07ff24f9b","retained":{"contractVersion":"1","origin":"generated","values":{"A":"-0","B":"legacy"},"research":{"recordRecipeRevision":"recipe:7","declaration":{"recipeRevision":"recipe:7","fields":[{"name":"A","fieldJson":"{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}"},{"name":"B","fieldJson":"{\"name\":\"B\",\"type\":\"string\"}"}]},"fields":{"A":{"status":"supported","valueJson":"-0"},"B":{"status":"interpretation","valueJson":"\"\\ud800\""}}}}},"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"originalSnapshotJson":"{\"origin\":{\"source\":\"source:original\",\"recipeRevision\":\"recipe:7\",\"receipt\":\"receipt:original\"},\"values\":{\"A\":\"-0\",\"B\":\"legacy\"},\"acquisitions\":[{\"source\":\"sibling:1\",\"receipt\":\"receipt:sibling\"}],\"fields\":{\"A\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"B\":{\"status\":\"interpretation\",\"valueJson\":\"\\\"\\\\ud800\\\"\"}}}","originalSnapshotSha256":"sha256:db9ac0beecaec9714510fc3fa66677564b6dcf1c6fee754d43d343a07ff24f9b","originalSnapshotBytes":310}}, + {"id":"lineage-malformed-null","request":{"lineage":null},"expected":{"refusal":"input-malformed"}}, + {"id":"lineage-malformed-array","request":{"lineage":[]},"expected":{"refusal":"input-malformed"}}, + {"id":"lineage-malformed-empty","request":{"lineage":""},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-malformed-null","request":{"admission":null},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-malformed-array","request":{"admission":[]},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-malformed-empty","request":{"admission":""},"expected":{"refusal":"input-malformed"}}, + {"id":"restore-malformed-null","request":{"restore":null,"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"restore-malformed-array","request":{"restore":[],"profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"restore-malformed-empty","request":{"restore":"","profile":"base","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728}},"expected":{"refusal":"input-malformed"}}, + {"id":"admission-producer-grammar","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728},"producerGrammar":"desk-reviewed-input/1"}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728},"producerGrammar":"desk-reviewed-input/1"},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"admitted":true}}, + {"id":"admission-producer-missing-grammar","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728},"producerGrammar":"desk-reviewed-input/1"},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-producer-unknown-grammar","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728},"producerGrammar":"other/1"}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728},"producerGrammar":"desk-reviewed-input/1"},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-producer-missing-conversion-contracts","request":{"admission":{"capabilities":{},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"producer-carrier","limits":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728},"producerGrammar":"desk-reviewed-input/1"},"sizes":{"originalSnapshotBytes":524288,"carrierBytes":3145728,"grantBytes":3145728,"adapterStdoutBytes":3145728,"responseBytes":3145728}}},"expected":{"refusal":"capability-unsupported"}}, + {"id":"admission-grammar-preparation-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608},"producerGrammar":"desk-reviewed-input/1"}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608},"producerGrammar":"desk-reviewed-input/1"},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"admitted":true}}, + {"id":"admission-grammar-preparation-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216},"producerGrammar":"desk-reviewed-input/1"}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216},"producerGrammar":"desk-reviewed-input/1"},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"admitted":true}}, + {"id":"admission-grammar-preparation-verification-base","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608},"producerGrammar":"desk-reviewed-input/1"}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"base","role":"preparation-verification","limits":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608},"producerGrammar":"desk-reviewed-input/1"},"sizes":{"documentBytes":1048576,"combinedBytes":6291456,"frameBytes":2097152,"preparationBytes":8388608,"recordBytes":8388608}}},"expected":{"admitted":true}}, + {"id":"admission-grammar-preparation-verification-extended","request":{"admission":{"capabilities":{"conversionContracts":[{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216},"producerGrammar":"desk-reviewed-input/1"}]},"required":{"contract":"retained-column/1","spec":{"version":"draft-rfc0029","revision":"0000000000000000000000000000000000000000","schemaSha256":"sha256:1111111111111111111111111111111111111111111111111111111111111111","corpusSha256":"sha256:2222222222222222222222222222222222222222222222222222222222222222"},"profile":"extended","role":"preparation-verification","limits":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216},"producerGrammar":"desk-reviewed-input/1"},"sizes":{"documentBytes":2097152,"combinedBytes":12582912,"frameBytes":4194304,"preparationBytes":16777216,"recordBytes":16777216}}},"expected":{"admitted":true}} + ], + "producerCases": [ + { + "id": "producer-original-type-text" + , "expectedPatch":[ + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ]}, + { + "id": "producer-original-type-integer", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Integer" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "Integer" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "-0" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-decimal", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Decimal" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "Decimal" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"1.2300\"" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-boolean", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Boolean" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "Boolean" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "false" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-text-list", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "List" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "List" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "[]" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-range", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Range" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "Range" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "{\"min\":\"1.00\",\"max\":\"2.0\"}" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-string", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "String" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "String" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"\"" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-number", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Number" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "Number" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "-0" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-kind-text", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "text" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-kind-decimal", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Decimal" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "decimal" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Decimal" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"1.2300\"" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-kind-number", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Number" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "number" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Number" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "-0" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-kind-boolean", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Boolean" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "boolean" + }, + { + "path": [ + "generatedConsistency", + "rule", + "trueValue" + ], + "value": "true" + }, + { + "path": [ + "generatedConsistency", + "rule", + "falseValue" + ], + "value": "false" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Boolean" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "false" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-kind-evidence-availability", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "evidence-availability" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"present\"" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-omitted-unselected-declaration", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields" + ], + "value": [ + { + "name": "Text", + "fieldJson": "{\"type\":\"text\",\"name\":\"Text\",\"description\":\"A \\u0042 / kept\"}" + }, + { + "name": "Integer", + "fieldJson": "{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"}" + }, + { + "name": "Decimal", + "fieldJson": "{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"}" + }, + { + "name": "Boolean", + "fieldJson": "{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"}" + }, + { + "name": "List", + "fieldJson": "{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"}" + }, + { + "name": "Range", + "fieldJson": "{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"}" + }, + { + "name": "String", + "fieldJson": "{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"}" + }, + { + "name": "Number", + "fieldJson": "{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"}" + } + ] + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:6dc48a2dc5e7c7119c4377754526a6164390c0106557b36cc59aa461aff5f4bc" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-extra-declaration", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields" + ], + "value": [ + { + "name": "Text", + "fieldJson": "{\"type\":\"text\",\"name\":\"Text\",\"description\":\"A \\u0042 / kept\"}" + }, + { + "name": "Integer", + "fieldJson": "{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"}" + }, + { + "name": "Decimal", + "fieldJson": "{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"}" + }, + { + "name": "Boolean", + "fieldJson": "{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"}" + }, + { + "name": "List", + "fieldJson": "{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"}" + }, + { + "name": "Range", + "fieldJson": "{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"}" + }, + { + "name": "String", + "fieldJson": "{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"}" + }, + { + "name": "Number", + "fieldJson": "{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"}" + }, + { + "name": "Evidence", + "fieldJson": "{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}" + }, + { + "name": "Extra", + "fieldJson": "{\"name\":\"Extra\",\"type\":\"text\"}" + } + ] + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:680ffbb2a99ce0a0577e0faeed3c8a9b06da5ccd5c2d546469ffbb3299e209ac" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-reordered-declarations", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 0, + "name" + ], + "value": "Evidence" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 0, + "fieldJson" + ], + "value": "{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 1, + "name" + ], + "value": "Number" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 1, + "fieldJson" + ], + "value": "{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 2, + "name" + ], + "value": "String" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 2, + "fieldJson" + ], + "value": "{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 3, + "name" + ], + "value": "Range" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 3, + "fieldJson" + ], + "value": "{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 5, + "name" + ], + "value": "Boolean" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 5, + "fieldJson" + ], + "value": "{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 6, + "name" + ], + "value": "Decimal" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 6, + "fieldJson" + ], + "value": "{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 7, + "name" + ], + "value": "Integer" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 7, + "fieldJson" + ], + "value": "{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 8, + "name" + ], + "value": "Text" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 8, + "fieldJson" + ], + "value": "{\"type\":\"text\",\"name\":\"Text\",\"description\":\"A \\u0042 / kept\"}" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:c227d6757513533c9b93770f98ed22eed4bcbe63dbcb5d155d59ad9218530a79" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-unselected-description", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 7, + "fieldJson" + ], + "value": "{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Changed unselected\"}" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:3504a7050aaa6a156a66f166dcf75d365344818cd68d0f3ea137fc55d8328692" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-semantic-equal-escape-changed", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 0, + "fieldJson" + ], + "value": "{\"type\":\"text\",\"name\":\"Text\",\"description\":\"A B / kept\"}" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:5d2be429514f3e61c69bb39001aaccaaaadbae29c939e39dd4bb135f646166e3" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-current-frame-revision", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "recordRecipeRevision" + ], + "value": "sha256:6ac1dde4e2cb90262060258a1cb1ee5ba2538f4822f427fb24110e9fbcbb69cf" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:fb457571371329a04b1fade5f1d7d7fc9061df62963bc088c1b774bcf70c9e49" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-current-declaration-revision", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "recipeRevision" + ], + "value": "sha256:6ac1dde4e2cb90262060258a1cb1ee5ba2538f4822f427fb24110e9fbcbb69cf" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:bb405f4e16e2f1540c86e2e60b40640f1cbb83adea9e9e3ed2fde0d8e43ffcf5" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-original-revision-missing", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:04042ad5b63806097cb0659c82e79e5df4d75d0afad863ff7529c1bba62ce98e" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:afe407f6b0cc167e8acece6172f8fa5bd285a2d28cc285bbc843007170dffa8e" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-record-original-revision-mismatch", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":8,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:b04dfc4d28d5ad95484a01425164f7f7edf655e86c02d74cf8bba75381959198" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:ca450043b392071ef63ae4f97b2dbf7bcad0b504532cf1ba46bcbf5c4440e3c8" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-run-id-invalid", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_not-a-supported-id\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_not-a-supported-id\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:d5f624385882c468d63959c5dc3cf48e12fc45d8a3f1f2d4d67c517cc12851dd" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:ed94ef25281680ed9024c61fd0be27f8b229121003abffce66c29fa03cf441a6" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-version-not-literal-integer", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7e0,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7e0,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:029d8697207f336d06f82ba36f0c2f00c2265b5b3aa0ba2de1d001313a839eea" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:fbbb8d37532788686ac488c4dcb4fcbf2b94bd134c16a7a729850d248bd7cdd6" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-original-fields-missing", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"notFields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:4d8102da1d96389e9bd6cc17ceca5042d6ae808242044f7ad84a27f599371a74" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:d7a3a3efdcf5199177c19903120e0efd136b4ac2b3b5e5e0282f2e9edb866bae" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-filtered-values-substitution", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Integer" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Decimal" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Boolean" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "List" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Range" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "String" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Number" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Evidence" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Text" + ], + "value": "filtered visible" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:dec0c2a30ea2608c883da6897605e7af94bf2384f29905d85faf4ce4869900e7" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-zero-spelling-changed", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Integer", + "valueJson" + ], + "value": "0" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:a6ec27e3321e8b5e4fd15e9400cc6f778b6c7990ac8da6cb53df1d6de18b07ec" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-status-changed", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Boolean", + "status" + ], + "value": "missing" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:79a9715441fadd67b75df40914d14dd5da81f9da691f87a90dd0fa47f058a489" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-typed-field-omitted", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Number" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:de2e06b3d161e7f255719d26618b510ef254bd1e9b96743aaf80b5a64063a06b" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-wrong-trusted-source", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer", + "source" + ], + "value": "other-source" + } + ], + "expected": { + "refusal": "profile-mismatch" + } + }, + { + "id": "producer-asserted-trust", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer", + "class" + ], + "value": "asserted" + } + ], + "expected": { + "refusal": "profile-mismatch" + } + }, + { + "id": "producer-record-trust", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer", + "class" + ], + "value": "record" + } + ], + "expected": { + "refusal": "profile-mismatch" + } + }, + { + "id": "producer-old-adapter", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer", + "adapter", + "version" + ], + "value": "1" + } + ], + "expected": { + "refusal": "profile-mismatch" + } + }, + { + "id": "producer-wrong-profile-digest", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "sourceBinding", + "profileDigest" + ], + "value": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" + } + ], + "expected": { + "refusal": "profile-mismatch" + } + }, + { + "id": "producer-unknown-grammar", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer", + "retainedColumnProducer", + "grammar" + ], + "value": "other/1" + } + ], + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "producer-frame-origin-forged", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "origin" + ], + "value": "asserted" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:68cd89447354e38028c2e8ff1858a3ed6933a8b3237635ca495324d7913371fd" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-updated-frame-old-receipt", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\"changed\",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\"changed\",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:00dacd4cd2c331a555ff9e2be0539e3e72256fef65617a34b9446bc73a673f99" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Text" + ], + "value": "changed" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Text", + "valueJson" + ], + "value": "\"changed\"" + } + ], + "expected": { + "refusal": "acquisition-invalid" + } + }, + { + "id": "producer-duplicate-snapshot-key", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"cl\\u0061ss\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:4e9f48488441eca4b1f2dde38b0375e0e77776250716532d1a5c75b3beafd005" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:dcbe654b3137f922cb4fe820efdcc1633e280287e21d750e3fefa313f5e5874d" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-duplicate-nested-key", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"x\":1,\"\\u0078\":2}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:4b4cdd463cfb015c751ceec805c50405e3df6a4df6f36806084553ddb062b2bd" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:c867f92b9a9126be8e0959dbea823293b6a30030f0fe8699f34b9d0721703f75" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-duplicate-declaration-name", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:324b0b3ab4736cba4d1cbaa3ca96e10275a67da1e5ea734725979d96bf0f5cf4" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:3ce6a241f21d0c4aead23da0cfb4b9adedfed7e3b05650c51ecf261a3cec8c4e" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-unavailable-absent", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"missing\",\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:7a489b2c5ba033f1bd8dde3c3dfc6426c395645120a2dd6c305a7e051e3aa526" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Boolean", + "valueJson" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Boolean", + "status" + ], + "value": "missing" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:b401945245ba15164f6c5d43fd8b897325ebd85f4e282ab1e0889469a4c5445c" + }, + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Boolean" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:7a489b2c5ba033f1bd8dde3c3dfc6426c395645120a2dd6c305a7e051e3aa526" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:59453fa223eddd68728a4128c690aeafdeee1bff9971e53a54fafaa77856480a" + }, + { + "path": [ + "projection", + "fields", + "Boolean", + "valueJson" + ], + "remove": true + }, + { + "path": [ + "projection", + "fields", + "Boolean", + "status" + ], + "value": "missing" + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Boolean" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "remove": true + }, + { + "path": [ + "transformation", + "result", + "state" + ], + "value": "omitted" + }, + { + "path": [ + "transformation", + "result", + "reason" + ], + "value": "unavailable" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "missing" + } + } + ] + }, + { + "id": "producer-unavailable-null", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"missing\",\"value\":null,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:1a7e66b3a08cec8bdedf1d608a33ea416500b9c4c94a17c6c3ace0f60b8e47c5" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Boolean", + "status" + ], + "value": "missing" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Boolean", + "valueJson" + ], + "value": "null" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:fb649a9d0105e67c0a8d404fc3d295e70991b6b7363dbd6fcfefd374f736ebf5" + }, + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Boolean" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:1a7e66b3a08cec8bdedf1d608a33ea416500b9c4c94a17c6c3ace0f60b8e47c5" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:286b7fa4642d919bc9dc8f4683f72675975de3c0f0cfdc1b1b705a9af2b8fc74" + }, + { + "path": [ + "projection", + "fields", + "Boolean", + "status" + ], + "value": "missing" + }, + { + "path": [ + "projection", + "fields", + "Boolean", + "valueJson" + ], + "value": "null" + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Boolean" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "remove": true + }, + { + "path": [ + "transformation", + "result", + "state" + ], + "value": "omitted" + }, + { + "path": [ + "transformation", + "result", + "reason" + ], + "value": "unavailable" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:286b7fa4642d919bc9dc8f4683f72675975de3c0f0cfdc1b1b705a9af2b8fc74", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-availability-absent", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"absent\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:516048df9328b4027408bc01a2ba64dcd0dba859b9e15f78ee26a2cac8442699" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Evidence" + ], + "value": "absent" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:230689081da8fe78c98cd1e31bc4779e38ee64def2b6215dcc5692a050e16efb" + }, + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "evidence-availability" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:516048df9328b4027408bc01a2ba64dcd0dba859b9e15f78ee26a2cac8442699" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:e6cd75757aa8f19324b4b8cd26728bc936a091decfb1874218fed2515175e9d1" + }, + { + "path": [ + "projection", + "values", + "Evidence" + ], + "value": "absent" + }, + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"absent\"" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:e6cd75757aa8f19324b4b8cd26728bc936a091decfb1874218fed2515175e9d1", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-availability-unknown", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"unknown\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:e4866ac57ce1aabf403a9aef302f6d53d53add86853b4274d7ceb96c6b79e741" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Evidence" + ], + "value": "unknown" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:a3e6dcbf9b0826353d6aba20167e76dd93a6bb86e770e99d0c3a287a6815912c" + }, + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "evidence-availability" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:e4866ac57ce1aabf403a9aef302f6d53d53add86853b4274d7ceb96c6b79e741" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:775394053b4489fb881c6b1a2ba96abdc6d587f34086478769a59e143d07ae4a" + }, + { + "path": [ + "projection", + "values", + "Evidence" + ], + "value": "unknown" + }, + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"unknown\"" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:775394053b4489fb881c6b1a2ba96abdc6d587f34086478769a59e143d07ae4a", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-revision-boundary-1", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":1,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":1,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:2c0c1589d4e4d7245a483dc680570976793bd11391ed41a0d22c076897a72a00" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "recordRecipeRevision" + ], + "value": "sha256:2ad9735e6b3b81add9fa85447209c1104b85708c81a6694ea83d607e6bc15ca2" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "recipeRevision" + ], + "value": "sha256:2ad9735e6b3b81add9fa85447209c1104b85708c81a6694ea83d607e6bc15ca2" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:5a88b51911f607c70cc530c704ce668cc964180919765f6d909968c5d6f67183" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:2c0c1589d4e4d7245a483dc680570976793bd11391ed41a0d22c076897a72a00" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:a1e85c3dd9f3ea55d8afba10d4568c9c5e3a69ae2ab5308d73ea6b8b7db35810" + }, + { + "path": [ + "revisionIdentity" + ], + "value": "sha256:2ad9735e6b3b81add9fa85447209c1104b85708c81a6694ea83d607e6bc15ca2" + }, + { + "path": [ + "projection", + "recipeVersion" + ], + "value": 1 + }, + { + "path": [ + "projection", + "recordRecipeVersion" + ], + "value": 1 + }, + { + "path": [ + "transformation", + "researchIdentity", + "recipeRevision" + ], + "value": "sha256:2ad9735e6b3b81add9fa85447209c1104b85708c81a6694ea83d607e6bc15ca2" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:a1e85c3dd9f3ea55d8afba10d4568c9c5e3a69ae2ab5308d73ea6b8b7db35810", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-revision-boundary-9007199254740991", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":9007199254740991,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":9007199254740991,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:846acccd4ba99ed32bfbd72c86b76ea94cf9d430e2dea4ebe8c58a7b96276418" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "recordRecipeRevision" + ], + "value": "sha256:195f78bf3c5a40044ebe16d52f934a9edb9f5665ac93c6bec7525d939adcb18e" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "recipeRevision" + ], + "value": "sha256:195f78bf3c5a40044ebe16d52f934a9edb9f5665ac93c6bec7525d939adcb18e" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:0ba64b795fb9c175b5272b6abab9cf46486eaeac62aec7b6b51186c0b4dc9ca8" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:846acccd4ba99ed32bfbd72c86b76ea94cf9d430e2dea4ebe8c58a7b96276418" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:eabb4bad72c9859b47186ff9d39ef89ba7f0f3573bdc880a390ba22ea0c8e3fc" + }, + { + "path": [ + "revisionIdentity" + ], + "value": "sha256:195f78bf3c5a40044ebe16d52f934a9edb9f5665ac93c6bec7525d939adcb18e" + }, + { + "path": [ + "projection", + "recipeVersion" + ], + "value": 9007199254740991 + }, + { + "path": [ + "projection", + "recordRecipeVersion" + ], + "value": 9007199254740991 + }, + { + "path": [ + "transformation", + "researchIdentity", + "recipeRevision" + ], + "value": "sha256:195f78bf3c5a40044ebe16d52f934a9edb9f5665ac93c6bec7525d939adcb18e" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:eabb4bad72c9859b47186ff9d39ef89ba7f0f3573bdc880a390ba22ea0c8e3fc", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-escaped-frame-identity", + "expectedPatch": [ + { + "path": [ + "frameSha256" + ], + "value": "sha256:6e1ee80662772a061f8a00d1b32fef99259ce06a5973770ff3abd94836b0ca72" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:6e1ee80662772a061f8a00d1b32fef99259ce06a5973770ff3abd94836b0ca72", + "location": "research-value" + } + } + } + ], + "wireJson": "{\"generatedConsistency\":{\"carrier\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"version\\\":1,\\\"class\\\":\\\"generated\\\",\\\"preparationId\\\":\\\"prep_synthetic\\\",\\\"recipeVersion\\\":8,\\\"qualification\\\":null,\\\"prepared\\\":{\\\"ignored\\\":\\\"not raw input\\\"},\\\"record\\\":{\\\"id\\\":\\\"record_synthetic\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"sourceId\\\":\\\"source_synthetic\\\",\\\"row\\\":1,\\\"class\\\":\\\"generated\\\",\\\"status\\\":\\\"ready\\\",\\\"values\\\":{\\\"Text\\\":\\\" A \\\",\\\"Integer\\\":\\\"-0\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Boolean\\\":\\\"false\\\",\\\"List\\\":\\\"[]\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Number\\\":\\\"-0\\\",\\\"Evidence\\\":\\\"present\\\"},\\\"research\\\":{\\\"runId\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"entity\\\":{\\\"id\\\":\\\"entity_synthetic\\\",\\\"kind\\\":\\\"record\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"url\\\":\\\"https://example.test/\\\",\\\"fields\\\":{\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\" A \\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"1.2300\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":false,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":[],\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"},\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"present\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"}}}}},\\\"values\\\":{\\\"Text\\\":\\\"filtered visible\\\"},\\\"research\\\":{\\\"id\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"recipe\\\":{\\\"version\\\":1,\\\"target\\\":\\\"records\\\",\\\"fields\\\":[{ \\\"type\\\" : \\\"text\\\", \\\"name\\\" : \\\"Text\\\", \\\"description\\\" : \\\"A \\\\u0042 / kept\\\" },{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"},{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"},{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"},{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"},{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"},{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"},{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"},{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}],\\\"criteria\\\":[],\\\"ai\\\":{},\\\"limits\\\":{}},\\\"intent\\\":\\\"Opaque original intent\\\",\\\"createdAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"approvedLimits\\\":{},\\\"budgetApprovals\\\":[],\\\"workflowApproval\\\":null,\\\"modelResponses\\\":[],\\\"sources\\\":[]},\\\"reviews\\\":[],\\\"legacyOpaque\\\":{\\\"escaped\\\":\\\"\\\\ud800\\\"}}\",\"originalSnapshotSha256\":\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\",\"retained\":{\"contractVersion\":\"1\",\"origin\":\"generated\",\"values\":{\"\\u0054ext\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"recordRecipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\",\"declaration\":{\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\",\"fields\":[{\"name\":\"Text\",\"fieldJson\":\"{\\\"type\\\":\\\"text\\\",\\\"name\\\":\\\"Text\\\",\\\"description\\\":\\\"A \\\\u0042 / kept\\\"}\"},{\"name\":\"Integer\",\"fieldJson\":\"{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"}\"},{\"name\":\"Decimal\",\"fieldJson\":\"{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"}\"},{\"name\":\"Boolean\",\"fieldJson\":\"{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"}\"},{\"name\":\"List\",\"fieldJson\":\"{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"}\"},{\"name\":\"Range\",\"fieldJson\":\"{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"}\"},{\"name\":\"String\",\"fieldJson\":\"{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"}\"},{\"name\":\"Number\",\"fieldJson\":\"{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"}\"},{\"name\":\"Evidence\",\"fieldJson\":\"{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}\"}]},\"fields\":{\"Text\":{\"status\":\"supported\",\"valueJson\":\"\\\" A \\\"\"},\"Integer\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Decimal\":{\"status\":\"supported\",\"valueJson\":\"\\\"1.2300\\\"\"},\"Boolean\":{\"status\":\"supported\",\"valueJson\":\"false\"},\"List\":{\"status\":\"supported\",\"valueJson\":\"[]\"},\"Range\":{\"status\":\"supported\",\"valueJson\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\"},\"String\":{\"status\":\"supported\",\"valueJson\":\"\\\"\\\"\"},\"Number\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Evidence\":{\"status\":\"supported\",\"valueJson\":\"\\\"present\\\"\"}}}}},\"profile\":\"base\",\"limits\":{\"originalSnapshotBytes\":524288,\"carrierBytes\":3145728},\"trustedProducer\":{\"id\":\"reviewed-columns\",\"profileDigest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"class\":\"generated\",\"source\":\"desk-inputs\",\"authority\":\"synthetic-trusted-host\",\"shape\":\"mcp\",\"endpoint\":\"desk-local:reviewed-inputs\",\"adapter\":{\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\",\"digest\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"},\"tools\":[\"read_reviewed_input\"],\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"}},\"sourceBinding\":{\"kind\":\"operation\",\"profile\":\"reviewed-columns\",\"profileDigest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"},\"receiptResultDigest\":\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\",\"rule\":{\"contractVersion\":\"1\",\"column\":\"Text\",\"kind\":\"research-value\"}}}" + }, + { + "id": "producer-null-carrier", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier" + ], + "value": null + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-null-trust", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer" + ], + "value": null + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-nonscalar-status", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":[],\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:fca776bd6116127a8205e8be1bf08f873be6b942cace10426c1131eb75eb316d" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:93984f2cc75d67a2562c965876f4057a72e0c3f3452c65af8dd3ef4dd14fd9c5" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-extended-small-consistency", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "profile" + ], + "value": "extended" + } + ] + , "expectedPatch":[ + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ]}, + { + "id": "producer-current-both-frame-revisions", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "recordRecipeRevision" + ], + "value": "sha256:6ac1dde4e2cb90262060258a1cb1ee5ba2538f4822f427fb24110e9fbcbb69cf" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "recipeRevision" + ], + "value": "sha256:6ac1dde4e2cb90262060258a1cb1ee5ba2538f4822f427fb24110e9fbcbb69cf" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:23f10df115410791decfad68a7c4ca87a88e5fab7573f98f75dae2635986ddac" + } + ], + "expected": { + "refusal": "read-failed" + } + } + ], + "referenceCases":[ + { + "id": "reference-exact-raw-frame", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + } + } + }, + "expected": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + }, + "wireJson": "{\"lineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null }}}" + }, + { + "id": "reference-resolves-retained-occurrence", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "consistent": true, + "acquisition": "not-verified" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"values\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-wrong-digest", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"location\":\"values\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-wrong-location", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "research-value" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"research-value\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-unknown-location", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "uri" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"uri\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-wrong-column", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "B", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"B\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"values\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-inline-copy", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "json": "\"\u00e9\\n\"" + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-unresolved", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "missing" + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"missing\"},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-changed-result", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"changed\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"values\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"changed\\\"\"}}}}" + }, + { + "id": "reference-extra-metadata", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + }, + "extra": "unsupported" + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"values\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"},\"extra\":\"unsupported\"}}}" + }, + { + "id": "reference-compacted-frame-refused", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "reference-substituted-frame", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "changed" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "source-response-to-sole-text", + "request": { + "retainSource": { + "source": { + "response": { + "result": { + "contractVersion": "1", + "originalSnapshotJson": "{\"n\":1e3,\"s\":\"\\u00e9\"}", + "originalSnapshotSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "\u00e9\n" + }, + "research": { + "recordRecipeRevision": "recipe:1", + "declaration": null, + "fields": {} + } + } + }, + "receipt": {}, + "salts": {} + } + } + } + }, + "expected": { + "retainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }" + }, + "wireJson": "{\"retainSource\":{\"source\":{\"response\":{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }}}}" + }, + { + "id": "source-sole-text", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }" + } + } + }, + "expected": { + "retainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }" + } + }, + { + "id": "case-object-to-sole-text", + "request": { + "retainCase": { + "source": { + "case": { + "origin": { + "originalValues": { + "A": "\t" + }, + "n": 1000.0 + }, + "retained": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + } + } + } + } + }, + "expected": { + "retainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }" + }, + "wireJson": "{\"retainCase\":{\"source\":{\"case\":{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }}}}" + }, + { + "id": "case-sole-text", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }" + } + } + }, + "expected": { + "retainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }" + } + }, + { + "id": "retainSource-dual", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }", + "response": {} + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-sibling", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }", + "snapshot": {} + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-null", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": null + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-empty", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-wrongcase", + "request": { + "retainSource": { + "source": { + "RetainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-nonobject", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "[]" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-duplicate", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "{\"a\":1,\"a\":2}" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-dual", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }", + "case": {} + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-sibling", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }", + "snapshot": {} + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-null", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": null + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-empty", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-wrongcase", + "request": { + "retainCase": { + "source": { + "RetainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-nonobject", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "[]" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-duplicate", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "{\"a\":1,\"a\":2}" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "reference-labelled-boolean-example", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "Eligible", + "kind": "boolean", + "trueValue": "YES", + "falseValue": "NO" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "Eligible": "YES" + }, + "research": { + "recordRecipeRevision": "recipe:1", + "declaration": { + "recipeRevision": "recipe:1", + "fields": [ + { + "name": "Eligible", + "fieldJson": "{\"name\":\"Eligible\",\"type\":\"boolean\",\"description\":\"Retained original declaration.\"}" + } + ] + }, + "fields": { + "Eligible": { + "status": "supported", + "valueJson": "false" + } + } + } + } + } + }, + "expected": { + "contractVersion": "1", + "column": "Eligible", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:5e15070ee22fcb46096f162d845f4604a16523515a61fe089211339ec08529bf", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "true" + } + } + }, + { + "id": "reference-null-frame", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": null, + "transformation": {} + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "reference-null-probe", + "request": { + "verifyLineage": null + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "reference-empty-probe", + "request": { + "verifyLineage": {} + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "reference-missing-transformation", + "request": { + "verifyLineage": { + "rule": {}, + "frame": {} + } + }, + "expected": { + "refusal": "input-malformed" + } + } + ] +} diff --git a/internal/retainedcolumns/testdata/reference-contract.schema.json b/internal/retainedcolumns/testdata/reference-contract.schema.json new file mode 100644 index 0000000..6bbd7af --- /dev/null +++ b/internal/retainedcolumns/testdata/reference-contract.schema.json @@ -0,0 +1,1305 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "urn:judgment-pack:draft:rfc0029:retained-column-1", + "title": "Draft retained-column/1 fragments; not a published schema", + "description": "Structural checks only. UTF8 bytes, scalar validity, duplicates, embedded JSON, distinct names, spellings and semantics require the proposed reader.", + "$defs": { + "conversion": { + "oneOf": [ + { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "kind": { + "enum": [ + "text", + "decimal", + "number", + "research-value" + ] + } + }, + "required": [ + "contractVersion", + "column", + "kind" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "kind": { + "const": "boolean" + }, + "trueValue": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "falseValue": { + "type": "string", + "minLength": 1, + "maxLength": 160 + } + }, + "required": [ + "contractVersion", + "column", + "kind", + "trueValue", + "falseValue" + ], + "additionalProperties": false + } + ] + }, + "availability": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 + } + }, + "required": [ + "contractVersion", + "column" + ], + "additionalProperties": false + }, + "fact": { + "type": "object", + "properties": { + "target": { + "type": "string", + "pattern": "^(?:/(?:[^~]|~[01])*)*$", + "minLength": 1 + }, + "source": { + "type": "string", + "pattern": "^(?:/(?:[^~]|~[01])*)*$" + }, + "conversion": { + "$ref": "#/$defs/conversion" + } + }, + "required": [ + "target", + "source", + "conversion" + ], + "additionalProperties": false + }, + "evidence": { + "type": "object", + "properties": { + "requirement": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "source": { + "type": "string", + "pattern": "^(?:/(?:[^~]|~[01])*)*$" + }, + "availability": { + "$ref": "#/$defs/availability" + } + }, + "required": [ + "requirement", + "source", + "availability" + ], + "additionalProperties": false + }, + "declarationEntry": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "fieldJson": { + "type": "string", + "maxLength": 16384 + } + }, + "required": [ + "name", + "fieldJson" + ], + "additionalProperties": false + }, + "declaration": { + "type": "object", + "properties": { + "recipeRevision": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "fields": { + "type": "array", + "maxItems": 1000, + "items": { + "$ref": "#/$defs/declarationEntry" + } + } + }, + "required": [ + "recipeRevision", + "fields" + ], + "additionalProperties": false + }, + "field": { + "type": "object", + "properties": { + "status": { + "enum": [ + "supported", + "interpretation", + "missing", + "conflicting", + "inaccessible", + "stale" + ] + }, + "valueJson": { + "type": "string", + "maxLength": 4194304 + } + }, + "required": [ + "status" + ], + "additionalProperties": false + }, + "research": { + "type": "object", + "properties": { + "recordRecipeRevision": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "declaration": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/declaration" + } + ] + }, + "fields": { + "type": "object", + "maxProperties": 1000, + "propertyNames": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "additionalProperties": { + "$ref": "#/$defs/field" + } + } + }, + "required": [ + "recordRecipeRevision", + "declaration", + "fields" + ], + "additionalProperties": false + }, + "frame": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "origin": { + "enum": [ + "asserted", + "generated" + ] + }, + "values": { + "type": "object", + "maxProperties": 1000, + "propertyNames": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "additionalProperties": { + "type": [ + "string", + "null" + ], + "maxLength": 16000 + } + }, + "research": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/research" + } + ] + } + }, + "required": [ + "contractVersion", + "origin", + "values", + "research" + ], + "additionalProperties": false, + "allOf": [ + { + "if": { + "properties": { + "origin": { + "const": "asserted" + } + } + }, + "then": { + "properties": { + "research": { + "type": "null" + } + } + }, + "else": { + "properties": { + "research": { + "$ref": "#/$defs/research" + } + } + } + } + ] + }, + "input": { + "oneOf": [ + { + "type": "object", + "properties": { + "state": { + "const": "missing" + } + }, + "required": [ + "state" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "state": { + "const": "present" + }, + "ref": { + "$ref": "#/$defs/inputReference" + } + }, + "required": [ + "state", + "ref" + ], + "additionalProperties": false + } + ] + }, + "result": { + "oneOf": [ + { + "type": "object", + "properties": { + "state": { + "const": "value" + }, + "json": { + "type": "string" + } + }, + "required": [ + "state", + "json" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "state": { + "const": "omitted" + }, + "reason": { + "enum": [ + "missing", + "blank", + "legacy-null", + "unavailable" + ] + } + }, + "required": [ + "state", + "reason" + ], + "additionalProperties": false + } + ] + }, + "researchIdentity": { + "type": "object", + "properties": { + "recipeRevision": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "fieldSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + } + }, + "required": [ + "recipeRevision", + "fieldSha256" + ], + "additionalProperties": false + }, + "columnTransformation": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "input": { + "$ref": "#/$defs/input" + }, + "result": { + "$ref": "#/$defs/result" + }, + "researchIdentity": { + "$ref": "#/$defs/researchIdentity" + } + }, + "required": [ + "contractVersion", + "column", + "input", + "result" + ], + "additionalProperties": false + }, + "generatedCarrier": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "originalSnapshotJson": { + "type": "string" + }, + "originalSnapshotSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "retained": { + "allOf": [ + { + "$ref": "#/$defs/frame" + }, + { + "properties": { + "origin": { + "const": "generated" + } + } + } + ] + } + }, + "required": [ + "contractVersion", + "originalSnapshotJson", + "originalSnapshotSha256", + "retained" + ], + "additionalProperties": false + }, + "specIdentity": { + "type": "object", + "properties": { + "version": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "revision": { + "type": "string", + "pattern": "^[0-9a-f]{40}$" + }, + "schemaSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "corpusSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + } + }, + "required": [ + "version", + "revision", + "schemaSha256", + "corpusSha256" + ], + "additionalProperties": false + }, + "conversionCapability": { + "oneOf": [ + { + "type": "object", + "properties": { + "contract": { + "const": "retained-column/1" + }, + "spec": { + "$ref": "#/$defs/specIdentity" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "role": { + "const": "document-validation" + }, + "limits": { + "type": "object", + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "documentBytes", + "frameBytes" + ], + "additionalProperties": false + } + }, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "contract": { + "const": "retained-column/1" + }, + "spec": { + "$ref": "#/$defs/specIdentity" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "role": { + "const": "preview" + }, + "limits": { + "type": "object", + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "combinedBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "documentBytes", + "combinedBytes", + "frameBytes" + ], + "additionalProperties": false + } + }, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "contract": { + "const": "retained-column/1" + }, + "spec": { + "$ref": "#/$defs/specIdentity" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "role": { + "const": "preparation" + }, + "limits": { + "type": "object", + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "combinedBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "preparationBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "recordBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "documentBytes", + "combinedBytes", + "frameBytes", + "preparationBytes", + "recordBytes" + ], + "additionalProperties": false + }, + "producerGrammar": { + "const": "desk-reviewed-input/1" + } + }, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "contract": { + "const": "retained-column/1" + }, + "spec": { + "$ref": "#/$defs/specIdentity" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "role": { + "const": "preparation-verification" + }, + "limits": { + "type": "object", + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "combinedBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "preparationBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "recordBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "documentBytes", + "combinedBytes", + "frameBytes", + "preparationBytes", + "recordBytes" + ], + "additionalProperties": false + }, + "producerGrammar": { + "const": "desk-reviewed-input/1" + } + }, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "contract": { + "const": "retained-column/1" + }, + "spec": { + "$ref": "#/$defs/specIdentity" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "role": { + "const": "producer-carrier" + }, + "limits": { + "type": "object", + "properties": { + "originalSnapshotBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "carrierBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "grantBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "adapterStdoutBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "responseBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "originalSnapshotBytes", + "carrierBytes", + "grantBytes", + "adapterStdoutBytes", + "responseBytes" + ], + "additionalProperties": false + }, + "producerGrammar": { + "const": "desk-reviewed-input/1" + } + }, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "additionalProperties": false + } + ] + }, + "capabilities": { + "type": "object", + "properties": { + "conversionContracts": { + "type": "array", + "maxItems": 32, + "items": { + "$ref": "#/$defs/conversionCapability" + } + } + }, + "required": [ + "conversionContracts" + ], + "additionalProperties": false + }, + "retainedColumnProducer": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "grammar": { + "const": "desk-reviewed-input/1" + } + }, + "required": [ + "contractVersion", + "grammar" + ], + "additionalProperties": false + }, + "trustedProducerProjection": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$" + }, + "profileDigest": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "class": { + "const": "generated" + }, + "source": { + "const": "desk-inputs" + }, + "authority": { + "type": "string", + "minLength": 1, + "maxLength": 256 + }, + "shape": { + "const": "mcp" + }, + "endpoint": { + "const": "desk-local:reviewed-inputs" + }, + "adapter": { + "type": "object", + "properties": { + "name": { + "const": "jpack-desk/reviewed-input" + }, + "version": { + "const": "2" + }, + "digest": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + } + }, + "required": [ + "name", + "version", + "digest" + ], + "additionalProperties": false + }, + "tools": { + "type": "array", + "items": { + "const": "read_reviewed_input" + }, + "minItems": 1, + "maxItems": 1 + }, + "retainedColumnProducer": { + "$ref": "#/$defs/retainedColumnProducer" + } + }, + "required": [ + "id", + "profileDigest", + "class", + "source", + "authority", + "shape", + "endpoint", + "adapter", + "tools", + "retainedColumnProducer" + ], + "additionalProperties": false + }, + "producerSourceBinding": { + "type": "object", + "properties": { + "kind": { + "const": "operation" + }, + "profile": { + "type": "string", + "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$" + }, + "profileDigest": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + } + }, + "required": [ + "kind", + "profile", + "profileDigest" + ], + "additionalProperties": false + }, + "deskSnapshotProjection": { + "type": "object", + "properties": { + "grammar": { + "const": "desk-reviewed-input/1" + }, + "snapshotVersion": { + "const": 1 + }, + "snapshotClass": { + "const": "generated" + }, + "recordClass": { + "const": "generated" + }, + "runId": { + "type": "string", + "pattern": "^research_[a-f0-9]{32}$" + }, + "recordRunId": { + "type": "string", + "pattern": "^research_[a-f0-9]{32}$" + }, + "recipeVersion": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "recordRecipeVersion": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "values": { + "type": "object", + "propertyNames": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "maxProperties": 1000, + "additionalProperties": { + "type": "string", + "maxLength": 16000 + } + }, + "declarations": { + "type": "array", + "items": { + "$ref": "#/$defs/declarationEntry" + }, + "maxItems": 1000 + }, + "fields": { + "type": "object", + "propertyNames": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "maxProperties": 1000, + "additionalProperties": { + "$ref": "#/$defs/field" + } + } + }, + "required": [ + "grammar", + "snapshotVersion", + "snapshotClass", + "recordClass", + "runId", + "recordRunId", + "recipeVersion", + "recordRecipeVersion", + "values", + "declarations", + "fields" + ], + "additionalProperties": false + }, + "previewAvailability": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "kind": { + "const": "evidence-availability" + } + }, + "required": [ + "contractVersion", + "column", + "kind" + ], + "additionalProperties": false + }, + "generatedConsistencyBody": { + "type": "object", + "properties": { + "carrier": { + "$ref": "#/$defs/generatedCarrier" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "limits": { + "type": "object", + "properties": { + "originalSnapshotBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "carrierBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "originalSnapshotBytes", + "carrierBytes" + ], + "additionalProperties": false + }, + "trustedProducer": { + "$ref": "#/$defs/trustedProducerProjection" + }, + "sourceBinding": { + "$ref": "#/$defs/producerSourceBinding" + }, + "receiptResultDigest": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "rule": { + "oneOf": [ + { + "$ref": "#/$defs/conversion" + }, + { + "$ref": "#/$defs/previewAvailability" + } + ] + } + }, + "required": [ + "carrier", + "profile", + "limits", + "trustedProducer", + "sourceBinding", + "receiptResultDigest", + "rule" + ], + "additionalProperties": false + }, + "generatedConsistencyRequest": { + "type": "object", + "properties": { + "generatedConsistency": { + "$ref": "#/$defs/generatedConsistencyBody" + } + }, + "required": [ + "generatedConsistency" + ], + "additionalProperties": false + }, + "generatedConsistencyResult": { + "type": "object", + "properties": { + "consistent": { + "const": true + }, + "acquisition": { + "const": "not-verified" + }, + "history": { + "const": "not-checked" + }, + "originalSnapshotSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "frameSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "revisionIdentity": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "projection": { + "$ref": "#/$defs/deskSnapshotProjection" + }, + "transformation": { + "$ref": "#/$defs/columnTransformation" + } + }, + "required": [ + "consistent", + "acquisition", + "history", + "originalSnapshotSha256", + "frameSha256", + "revisionIdentity", + "projection", + "transformation" + ], + "additionalProperties": false + }, + "inputReference": { + "type": "object", + "properties": { + "frameSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "location": { + "enum": [ + "values", + "research-value" + ] + } + }, + "required": [ + "frameSha256", + "location" + ], + "additionalProperties": false + }, + "signedResponseFragment": { + "type": "object", + "description": "Envelope structure only; receipt/salts must separately satisfy the existing acquisition schema and verification. No signature validation is implied.", + "properties": { + "result": { + "$ref": "#/$defs/generatedCarrier" + }, + "receipt": { + "type": "object" + }, + "salts": { + "type": "object" + } + }, + "required": [ + "result", + "receipt", + "salts" + ], + "additionalProperties": false + }, + "preparationSource": { + "oneOf": [ + { + "type": "object", + "properties": { + "response": { + "$ref": "#/$defs/signedResponseFragment" + } + }, + "required": [ + "response" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "retainedResponseJson": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "retainedResponseJson" + ], + "additionalProperties": false + } + ] + }, + "assertedCaseCustody": { + "description": "Only the case custody slot; existing enclosing source mapping/sources/import siblings remain counted and unchanged. Embedded retainedCaseJson must parse as a duplicate-free UTF8 JSON object.", + "oneOf": [ + { + "type": "object", + "properties": { + "case": { + "type": "object" + } + }, + "required": [ + "case" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "retainedCaseJson": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "retainedCaseJson" + ], + "additionalProperties": false + } + ] + } + }, + "oneOf": [ + { + "$ref": "#/$defs/fact" + }, + { + "$ref": "#/$defs/evidence" + }, + { + "$ref": "#/$defs/frame" + }, + { + "$ref": "#/$defs/columnTransformation" + }, + { + "$ref": "#/$defs/generatedCarrier" + }, + { + "$ref": "#/$defs/capabilities" + }, + { + "$ref": "#/$defs/retainedColumnProducer" + }, + { + "$ref": "#/$defs/trustedProducerProjection" + }, + { + "$ref": "#/$defs/producerSourceBinding" + }, + { + "$ref": "#/$defs/deskSnapshotProjection" + }, + { + "$ref": "#/$defs/generatedConsistencyRequest" + }, + { + "$ref": "#/$defs/generatedConsistencyResult" + }, + { + "$ref": "#/$defs/preparationSource" + }, + { + "$ref": "#/$defs/assertedCaseCustody" + } + ] +} diff --git a/internal/retainedcolumns/validation_test.go b/internal/retainedcolumns/validation_test.go new file mode 100644 index 0000000..22333f7 --- /dev/null +++ b/internal/retainedcolumns/validation_test.go @@ -0,0 +1,422 @@ +package retainedcolumns + +import ( + "bytes" + "errors" + "fmt" + "reflect" + "strings" + "testing" + "unicode" +) + +func assertRefusal(t *testing.T, err error, want string) { + t.Helper() + var r *Refusal + if !errors.As(err, &r) || r.Code != want { + t.Fatalf("expected refusal %s, got %v", want, err) + } +} +func asserted(values map[string]any) map[string]any { + return map[string]any{"contractVersion": "1", "origin": "asserted", "values": values, "research": nil} +} +func rawFrame(t *testing.T, values map[string]any) Frame { + t.Helper() + f, e := ParseFrame(encodeTest(t, asserted(values)), Base) + if e != nil { + t.Fatal(e) + } + return f +} +func plan(t *testing.T, raw string) Plan { + t.Helper() + p, e := ParsePlan([]byte(raw)) + if e != nil { + t.Fatal(e) + } + return p +} +func TestClosedPlanRefusals(t *testing.T) { + for _, raw := range []string{ + ``, `null`, `[]`, `{}`, `{"contractVersion":"1","column":"A","kind":"json"}`, + `{"contractVersion":"2","column":"A","kind":"text"}`, `{"contractVersion":1,"column":"A","kind":"text"}`, + `{"contractVersion":"1","column":"","kind":"text"}`, `{"contractVersion":"1","column":"A","kind":"text","type":"text"}`, + `{"contractVersion":"1","column":"A","kind":"text","trueValue":"Y","falseValue":"N"}`, + `{"contractVersion":"1","column":"A","kind":"boolean"}`, + `{"contractVersion":"1","column":"A","kind":"boolean","trueValue":"Y","falseValue":"Y"}`, + `{"contractVersion":"1","column":"A","kind":"boolean","trueValue":"\u0085","falseValue":"N"}`, + `{"contractVersion":"1","column":"A","kind":"evidence-availability"}`, + `{"contractVersion":"1","column":"A","column":"B"}`, + `{"contractVersion":"1","column":"\ud800","kind":"text"}`, + } { + t.Run(raw, func(t *testing.T) { _, e := ParsePlan([]byte(raw)); assertRefusal(t, e, "input-malformed") }) + } + for _, rule := range []map[string]any{ + {"contractVersion": "1", "column": strings.Repeat("é", 81), "kind": "text"}, + {"contractVersion": "1", "column": "A", "kind": "boolean", "trueValue": strings.Repeat("é", 81), "falseValue": "N"}, + } { + _, e := ParsePlan(encodeTest(t, rule)) + assertRefusal(t, e, "input-over-bound") + } + // Every allowed control-byte spelling remains usable; escaping expansion does + // not turn the 160 UTF-8-byte limit into a serialized-JSON-byte limit. + _, e := ParsePlan(encodeTest(t, map[string]any{"contractVersion": "1", "column": strings.Repeat("é", 80), "kind": "boolean", "trueValue": strings.Repeat("\x00", 160), "falseValue": strings.Repeat("\x01", 160)})) + if e != nil { + t.Fatal(e) + } +} +func TestClosedFrameRefusals(t *testing.T) { + for _, raw := range []string{ + ``, `null`, `[]`, `{}`, `{"contractVersion":"1","origin":"asserted","values":{},"research":null,"extra":0}`, + `{"contractVersion":"2","origin":"asserted","values":{},"research":null}`, + `{"contractVersion":"1","origin":"record","values":{},"research":null}`, + `{"contractVersion":"1","origin":"asserted","values":[],"research":null}`, + `{"contractVersion":"1","origin":"asserted","values":{"A":1},"research":null}`, + `{"contractVersion":"1","origin":"asserted","values":{},"research":{}}`, + `{"contractVersion":"1","origin":"generated","values":{},"research":null}`, + `{"contractVersion":"1","origin":"asserted","values":{"A":"x","\u0041":"y"},"research":null}`, + `{"contractVersion":"1","origin":"asserted","values":{"A":"\udfff"},"research":null}`, + } { + t.Run(raw, func(t *testing.T) { _, e := ParseFrame([]byte(raw), Base); assertRefusal(t, e, "input-malformed") }) + } + _, e := ParseFrame(append([]byte(`{"contractVersion":"1","origin":"asserted","values":{"A":"`), append([]byte{0xff}, []byte(`"},"research":null}`)...)...), Base) + assertRefusal(t, e, "input-malformed") + _, e = ParseFrame(encodeTest(t, asserted(nil)), Base) + assertRefusal(t, e, "input-malformed") + _, e = ParseFrame(encodeTest(t, asserted(map[string]any{})), Profile("future")) + assertRefusal(t, e, "input-malformed") + _, e = Preview(Plan{}, Frame{}) + assertRefusal(t, e, "input-malformed") +} +func TestExplicitProfileByteBounds(t *testing.T) { + raw := encodeTest(t, asserted(map[string]any{"A": "x"})) + for _, c := range []struct { + profile Profile + max int + }{{Base, 2097152}, {Extended, 4194304}} { + t.Run(string(c.profile), func(t *testing.T) { + exact := append(bytes.Repeat([]byte(" "), c.max-len(raw)), raw...) + f, e := ParseFrame(exact, c.profile) + if e != nil { + t.Fatalf("exact frame bound refused: %v", e) + } + if f.ProjectedFrameSHA256() != digest(exact) { + t.Fatal("projected identity lost received whitespace") + } + _, e = ParseFrame(append(exact, ' '), c.profile) + assertRefusal(t, e, "input-over-bound") + if c.profile == Base { + if _, e = ParseFrame(append(exact, ' '), Extended); e != nil { + t.Fatal("base overflow within explicit extended profile refused", e) + } + } + }) + } +} +func generated(t *testing.T, fieldJSON string, raw *string, status string) map[string]any { + t.Helper() + field := map[string]any{"status": status} + if raw != nil { + field["valueJson"] = *raw + } + return map[string]any{"contractVersion": "1", "origin": "generated", "values": map[string]any{"Column": "display"}, "research": map[string]any{"recordRecipeRevision": "recipe:7", "declaration": map[string]any{"recipeRevision": "recipe:7", "fields": []any{map[string]any{"name": "Column", "fieldJson": fieldJSON}}}, "fields": map[string]any{"Column": field}}} +} +func TestFixedFrameBudgets(t *testing.T) { + for _, c := range []struct { + name string + values map[string]any + ok bool + }{ + {"column-string-at", map[string]any{"A": strings.Repeat("é", 8000)}, true}, + {"column-string-over", map[string]any{"A": strings.Repeat("é", 8000) + "a"}, false}, + {"column-name-at", map[string]any{strings.Repeat("é", 80): "x"}, true}, + {"column-name-over", map[string]any{strings.Repeat("é", 80) + "a": "x"}, false}, + } { + t.Run(c.name, func(t *testing.T) { + _, e := ParseFrame(encodeTest(t, asserted(c.values)), Extended) + if c.ok { + if e != nil { + t.Fatal(e) + } + } else { + assertRefusal(t, e, "input-over-bound") + } + }) + } + for _, n := range []int{1000, 1001} { + values, fields := map[string]any{}, map[string]any{} + declarations := []any{} + for i := 0; i < n; i++ { + name := fmt.Sprintf("C%d", i) + values[name] = "x" + fields[name] = map[string]any{"status": "missing"} + declarations = append(declarations, map[string]any{"name": name, "fieldJson": string(encodeTest(t, map[string]any{"name": name, "type": "text"}))}) + } + for _, which := range []string{"values", "fields", "declarations"} { + t.Run(fmt.Sprintf("%s-%d", which, n), func(t *testing.T) { + g := generated(t, `{"name":"Column","type":"text"}`, nil, "missing") + r := g["research"].(map[string]any) + switch which { + case "values": + g["values"] = values + case "fields": + r["fields"] = fields + case "declarations": + r["declaration"].(map[string]any)["fields"] = declarations + } + _, e := ParseFrame(encodeTest(t, g), Extended) + if n == 1000 { + if e != nil { + t.Fatal(e) + } + } else { + assertRefusal(t, e, "input-over-bound") + } + }) + } + } + for _, n := range []int{16384, 16385} { + prefix := `{"name":"Column","type":"text","opaque":"` + suffix := `"}` + field := prefix + strings.Repeat("a", n-len(prefix)-len(suffix)) + suffix + _, e := ParseFrame(encodeTest(t, generated(t, field, nil, "missing")), Extended) + if n == 16384 { + if e != nil { + t.Fatal(e) + } + } else { + assertRefusal(t, e, "input-over-bound") + } + } +} +func TestOpaqueAndIndependentDepthBudgets(t *testing.T) { + for _, n := range []int{31, 32} { + field := `{"name":"Column","type":"text","opaque":` + strings.Repeat("[", n) + "0" + strings.Repeat("]", n) + "}" + _, e := ParseFrame(encodeTest(t, generated(t, field, nil, "missing")), Extended) + if n == 31 { + if e != nil { + t.Fatal("opaque depth32 refused", e) + } + } else { + assertRefusal(t, e, "input-over-bound") + } + } + for _, n := range []int{32, 33} { + raw := strings.Repeat("[", n) + "0" + strings.Repeat("]", n) + if got := ClaimAdmissible([]byte(raw)); got != (n == 32) { + t.Fatalf("actual Runner depth32 boundary mismatch at %d", n) + } + } + for _, raw := range []string{`{"name":"Column","type":"text","x":{"a":1,"a":2}}`, `{"name":"Column","type":"text","x":"\ud800"}`} { + _, e := ParseFrame(encodeTest(t, generated(t, raw, nil, "missing")), Base) + assertRefusal(t, e, "input-malformed") + } + // Original opaque members do not become executable policy or case-folded keys. + if _, e := ParseFrame(encodeTest(t, generated(t, `{"name":"Column","type":"future","A":1,"a":2}`, nil, "missing")), Base); e != nil { + t.Fatal(e) + } +} +func TestUnicodeSimpleLowerAndScalarParsing(t *testing.T) { + if unicode.Version != "15.0.0" { + t.Fatal("Draft simple-lower table requires Unicode15.0") + } + for _, raw := range []string{`{"mİn":1,"min":2}`, `{"K":1,"k":2}`, `{"𐐀":1,"𐐨":2}`} { + _, e := parseJSON([]byte(raw), 64, true, true) + assertRefusal(t, e, "input-malformed") + } + for _, raw := range []string{`{"ß":1,"SS":2}`, `{"İ":1,"i̇":2}`, `"\ud83d\ude00"`, `"\\ud800"`} { + if _, e := parseJSON([]byte(raw), 64, true, true); e != nil { + t.Fatal("simple lowercase/scalar mismatch", raw, e) + } + } + for _, raw := range []string{`"\ud800"`, `"\udfff"`, `"\ud800x"`, `"\ud800\u0041"`, `{"A":1,"\u0041":2}`} { + _, e := parseJSON([]byte(raw), 64, false, true) + assertRefusal(t, e, "input-malformed") + } +} +func TestClaimDomainReusesRunnerCanon(t *testing.T) { + for _, raw := range []string{`-0`, `0`, `9007199254740991`, `-9007199254740991`, `false`, `""`, `[]`, `{"min":-0,"max":0}`, `"\ud83d\ude00"`} { + if !ClaimAdmissible([]byte(raw)) { + t.Fatalf("existing canon value refused: %s", raw) + } + } + for _, raw := range []string{`1.25`, `1.0`, `1e3`, `9007199254740992`, `9007199254740993`, `"\ud800"`, `{"a":1,"a":2}`, `[] true`} { + if ClaimAdmissible([]byte(raw)) { + t.Fatalf("existing canon refusal admitted: %s", raw) + } + } +} +func TestClaimDomainByteBound(t *testing.T) { + exact := append(bytes.Repeat([]byte(" "), (2<<20)-1), '0') + if !ClaimAdmissible(exact) { + t.Fatal("actual Runner MaxBody boundary refused") + } + if ClaimAdmissible(append(exact, ' ')) { + t.Fatal("actual Runner MaxBody overflow admitted") + } +} +func TestOrdinaryJSONAndInputStateIdentity(t *testing.T) { + p := plan(t, `{"contractVersion":"1","column":"A","kind":"text"}`) + const exact = `"<>&/é
\n\u0000"` + f := rawFrame(t, map[string]any{"A": "<>&/é
\n\x00"}) + r, e := Derive(p, f) + if e != nil { + t.Fatal(e) + } + resolved, e := ResolveInput(p, f, r) + if e != nil || resolved == nil || *resolved != exact || r.Result.JSON == nil || *r.Result.JSON != exact { + t.Fatalf("ordinary compact UTF8 spelling changed: %+v", r) + } + states := []struct { + values map[string]any + input *string + reason string + }{{map[string]any{}, nil, "missing"}, {map[string]any{"A": nil}, ptr("null"), "legacy-null"}, {map[string]any{"A": ""}, ptr(`""`), "blank"}} + for _, c := range states { + frame := rawFrame(t, c.values) + l, e := Derive(p, frame) + if e != nil { + t.Fatal(e) + } + resolved, e := ResolveInput(p, frame, l) + if e != nil || !reflect.DeepEqual(resolved, c.input) || l.Result.Reason != c.reason { + t.Fatalf("input state collapsed: %+v", l) + } + } +} +func ptr(s string) *string { return &s } +func TestOriginalRevisionRawSpellingAndFieldIdentity(t *testing.T) { + p := plan(t, `{"contractVersion":"1","column":"Column","kind":"research-value"}`) + const field = `{ "name": "Column", "type": "number", "description": "original" }` + source := generated(t, field, ptr(" -0\n"), "interpretation") + raw := encodeTest(t, source) + f, e := ParseFrame(raw, Base) + if e != nil { + t.Fatal(e) + } + if f.Origin() != "generated" || f.ProjectedFrameSHA256() != digest(raw) { + t.Fatal("projected source identity mislabeled") + } + l, e := Derive(p, f) + if e != nil { + t.Fatal(e) + } + resolved, e := ResolveInput(p, f, l) + if e != nil || resolved == nil || *resolved != " -0\n" || l.Result.JSON == nil || *l.Result.JSON != " -0\n" { + t.Fatal("original raw research bytes normalized") + } + if l.ResearchIdentity.RecipeRevision != "recipe:7" || l.ResearchIdentity.FieldSHA256 != "sha256:f3a6d7a9efa42fae90af0220ba0d11a233911cdcd0c3ff8409b5962a4b623cd3" { + t.Fatalf("original field identity differs: %+v", l.ResearchIdentity) + } + r := source["research"].(map[string]any) + r["declaration"].(map[string]any)["recipeRevision"] = "recipe:8" + f, e = ParseFrame(encodeTest(t, source), Base) + if e != nil { + t.Fatal(e) + } + result, e := Preview(p, f) + if e != nil || len(result.Issues) != 1 || result.Issues[0].Code != "research-declaration" { + t.Fatalf("current declaration substituted: %+v %v", result, e) + } + l, e = Derive(p, f) + if l != nil { + t.Fatal("mismatched original revision fabricated success") + } + assertRefusal(t, e, "read-failed") +} +func TestResearchMalformedRawIsSelectedIssue(t *testing.T) { + p := plan(t, `{"contractVersion":"1","column":"Column","kind":"research-value"}`) + for _, raw := range []string{"", `null`, `{`, `"ok" true`, strings.Repeat(" ", 524289)} { + f, e := ParseFrame(encodeTest(t, generated(t, `{"name":"Column","type":"text"}`, &raw, "supported")), Base) + if e != nil { + t.Fatal("inspectable raw frame refused", e) + } + r, e := Preview(p, f) + if e != nil || len(r.Issues) != 1 || r.Issues[0].Code != "research-type" { + t.Fatal("malformed raw did not give selected issue", r, e) + } + } +} +func TestGeneratedStatusAndDiagnosticPrecedence(t *testing.T) { + p := plan(t, `{"contractVersion":"1","column":"Column","kind":"text"}`) + researchPlan := plan(t, `{"contractVersion":"1","column":"Column","kind":"research-value"}`) + for _, status := range []string{"supported", "interpretation", "missing", "conflicting", "inaccessible", "stale"} { + g := generated(t, `{"name":"Column","type":"text"}`, ptr(`"typed"`), status) + f, e := ParseFrame(encodeTest(t, g), Base) + if e != nil { + t.Fatal(e) + } + r, e := Preview(p, f) + if e != nil { + t.Fatal(e) + } + rr, e := Preview(researchPlan, f) + if e != nil { + t.Fatal(e) + } + available := status == "supported" || status == "interpretation" + if available { + if r.ValueJSON == nil || *r.ValueJSON != `"display"` || rr.ValueJSON == nil || *rr.ValueJSON != `"typed"` { + t.Fatal("resolved generated values lost") + } + } else if r.Omitted != "unavailable" || rr.Omitted != "unavailable" { + t.Fatal("unresolved generated values used") + } + } + // Ordinary missing/null/blank precede unavailable; research declaration refusal + // precedes unavailable status and never consults display fallback values. + g := generated(t, `{"name":"Column","type":"text"}`, ptr(`"typed"`), "stale") + g["values"] = map[string]any{"Column": " "} + g["research"].(map[string]any)["declaration"] = nil + f, e := ParseFrame(encodeTest(t, g), Base) + if e != nil { + t.Fatal(e) + } + r, _ := Preview(p, f) + rr, _ := Preview(researchPlan, f) + if r.Omitted != "blank" || len(rr.Issues) != 1 || rr.Issues[0].Code != "research-declaration" { + t.Fatal("diagnostic/filter order changed") + } +} + +func TestExactLegacyWhitespaceSet(t *testing.T) { + p := plan(t, `{"contractVersion":"1","column":"A","kind":"text"}`) + for _, r := range "\t\n\v\f\r \u0085\u00a0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000" { + out, e := Preview(p, rawFrame(t, map[string]any{"A": string(r)})) + if e != nil || out.Omitted != "blank" { + t.Fatalf("declared whitespace U+%04X was not blank", r) + } + } + for _, r := range "\x00\x1c\u200b\ufeff" { + out, e := Preview(p, rawFrame(t, map[string]any{"A": string(r)})) + if e != nil || out.ValueJSON == nil || out.Omitted != "" { + t.Fatalf("additional host whitespace U+%04X was omitted", r) + } + } +} +func TestAllMetadataNamesAndExactRangeOrder(t *testing.T) { + for _, name := range []string{"name", "url", "website", "company_id", "company_name", "company_url"} { + p, e := ParsePlan(encodeTest(t, map[string]any{"contractVersion": "1", "column": name, "kind": "research-value"})) + if e != nil { + t.Fatal(e) + } + f, e := ParseFrame(encodeTest(t, generated(t, `{"name":"Column","type":"boolean"}`, ptr("false"), "supported")), Base) + if e != nil { + t.Fatal(e) + } + out, e := Preview(p, f) + if e != nil || len(out.Issues) != 1 || out.Issues[0].Code != "research-metadata" { + t.Fatal("metadata exclusion order changed", name) + } + } + p := plan(t, `{"contractVersion":"1","column":"Column","kind":"research-value"}`) + raw := `{"min":"1.000000000000000000000000000000000000001","max":"1.000000000000000000000000000000000000000"}` + f, e := ParseFrame(encodeTest(t, generated(t, `{"name":"Column","type":"range"}`, &raw, "supported")), Base) + if e != nil { + t.Fatal(e) + } + out, e := Preview(p, f) + if e != nil || len(out.Issues) != 1 || out.Issues[0].Code != "research-type" { + t.Fatal("exact range order was rounded") + } +} diff --git a/internal/runner/audit_bytes.go b/internal/runner/audit_bytes.go index 321fcb6..35dcd20 100644 --- a/internal/runner/audit_bytes.go +++ b/internal/runner/audit_bytes.go @@ -102,6 +102,16 @@ const MaxExportSize = 8<<20 + len(auditBytesMember) + (maxOutput+2)/3*4 + len(ch // sidecar. The bytes are held to maxOutput, the most of an audit trail Runner // reads, the chain entry to maxChainLine and the sidecar to maxSidecar. func exportWithinLimits(raw []byte, b VerificationBundle) error { + c := inputConversion(b.Run.Input) + if e := c.validate("preparation-verification"); e != nil { + return e + } + if !sameConversion(c, inputConversion(b.Release.Sample)) { + return conversionFailure("capability-unsupported") + } + if c != nil && len(raw) > ColumnExportWireLimit { + return errors.New("verification bundle exceeds selected wire limit") + } size := len(raw) if len(b.Run.AuditSignatures) > 0 { if len(b.Run.AuditSignatures) > maxSidecar { @@ -110,7 +120,7 @@ func exportWithinLimits(raw []byte, b VerificationBundle) error { size -= len(auditSignaturesMember) + base64.StdEncoding.EncodedLen(len(b.Run.AuditSignatures)) } if b.Version >= 3 { - if len(b.Run.AuditBytes) > maxOutput { + if len(b.Run.AuditBytes) > artifactLimit(c, maxOutput, columnRecordLimit) { return errors.New("the audit record's bytes exceed 8 MiB") } size -= len(auditBytesMember) + base64.StdEncoding.EncodedLen(len(b.Run.AuditBytes)) @@ -121,7 +131,7 @@ func exportWithinLimits(raw []byte, b VerificationBundle) error { } size -= len(`,"chain":`) + len(encode(b.Chain)) } - if size > 8<<20 { + if size > artifactLimit(c, 8<<20, columnExportBaseLimit) { return errors.New("verification bundle exceeds 8 MiB") } return nil diff --git a/internal/runner/audit_bytes_test.go b/internal/runner/audit_bytes_test.go index ae98e99..d97e199 100644 --- a/internal/runner/audit_bytes_test.go +++ b/internal/runner/audit_bytes_test.go @@ -147,8 +147,8 @@ func packWithAmpersand(t *testing.T) string { // two evidence requirements. func caseRun(kase string) Input { return Input{Source: &SourceInput{Mapping: InputMapping{Version: 2, UnmappedEvidence: []string{"sensitive-data-approvals"}, Case: &CaseMapping{ - Facts: []FactMapping{{"/request", "/facts/request"}}, - Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}, {"sponsor-endorsement", "/evidence/sponsor-endorsement"}}, + Facts: []FactMapping{{Target: "/request", Source: "/facts/request"}}, + Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/evidence/sponsor-endorsement"}}, }}, Case: json.RawMessage(kase)}} } diff --git a/internal/runner/automatic_inputs.go b/internal/runner/automatic_inputs.go index b48b71e..c8550b9 100644 --- a/internal/runner/automatic_inputs.go +++ b/internal/runner/automatic_inputs.go @@ -87,7 +87,13 @@ func validateAutomatic(c *AutomaticInput, r Release, hasRoot bool) error { return bad("invalid_automatic_input", "Choose either a case file or constant case parameters.") } if len(c.Case) > 0 { - if _, e := proofCanon(c.Case); e != nil { + var caseErr error + if inputConversion(r.Sample) != nil && r.InputMapping != nil && hasColumnCase(*r.InputMapping) { + _, caseErr = columnCaseBytes(&SourceInput{Case: c.Case, ConversionContract: inputConversion(r.Sample)}) + } else { + _, caseErr = proofCanon(c.Case) + } + if caseErr != nil { return bad("invalid_automatic_input", "Case parameters must use exact supported JSON values.") } var v map[string]any @@ -145,7 +151,7 @@ func (s *Service) automaticInputContext(ctx context.Context, c *AutomaticInput, if _, e := s.normalizeInput(input); e != nil { return input, e } - if len(encode(input)) > MaxBody { + if len(encode(input)) > combinedLimit(input) { return input, bad("invalid_automatic_input", "Combined inputs exceed the request limit.") } return input, nil @@ -203,9 +209,32 @@ func (s *Service) automaticInputSeed(c *AutomaticInput, r Release, snapshots map } } } + if input.Source != nil { + if input.Source.ConversionContract != nil && !sameConversion(input.Source.ConversionContract, inputConversion(r.Sample)) { + return input, bad("mapping_mismatch", "Automatic conversion selection differs from the reviewed release.") + } + if c.Kind != "constant" { + input.Source.ConversionContract = inputConversion(r.Sample) + } + } if !mappingMatchesRelease(r, input) { return input, bad("mapping_mismatch", "Automatic inputs do not match this job's release.") } + // A durable preparation saves this seed before its first preparation pass. + // Preserve exact Draft case custody before that first serialization. + if input.Source != nil && input.Source.Mapping.Profile == "base" && hasColumnCase(input.Source.Mapping) { + raw, err := columnCaseBytes(input.Source) + if err != nil { + return input, err + } + if len(raw) == 0 { + raw = json.RawMessage(`{}`) + } + if err := columnInputBounds(input.Source); err != nil { + return input, err + } + retainColumnCase(input.Source, raw) + } return input, nil } func (s *Service) validateTrigger(c *TriggerConfig, r Release, at time.Time) error { diff --git a/internal/runner/background.go b/internal/runner/background.go index b269e13..4e4f99e 100644 --- a/internal/runner/background.go +++ b/internal/runner/background.go @@ -135,7 +135,7 @@ func (s *Service) acquireAutomatic(parent context.Context, input Input) (Input, return input, err } input.Source.Sources[next.Name] = value - if len(encode(input)) > MaxBody { + if len(encode(input)) > combinedLimit(input) { return input, bad("input_too_large", "Acquired inputs exceed the combined input limit.") } } @@ -148,6 +148,9 @@ func (s *Service) acquirePlannedOperation(parent context.Context, next PlannedSo if s.cfg.ExecutorAdmission != nil { return SourceValue{}, manualUnsupported() } + if e := next.ConversionContract.validate("preparation", "producer-carrier"); e != nil { + return SourceValue{}, e + } if next.Kind != "operation" { return SourceValue{}, bad("automatic_source_unavailable", "A fresh operation source is required.") } @@ -161,7 +164,7 @@ func (s *Service) acquirePlannedOperation(parent context.Context, next PlannedSo return SourceValue{}, bad("gateway_connection_required", "The Gateway connection is no longer available.") } session := id("job.") - raw, e := automaticCall(parent, gateway+"/acquire", encode(map[string]any{"session": session, "source": next.Source, "arguments": next.Arguments}), 1<<20) + raw, e := automaticCall(parent, gateway+"/acquire", encode(map[string]any{"session": session, "source": next.Source, "arguments": next.Arguments}), int64(artifactLimit(next.ConversionContract, 1<<20, columnResponseLimit))) // Housekeeping is bounded and never retries the acquisition itself. cleanup, stop := context.WithTimeout(context.WithoutCancel(parent), 3*time.Second) _, _ = automaticCall(cleanup, gateway+"/seal", encode(map[string]string{"session": session}), 64<<10) @@ -182,6 +185,9 @@ func (s *Service) acquirePlannedOperation(parent context.Context, next PlannedSo } return value, bad("gateway_receipt_mismatch", "The Gateway response does not belong to this acquisition.") } + if next.ConversionContract != nil && next.retainResponse { + return SourceValue{RetainedResponseJSON: string(raw)}, nil + } return SourceValue{Response: raw}, nil } diff --git a/internal/runner/binding_test.go b/internal/runner/binding_test.go index 0c76340..702a937 100644 --- a/internal/runner/binding_test.go +++ b/internal/runner/binding_test.go @@ -99,8 +99,8 @@ func calculatedTriage(t *testing.T) (Input, InputProfile) { t.Helper() input, profile, key, at := calculatorFixture(t) input.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{ - Facts: []FactMapping{{"/request", "/facts/request"}}, - Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}, {"sponsor-endorsement", "/evidence/sponsor-endorsement"}}, + Facts: []FactMapping{{Target: "/request", Source: "/facts/request"}}, + Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/evidence/sponsor-endorsement"}}, }} input.Source.Mapping.UnmappedEvidence = []string{"sensitive-data-approvals"} result := map[string]any{"calculation": calculation(at)} diff --git a/internal/runner/column_carrier_v1.go b/internal/runner/column_carrier_v1.go new file mode 100644 index 0000000..336d890 --- /dev/null +++ b/internal/runner/column_carrier_v1.go @@ -0,0 +1,194 @@ +package runner + +import ( + "bytes" + "crypto/ed25519" + "encoding/json" + "errors" + "io" + "strings" + "time" + "unicode/utf16" + "unicode/utf8" + + "github.com/Judgment-Pack/judgment-pack-runner/internal/retainedcolumns" +) + +// This parser establishes structure and separate byte identities only. It does +// not authorize preparation, human review, or an original declaration inventory. +// In particular, even a verified signature over this wrapper alone supplies no +// unspecified relation between its frame and its original snapshot. +type retainedColumnCarrier struct { + OriginalSnapshot []byte + RawFrame json.RawMessage + Frame retainedcolumns.Frame + OriginalSnapshotSHA256, CarrierSHA256 string +} + +func readColumnCarrier(raw []byte, selection ...*ConversionContract) (retainedColumnCarrier, error) { + var c retainedColumnCarrier + badCarrier := func() (retainedColumnCarrier, error) { + return c, withCode(codeMalformed, errors.New("invalid retained-column generated carrier")) + } + if e := selectedConversion(selection).validate("producer-carrier"); e != nil { + return c, e + } + if len(raw) > artifactLimit(selectedConversion(selection), MaxBody, columnCarrierLimit) { + return c, withCode(codeOverBound, errors.New("retained-column carrier exceeds base limit")) + } + if _, e := readInputJSONDepth(raw, maxDocumentDepth); e != nil { + return badCarrier() + } + m, e := exactMembers(raw) + if e != nil || len(m) != 4 { + return badCarrier() + } + for _, k := range []string{"contractVersion", "originalSnapshotJson", "originalSnapshotSha256", "retained"} { + if _, ok := m[k]; !ok { + return badCarrier() + } + } + var version, snapshot, pin string + if json.Unmarshal(m["contractVersion"], &version) != nil || version != "1" || json.Unmarshal(m["originalSnapshotJson"], &snapshot) != nil || json.Unmarshal(m["originalSnapshotSha256"], &pin) != nil || !validDigest(pin) || pin != digest([]byte(snapshot)) { + return badCarrier() + } + if len(snapshot) > 524288 { + return c, withCode(codeOverBound, errors.New("original reviewed snapshot exceeds producer bound")) + } + if !snapshotObject([]byte(snapshot)) { + return badCarrier() + } + frame, e := retainedcolumns.ParseFrame(m["retained"], retainedcolumns.Base) + if e != nil { + return c, columnError(e) + } + if frame.Origin() != "generated" { + return badCarrier() + } + c = retainedColumnCarrier{OriginalSnapshot: []byte(snapshot), RawFrame: append(json.RawMessage(nil), m["retained"]...), Frame: frame, OriginalSnapshotSHA256: pin, CarrierSHA256: digest(raw)} + return c, nil +} + +// Snapshot text is opaque for restoration, including historical lone-surrogate +// escapes. Compare decoded member names as UTF-16 code units so distinct legacy +// surrogates are not collapsed into replacement characters by encoding/json. +func snapshotName(raw []byte) string { + raw = bytes.TrimSpace(raw) + raw = bytes.TrimSpace(bytes.TrimPrefix(raw, []byte(","))) + var units []uint16 + for i := 1; i < len(raw)-1; { + if raw[i] != '\\' { + r, n := utf8.DecodeRune(raw[i:]) + units = append(units, utf16.Encode([]rune{r})...) + i += n + continue + } + i++ + if raw[i] == 'u' { + var n uint16 + for j := 1; j <= 4; j++ { + n *= 16 + x := raw[i+j] + switch { + case x >= '0' && x <= '9': + n += uint16(x - '0') + case x >= 'a' && x <= 'f': + n += uint16(x - 'a' + 10) + default: + n += uint16(x - 'A' + 10) + } + } + units = append(units, n) + i += 5 + continue + } + escaped := map[byte]uint16{'"': '"', '\\': '\\', '/': '/', 'b': '\b', 'f': '\f', 'n': '\n', 'r': '\r', 't': '\t'} + units = append(units, escaped[raw[i]]) + i++ + } + var identity strings.Builder + for _, u := range units { + identity.WriteByte(byte(u >> 8)) + identity.WriteByte(byte(u)) + } + return identity.String() +} +func snapshotObject(raw []byte) bool { + if !utf8.Valid(raw) || !json.Valid(raw) { + return false + } + d := json.NewDecoder(bytes.NewReader(raw)) + d.UseNumber() + var read func(int) bool + read = func(depth int) bool { + if depth > maxDocumentDepth { + return false + } + t, e := d.Token() + if e != nil { + return false + } + switch t { + case json.Delim('{'): + seen := map[string]bool{} + for d.More() { + before := d.InputOffset() + if _, e = d.Token(); e != nil { + return false + } + key := snapshotName(raw[before:d.InputOffset()]) + if seen[key] { + return false + } + seen[key] = true + if !read(depth + 1) { + return false + } + } + t, e = d.Token() + return e == nil && t == json.Delim('}') + case json.Delim('['): + for d.More() { + if !read(depth + 1) { + return false + } + } + t, e = d.Token() + return e == nil && t == json.Delim(']') + } + return true + } + trimmed := bytes.TrimSpace(raw) + if len(trimmed) == 0 || trimmed[0] != '{' || !read(0) { + return false + } + _, e := d.Token() + return e == io.EOF +} + +type retainedAcquisitionResult struct{ Canonical, Raw json.RawMessage } + +// The signature domain remains the canonical result. Raw preserves the received +// carrier/frame spelling separately, never pretending that a signature pins raw +// serialization. Existing verifyAcquisition callers keep their old contract. +func verifyRetainedAcquisition(raw, args []byte, p InputProfile, public ed25519.PublicKey, at time.Time, maxAge int, selection ...*ConversionContract) (retainedAcquisitionResult, *Citation, error) { + if e := selectedConversion(selection).validate("producer-carrier"); e != nil { + return retainedAcquisitionResult{}, nil, e + } + if len(raw) > responseLimit(selectedConversion(selection)) { + return retainedAcquisitionResult{}, nil, withCode(codeOverBound, errors.New("complete retained-column response exceeds base limit")) + } + envelope, e := exactMembers(raw) + if e == nil && len(envelope["result"]) > artifactLimit(selectedConversion(selection), MaxBody, columnCarrierLimit) { + return retainedAcquisitionResult{}, nil, withCode(codeOverBound, errors.New("retained-column carrier exceeds selected limit")) + } + canonical, cite, e := verifyAcquisition(raw, args, p, public, at, maxAge, selectedConversion(selection)) + if e != nil { + return retainedAcquisitionResult{}, nil, e + } + m, e := exactMembers(raw) + if e != nil { + return retainedAcquisitionResult{}, nil, e + } + return retainedAcquisitionResult{Canonical: canonical, Raw: append(json.RawMessage(nil), m["result"]...)}, cite, nil +} diff --git a/internal/runner/column_carrier_v1_producer.go b/internal/runner/column_carrier_v1_producer.go new file mode 100644 index 0000000..1f9fe74 --- /dev/null +++ b/internal/runner/column_carrier_v1_producer.go @@ -0,0 +1,343 @@ +package runner + +// Draft RFC0029 desk-reviewed-input/1 consumer. The installation's explicit +// producer pin is authority; a carrier's origin or a caller's trust object is not. +import ( + "bytes" + "encoding/json" + "errors" + "regexp" + "strconv" + "strings" +) + +const columnProducerGrammar = "desk-reviewed-input/1" +const columnRevisionDomain = "judgment-pack/retained-column/1/desk-reviewed-input/revision\x00" + +var columnRunID = regexp.MustCompile(`^research_[a-f0-9]{32}$`) +var columnRecipeVersion = regexp.MustCompile(`^[1-9][0-9]*$`) + +type RetainedColumnProducer struct { + ContractVersion string `json:"contractVersion"` + Grammar string `json:"grammar"` +} + +func (p *RetainedColumnProducer) UnmarshalJSON(raw []byte) error { + type plain RetainedColumnProducer + var v plain + m, e := exactMembers(raw) + if e != nil || len(m) != 2 || m["contractVersion"] == nil || m["grammar"] == nil { + return errors.New("retainedColumnProducer requires exactly contractVersion and grammar") + } + if e = strictJSON(raw, &v); e != nil { + return e + } + *p = RetainedColumnProducer(v) + return nil +} +func columnProducerProfile(p InputProfile) error { + pin := p.RetainedColumnProducer + if pin == nil || pin.ContractVersion != "1" || pin.Grammar != columnProducerGrammar { + return withCode("capability-unsupported", errors.New("retained-column source requires the original-inventory producer contract desk-reviewed-input/1")) + } + if !mappingName.MatchString(p.ID) || p.Authority == "" || len(p.Authority) > 256 || p.Class != "generated" || p.Source != "desk-inputs" || p.Shape != "mcp" || p.Endpoint == nil || *p.Endpoint != "desk-local:reviewed-inputs" || p.EndpointScope != nil || len(p.Tools) != 1 || p.Tools[0] != "read_reviewed_input" || p.Adapter.Name != "jpack-desk/reviewed-input" || p.Adapter.Version != "2" || !validDigest(p.Adapter.Digest) || p.Calculator != nil || p.Research != nil { + return withCode(codeMismatch, errors.New("retained-column producer differs from the trusted Desk source/adapter tuple")) + } + return nil +} +func preflightColumnSources(m InputMapping, profiles []InputProfile) error { + for _, s := range m.Sources { + if s.Read.Copy == nil || !hasColumnCopy(*s.Read.Copy) { + continue + } + if m.Profile != "base" { + return withCode("capability-unsupported", errors.New("generated retained columns require explicit Draft base profile")) + } + if s.Kind != "operation" || len(s.Read.Unwrap) > 0 || s.Calculation != nil { + return withCode(codeMismatch, errors.New("retained columns require a directly bound producer operation")) + } + p, e := profileFor(s, profiles) + if e != nil { + return e + } + if m.selectedConversion != nil { + if e = m.selectedConversion.validate("producer-carrier"); e != nil { + return e + } + if e = requireConversionCapability(p.ConversionContracts, "producer-carrier", true); e != nil { + return e + } + } + if e = columnProducerProfile(p); e != nil { + return e + } + // Every column leaf selects the one retained frame in this closed carrier. + for _, f := range s.Read.Copy.Facts { + if len(f.Conversion) > 0 && f.Source != "/retained" { + return withCode(codeMalformed, errors.New("producer conversion source must be /retained")) + } + } + for _, f := range s.Read.Copy.Evidence { + if len(f.Availability) > 0 && f.Source != "/retained" { + return withCode(codeMalformed, errors.New("producer availability source must be /retained")) + } + } + } + return nil +} +func columnSnapshotMember(raw []byte, path ...string) (json.RawMessage, error) { + v := json.RawMessage(raw) + for _, name := range path { + m, e := exactMembers(v) + if e != nil || m[name] == nil { + return nil, errors.New("original snapshot projection member missing") + } + v = m[name] + } + return v, nil +} +func columnSnapshotString(raw []byte) (string, bool) { + if !validInputEscapes(raw) { + return "", false + } + var s string + e := json.Unmarshal(raw, &s) + return s, e == nil && !bytes.Equal(bytes.TrimSpace(raw), []byte("null")) +} +func columnRevision(rawID, rawVersion []byte) (string, error) { + id, ok := columnSnapshotString(rawID) + v := string(bytes.TrimSpace(rawVersion)) + n, e := strconv.ParseUint(v, 10, 64) + if !ok || !columnRunID.MatchString(id) || !columnRecipeVersion.MatchString(v) || e != nil || n > 9007199254740991 { + return "", errors.New("original run identity or recipe version is invalid") + } + return digest([]byte(columnRevisionDomain + id + "\x00" + strconv.FormatUint(n, 10))), nil +} + +// validateColumnProducerRelation establishes offline snapshot/frame consistency. +// It cannot prove the producer actually loaded the original recipe history. That +// is an explicit precondition of the separately reviewed and pinned adapter v2. +func validateColumnProducerRelation(c retainedColumnCarrier) error { + malformed := func() error { + return withCode(codeMalformed, errors.New("invalid original reviewed snapshot projection")) + } + differs := func() error { + return withCode(codeReadFailed, errors.New("retained frame differs from the complete original snapshot inventory, revision or values")) + } + member := func(path ...string) json.RawMessage { + v, _ := columnSnapshotMember(c.OriginalSnapshot, path...) + return v + } + snapshotClass, _ := columnSnapshotString(member("class")) + recordClass, _ := columnSnapshotString(member("record", "class")) + if string(bytes.TrimSpace(member("version"))) != "1" || snapshotClass != "generated" || recordClass != "generated" { + return malformed() + } + revision, e := columnRevision(member("research", "id"), member("research", "recipeVersion")) + if e != nil { + return malformed() + } + other, e := columnRevision(member("record", "research", "runId"), member("record", "research", "recipeVersion")) + if e != nil { + return malformed() + } + if revision != other { + return differs() + } + var frame struct { + Values map[string]json.RawMessage `json:"values"` + Research struct { + RecordRecipeRevision string `json:"recordRecipeRevision"` + Declaration *struct { + RecipeRevision string `json:"recipeRevision"` + Fields []struct { + Name string `json:"name"` + FieldJSON string `json:"fieldJson"` + } `json:"fields"` + } `json:"declaration"` + Fields map[string]struct { + Status string `json:"status"` + ValueJSON *string `json:"valueJson"` + } `json:"fields"` + } `json:"research"` + } + if json.Unmarshal(c.RawFrame, &frame) != nil { + return malformed() + } + r := frame.Research + if r.Declaration == nil || r.RecordRecipeRevision != revision || r.Declaration.RecipeRevision != revision { + return differs() + } + values, e := exactMembers(member("record", "values")) + if e != nil { + return malformed() + } + if len(values) != len(frame.Values) { + return differs() + } + for k, v := range values { + s, ok := columnSnapshotString(v) + if !ok { + return malformed() + } + want, ok := columnSnapshotString(frame.Values[k]) + if !ok || s != want { + return differs() + } + } + var declarations []json.RawMessage + if json.Unmarshal(member("research", "recipe", "fields"), &declarations) != nil || declarations == nil { + return malformed() + } + if len(declarations) != len(r.Declaration.Fields) { + return differs() + } + seen := map[string]bool{} + for i, raw := range declarations { + m, e := exactMembers(raw) + if e != nil { + return malformed() + } + name, ok := columnSnapshotString(m["name"]) + if !ok || name == "" || seen[name] { + return malformed() + } + seen[name] = true + kind, ok := columnSnapshotString(m["type"]) + if !ok { + return malformed() + } + switch kind { + case "text", "integer", "decimal", "boolean", "text-list", "range", "string", "number": + default: + return malformed() + } + var compact bytes.Buffer + if json.Compact(&compact, raw) != nil { + return malformed() + } + got := r.Declaration.Fields[i] + if got.Name != name || got.FieldJSON != compact.String() { + return differs() + } + } + fields, e := exactMembers(member("record", "research", "entity", "fields")) + if e != nil { + return malformed() + } + if len(fields) != len(r.Fields) { + return differs() + } + for name, raw := range fields { + m, e := exactMembers(raw) + if e != nil { + return malformed() + } + status, ok := columnSnapshotString(m["status"]) + if !ok { + return malformed() + } + switch status { + case "supported", "interpretation", "missing", "conflicting", "inaccessible", "stale": + default: + return malformed() + } + got, ok := r.Fields[name] + if !ok || got.Status != status { + return differs() + } + v, present := m["value"] + if present != (got.ValueJSON != nil) { + return differs() + } + if present && string(v) != *got.ValueJSON { + return differs() + } + } + return nil +} + +// A generated acquisition is either the historical response object on initial +// input, or sole exact text. The latter retains one envelope without a redundant +// serialized object. Signatures authenticate canonical content, not spelling. +func columnRetainedResponse(value SourceValue, selection ...*ConversionContract) ([]byte, error) { + raw := value.Response + if value.RetainedResponseJSON != "" { + if len(value.Response) > 0 || len(value.Snapshot) > 0 { + return nil, withCode(codeMalformed, errors.New("retained acquisition must supply exactly one response form")) + } + raw = []byte(value.RetainedResponseJSON) + } + if len(raw) == 0 || len(value.Snapshot) > 0 { + return nil, withCode(codeMalformed, errors.New("retained acquisition must supply exactly one response form")) + } + if e := selectedConversion(selection).validate("producer-carrier"); e != nil { + return nil, e + } + if len(raw) > responseLimit(selectedConversion(selection)) { + return nil, withCode(codeOverBound, errors.New("complete retained response exceeds base limit")) + } + _, canonErr := proofCanon(raw) + if selectedConversion(selection) != nil { + _, canonErr = scopedJSON(raw, columnResponseLimit) + } + if e := canonErr; e != nil { + return nil, withCode(codeMalformed, e) + } + return raw, nil +} + +// Historical profile/source forms retain their decoder. The new optional exact +// text/pin variants are case-sensitive and cannot silently turn null into absent. +func (p *InputProfile) UnmarshalJSON(raw []byte) error { + type plain InputProfile + var v plain + if e := strictJSON(raw, &v); e != nil { + return e + } + if bytes.Equal(bytes.TrimSpace(raw), []byte("null")) { + *p = InputProfile(v) + return nil + } + m, e := exactMembers(raw) + if e != nil { + return e + } + for k, b := range m { + if strings.EqualFold(k, "conversionContracts") && (k != "conversionContracts" || len(bytes.TrimSpace(b)) == 0 || bytes.TrimSpace(b)[0] != '[') { + return errors.New("invalid conversionContracts member") + } + if strings.EqualFold(k, "retainedColumnProducer") && (k != "retainedColumnProducer" || bytes.Equal(bytes.TrimSpace(b), []byte("null"))) { + return errors.New("invalid retainedColumnProducer member") + } + } + *p = InputProfile(v) + return nil +} +func (v *SourceValue) UnmarshalJSON(raw []byte) error { + type plain SourceValue + var p plain + if e := strictJSON(raw, &p); e != nil { + return e + } + if bytes.Equal(bytes.TrimSpace(raw), []byte("null")) { + *v = SourceValue(p) + return nil + } + m, e := exactMembers(raw) + if e != nil { + return e + } + for k, b := range m { + if strings.EqualFold(k, "conversionContracts") && (k != "conversionContracts" || len(bytes.TrimSpace(b)) == 0 || bytes.TrimSpace(b)[0] != '[') { + return errors.New("invalid conversionContracts member") + } + if strings.EqualFold(k, "retainedResponseJson") { + if k != "retainedResponseJson" || len(m) != 1 || p.RetainedResponseJSON == "" || bytes.Equal(bytes.TrimSpace(b), []byte("null")) { + return errors.New("invalid retainedResponseJson member") + } + } + } + *v = SourceValue(p) + return nil +} diff --git a/internal/runner/column_carrier_v1_producer_test.go b/internal/runner/column_carrier_v1_producer_test.go new file mode 100644 index 0000000..17a58b4 --- /dev/null +++ b/internal/runner/column_carrier_v1_producer_test.go @@ -0,0 +1,590 @@ +package runner + +import ( + "bytes" + "crypto/ed25519" + "encoding/json" + "net/http" + "net/http/httptest" + "os" + "strings" + "testing" + "time" +) + +// Handwritten, disposable producer fixtures implement the proposed wire grammar, +// not Desk's still-required original-history lookup or production adapter. +const producerRevision = "sha256:07ff6dc41c4c15c56024072f527a8b7f209d86df76dacc8a2f5a6666fb920c90" +const producerValues = `{"Text":" B ","Integer":"7","Decimal":"1.2300","Boolean":"false","List":"A","Range":"1","String":"","Number":"-0","Evidence":"present"}` +const producerDeclarations = `[{ "type":"text", "name":"Text", "description":"\u0042" },{"name":"Integer","type":"integer"},{"name":"Decimal","type":"decimal"},{"name":"Boolean","type":"boolean"},{"name":"List","type":"text-list"},{"name":"Range","type":"range"},{"name":"String","type":"string"},{"name":"Number","type":"number"},{"name":"Evidence","type":"text"}]` +const producerFrameDeclarations = `[{"name":"Text","fieldJson":"{\"type\":\"text\",\"name\":\"Text\",\"description\":\"\\u0042\"}"},{"name":"Integer","fieldJson":"{\"name\":\"Integer\",\"type\":\"integer\"}"},{"name":"Decimal","fieldJson":"{\"name\":\"Decimal\",\"type\":\"decimal\"}"},{"name":"Boolean","fieldJson":"{\"name\":\"Boolean\",\"type\":\"boolean\"}"},{"name":"List","fieldJson":"{\"name\":\"List\",\"type\":\"text-list\"}"},{"name":"Range","fieldJson":"{\"name\":\"Range\",\"type\":\"range\"}"},{"name":"String","fieldJson":"{\"name\":\"String\",\"type\":\"string\"}"},{"name":"Number","fieldJson":"{\"name\":\"Number\",\"type\":\"number\"}"},{"name":"Evidence","fieldJson":"{\"name\":\"Evidence\",\"type\":\"text\"}"}]` +const producerTyped = `{"Text":{"status":"supported","value":" B "},"Integer":{"status":"supported","value":7},"Decimal":{"status":"supported","value":"1.2300"},"Boolean":{"status":"supported","value":false},"List":{"status":"supported","value":["A","B"]},"Range":{"status":"supported","value":{ "min":-0, "max":2 }},"String":{"status":"supported","value":""},"Number":{"status":"supported","value":-0},"Evidence":{"status":"supported","value":"present"}}` +const producerFrameTyped = `{"Text":{"status":"supported","valueJson":"\" B \""},"Integer":{"status":"supported","valueJson":"7"},"Decimal":{"status":"supported","valueJson":"\"1.2300\""},"Boolean":{"status":"supported","valueJson":"false"},"List":{"status":"supported","valueJson":"[\"A\",\"B\"]"},"Range":{"status":"supported","valueJson":"{ \"min\":-0, \"max\":2 }"},"String":{"status":"supported","valueJson":"\"\""},"Number":{"status":"supported","valueJson":"-0"},"Evidence":{"status":"supported","valueJson":"\"present\""}}` +const producerArgs = `{"tool":"read_reviewed_input","arguments":{"grant":"disposable-fixture"}}` + +type producerFixture struct { + input Input + profile InputProfile + key ed25519.PrivateKey + at time.Time + snapshot, frame string +} + +func newProducerFixture(t *testing.T, kind, column string) producerFixture { + t.Helper() + p, key := testProfile(t) + endpoint := "desk-local:reviewed-inputs" + p.ID = "reviewed" + p.Class = "generated" + p.Source = "desk-inputs" + p.Endpoint = &endpoint + p.Tools = []string{"read_reviewed_input"} + p.Adapter = AdapterPin{Name: "jpack-desk/reviewed-input", Version: "2", Digest: digest([]byte("disposable-producer-v2"))} + p.RetainedColumnProducer = &RetainedColumnProducer{ContractVersion: "1", Grammar: columnProducerGrammar} + leaf := `{"contractVersion":"1","column":"` + column + `","kind":"` + kind + `"}` + if kind == "boolean" { + leaf = `{"contractVersion":"1","column":"Boolean","kind":"boolean","trueValue":"true","falseValue":"false"}` + } + m := InputMapping{Version: 2, Profile: "base", Case: &CaseMapping{Facts: []FactMapping{}, Evidence: []EvidenceMapping{}}, Sources: []MappingSource{{Name: "desk", Kind: "operation", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Arguments: json.RawMessage(producerArgs), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/value", Source: "/retained", Conversion: json.RawMessage(leaf)}}, Evidence: []EvidenceMapping{{Requirement: "receipt", Source: "/retained", Availability: json.RawMessage(`{"contractVersion":"1","column":"Evidence"}`)}}}}}}, Admits: &Admission{Facts: map[string][]string{"/value": {"generated"}}, Evidence: map[string][]string{"receipt": {"generated"}}}} + snapshot := `{ "version":1,"class":"generated","recipeVersion":8,"values":{"Evidence":"present"},"opaque":{"historical":"\ud800"},"record":{"class":"generated","values":` + producerValues + `,"research":{"runId":"research_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","recipeVersion":7,"entity":{"fields":` + producerTyped + `}}},"research":{"id":"research_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","recipeVersion":7,"recipe":{"fields":` + producerDeclarations + `}} }` + "\n" + frame := `{ "contractVersion":"1","origin":"generated","values":` + producerValues + `,"research":{"recordRecipeRevision":"` + producerRevision + `","declaration":{"recipeRevision":"` + producerRevision + `","fields":` + producerFrameDeclarations + `},"fields":` + producerFrameTyped + `}}` + f := producerFixture{input: Input{Source: &SourceInput{Mapping: m, Case: json.RawMessage(`{}`)}}, profile: p, key: key, at: time.Now().UTC().Truncate(time.Second), snapshot: snapshot, frame: frame} + f.sign(t) + return f +} +func (f *producerFixture) carrier() []byte { + return []byte(`{ "contractVersion":"1","originalSnapshotJson":` + string(encode(f.snapshot)) + `,"originalSnapshotSha256":` + string(encode(digest([]byte(f.snapshot)))) + `,"retained":` + f.frame + ` }`) +} +func (f *producerFixture) sign(t *testing.T) { + t.Helper() + carrier := f.carrier() + signed := signResponse(t, f.profile, f.key, []byte(producerArgs), carrier, f.at, 0) + // Restore the handwritten received representation after the signing helper's + // JSON writer compacts RawMessage. The canonical receipt digest is unchanged. + var parts map[string]json.RawMessage + json.Unmarshal(signed, &parts) + response := []byte(`{ "result":` + string(carrier) + `, "receipt":` + string(parts["receipt"]) + `, "salts":` + string(parts["salts"]) + ` }`) + f.input.Source.Sources = map[string]SourceValue{"desk": {Response: response}} +} +func producerHTTP(t *testing.T, input Input, p InputProfile) (int, InputPlan, string) { + t.Helper() + body := encode(input) + if v, ok := input.Source.Sources["desk"]; ok && len(v.Response) > 0 { + compacted := encode(v.Response) + body = bytes.Replace(body, compacted, v.Response, 1) + } + req := httptest.NewRequest(http.MethodPost, "/v1/inputs/next", bytes.NewReader(body)) + req.Header.Set("Authorization", "Bearer producer-test") + response := httptest.NewRecorder() + s := &Service{cfg: Config{InputProfiles: []InputProfile{p}}} + s.Handler("producer-test").ServeHTTP(response, req) + var plan InputPlan + json.Unmarshal(response.Body.Bytes(), &plan) + return response.Code, plan, response.Body.String() +} +func producerPreparationFixture(i Input, p InputProfile) PreparationFixture { + return PreparationFixture{Dialect: encode(i.Source.Mapping), Case: mustColumnCaseBytes(i.Source), Sources: encode(i.Source.Sources), Profiles: encode([]InputProfile{p}), Preparation: encode(i.Preparation)} +} +func checkProducerOffline(t *testing.T, i Input, p InputProfile) { + t.Helper() + if r := VerifyPreparation(producerPreparationFixture(i, p)); r.Result != ResultReading { + t.Fatalf("offline generated entry: %+v", r) + } + b := columnBundle(i) + b.Release.InputProfiles = []InputProfile{p} + b.ReleaseDigest = releaseDigest(b.Release) + v, e := VerifyInputs(encode(b), []InputProfile{p}, b.ReleaseDigest) + if e != nil || !v.Checked() || v.Classes.Generated != 2 { + t.Fatalf("VerifyInputs generated: %v %+v", e, v) + } +} +func TestColumnProducerActualEntriesAllKindsAndOriginalTypes(t *testing.T) { + cases := []struct{ kind, column, facts, input string }{ + {"text", "Text", `{"value":" B "}`, `" B "`}, {"decimal", "Decimal", `{"value":"1.2300"}`, `"1.2300"`}, {"number", "Number", `{"value":-0}`, `"-0"`}, {"boolean", "Boolean", `{"value":false}`, `"false"`}, + {"research-value", "Text", `{"value":" B "}`, `" B "`}, {"research-value", "Integer", `{"value":7}`, `7`}, {"research-value", "Decimal", `{"value":"1.2300"}`, `"1.2300"`}, {"research-value", "Boolean", `{"value":false}`, `false`}, {"research-value", "List", `{"value":["A","B"]}`, `["A","B"]`}, {"research-value", "Range", `{"value":{"max":2,"min":-0}}`, `{ "min":-0, "max":2 }`}, {"research-value", "String", `{"value":""}`, `""`}, {"research-value", "Number", `{"value":-0}`, `-0`}, + } + for _, tc := range cases { + t.Run(tc.kind+"-"+tc.column, func(t *testing.T) { + f := newProducerFixture(t, tc.kind, tc.column) + noResponse := cloneInput(f.input) + noResponse.Source.Sources = nil + code, plan, body := producerHTTP(t, noResponse, f.profile) + if code != 200 || plan.Next == nil || plan.Next.Profile != f.profile.ID || plan.Next.Source != "desk-inputs" || !sameJSON(plan.Next.Arguments, []byte(producerArgs)) { + t.Fatalf("actual planned producer: %d %s", code, body) + } + code, plan, body = producerHTTP(t, f.input, f.profile) + if code != 200 || plan.Input == nil { + t.Fatalf("actual generated preparation: %d %s", code, body) + } + prepared := *plan.Input + if string(prepared.Facts) != tc.facts || string(prepared.Evidence) != `{"receipt":"present"}` { + t.Fatalf("actual values: %s %s", prepared.Facts, prepared.Evidence) + } + line := prepared.Preparation.Lineage[0] + if line.Class != "generated" || !line.GeneratedInfluence || line.Receipt == nil || line.ColumnTransformation == nil || columnInputJSON(t, prepared, 0) == nil || *columnInputJSON(t, prepared, 0) != tc.input { + t.Fatalf("generated exact lineage: %s", encode(line)) + } + identity := line.ColumnTransformation.ResearchIdentity + if tc.kind == "research-value" && (identity == nil || identity.RecipeRevision != producerRevision) { + t.Fatalf("missing original revision: %s", encode(line)) + } + value := prepared.Source.Sources["desk"] + if len(value.Response) != 0 || value.RetainedResponseJSON != string(f.input.Source.Sources["desk"].Response) { + t.Fatal("received raw envelope was rewritten") + } + var raw map[string]json.RawMessage + json.Unmarshal([]byte(value.RetainedResponseJSON), &raw) + carrier, e := readColumnCarrier(raw["result"]) + if e != nil || string(carrier.OriginalSnapshot) != f.snapshot || string(carrier.RawFrame) != f.frame || carrier.Frame.ProjectedFrameSHA256() != digest([]byte(f.frame)) { + t.Fatalf("raw snapshot/frame identities lost: %v", e) + } + checkProducerOffline(t, prepared, f.profile) + changed := cloneInput(prepared) + changed.Preparation.Lineage[0].ColumnTransformation.Input.Ref.FrameSHA256 = "sha256:" + strings.Repeat("0", 64) + if r := VerifyPreparation(producerPreparationFixture(changed, f.profile)); r.Code != codeDiffers { + t.Fatalf("offline trusted supplied lineage: %+v", r) + } + b := columnBundle(changed) + b.Release.InputProfiles = []InputProfile{f.profile} + b.ReleaseDigest = releaseDigest(b.Release) + if _, e := VerifyInputs(encode(b), []InputProfile{f.profile}, b.ReleaseDigest); e == nil { + t.Fatal("VerifyInputs trusted supplied lineage") + } + }) + } +} +func TestColumnProducerAvailabilityAndOmissions(t *testing.T) { + for _, availability := range []string{"present", "absent", "unknown"} { + t.Run(availability, func(t *testing.T) { + f := newProducerFixture(t, "text", "Text") + f.snapshot = strings.ReplaceAll(f.snapshot, `"Evidence":"present"`, `"Evidence":"`+availability+`"`) + f.snapshot = strings.ReplaceAll(f.snapshot, `"value":"present"`, `"value":"`+availability+`"`) + f.frame = strings.ReplaceAll(f.frame, `"Evidence":"present"`, `"Evidence":"`+availability+`"`) + f.frame = strings.ReplaceAll(f.frame, `"valueJson":"\"present\""`, `"valueJson":"\"`+availability+`\""`) + f.sign(t) + code, plan, body := producerHTTP(t, f.input, f.profile) + if code != 200 || plan.Input == nil || string(plan.Input.Evidence) != `{"receipt":"`+availability+`"}` { + t.Fatalf("availability: %d %s", code, body) + } + checkProducerOffline(t, *plan.Input, f.profile) + }) + } + for _, status := range []string{"interpretation", "missing", "conflicting", "inaccessible", "stale"} { + t.Run(status, func(t *testing.T) { + f := newProducerFixture(t, "research-value", "Text") + f.snapshot = strings.Replace(f.snapshot, `"Text":{"status":"supported"`, `"Text":{"status":"`+status+`"`, 1) + f.frame = strings.Replace(f.frame, `"Text":{"status":"supported"`, `"Text":{"status":"`+status+`"`, 1) + f.sign(t) + code, plan, body := producerHTTP(t, f.input, f.profile) + if code != 200 || plan.Input == nil { + t.Fatalf("status omission: %d %s", code, body) + } + want := `{}` + if status == "interpretation" { + want = `{"value":" B "}` + } + if string(plan.Input.Facts) != want { + t.Fatalf("status semantics: %s", plan.Input.Facts) + } + checkProducerOffline(t, *plan.Input, f.profile) + }) + } +} + +func TestColumnProducerSignedRelationRefusalsAcrossEntries(t *testing.T) { + cases := []struct { + name string + change func(*producerFixture) + }{ + {"extra-frame-value", func(f *producerFixture) { + f.frame = strings.Replace(f.frame, `"values":{`, `"values":{"Extra":"X",`, 1) + }}, + {"changed-raw-column", func(f *producerFixture) { + f.frame = strings.Replace(f.frame, `"values":{"Text":" B "`, `"values":{"Text":"changed"`, 1) + }}, + {"extra-frame-field", func(f *producerFixture) { + f.frame = strings.Replace(f.frame, `"fields":{"Text":`, `"fields":{"Extra":{"status":"supported","valueJson":"null"},"Text":`, 1) + }}, + {"original-value-absent", func(f *producerFixture) { + f.snapshot = strings.Replace(f.snapshot, `"Number":{"status":"supported","value":-0}`, `"Number":{"status":"supported"}`, 1) + }}, + {"omitted-unselected-declaration", func(f *producerFixture) { + f.frame = strings.Replace(f.frame, `,{"name":"Integer","fieldJson":"{\"name\":\"Integer\",\"type\":\"integer\"}"}`, "", 1) + }}, + {"extra-declaration", func(f *producerFixture) { + f.frame = strings.Replace(f.frame, producerFrameDeclarations, strings.TrimSuffix(producerFrameDeclarations, "]")+`,{"name":"Extra","fieldJson":"{\"name\":\"Extra\",\"type\":\"text\"}"}]`, 1) + }}, + {"reordered-declarations", func(f *producerFixture) { + f.snapshot = strings.Replace(f.snapshot, `{"name":"Integer","type":"integer"},{"name":"Decimal","type":"decimal"}`, `{"name":"Decimal","type":"decimal"},{"name":"Integer","type":"integer"}`, 1) + }}, + {"unselected-field-metadata", func(f *producerFixture) { + f.snapshot = strings.Replace(f.snapshot, `{"name":"Integer","type":"integer"}`, `{"name":"Integer","type":"integer","description":"changed"}`, 1) + }}, + {"field-escape-spelling", func(f *producerFixture) { + f.snapshot = strings.Replace(f.snapshot, `"description":"\u0042"`, `"description":"B"`, 1) + }}, + {"missing-original-revision", func(f *producerFixture) { f.snapshot = strings.Replace(f.snapshot, `"recipeVersion":7,`, "", 1) }}, + {"current-revision-substitution", func(f *producerFixture) { + f.snapshot = strings.Replace(f.snapshot, `"recipeVersion":7,`, `"recipeVersion":8,`, 1) + }}, + {"both-frame-current-revision", func(f *producerFixture) { + f.frame = strings.ReplaceAll(f.frame, producerRevision, "sha256:"+strings.Repeat("0", 64)) + }}, + {"original-run-substitution", func(f *producerFixture) { + f.snapshot = strings.Replace(f.snapshot, `"runId":"research_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"`, `"runId":"research_bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"`, 1) + }}, + {"filtered-values-substitution", func(f *producerFixture) { + f.frame = strings.Replace(f.frame, producerValues, `{"Evidence":"present"}`, 1) + }}, + {"unselected-value-omitted", func(f *producerFixture) { f.frame = strings.Replace(f.frame, `"String":"",`, "", 1) }}, + {"typed-negative-zero", func(f *producerFixture) { + f.frame = strings.Replace(f.frame, `"Number":{"status":"supported","valueJson":"-0"}`, `"Number":{"status":"supported","valueJson":"0"}`, 1) + }}, + {"typed-status", func(f *producerFixture) { + f.frame = strings.Replace(f.frame, `"Text":{"status":"supported"`, `"Text":{"status":"missing"`, 1) + }}, + {"typed-null-substitution", func(f *producerFixture) { + f.frame = strings.Replace(f.frame, `"Number":{"status":"supported","valueJson":"-0"}`, `"Number":{"status":"supported","valueJson":"null"}`, 1) + }}, + {"typed-absence-substitution", func(f *producerFixture) { + f.frame = strings.Replace(f.frame, `"Number":{"status":"supported","valueJson":"-0"}`, `"Number":{"status":"supported"}`, 1) + }}, + {"snapshot-decoded-duplicate", func(f *producerFixture) { + f.snapshot = strings.Replace(f.snapshot, `"opaque":{"historical":"\ud800"}`, `"opaque":{"historical":"\ud800","\u0068istorical":false}`, 1) + }}, + {"duplicate-declaration", func(f *producerFixture) { + f.snapshot = strings.Replace(f.snapshot, producerDeclarations, strings.TrimSuffix(producerDeclarations, "]")+`,{"name":"Integer","type":"integer"}]`, 1) + }}, + {"invalid-revision-literal", func(f *producerFixture) { + f.snapshot = strings.ReplaceAll(f.snapshot, `"recipeVersion":7`, `"recipeVersion":7.0`) + }}, + {"unsafe-revision", func(f *producerFixture) { + f.snapshot = strings.ReplaceAll(f.snapshot, `"recipeVersion":7`, `"recipeVersion":9007199254740992`) + f.frame = strings.ReplaceAll(f.frame, producerRevision, "sha256:8870061c2039c232b872e16b131b9e08e11d3868d26f730a46c2082174ce5b47") + }}, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + f := newProducerFixture(t, "text", "Text") + code, baseline, body := producerHTTP(t, f.input, f.profile) + if code != 200 || baseline.Input == nil { + t.Fatalf("baseline: %d %s", code, body) + } + tc.change(&f) + f.sign(t) + code, plan, body := producerHTTP(t, f.input, f.profile) + if code == 200 || plan.Input != nil || plan.Next != nil { + t.Fatalf("signed inconsistent producer emitted input: %d %s", code, body) + } + // Same newly signed inconsistent carrier must fail both offline public entries, + // before it can be compared with the previously prepared values. + invalid := *baseline.Input + invalid.Source = f.input.Source + if r := VerifyPreparation(producerPreparationFixture(invalid, f.profile)); r.Result == ResultReading { + t.Fatalf("offline accepted signed inconsistent original relation: %+v", r) + } + b := columnBundle(invalid) + b.Release.InputProfiles = []InputProfile{f.profile} + b.ReleaseDigest = releaseDigest(b.Release) + if _, e := VerifyInputs(encode(b), []InputProfile{f.profile}, b.ReleaseDigest); e == nil { + t.Fatal("VerifyInputs accepted signed inconsistent original relation") + } + }) + } +} +func TestColumnProducerTrustRefusedBeforeAcquisition(t *testing.T) { + for _, tc := range []struct { + name string + change func(*producerFixture) + }{ + {"missing-annotation", func(f *producerFixture) { f.profile.RetainedColumnProducer = nil }}, + {"unsupported-grammar", func(f *producerFixture) { f.profile.RetainedColumnProducer.Grammar = "desk-reviewed-input/other" }}, + {"old-adapter", func(f *producerFixture) { f.profile.Adapter.Version = "1" }}, + {"wrong-source", func(f *producerFixture) { f.profile.Source = "caller-inputs" }}, + {"wrong-class", func(f *producerFixture) { + f.profile.Class = "record" + f.input.Source.Mapping.Admits.Facts["/value"] = []string{"generated", "record"} + f.input.Source.Mapping.Admits.Evidence["receipt"] = []string{"generated", "record"} + }}, + {"wrong-endpoint", func(f *producerFixture) { endpoint := "elsewhere"; f.profile.Endpoint = &endpoint }}, + {"extra-tool", func(f *producerFixture) { f.profile.Tools = append(f.profile.Tools, "other") }}, + {"missing-draft-selector", func(f *producerFixture) { f.input.Source.Mapping.Profile = "" }}, + {"wrong-source-pointer", func(f *producerFixture) { f.input.Source.Mapping.Sources[0].Read.Copy.Facts[0].Source = "/other" }}, + {"wrong-profile-digest", func(f *producerFixture) { + f.input.Source.Mapping.Sources[0].ProfileDigest = "sha256:" + strings.Repeat("0", 64) + }}, + } { + t.Run(tc.name, func(t *testing.T) { + f := newProducerFixture(t, "text", "Text") + tc.change(&f) + if tc.name != "wrong-profile-digest" { + f.input.Source.Mapping.Sources[0].ProfileDigest = profileHash(f.profile) + } + f.input.Source.Sources = nil + code, plan, body := producerHTTP(t, f.input, f.profile) + if code == 200 || plan.Next != nil || plan.Input != nil { + t.Fatalf("untrusted producer reached acquisition: %d %s", code, body) + } + }) + } +} +func TestColumnProducerOriginalReceiptChecksPreserved(t *testing.T) { + for _, name := range []string{"changed-snapshot-old-receipt", "changed-frame-old-receipt", "wrong-public-key", "wrong-request", "stale", "receipt-source", "receipt-adapter", "receipt-endpoint"} { + t.Run(name, func(t *testing.T) { + f := newProducerFixture(t, "text", "Text") + switch name { + case "changed-snapshot-old-receipt": + f.input.Source.Sources["desk"] = SourceValue{Response: bytes.Replace(f.input.Source.Sources["desk"].Response, []byte(`\\ud800`), []byte(`\\ud801`), 1)} + case "changed-frame-old-receipt": + f.input.Source.Sources["desk"] = SourceValue{Response: bytes.Replace(f.input.Source.Sources["desk"].Response, []byte(`"values":{"Text":" B "`), []byte(`"values":{"Text":"changed"`), 1)} + case "wrong-public-key": + other, _ := testProfile(t) + f.profile.PublicKey = other.PublicKey + f.input.Source.Mapping.Sources[0].ProfileDigest = profileHash(f.profile) + case "wrong-request": + f.input.Source.Mapping.Sources[0].Arguments = json.RawMessage(`{"tool":"read_reviewed_input","arguments":{"grant":"different"}}`) + case "stale": + f.at = f.at.Add(-time.Hour) + f.sign(t) + default: + var response map[string]any + v, e := readInputJSON(f.input.Source.Sources["desk"].Response) + if e != nil { + t.Fatal(e) + } + response = v.(map[string]any) + r := response["receipt"].(map[string]any) + switch name { + case "receipt-source": + r["source"] = "elsewhere" + case "receipt-adapter": + r["acquisition"].(map[string]any)["adapter"].(map[string]any)["version"] = "1" + case "receipt-endpoint": + r["acquisition"].(map[string]any)["endpoint"] = "elsewhere" + } + signReceipt(t, r, f.key) + f.input.Source.Sources["desk"] = SourceValue{Response: encode(response)} + } + code, plan, body := producerHTTP(t, f.input, f.profile) + if code == 200 || plan.Input != nil { + t.Fatalf("original receipt check bypassed: %d %s", code, body) + } + }) + } +} + +func TestColumnProducerRawEnvelopeVariantsAndUnsolicitedText(t *testing.T) { + f := newProducerFixture(t, "research-value", "Number") + code, plan, body := producerHTTP(t, f.input, f.profile) + if code != 200 || plan.Input == nil { + t.Fatalf("baseline: %d %s", code, body) + } + baseline := *plan.Input + for _, name := range []string{"changed-retained-envelope", "both-envelope-forms", "duplicate-retained-envelope", "empty-retained-text", "null-retained-text", "wrong-case-retained-member", "ordinary-source-member"} { + t.Run(name, func(t *testing.T) { + input := cloneInput(baseline) + input.Facts = nil + input.Evidence = nil + input.Preparation = nil + v := input.Source.Sources["desk"] + switch name { + case "changed-retained-envelope": + v.RetainedResponseJSON = strings.Replace(v.RetainedResponseJSON, `"values":{"Text":" B "`, `"values":{"Text":"changed"`, 1) + case "both-envelope-forms": + v.Response = json.RawMessage(v.RetainedResponseJSON) + case "duplicate-retained-envelope": + v.RetainedResponseJSON = strings.Replace(v.RetainedResponseJSON, `{ "result":`, `{ "result":null,"result":`, 1) + case "ordinary-source-member": + input.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/value", Source: "/originalSnapshotSha256"}}, Evidence: []EvidenceMapping{}}} + } + input.Source.Sources["desk"] = v + if name == "empty-retained-text" || name == "null-retained-text" || name == "wrong-case-retained-member" { + raw := encode(input) + if name == "wrong-case-retained-member" { + raw = bytes.Replace(raw, []byte(`"retainedResponseJson"`), []byte(`"RetainedResponseJson"`), 1) + } else { + replace := []byte(`""`) + if name == "null-retained-text" { + replace = []byte(`null`) + } + raw = bytes.Replace(raw, encode(v.RetainedResponseJSON), replace, 1) + } + var decoded Input + if e := strictJSON(raw, &decoded); e == nil { + t.Fatal("invalid optional exact-text form accepted") + } + return + } + status, plan, body := producerHTTP(t, input, f.profile) + if status == 200 || plan.Input != nil { + t.Fatalf("ambiguous/unsolicited retained text accepted: %d %s", status, body) + } + }) + } + // Equivalent outer serialization is inspectable local evidence, not a newly + // authenticated byte identity: the receipt's canonical result domain is equal. + equivalent := cloneInput(baseline) + v := equivalent.Source.Sources["desk"] + v.RetainedResponseJSON = "\n\t" + v.RetainedResponseJSON + "\n" + equivalent.Source.Sources["desk"] = v + checkProducerOffline(t, equivalent, f.profile) +} +func TestColumnProducerRawAbsenceNullAndEscapedClasses(t *testing.T) { + for _, name := range []string{"absent", "null", "escaped-classes"} { + t.Run(name, func(t *testing.T) { + f := newProducerFixture(t, "research-value", "Number") + switch name { + case "absent": + f.snapshot = strings.Replace(f.snapshot, `"Number":{"status":"supported","value":-0}`, `"Number":{"status":"missing"}`, 1) + f.frame = strings.Replace(f.frame, `"Number":{"status":"supported","valueJson":"-0"}`, `"Number":{"status":"missing"}`, 1) + case "null": + f.snapshot = strings.Replace(f.snapshot, `"Number":{"status":"supported","value":-0}`, `"Number":{"status":"missing","value":null}`, 1) + f.frame = strings.Replace(f.frame, `"Number":{"status":"supported","valueJson":"-0"}`, `"Number":{"status":"missing","valueJson":"null"}`, 1) + case "escaped-classes": + f.snapshot = strings.ReplaceAll(f.snapshot, `"class":"generated"`, `"class":"\u0067enerated"`) + } + f.sign(t) + code, plan, body := producerHTTP(t, f.input, f.profile) + if code != 200 || plan.Input == nil { + t.Fatalf("exact optional raw state: %d %s", code, body) + } + tr := plan.Input.Preparation.Lineage[0].ColumnTransformation + if name == "absent" && (tr.Input.State != "missing" || tr.Input.Ref != nil) { + t.Fatal("absent raw input rewritten") + } + if name == "null" && (tr.Input.State != "present" || columnInputJSON(t, *plan.Input, 0) == nil || *columnInputJSON(t, *plan.Input, 0) != "null") { + t.Fatal("null raw input rewritten") + } + checkProducerOffline(t, *plan.Input, f.profile) + }) + } +} +func TestColumnProducerCompleteRetainedEnvelopeAccounting(t *testing.T) { + f := newProducerFixture(t, "text", "Text") + f.snapshot = strings.Replace(f.snapshot, `"opaque":`, `"pad":"`+strings.Repeat(`\"`, 250000)+`","opaque":`, 1) + f.sign(t) + before := len(encode(f.input.Source.Mapping)) + len(f.input.Source.Case) + len(encode(f.input.Source.Sources)) + v := f.input.Source.Sources["desk"] + v.RetainedResponseJSON = string(v.Response) + both := map[string]SourceValue{"desk": v} + after := len(encode(f.input.Source.Mapping)) + len(f.input.Source.Case) + len(encode(both)) + t.Logf("complete-envelope witness: originalSnapshot=%d response=%d beforeExactText=%d afterExactText=%d base=%d", len(f.snapshot), len(v.Response), before, after, MaxBody) + sole := map[string]SourceValue{"desk": {RetainedResponseJSON: string(v.Response)}} + soleBytes := len(encode(f.input.Source.Mapping)) + len(f.input.Source.Case) + len(encode(sole)) + t.Logf("sole-text layout measurement: originalSnapshot=%d completeEnvelope=%d base=%d", len(f.snapshot), soleBytes, MaxBody) + max := newProducerFixture(t, "text", "Text") + padBytes := 524288 - len(max.snapshot) - len(`"pad":"",`) + max.snapshot = strings.Replace(max.snapshot, `"opaque":`, `"pad":"`+strings.Repeat(`\"`, padBytes/2)+`","opaque":`, 1) + if len(max.snapshot) < 524288 { + max.snapshot += " " + } + max.sign(t) + soleMax := map[string]SourceValue{"desk": {RetainedResponseJSON: string(max.input.Source.Sources["desk"].Response)}} + maxBytes := len(encode(max.input.Source.Mapping)) + len(max.input.Source.Case) + len(encode(soleMax)) + t.Logf("sole-text maximum-snapshot witness: originalSnapshot=%d completeEnvelope=%d base=%d", len(max.snapshot), maxBytes, MaxBody) + if len(max.snapshot) != 524288 || maxBytes <= MaxBody { + t.Fatal("sole-text maximum witness does not show remaining bound") + } + + if len(f.snapshot) > 524288 || before > MaxBody || after <= MaxBody { + t.Fatal("accounting fixture does not isolate retained text/escaping growth") + } + code, plan, body := producerHTTP(t, f.input, f.profile) + if code != 200 || plan.Input == nil { + t.Fatalf("sole text did not remove unnecessary duplicate: %d %s", code, body) + } + checkProducerOffline(t, *plan.Input, f.profile) + code, plan, body = producerHTTP(t, max.input, max.profile) + if code == 200 || plan.Input != nil || !strings.Contains(body, "complete dialect, case and acquisitions exceed base limit") { + t.Fatalf("sole-text escaped envelope not counted: %d %s", code, body) + } + max.input.Source.Sources = soleMax + if r := VerifyPreparation(producerPreparationFixture(max.input, max.profile)); r.Code != codeOverBound { + t.Fatalf("offline sole retained bytes not counted: %+v", r) + } +} + +func TestColumnProducerBoundedRevisionIdentity(t *testing.T) { + for _, tc := range []struct{ version, identity string }{{"1", "sha256:ef9d26d79a6f5f1a147bd95bc610f13406581d98f48a971070513b20b595f6ae"}, {"9007199254740991", "sha256:8612e0274562722e1b37beae400e672c6965f59223c729cce29dda2709e8aff3"}} { + t.Run(tc.version, func(t *testing.T) { + f := newProducerFixture(t, "research-value", "Integer") + f.snapshot = strings.ReplaceAll(f.snapshot, `"recipeVersion":7`, `"recipeVersion":`+tc.version) + f.frame = strings.ReplaceAll(f.frame, producerRevision, tc.identity) + f.sign(t) + code, plan, body := producerHTTP(t, f.input, f.profile) + if code != 200 || plan.Input == nil { + t.Fatalf("supported original revision identity: %d %s", code, body) + } + identity := plan.Input.Preparation.Lineage[0].ColumnTransformation.ResearchIdentity.RecipeRevision + if identity != tc.identity || len(identity) != 71 { + t.Fatalf("incorrect bounded revision identity: %s", identity) + } + checkProducerOffline(t, *plan.Input, f.profile) + }) + } +} + +func TestColumnProducerDraftTransportProjectionVectors(t *testing.T) { + schema, e := os.ReadFile("testdata/retained-column-producer-draft/schema.json") + if e != nil || !json.Valid(schema) { + t.Fatalf("Draft projection schema: %v", e) + } + raw, e := os.ReadFile("testdata/retained-column-producer-draft/cases.json") + if e != nil { + t.Fatal(e) + } + var corpus struct { + Cases []struct { + Name, Definition string + Value json.RawMessage + Valid bool + } + } + if e = json.Unmarshal(raw, &corpus); e != nil { + t.Fatal(e) + } + for _, c := range corpus.Cases { + t.Run(c.Name, func(t *testing.T) { + valid := false + switch c.Definition { + case "producerAnnotation": + var pin RetainedColumnProducer + if strictJSON(c.Value, &pin) == nil { + f := newProducerFixture(t, "text", "Text") + f.profile.RetainedColumnProducer = &pin + valid = columnProducerProfile(f.profile) == nil + } + case "retainedPreparationSource": + var v SourceValue + valid = strictJSON(c.Value, &v) == nil && v.RetainedResponseJSON != "" && len(v.Response) == 0 && len(v.Snapshot) == 0 + default: + t.Fatalf("unknown Draft projection definition: %s", c.Definition) + } + if valid != c.Valid { + t.Fatalf("Draft projection parser differs: got %t want %t", valid, c.Valid) + } + }) + } + // Old optional absence retains exact historical profile/source encoding. + p, _ := testProfile(t) + if bytes.Contains(encode(p), []byte("retainedColumnProducer")) { + t.Fatal("legacy profile encoding gained Draft member") + } + v := SourceValue{Response: json.RawMessage(`{"result":{},"receipt":{},"salts":{}}`)} + if bytes.Contains(encode(v), []byte("retainedResponseJson")) { + t.Fatal("legacy acquisition encoding gained Draft member") + } + for _, raw := range []string{`null`, `{"RetainedColumnProducer":{"contractVersion":"1","grammar":"desk-reviewed-input/1"}}`} { + if raw == "null" { + var p InputProfile + if json.Unmarshal([]byte(raw), &p) != nil { + t.Fatal("legacy null profile decoder behavior changed") + } + continue + } + var profile InputProfile + if strictJSON([]byte(raw), &profile) == nil { + t.Fatal("misspelled new producer annotation accepted") + } + } +} diff --git a/internal/runner/column_carrier_v1_test.go b/internal/runner/column_carrier_v1_test.go new file mode 100644 index 0000000..2802aef --- /dev/null +++ b/internal/runner/column_carrier_v1_test.go @@ -0,0 +1,95 @@ +package runner + +import ( + "bytes" + "encoding/hex" + "encoding/json" + "strings" + "testing" + "time" +) + +const columnGeneratedFrame = `{ "contractVersion":"1", "origin":"generated", "values":{"X":"original"}, "research":{"recordRecipeRevision":"original:1","declaration":{"recipeRevision":"original:1","fields":[{"name":"X","fieldJson":"{\"name\":\"X\",\"type\":\"number\"}"}]},"fields":{"X":{"status":"supported","valueJson":" -0 "}}}}` + +func carrierBytes(snapshot string) []byte { + // Handwritten wrapper preserves deliberately noncanonical frame whitespace. + return []byte(`{ "contractVersion":"1", "originalSnapshotJson":` + string(encode(snapshot)) + `, "originalSnapshotSha256":` + string(encode(digest([]byte(snapshot)))) + `, "retained":` + columnGeneratedFrame + ` }`) +} +func TestColumnCarrierExactRestorationAndDomains(t *testing.T) { + snapshot := "{ \"number\":-0, \"historical\":\"\\ud800\", \"slash\":\"\\/\", \"inventory\":[{\"name\":\"X\",\"type\":\"number\"}] }\n" + raw := carrierBytes(snapshot) + c, e := readColumnCarrier(raw) + if e != nil { + t.Fatal(e) + } + if !bytes.Equal(c.OriginalSnapshot, []byte(snapshot)) || string(c.RawFrame) != columnGeneratedFrame { + t.Fatal("original snapshot or received frame bytes rewritten") + } + if c.OriginalSnapshotSHA256 != digest([]byte(snapshot)) || c.CarrierSHA256 != digest(raw) || c.Frame.ProjectedFrameSHA256() != digest([]byte(columnGeneratedFrame)) { + t.Fatal("identity domains conflated") + } + canonical, e := proofCanon(raw) + if e != nil { + t.Fatal(e) + } + if digest(canonical) == c.CarrierSHA256 { + t.Fatal("raw carrier digest mislabeled canonical") + } +} +func TestColumnCarrierClosedAndDuplicateSafe(t *testing.T) { + raw := carrierBytes(`{"x":1}`) + cases := map[string][]byte{ + "digest": bytes.Replace(raw, []byte(digest([]byte(`{"x":1}`))), []byte("sha256:"+strings.Repeat("0", 64)), 1), + "unknown": bytes.Replace(raw, []byte(`{ "contractVersion"`), []byte(`{ "extra":false,"contractVersion"`), 1), + "duplicate": bytes.Replace(raw, []byte(`{ "contractVersion"`), []byte(`{ "contractVersion":"1","contract\u0056ersion"`), 1), + "version": bytes.Replace(raw, []byte(`"contractVersion":"1"`), []byte(`"contractVersion":"2"`), 1), + "nongenerated": bytes.ReplaceAll(raw, []byte(`"origin":"generated"`), []byte(`"origin":"asserted"`)), + "duplicate-snapshot": carrierBytes(`{"x":1,"\u0078":2}`), + "nonobject": carrierBytes(`[]`), + } + for name, b := range cases { + t.Run(name, func(t *testing.T) { + if _, e := readColumnCarrier(b); e == nil { + t.Fatalf("malformed generated carrier admitted: %s", name) + } + }) + } + if !snapshotObject([]byte(`{"\ud800":1,"\ud801":2}`)) { + t.Fatal("distinct legacy member names collapsed") + } + if snapshotObject([]byte(`{"\ud800":1,"\ud800":2}`)) { + t.Fatal("duplicate legacy member names admitted") + } + if !snapshotObject([]byte(`{"😀":1,"other":2}`)) || snapshotObject([]byte(`{"😀":1,"\ud83d\ude00":2}`)) { + t.Fatal("decoded supplementary member identity differs") + } +} +func TestColumnVerifiedResultPreservesRawAndCanonicalSignatureDomain(t *testing.T) { + p, key := testProfile(t) + p.Class = "generated" + at := time.Unix(1700000000, 0).UTC() + args := []byte(`{"tool":"lookup","arguments":{}}`) + result := carrierBytes(`{"number":-0,"historical":"\ud800"}`) + response := signResponse(t, p, key, args, result, at, 0) + // encoding/json compacts RawMessage when it writes the response. Restore the + // actual received serialization; the canonical signed result is identical. + var parts map[string]json.RawMessage + json.Unmarshal(response, &parts) + raw := []byte(`{"result":` + string(result) + `,"receipt":` + string(parts["receipt"]) + `,"salts":` + string(parts["salts"]) + `}`) + public, _ := hex.DecodeString(p.PublicKey) + verified, cite, e := verifyRetainedAcquisition(raw, args, p, public, at, 300) + if e != nil || cite == nil { + t.Fatalf("signed actual acquisition: %v", e) + } + if !bytes.Equal(verified.Raw, result) || !bytes.Equal(verified.Canonical, canonTest(t, result)) { + t.Fatal("verified result lost raw frame or changed canonical signature domain") + } + c, e := readColumnCarrier(verified.Raw) + if e != nil || string(c.RawFrame) != columnGeneratedFrame { + t.Fatalf("signed raw carrier not restored: %v", e) + } + changed := bytes.Replace(raw, []byte(`"values":{"X":"original"}`), []byte(`"values":{"X":"changed"}`), 1) + if _, _, e = verifyRetainedAcquisition(changed, args, p, public, at, 300); e == nil { + t.Fatal("changed signed wrapper accepted") + } +} diff --git a/internal/runner/column_frame_v1.go b/internal/runner/column_frame_v1.go new file mode 100644 index 0000000..bb9a0cf --- /dev/null +++ b/internal/runner/column_frame_v1.go @@ -0,0 +1,53 @@ +package runner + +import ( + "encoding/json" + "errors" + "strings" +) + +// Historical two-member copies keep their decoder. A new three-member variant +// is closed and case-sensitive even on a preparation/live input path. +func (f *FactMapping) UnmarshalJSON(raw []byte) error { + type plain FactMapping + var v plain + if e := strictJSON(raw, &v); e != nil { + return e + } + if e := columnLeafKeys(raw, "conversion", "target", "source"); e != nil { + return e + } + *f = FactMapping(v) + return nil +} +func (f *EvidenceMapping) UnmarshalJSON(raw []byte) error { + type plain EvidenceMapping + var v plain + if e := strictJSON(raw, &v); e != nil { + return e + } + if e := columnLeafKeys(raw, "availability", "requirement", "source"); e != nil { + return e + } + *f = EvidenceMapping(v) + return nil +} +func columnLeafKeys(raw []byte, leaf, first, second string) error { + var m map[string]json.RawMessage + if json.Unmarshal(raw, &m) != nil { + return errors.New("invalid copy member") + } + found := false + for k := range m { + if strings.EqualFold(k, leaf) { + found = true + } + } + if !found { + return nil + } + if len(m) != 3 || m[leaf] == nil || m[first] == nil || m[second] == nil { + return errors.New("retained-column copy must have exactly its three case-sensitive members") + } + return nil +} diff --git a/internal/runner/column_frame_v1_case.go b/internal/runner/column_frame_v1_case.go new file mode 100644 index 0000000..53bb717 --- /dev/null +++ b/internal/runner/column_frame_v1_case.go @@ -0,0 +1,102 @@ +package runner + +import ( + "bytes" + "encoding/json" + "errors" + "strings" +) + +func hasColumnCase(m InputMapping) bool { + return m.Case != nil && hasColumnCopy(CopyMapping{Facts: m.Case.Facts, Evidence: m.Case.Evidence}) +} + +// columnCaseBytes materializes exact custody text transiently. Callers retain +// either the historical object or the sole exact string, never both copies. +func columnCaseBytes(c *SourceInput) (json.RawMessage, error) { + if c == nil { + return nil, nil + } + raw := c.Case + if c.RetainedCaseJSON != "" { + if len(c.Case) > 0 { + return nil, withCode(codeMalformed, errors.New("case and retainedCaseJson are mutually exclusive")) + } + raw = json.RawMessage(c.RetainedCaseJSON) + } + if len(raw) == 0 { + return nil, nil + } + if len(raw) > artifactLimit(c.ConversionContract, MaxBody, 2*MaxBody+256) { + return nil, withCode(codeOverBound, errors.New("case custody exceeds selected case limit")) + } + v, e := readInputJSON(raw) + if e != nil { + return nil, withCode(codeMalformed, errors.New("case custody is not strict UTF8 object JSON")) + } + if _, ok := v.(map[string]any); !ok { + return nil, withCode(codeMalformed, errors.New("case custody requires one object")) + } + return raw, nil +} +func columnCaseSlotBytes(c *SourceInput) int { + if c.RetainedCaseJSON != "" { + return len(encode(map[string]string{"retainedCaseJson": c.RetainedCaseJSON})) + } + if hasColumnCase(c.Mapping) { + raw := c.Case + if len(raw) == 0 { + raw = json.RawMessage(`{}`) + } + return len(encode(map[string]string{"retainedCaseJson": string(raw)})) + } + return len(c.Case) +} +func retainColumnCase(c *SourceInput, raw []byte) { c.Case = nil; c.RetainedCaseJSON = string(raw) } +func setColumnCase(c *SourceInput, raw []byte) { + c.RetainedCaseJSON = "" + c.Case = append(json.RawMessage(nil), raw...) +} +func (c *SourceInput) UnmarshalJSON(raw []byte) error { + type plain SourceInput + var value plain + if e := strictJSON(raw, &value); e != nil { + return e + } + if bytes.Equal(bytes.TrimSpace(raw), []byte("null")) { + *c = SourceInput(value) + return nil + } + m, e := exactMembers(raw) + if e != nil { + return e + } + draftCase := hasColumnCase(value.Mapping) + if value.Import != nil { + var published InputMapping + if strictJSON(value.Import.Dialect, &published) == nil { + draftCase = draftCase || hasColumnCase(published) + } + } + for k, v := range m { + if strings.EqualFold(k, "conversionContract") && (k != "conversionContract" || bytes.Equal(bytes.TrimSpace(v), []byte("null"))) { + return errors.New("invalid conversionContract member") + } + // Preserve historical ordinary decoding; close the new Draft custody slot. + if draftCase && strings.EqualFold(k, "case") && k != "case" { + return errors.New("invalid Draft case custody member spelling") + } + if strings.EqualFold(k, "retainedCaseJson") { + if k != "retainedCaseJson" || m["case"] != nil || value.RetainedCaseJSON == "" || bytes.Equal(bytes.TrimSpace(v), []byte("null")) { + return errors.New("invalid retainedCaseJson custody variant") + } + } + } + *c = SourceInput(value) + if c.RetainedCaseJSON != "" { + if _, e := columnCaseBytes(c); e != nil { + return e + } + } + return nil +} diff --git a/internal/runner/column_limits_v1.go b/internal/runner/column_limits_v1.go new file mode 100644 index 0000000..e6c0474 --- /dev/null +++ b/internal/runner/column_limits_v1.go @@ -0,0 +1,68 @@ +package runner + +import "encoding/json" + +// Only Base is executable in this intermediate Draft integration. It reuses +// the genuine complete-artifact limits; retained strings are not canon claims. +func columnProfileBytes(raw []byte) string { + m, e := exactMembers(raw) + if e != nil { + return "" + } // ordinary form reading reports this + v, exists := m["profile"] + if !exists { + return "" + } + var p string + if json.Unmarshal(v, &p) != nil { + return codeMalformed + } + switch p { + case "base": + return "" + case "extended": + return "profile-unsupported" + } + return codeMalformed +} +func columnInputBounds(c *SourceInput) error { + if !hasColumnMapping(c.Mapping) { + return nil + } + if e := c.ConversionContract.validate("preparation"); e != nil { + return e + } + limit := MaxBody + if c.ConversionContract != nil { + limit = columnCombinedLimit + if len(encode(c.Mapping)) > columnDocumentLimit || c.Import != nil && (len(c.Import.Dialect) > columnDocumentLimit || len(c.Import.Binding) > maxBindingDocument) { + return codedProblem(codeOverBound, "retained-column document exceeds selected limit") + } + } + if c.ConversionContract != nil { + counted := *c + if hasColumnCase(c.Mapping) && counted.RetainedCaseJSON == "" { + raw := counted.Case + if len(raw) == 0 { + raw = json.RawMessage(`{}`) + } + retainColumnCase(&counted, raw) + } + if len(encode(counted)) > limit { + return codedProblem(codeOverBound, "retained-column complete source exceeds selected combined limit") + } + return nil + } + sources := encode(c.Sources) + if c.Sources == nil { + sources = []byte(`{}`) + } + documents := len(encode(c.Mapping)) + if c.Import != nil { + documents += len(c.Import.Dialect) + len(c.Import.Binding) + } + if documents+columnCaseSlotBytes(c)+len(sources) > limit { + return codedProblem(codeOverBound, "retained-column complete dialect, case and acquisitions exceed base limit") + } + return nil +} diff --git a/internal/runner/column_read_v1.go b/internal/runner/column_read_v1.go new file mode 100644 index 0000000..71d49a7 --- /dev/null +++ b/internal/runner/column_read_v1.go @@ -0,0 +1,259 @@ +package runner + +// Draft RFC0029 integration. These helpers deliberately do not advertise a +// capability: generated provenance and negotiated transport remain separate gates. +import ( + "encoding/json" + "errors" + "sort" + + "github.com/Judgment-Pack/judgment-pack-runner/internal/retainedcolumns" +) + +func hasColumnCopy(c CopyMapping) bool { + for _, f := range c.Facts { + if len(f.Conversion) > 0 { + return true + } + } + for _, f := range c.Evidence { + if len(f.Availability) > 0 { + return true + } + } + return false +} +func hasColumnMapping(m InputMapping) bool { + if m.Case != nil && hasColumnCopy(CopyMapping{Facts: m.Case.Facts, Evidence: m.Case.Evidence}) { + return true + } + for _, s := range m.Sources { + if s.Read.Copy != nil && hasColumnCopy(*s.Read.Copy) { + return true + } + } + return false +} +func columnError(err error) error { + var r *retainedcolumns.Refusal + if errors.As(err, &r) { + return withCode(r.Code, err) + } + return err +} +func columnPlan(raw json.RawMessage, availability bool) (retainedcolumns.Plan, error) { + p, err := retainedcolumns.ParsePlan(raw) + if err != nil { + return p, columnError(err) + } + m, err := exactMembers(raw) + if err != nil { + return p, err + } + _, kind := m["kind"] + if kind == availability { + return p, withCode(codeMalformed, errors.New("conversion and availability leaves are distinct closed variants")) + } + return p, nil +} +func validateColumnCopy(c CopyMapping) error { + for _, f := range c.Facts { + if len(f.Conversion) > 0 { + if _, e := columnPlan(f.Conversion, false); e != nil { + return e + } + } + } + for _, f := range c.Evidence { + if len(f.Availability) > 0 { + if _, e := columnPlan(f.Availability, true); e != nil { + return e + } + } + } + return nil +} +func validateColumnMapping(m InputMapping) error { + switch m.Profile { + case "", "base": + case "extended": + return withCode("profile-unsupported", errors.New("extended retained-column preparation is not supported")) + default: + return withCode(codeMalformed, errors.New("unknown retained-column profile")) + } + if m.Case != nil { + if e := validateColumnCopy(CopyMapping{Facts: m.Case.Facts, Evidence: m.Case.Evidence}); e != nil { + return e + } + } + for _, s := range m.Sources { + if s.Read.Copy != nil && hasColumnCopy(*s.Read.Copy) { + if e := validateColumnCopy(*s.Read.Copy); e != nil { + return e + } + + } + } + return nil +} + +// Destination validation reuses v1's overlap checks without presenting its +// already validated dialect-only leaves as v1 policy. +func ordinaryFactTargets(fs []FactMapping) []FactMapping { + r := make([]FactMapping, len(fs)) + copy(r, fs) + for i := range r { + r[i].Conversion = nil + } + return r +} +func ordinaryEvidenceTargets(es []EvidenceMapping) []EvidenceMapping { + r := make([]EvidenceMapping, len(es)) + copy(r, es) + for i := range r { + r[i].Availability = nil + } + return r +} + +// rawPointer reads the original token rather than serializing a decoded frame. +// Its caller has already read the complete case strictly, including duplicates. +func rawPointer(raw []byte, pointer string) (json.RawMessage, bool) { + tokens, e := pointerTokens(pointer, true) + if e != nil { + return nil, false + } + value := json.RawMessage(raw) + for _, key := range tokens { + var object map[string]json.RawMessage + if json.Unmarshal(value, &object) == nil && object != nil { + var ok bool + value, ok = object[key] + if !ok { + return nil, false + } + continue + } + var array []json.RawMessage + if json.Unmarshal(value, &array) != nil { + return nil, false + } + // pointerRead supplies the existing strict array-index grammar. + generic := make([]any, len(array)) + for i := range array { + generic[i] = array[i] + } + v, ok := pointerRead(generic, []string{key}) + if !ok { + return nil, false + } + value = v.(json.RawMessage) + } + return value, true +} +func deriveCaseColumn(raw []byte, source string, leaf json.RawMessage, availability bool, frames map[string]retainedcolumns.Frame) (*retainedcolumns.Transformation, error) { + p, e := columnPlan(leaf, availability) + if e != nil { + return nil, e + } + frame, cached := frames[source] + if !cached { + frameRaw, ok := rawPointer(raw, source) + if !ok { + return nil, withCode(codeReadFailed, errors.New("retained frame is missing")) + } + frame, e = retainedcolumns.ParseFrame(frameRaw, retainedcolumns.Base) + if e != nil { + return nil, columnError(e) + } + // Source context grants no generated authority to caller-supplied case data. + if frame.Origin() != "asserted" { + return nil, withCode(codeReadFailed, errors.New("case retained frame must be asserted; generated frames require verified producer provenance")) + } + frames[source] = frame + } + t, e := retainedcolumns.Derive(p, frame) + return t, columnError(e) +} +func applyColumnCase(read SourceRead, raw []byte, artifact any, params map[string]any, selection ...*ConversionContract) (derivedClaim, map[string]*retainedcolumns.Transformation, error) { + if read.Copy == nil || !hasColumnCopy(*read.Copy) { + c, e := applyRead(read, artifact, params) + return c, nil, e + } + mapFrames := map[string]retainedcolumns.Frame{} + return applyColumnCopy(read, artifact, func(source string, leaf json.RawMessage, availability bool) (*retainedcolumns.Transformation, error) { + return deriveCaseColumn(raw, source, leaf, availability, mapFrames) + }, selectedConversion(selection)) +} +func applyColumnCopy(read SourceRead, artifact any, derive func(string, json.RawMessage, bool) (*retainedcolumns.Transformation, error), selection ...*ConversionContract) (derivedClaim, map[string]*retainedcolumns.Transformation, error) { + if e := boundedArtifact(artifact); e != nil { + return derivedClaim{}, nil, withCode(codeOverBound, e) + } + ordinary := CopyMapping{Facts: []FactMapping{}, Evidence: []EvidenceMapping{}} + for _, f := range read.Copy.Facts { + if len(f.Conversion) == 0 { + ordinary.Facts = append(ordinary.Facts, f) + } + } + for _, f := range read.Copy.Evidence { + if len(f.Availability) == 0 { + ordinary.Evidence = append(ordinary.Evidence, f) + } + } + c, e := copyClaim(ordinary, artifact) + if e != nil { + return c, nil, withCode(codeReadFailed, e) + } + fv, e := readInputJSON(c.Facts) + if e != nil { + return c, nil, e + } + facts := fv.(map[string]any) + ts := map[string]*retainedcolumns.Transformation{} + for _, f := range read.Copy.Facts { + if len(f.Conversion) == 0 { + continue + } + t, e := derive(f.Source, f.Conversion, false) + if e != nil { + return derivedClaim{}, nil, e + } + ts["fact:"+f.Target] = t + c.Basis = append(c.Basis, f.Source) + if t.Result.JSON != nil { + v, e := readInputJSON([]byte(*t.Result.JSON)) + if e != nil { + return derivedClaim{}, nil, e + } + writeTarget(facts, f.Target, v) + } + } + for _, f := range read.Copy.Evidence { + if len(f.Availability) == 0 { + continue + } + t, e := derive(f.Source, f.Availability, true) + if e != nil { + return derivedClaim{}, nil, e + } + ts["evidence:"+f.Requirement] = t + c.Basis = append(c.Basis, f.Source) + if t.Result.JSON != nil { + var value string + if json.Unmarshal([]byte(*t.Result.JSON), &value) != nil { + return derivedClaim{}, nil, withCode(codeReadFailed, errors.New("invalid availability result")) + } + c.Evidence[f.Requirement] = value + } + } + sort.Strings(c.Basis) + c.Facts = encode(facts) + _, e = proofCanon(encode(c)) + if selectedConversion(selection) != nil { + _, e = scopedJSON(encode(c), columnCombinedLimit) + } + if e != nil { + return derivedClaim{}, nil, withCode(codeReadFailed, e) + } + return c, ts, nil +} diff --git a/internal/runner/column_read_v1_reference.go b/internal/runner/column_read_v1_reference.go new file mode 100644 index 0000000..0c971f9 --- /dev/null +++ b/internal/runner/column_read_v1_reference.go @@ -0,0 +1,28 @@ +package runner + +import ( + "encoding/json" + "errors" + + "github.com/Judgment-Pack/judgment-pack-runner/internal/retainedcolumns" +) + +func columnReferenceForms(preparation map[string]any) error { + lineage, _ := preparation["lineage"].([]any) + for _, entry := range lineage { + target, _ := entry.(map[string]any) + raw, exists := target["columnTransformation"] + if !exists { + continue + } + transformation, ok := raw.(map[string]any) + if !ok { + return errors.New("column transformation must be an object") + } + var input retainedcolumns.InputState + if json.Unmarshal(encode(transformation["input"]), &input) != nil { + return errors.New("invalid closed retained-column input reference") + } + } + return nil +} diff --git a/internal/runner/column_read_v1_reference_test.go b/internal/runner/column_read_v1_reference_test.go new file mode 100644 index 0000000..bbddbfb --- /dev/null +++ b/internal/runner/column_read_v1_reference_test.go @@ -0,0 +1,563 @@ +package runner + +import ( + "bytes" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "testing" + "time" + + "github.com/Judgment-Pack/judgment-pack-runner/internal/retainedcolumns" +) + +func mustColumnCaseBytes(c *SourceInput) json.RawMessage { + raw, e := columnCaseBytes(c) + if e != nil { + panic(e) + } + return raw +} + +// Resolve in the already selected occurrence. No lookup by frame digest is used. +func columnInputJSON(t *testing.T, i Input, index int) *string { + t.Helper() + line := i.Preparation.Lineage[index] + var read CopyMapping + var raw []byte + if line.Source == "case" { + read = CopyMapping{Facts: i.Source.Mapping.Case.Facts, Evidence: i.Source.Mapping.Case.Evidence} + } else { + for _, source := range i.Source.Mapping.Sources { + if source.Name == line.Source { + read = *source.Read.Copy + response, e := columnRetainedResponse(i.Source.Sources[source.Name]) + if e != nil { + t.Fatal(e) + } + envelope, e := exactMembers(response) + if e != nil { + t.Fatal(e) + } + carrier, e := readColumnCarrier(envelope["result"]) + if e != nil { + t.Fatal(e) + } + raw = carrier.RawFrame + } + } + } + var leaf json.RawMessage + var pointer string + for _, f := range read.Facts { + if line.Kind == "fact" && line.Target == f.Target { + leaf = f.Conversion + pointer = f.Source + } + } + for _, f := range read.Evidence { + if line.Kind == "evidence" && line.Target == f.Requirement { + leaf = f.Availability + pointer = f.Source + } + } + if line.Source == "case" { + var ok bool + raw, ok = rawPointer(mustColumnCaseBytes(i.Source), pointer) + if !ok { + t.Fatal("selected case frame missing") + } + } + p, e := retainedcolumns.ParsePlan(leaf) + if e != nil { + t.Fatal(e) + } + f, e := retainedcolumns.ParseFrame(raw, retainedcolumns.Base) + if e != nil { + t.Fatal(e) + } + result, e := retainedcolumns.ResolveInput(p, f, line.ColumnTransformation) + if e != nil { + t.Fatal(e) + } + return result +} + +func columnHTTPExact(t *testing.T, input Input) (int, InputPlan, string) { + t.Helper() + raw := encode(input) + if len(input.Source.Case) > 0 { + raw = bytes.Replace(raw, encode(input.Source.Case), input.Source.Case, 1) + } + req := httptest.NewRequest(http.MethodPost, "/v1/inputs/next", bytes.NewReader(raw)) + req.Header.Set("Authorization", "Bearer refs-test") + recorder := httptest.NewRecorder() + (&Service{}).Handler("refs-test").ServeHTTP(recorder, req) + var plan InputPlan + json.Unmarshal(recorder.Body.Bytes(), &plan) + return recorder.Code, plan, recorder.Body.String() +} +func TestColumnReferenceCaseExactCustodyAndOccurrence(t *testing.T) { + original := columnCase(t, "number", `"-0"`) + raw := []byte("{\n \"provenance\": {\"originalValues\":{\"N\":1.2300,\"Z\":-0}},\n \"retained\": { \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"X\":\"-0\",\"Evidence\":\"present\"}, \"research\":null }, \"other\": { \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"X\":\"-0\",\"Evidence\":\"present\"}, \"research\":null }\n}") + original.Source.Case = raw + original.Source.Mapping.Case.Facts = append(original.Source.Mapping.Case.Facts, FactMapping{Target: "/other", Source: "/other", Conversion: original.Source.Mapping.Case.Facts[0].Conversion}) + status, plan, body := columnHTTPExact(t, original) + if status != 200 || plan.Input == nil { + t.Fatalf("exact case entry refused: %d %s", status, body) + } + prepared := *plan.Input + if len(prepared.Source.Case) != 0 || prepared.Source.RetainedCaseJSON != string(raw) { + t.Fatal("sole exact case custody lost") + } + var restored Input + if e := strictJSON(encode(prepared), &restored); e != nil || !bytes.Equal(mustColumnCaseBytes(restored.Source), raw) { + t.Fatalf("case whitespace/numeric tokens lost on serialized roundtrip: %v", e) + } + frameRaw, _ := rawPointer(raw, "/retained") + if prepared.Preparation.Lineage[0].ColumnTransformation.Input.Ref.FrameSHA256 != digest(frameRaw) { + t.Fatal("exact raw frame identity changed") + } + if tr := prepared.Preparation.Lineage[0].ColumnTransformation; tr.Input.Ref == nil || tr.Input.Ref.Location != "values" || *columnInputJSON(t, restored, 0) != `"-0"` { + t.Fatal("raw input reference missing") + } + if prepared.Preparation.Lineage[0].ColumnTransformation.Input.Ref.FrameSHA256 != prepared.Preparation.Lineage[1].ColumnTransformation.Input.Ref.FrameSHA256 { + t.Fatal("handwritten equal frames differ") + } + if r := VerifyPreparation(columnFixture(restored)); r.Result != ResultReading { + t.Fatalf("exact case offline: %+v", r) + } + b := columnBundle(restored) + if v, e := VerifyInputs(encode(b), nil, b.ReleaseDigest); e != nil || !v.Checked() { + t.Fatalf("exact case export: %v", e) + } + b.Release.RuntimeDigest = digest([]byte("reference-execution-runtime")) + b.Release.Config = "{}" + b.Release.Lock = "{}" + payload, e := freezeExecutionPayload(b.Release, restored, signingInputs{}) + if e != nil { + t.Fatalf("execution/signing source commitment: %v", e) + } + replay, e := freezeExecutionPayload(b.Release, prepared, signingInputs{}) + if e != nil || payload.Digest() != replay.Digest() { + t.Fatal("signing commitment lost exact custody on roundtrip") + } + other := cloneInput(restored) + other.Source.RetainedCaseJSON = " " + other.Source.RetainedCaseJSON + different, e := freezeExecutionPayload(b.Release, other, signingInputs{}) + if e != nil || payload.Digest() == different.Digest() { + t.Fatal("signing commitment discarded exact case bytes") + } + + for _, change := range []string{"wrong-occurrence", "wrong-source", "wrong-column", "wrong-location", "wrong-hash", "missing-reference", "changed-frame-spelling"} { + t.Run(change, func(t *testing.T) { + changed := cloneInput(restored) + line := &changed.Preparation.Lineage[0] + switch change { + case "wrong-occurrence": + line.Candidates = append([]string(nil), changed.Preparation.Lineage[1].Candidates...) + case "wrong-source": + line.Source = "other" + case "wrong-column": + line.ColumnTransformation.Column = "Evidence" + case "wrong-location": + line.ColumnTransformation.Input.Ref.Location = "research-value" + case "wrong-hash": + line.ColumnTransformation.Input.Ref.FrameSHA256 = "sha256:" + strings.Repeat("0", 64) + case "missing-reference": + line.ColumnTransformation.Input = retainedcolumns.InputState{State: "missing"} + case "changed-frame-spelling": + changed.Source.RetainedCaseJSON = strings.Replace(changed.Source.RetainedCaseJSON, `{ "contractVersion"`, `{"contractVersion"`, 1) + } + if r := VerifyPreparation(columnFixture(changed)); r.Code != codeDiffers { + t.Fatalf("reference occurrence mutation trusted: %+v", r) + } + b := columnBundle(changed) + if _, e := VerifyInputs(encode(b), nil, b.ReleaseDigest); e == nil { + t.Fatal("export trusted substituted reference occurrence") + } + }) + } +} +func TestColumnReferenceCaseUnionRefusals(t *testing.T) { + original := columnCase(t, "text", `"A"`) + raw := string(original.Source.Case) + for _, fragment := range []string{`"retainedCaseJson":null`, `"retainedCaseJson":""`, `"RetainedCaseJson":` + string(encode(raw)), `"retainedCaseJson":` + string(encode(raw)) + `,"case":null`, `"retainedCaseJson":` + string(encode(raw)) + `,"case":{}`, `"retainedCaseJson":"[]"`, `"retainedCaseJson":"{\"a\":1,\"\\u0061\":2}"`} { + var source SourceInput + if e := strictJSON([]byte(`{"mapping":`+string(encode(original.Source.Mapping))+`,`+fragment+`}`), &source); e == nil { + t.Fatalf("invalid custody union accepted: %s", fragment) + } + } + for _, change := range []string{"ordinary", "unselected-profile"} { + t.Run(change, func(t *testing.T) { + input := columnCase(t, "text", `"A"`) + retainColumnCase(input.Source, input.Source.Case) + if change == "ordinary" { + input.Source.Mapping.Profile = "" + input.Source.Mapping.Case.Facts[0].Conversion = nil + input.Source.Mapping.Case.Evidence = []EvidenceMapping{} + input.Source.Mapping.Case.Facts[0].Source = "/origin/originalValues/X" + control := cloneInput(input) + setColumnCase(control.Source, []byte(control.Source.RetainedCaseJSON)) + if _, e := nextInput(control, nil, time.Now()); e != nil { + t.Fatalf("ordinary absent-profile control invalid: %v", e) + } + } else { + input.Source.Mapping.Profile = "" + } + if _, e := nextInput(input, nil, time.Now()); e == nil { + t.Fatal("unsolicited custody form accepted outside explicit Draft route") + } + }) + } + // Actual offline form checking rejects the removed inline representation. + status, plan, body := columnHTTPExact(t, original) + if status != 200 || plan.Input == nil { + t.Fatalf("prepare: %s", body) + } + fixture := columnFixture(*plan.Input) + var p map[string]any + json.Unmarshal(fixture.Preparation, &p) + p["lineage"].([]any)[0].(map[string]any)["columnTransformation"].(map[string]any)["input"] = map[string]any{"state": "present", "json": `"A"`} + fixture.Preparation = encode(p) + if r := VerifyPreparation(fixture); r.Result != ResultRefusal || r.Code != codeMalformed { + t.Fatalf("legacy inline input accepted in new Draft lineage: %+v", r) + } +} + +func TestColumnReferenceTABActualEntries(t *testing.T) { + // Faithfully constructed pinned Desk-shaped provenance. The prior accounting + // proof independently exercised the exact pinned pure helpers and old entry. + tabs := strings.Repeat("\t", 16000) + input := columnCase(t, "text", `""`) + input.Source.Mapping.Case = &CaseMapping{Facts: []FactMapping{}, Evidence: []EvidenceMapping{}} + for n := 0; n < 256; n++ { + input.Source.Mapping.Case.Facts = append(input.Source.Mapping.Case.Facts, FactMapping{Target: fmt.Sprintf("/f%03d", n), Source: "/retained", Conversion: json.RawMessage(`{"contractVersion":"1","column":"A","kind":"text"}`)}) + } + frame := []byte(`{"contractVersion":"1","origin":"asserted","values":{"A":` + string(encode(tabs)) + `},"research":null}`) + input.Source.Case = []byte(`{"provenance":{"originalValues":{"A":` + string(encode(tabs)) + `},"prepared":{},"conversions":"text on each original target"},"retained":` + string(frame) + `}`) + status, plan, body := columnHTTPExact(t, input) + if status != 200 || plan.Input == nil || len(plan.Input.Preparation.Lineage) != 256 || string(plan.Input.Facts) != "{}" { + t.Fatalf("TAB actual preparation refused: %d %s", status, body) + } + prepared := *plan.Input + refs := 0 + for _, line := range prepared.Preparation.Lineage { + tr := line.ColumnTransformation + if tr == nil || tr.Input.Ref == nil || tr.Input.Ref.FrameSHA256 != digest(frame) || tr.Input.Ref.Location != "values" || tr.Result.State != "omitted" || tr.Result.Reason != "blank" { + t.Fatal("TAB ref/blank semantics lost") + } + refs += len(encode(tr.Input)) + } + if raw := columnInputJSON(t, prepared, 0); raw == nil || *raw != string(encode(tabs)) { + t.Fatal("TAB exact diagnostic input lost") + } + if !bytes.Equal(mustColumnCaseBytes(prepared.Source), input.Source.Case) { + t.Fatal("TAB original provenance changed") + } + fixture := columnFixture(prepared) + if r := VerifyPreparation(fixture); r.Result != ResultReading { + t.Fatalf("TAB offline refused: %+v", r) + } + bundle := columnBundle(prepared) + export := encode(bundle) + if v, e := VerifyInputs(export, nil, bundle.ReleaseDigest); e != nil || !v.Checked() || v.Classes.Asserted != 256 { + t.Fatalf("TAB export refused: %v %+v", e, v) + } + if len(fixture.Preparation) >= maxPreparationDocument || len(export) >= 8<<20 { + t.Fatal("TAB unchanged envelope bound exceeded") + } + t.Logf("TAB actual HTTP200/offline/export checked: request=%d exactCase=%d rawFrame=%d preparation=%d export=%d references=%d targets=256 preparationLimit=%d exportLimit=%d", len(encode(input)), len(mustColumnCaseBytes(prepared.Source)), len(frame), len(fixture.Preparation), len(export), refs, maxPreparationDocument, 8<<20) +} + +func TestColumnReferenceAutomaticFirstSaveRestart(t *testing.T) { + s, cfg, o, producer := preparationFixture(t) + release, e := s.release(o.ReleaseID) + if e != nil { + t.Fatal(e) + } + mapping := *release.InputMapping + mapping.Profile = "base" + mapping.Case.Facts = append(mapping.Case.Facts, FactMapping{Target: "/ref", Source: "/retained", Conversion: json.RawMessage(`{"contractVersion":"1","column":"A","kind":"text"}`)}) + release.InputMapping = &mapping + if _, e = s.db.Exec("UPDATE releases SET record=? WHERE id=?", string(encode(release)), release.ID); e != nil { + t.Fatal(e) + } + raw := []byte("{\n \"id\":7, \"retained\": { \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\" \\t\"}, \"research\":null }\n}") + if e = os.WriteFile(filepath.Join(cfg.InputRoot, "case.json"), raw, 0600); e != nil { + t.Fatal(e) + } + o.PendingInput = &AutomaticInput{Kind: "mapped-sources", Path: "case.json"} + if e = s.saveOccurrence(o); e != nil { + t.Fatal(e) + } + // Exercise the first real seed/store phase, then model a crash before + // advancePreparation. A later save in the same invocation can otherwise + // hide compaction of the first durable checkpoint. + seed, e := s.automaticInputSeed(o.PendingInput, release, nil) + if e != nil { + t.Fatal(e) + } + o.State = "waiting" + o.Preparation = &SourcePreparation{StartedAt: now(), Deadline: time.Now().Add(time.Hour).UTC().Format(time.RFC3339Nano), Tasks: []SourceTask{}, Input: &seed} + if e = s.saveOccurrence(o); e != nil { + t.Fatal(e) + } + s.Close() + s, e = Open(cfg) + if e != nil { + t.Fatal(e) + } + defer s.Close() + o, e = s.occurrence(o.ID) + if e != nil { + t.Fatal(e) + } + if o.State != "waiting" || o.Preparation == nil || o.Preparation.Input == nil || !bytes.Equal(mustColumnCaseBytes(o.Preparation.Input.Source), raw) || len(o.Preparation.Input.Source.Case) != 0 { + t.Fatal("first automatic durable save changed exact case custody") + } + o = stepPreparation(t, s, o.ID) + operation := o.Preparation.Tasks[0].ID + o = stepPreparation(t, s, o.ID) + if o.Preparation.Tasks[0].ID != operation || !bytes.Equal(mustColumnCaseBytes(o.Preparation.Input.Source), raw) { + t.Fatal("restart changed custody or acquisition identity") + } + producer.mu.Lock() + producer.ready = true + producer.mu.Unlock() + o = stepPreparation(t, s, o.ID) + o = stepPreparation(t, s, o.ID) + if o.State != "accepted" || o.Input == nil || !bytes.Equal(mustColumnCaseBytes(o.Input.Source), raw) { + t.Fatalf("continued preparation lost exact case: %+v", o) + } + plan, e := s.nextInput(*o.Input, time.Now()) + if e != nil || plan.Input == nil { + t.Fatalf("continued source replay: %v", e) + } + fixture := columnFixture(*plan.Input) + fixture.Sources = encode(plan.Input.Source.Sources) + fixture.Profiles = encode(cfg.InputProfiles) + if r := VerifyPreparation(fixture); r.Result != ResultReading { + t.Fatalf("continued exact custody offline: %+v", r) + } +} +func TestColumnReferenceWorkflowCustodySites(t *testing.T) { + input := columnCase(t, "text", `"A"`) + doc, freeze, runtime := workflowFreezeFixture(t, encode(input.Source.Mapping), nil, nil) + w, e := newWorkflowInventory(doc, input.Source.Case, "reference-custody", []workflowFreezeInput{freeze}, nil, runtime) + if e != nil { + t.Fatal(e) + } + w, e = beginWorkflowAttempt(w, "instance-1", nil) + if e != nil { + t.Fatal(e) + } + original, e := workflowAttemptInput(w, "instance-1") + if e != nil { + t.Fatal(e) + } + before := cloneInput(original) + plan, e := nextInput(original, nil, time.Now()) + if e != nil || plan.Input == nil { + t.Fatalf("workflow prepare: %v", e) + } + prepared := *plan.Input + previous := Run{SchemaVersion: "1", ID: "run_ref", ReleaseID: freeze.Release.ID, State: "interrupted", Input: before} + current := previous + current.Input = prepared + if !workflowRunExtends(previous, current) { + t.Fatal("workflow checkpoint refused equivalent sole case custody") + } + // Prepared references remain immutable even for an equal case object. + changed := current + changed.Input = cloneInput(prepared) + changed.Input.Source.RetainedCaseJSON = strings.Replace(changed.Input.Source.RetainedCaseJSON, `"origin"`, ` "origin"`, 1) + if workflowRunExtends(current, changed) { + t.Fatal("workflow checkpoint rewrote retained preparation") + } + bundle := verificationExport(freeze.Release, current, 2) + done, e := finishWorkflowAttempt(w, "instance-1", workflowAttemptResult{Run: encode(bundle), State: "interrupted"}, nil) + if e != nil { + t.Fatalf("workflow attempt sole custody getter: %v", e) + } + report := workflowReaderWant(t, workflowReaderInput(t, done, nil), ResultReading, "") + if report.Result != ResultReading { + t.Fatal("workflow offline custody readers refused") + } + // A transient case replacement must clear the alternate slot before replay. + source := *prepared.Source + setColumnCase(&source, mustColumnCaseBytes(prepared.Source)) + if source.RetainedCaseJSON != "" { + t.Fatal("transient case replacement retained dual custody") + } + if _, e = nextInput(Input{Source: &source}, nil, time.Now()); e != nil { + t.Fatalf("transient materialized case replay: %v", e) + } +} + +func TestColumnReferenceCaseEscapingAccountedBeforePreparation(t *testing.T) { + input := columnCase(t, "text", `"A"`) + input.Source.Case = append([]byte(`{"opaque":`+string(encode(strings.Repeat("\t", 750000)))+`,`), input.Source.Case[1:]...) + rawCombined := len(encode(input.Source.Mapping)) + len(input.Source.Case) + len(encode(input.Source.Sources)) + retainedCombined := len(encode(input.Source.Mapping)) + columnCaseSlotBytes(input.Source) + len(encode(input.Source.Sources)) + if rawCombined >= MaxBody || retainedCombined <= MaxBody { + t.Fatal("handwritten escaping witness does not cross the actual bound") + } + if e := columnInputBounds(input.Source); e == nil { + t.Fatal("exact case custody escaping was not counted") + } + status, plan, body := columnHTTPExact(t, input) + if status == 200 || plan.Input != nil || plan.Next != nil || !strings.Contains(body, "complete dialect, case and acquisitions") { + t.Fatalf("complete escaping was not refused before preparation/acquisition: %d %s", status, body) + } + t.Logf("case escaping refusal: rawCombined=%d retainedCombined=%d limit=%d", rawCombined, retainedCombined, MaxBody) +} + +func TestColumnReferenceGeneratedSignedOccurrence(t *testing.T) { + f := newProducerFixture(t, "research-value", "Range") + status, plan, body := producerHTTP(t, f.input, f.profile) + if status != 200 || plan.Input == nil { + t.Fatalf("signed reference preparation: %d %s", status, body) + } + prepared := *plan.Input + tr := prepared.Preparation.Lineage[0].ColumnTransformation + if tr.Input.Ref == nil || tr.Input.Ref.FrameSHA256 != digest([]byte(f.frame)) || tr.Input.Ref.Location != "research-value" || *columnInputJSON(t, prepared, 0) != `{ "min":-0, "max":2 }` { + t.Fatal("generated original raw reference lost") + } + checkProducerOffline(t, prepared, f.profile) + for _, change := range []string{"location", "column", "source", "hash", "raw-frame-spelling"} { + t.Run(change, func(t *testing.T) { + changed := cloneInput(prepared) + line := &changed.Preparation.Lineage[0] + switch change { + case "location": + line.ColumnTransformation.Input.Ref.Location = "values" + case "column": + line.ColumnTransformation.Column = "List" + case "source": + line.Source = "case" + case "hash": + line.ColumnTransformation.Input.Ref.FrameSHA256 = "sha256:" + strings.Repeat("0", 64) + case "raw-frame-spelling": + value := changed.Source.Sources["desk"] + value.RetainedResponseJSON = strings.Replace(value.RetainedResponseJSON, `"retained":{ "contractVersion"`, `"retained":{"contractVersion"`, 1) + changed.Source.Sources["desk"] = value + } + if r := VerifyPreparation(producerPreparationFixture(changed, f.profile)); r.Code != codeDiffers { + t.Fatalf("signed occurrence reference substituted: %+v", r) + } + b := columnBundle(changed) + b.Release.InputProfiles = []InputProfile{f.profile} + b.ReleaseDigest = releaseDigest(b.Release) + if _, e := VerifyInputs(encode(b), []InputProfile{f.profile}, b.ReleaseDigest); e == nil { + t.Fatal("export trusted changed signed occurrence reference") + } + }) + } + // The receipt authenticates canonical content, not arbitrary outer spelling. + same := cloneInput(prepared) + value := same.Source.Sources["desk"] + value.RetainedResponseJSON = "\n" + value.RetainedResponseJSON + same.Source.Sources["desk"] = value + checkProducerOffline(t, same, f.profile) +} + +func TestColumnReferenceImportedSignedAndAssertedCustody(t *testing.T) { + f := newProducerFixture(t, "number", "Number") + mapping := f.input.Source.Mapping + mapping.Version = 3 + mapping.Case = &CaseMapping{Facts: []FactMapping{{Target: "/asserted", Source: "/asserted", Conversion: json.RawMessage(`{"contractVersion":"1","column":"A","kind":"text"}`)}}, Evidence: []EvidenceMapping{}} + f.input.Source.Mapping = mapping + raw := []byte("{\n \"asserted\": { \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\" A \"}, \"research\":null }\n}") + // Sole custody preserves exact bytes even through the producer HTTP helper's encoding. + retainColumnCase(f.input.Source, raw) + published := encode(unboundOf(mapping, "desk", "desk-local", "read_reviewed_input", "mcp", f.profile.Adapter.Name)) + binding := bindingOf(t, published, map[string]InputProfile{"desk": f.profile}) + f.input.Source.Import = &DialectImport{Dialect: published, Binding: binding} + status, plan, body := producerHTTP(t, f.input, f.profile) + if status != 200 || plan.Input == nil { + t.Fatalf("imported reference entry: %d %s", status, body) + } + prepared := *plan.Input + if !bytes.Equal(mustColumnCaseBytes(prepared.Source), raw) || prepared.Source.Import == nil || !bytes.Equal(prepared.Source.Import.Dialect, published) || !bytes.Equal(prepared.Source.Import.Binding, binding) { + t.Fatal("imported original documents or exact case custody changed") + } + fixture := producerPreparationFixture(prepared, f.profile) + fixture.Dialect = published + fixture.Binding = binding + if r := VerifyPreparation(fixture); r.Result != ResultReading { + t.Fatalf("imported offline exact references: %+v", r) + } + bundle := columnBundle(prepared) + bundle.Release.InputProfiles = []InputProfile{f.profile} + bundle.ReleaseDigest = releaseDigest(bundle.Release) + v, e := VerifyInputs(encode(bundle), []InputProfile{f.profile}, bundle.ReleaseDigest) + if e != nil || !v.Checked() || v.Classes.Asserted != 1 || v.Classes.Generated != 2 { + t.Fatalf("imported export reference replay: %v %+v", e, v) + } +} + +func TestColumnReferenceInitialCaseRequiresExplicitDraft(t *testing.T) { + initial := columnCase(t, "text", `"A"`) + initial.Source.Mapping.Profile = "" + status, plan, body := columnHTTPExact(t, initial) + if status == 200 || plan.Input != nil || plan.Next != nil || !strings.Contains(body, "explicit Draft base profile") { + t.Fatalf("initial raw case executed without explicit Draft profile: %d %s", status, body) + } + initial.Source.Mapping.Profile = "base" + status, plan, body = columnHTTPExact(t, initial) + if status != 200 || plan.Input == nil { + t.Fatalf("explicit Draft control refused: %d %s", status, body) + } + if r := VerifyPreparation(columnFixture(*plan.Input)); r.Result != ResultReading { + t.Fatalf("explicit Draft output does not replay: %+v", r) + } + fixture := columnFixture(*plan.Input) + mapping := plan.Input.Source.Mapping + mapping.Profile = "" + fixture.Dialect = encode(mapping) + if r := VerifyPreparation(fixture); r.Result != ResultRefusal || r.Code != codeMalformed { + t.Fatalf("initial unselected profile is not a closed offline refusal: %+v", r) + } +} + +func TestColumnReferenceDraftInitialCaseSpelling(t *testing.T) { + input := columnCase(t, "text", `"A"`) + for _, imported := range []bool{false, true} { + source := map[string]any{"mapping": input.Source.Mapping, "Case": json.RawMessage(input.Source.Case)} + if imported { + published := input.Source.Mapping + published.Version = 3 + source["mapping"] = InputMapping{} + source["import"] = &DialectImport{Dialect: encode(published), Binding: json.RawMessage(`{}`)} + } + var parsed SourceInput + if e := strictJSON(encode(source), &parsed); e == nil { + t.Fatal("Draft initial Case spelling accepted") + } + } + // The actual Draft input consumer rejects the misspelled initial custody slot. + source := map[string]any{"mapping": input.Source.Mapping, "Case": json.RawMessage(input.Source.Case)} + req := httptest.NewRequest(http.MethodPost, "/v1/inputs/next", bytes.NewReader(encode(map[string]any{"source": source}))) + req.Header.Set("Authorization", "Bearer refs-test") + response := httptest.NewRecorder() + (&Service{}).Handler("refs-test").ServeHTTP(response, req) + if response.Code != 400 { + t.Fatalf("Draft initial Case spelling reached preparation: %d %s", response.Code, response.Body.String()) + } + // Ordinary case-fold decoding remains the existing legacy behavior. + input.Source.Mapping.Profile = "" + input.Source.Mapping.Case.Facts = []FactMapping{{Target: "/value", Source: "/origin/originalValues/X"}} + input.Source.Mapping.Case.Evidence = []EvidenceMapping{} + var ordinary SourceInput + if e := strictJSON(encode(map[string]any{"mapping": input.Source.Mapping, "Case": json.RawMessage(input.Source.Case)}), &ordinary); e != nil { + t.Fatalf("ordinary absent-member decoding changed: %v", e) + } + if _, e := nextInput(Input{Source: &ordinary}, nil, time.Now()); e != nil { + t.Fatalf("ordinary case-fold control refused: %v", e) + } +} diff --git a/internal/runner/column_read_v1_test.go b/internal/runner/column_read_v1_test.go new file mode 100644 index 0000000..451704c --- /dev/null +++ b/internal/runner/column_read_v1_test.go @@ -0,0 +1,175 @@ +package runner + +import ( + "bytes" + "encoding/json" + "net/http" + "net/http/httptest" + "strings" + "testing" + "time" +) + +func columnCase(t *testing.T, kind, value string) Input { + t.Helper() + leaf := `{"contractVersion":"1","column":"X","kind":"` + kind + `"}` + if kind == "boolean" { + leaf = `{"contractVersion":"1","column":"X","kind":"boolean","trueValue":"YES","falseValue":"NO"}` + } + return Input{Source: &SourceInput{Mapping: InputMapping{Version: 2, Profile: "base", Case: &CaseMapping{Facts: []FactMapping{{Target: "/value", Source: "/retained", Conversion: json.RawMessage(leaf)}}, Evidence: []EvidenceMapping{{Requirement: "receipt", Source: "/retained", Availability: json.RawMessage(`{"contractVersion":"1","column":"Evidence"}`)}}}}, Case: json.RawMessage(`{"origin":{"originalValues":{"X":` + value + `}},"retained":{"contractVersion":"1","origin":"asserted","values":{"X":` + value + `,"Evidence":"present"},"research":null}}`)}} +} +func columnFixture(i Input) PreparationFixture { + return PreparationFixture{Dialect: encode(i.Source.Mapping), Case: mustColumnCaseBytes(i.Source), Sources: []byte(`{}`), Profiles: []byte(`[]`), Preparation: encode(i.Preparation)} +} +func columnBundle(i Input) VerificationBundle { + r := Release{ID: "release-columns", Pack: `{}`, PackDigest: digest([]byte(`{}`)), InputMapping: &i.Source.Mapping} + return VerificationBundle{Version: 2, Release: r, ReleaseDigest: releaseDigest(r), Run: Run{ReleaseID: r.ID, State: "queued", Input: i}} +} +func TestColumnCaseEntryPreparationAndOfflineVerification(t *testing.T) { + cases := []struct{ kind, value, facts string }{ + {"text", `" A "`, `{"value":" A "}`}, {"decimal", `"1.2300"`, `{"value":"1.2300"}`}, + {"number", `"-0"`, `{"value":-0}`}, {"boolean", `"NO"`, `{"value":false}`}, + {"text", `null`, `{}`}, {"text", `" "`, `{}`}, + } + for _, tc := range cases { + t.Run(tc.kind+tc.value, func(t *testing.T) { + original := columnCase(t, tc.kind, tc.value) + // This is the host's existing complete source-preparation endpoint. No Runtime, + // model or acquisition is substituted for an asserted case. + service := &Service{} + req := httptest.NewRequest(http.MethodPost, "/v1/inputs/next", bytes.NewReader(encode(original))) + req.Header.Set("Authorization", "Bearer columns-test") + response := httptest.NewRecorder() + service.Handler("columns-test").ServeHTTP(response, req) + if response.Code != 200 { + t.Fatalf("actual preparation endpoint: %d %s", response.Code, response.Body.String()) + } + var plan InputPlan + if e := json.Unmarshal(response.Body.Bytes(), &plan); e != nil || plan.Input == nil { + t.Fatalf("no prepared input: %v %s", e, response.Body.String()) + } + prepared := *plan.Input + if string(prepared.Facts) != tc.facts || string(prepared.Evidence) != `{"receipt":"present"}` { + t.Fatalf("wrong actual values: %s %s", prepared.Facts, prepared.Evidence) + } + if string(mustColumnCaseBytes(prepared.Source)) != string(mustColumnCaseBytes(original.Source)) { + t.Fatal("original case/provenance bytes rewritten") + } + lineage := prepared.Preparation.Lineage + if len(lineage) != 2 || lineage[0].ColumnTransformation == nil || lineage[1].ColumnTransformation == nil || lineage[0].Class != "asserted" || lineage[0].GeneratedInfluence { + t.Fatalf("missing or wrong recomputed lineage: %s", encode(lineage)) + } + var claim map[string]any + json.Unmarshal(prepared.Preparation.Outcomes[0].Claim, &claim) + if len(claim) != 5 || claim["columnTransformation"] != nil { + t.Fatal("portable derived claim changed") + } + f := columnFixture(prepared) + report := VerifyPreparation(f) + if report.Result != ResultReading { + t.Fatalf("offline entry refused: %+v", report) + } + b := columnBundle(prepared) + verified, e := VerifyInputs(encode(b), nil, b.ReleaseDigest) + if e != nil || !verified.Checked() || verified.Classes.Asserted != 2 { + t.Fatalf("VerifyInputs: %v %+v", e, verified) + } + changed := cloneInput(prepared) + changed.Preparation.Lineage[0].ColumnTransformation.Input.Ref.FrameSHA256 = "sha256:" + strings.Repeat("0", 64) + if report := VerifyPreparation(columnFixture(changed)); report.Code != codeDiffers { + t.Fatalf("retained transformation trusted: %+v", report) + } + b = columnBundle(changed) + if _, e = VerifyInputs(encode(b), nil, b.ReleaseDigest); e == nil { + t.Fatal("VerifyInputs trusted retained transformation") + } + wrong := columnFixture(prepared) + wrong.Case = bytes.ReplaceAll(wrong.Case, []byte(`"Evidence":"present"`), []byte(`"Evidence":"absent"`)) + if r := VerifyPreparation(wrong); r.Code != codeDiffers { + t.Fatalf("raw frame not replayed: %+v", r) + } + }) + } +} +func TestColumnCaseFailuresProduceNoPreparation(t *testing.T) { + for _, tc := range []struct{ kind, value string }{{"decimal", `"1e2"`}, {"number", `"1.25"`}, {"number", `"1e3"`}, {"number", `"9007199254740992"`}, {"boolean", `"yes"`}, {"research-value", `"false"`}} { + t.Run(tc.kind+tc.value, func(t *testing.T) { + i := columnCase(t, tc.kind, tc.value) + plan, e := nextInput(i, nil, time.Unix(0, 0)) + if e == nil || plan.Input != nil || !strings.Contains(e.Error(), "read-failed") { + t.Fatalf("invalid candidate emitted preparation: %v %+v", e, plan) + } + }) + } +} +func TestColumnCaseOriginCannotAuthorizeGeneratedInput(t *testing.T) { + i := columnCase(t, "text", `"X"`) + i.Source.Case = bytes.ReplaceAll(i.Source.Case, []byte(`"origin":"asserted"`), []byte(`"origin":"generated"`)) + i.Source.Case = bytes.ReplaceAll(i.Source.Case, []byte(`"research":null`), []byte(`"research":{"recordRecipeRevision":"original","declaration":null,"fields":{}}`)) + if _, e := nextInput(i, nil, time.Unix(0, 0)); e == nil || !strings.Contains(e.Error(), "generated frames require verified producer provenance") { + t.Fatalf("caller origin granted authority: %v", e) + } +} +func TestColumnSourceRefusedBeforeAcquisition(t *testing.T) { + i, p, _, at := v2Fixture(t) + i.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/value", Source: "/retained", Conversion: json.RawMessage(`{"contractVersion":"1","column":"X","kind":"text"}`)}}, Evidence: []EvidenceMapping{}}} + i.Source.Sources = nil + if plan, e := nextInput(i, []InputProfile{p}, at); e == nil || plan.Next != nil || !strings.Contains(e.Error(), "explicit Draft base profile") { + t.Fatalf("unsupported generated/source conversion acquired: %v %+v", e, plan) + } +} +func TestColumnRulesAreClosedAndChangeIdentity(t *testing.T) { + good := columnCase(t, "boolean", `"YES"`) + before := mappingV2Hash(good.Source.Mapping) + changed := cloneInput(good) + changed.Source.Mapping.Case.Facts[0].Conversion = bytes.ReplaceAll(changed.Source.Mapping.Case.Facts[0].Conversion, []byte(`"YES"`), []byte(`"Y"`)) + if before == mappingV2Hash(changed.Source.Mapping) { + t.Fatal("conversion missing from checked identity") + } + for _, raw := range []string{`{"target":"/v","source":"/r","Conversion":{"contractVersion":"1","column":"X","kind":"text"}}`, `{"target":"/v","source":"/r","conversion":null}`, `{"target":"/v","source":"/r","conversion":{"contractVersion":"1","column":"X"}}`, `{"target":"/v","source":"/r","conversion":{"contractVersion":"1","column":"X","kind":"text","extra":false}}`} { + var f FactMapping + e := strictJSON([]byte(raw), &f) + if e == nil { + e = validateColumnCopy(CopyMapping{Facts: []FactMapping{f}}) + } + if e == nil { + t.Fatalf("open conversion variant admitted: %s", raw) + } + } + for _, family := range []int{2, 3} { + m := good.Source.Mapping + m.Version = family + raw := encode(m) + var round InputMapping + if e := strictJSON(raw, &round); e != nil || round.Profile != "base" || mappingV2Hash(m) != mappingV2Hash(round) { + t.Fatalf("profile/rule serialization family%d: %v", family, e) + } + } +} +func TestColumnBaseLimitsAndUnsupportedProfile(t *testing.T) { + i := columnCase(t, "text", `"X"`) + i.Source.Mapping.Profile = "extended" + if _, e := nextInput(i, nil, time.Unix(0, 0)); e == nil || !strings.Contains(e.Error(), "extended retained-column") { + t.Fatalf("unsupported Extended executed: %v", e) + } + f := columnFixture(i) + if r := VerifyPreparation(f); r.Result != ResultRefusal || r.Code != "profile-unsupported" { + t.Fatalf("different offline profile refusal: %+v", r) + } + i.Source.Mapping.Profile = "base" + i.Source.Case = json.RawMessage(`{"pad":"` + strings.Repeat("a", MaxBody) + `"}`) + if _, e := nextInput(i, nil, time.Unix(0, 0)); e == nil || !strings.Contains(e.Error(), "complete dialect, case and acquisitions") { + t.Fatalf("complete-artifact bound bypassed: %v", e) + } + if r := VerifyPreparation(columnFixture(i)); r.Code != codeOverBound { + t.Fatalf("offline complete-artifact bound bypassed: %+v", r) + } +} + +func TestColumnOrdinaryNumbersRetainBounds(t *testing.T) { + i := columnCase(t, "text", `"X"`) + i.Source.Case = append([]byte(`{"unselected":1e309,`), i.Source.Case[1:]...) + if _, e := nextInput(i, nil, time.Unix(0, 0)); e == nil || !strings.Contains(e.Error(), "numeric exponent exceeds mapping profile limits") { + t.Fatalf("ordinary numeric artifact limits bypassed: %v", e) + } +} diff --git a/internal/runner/column_role_v1.go b/internal/runner/column_role_v1.go new file mode 100644 index 0000000..ac88309 --- /dev/null +++ b/internal/runner/column_role_v1.go @@ -0,0 +1,385 @@ +package runner + +import ( + "bytes" + "context" + "encoding/base64" + "encoding/json" + "errors" + "github.com/Judgment-Pack/judgment-pack-runner/internal/derivation" + "net/http" + "strings" +) + +// ConversionSpec identifies installed, reviewed contract artifacts. The caller +// cannot configure these pins or grant support by echoing them in a selector. +type ConversionSpec struct { + Version string `json:"version"` + Revision string `json:"revision"` + SchemaSHA256 string `json:"schemaSha256"` + CorpusSHA256 string `json:"corpusSha256"` +} + +// ConversionContract is the closed selector retained with complete-object +// preparation bindings. It grants no source, signature or producer authority. +type ConversionContract struct { + Contract string `json:"contract"` + Spec ConversionSpec `json:"spec"` + Profile string `json:"profile"` + Roles []string `json:"roles"` +} + +// Experimental immutable Draft candidate, pending independent review/adoption. +// The compiled identity is never taken from caller or host configuration. +var installedConversionSpec = ConversionSpec{Version: "Draft RFC0029", Revision: "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", SchemaSHA256: "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", CorpusSHA256: "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2"} + +var conversionRoles = [...]string{"document-validation", "preview", "preparation", "preparation-verification", "producer-carrier"} + +const ( + columnDocumentLimit = 1 << 20 + columnFrameLimit = 2 << 20 + columnCombinedLimit = 12 << 20 + columnCarrierLimit = 3 << 20 + columnResponseLimit = 5 << 20 + columnPreparationLimit = 16 << 20 + columnProfilesLimit = 80 << 10 + columnRequestLimit = 16 << 20 + columnReplyLimit = 36 << 20 + columnStoredLimit = 40 << 20 + columnRecordLimit = 9 << 20 + columnExportBaseLimit = 72 << 20 + ColumnExportWireLimit = 86 << 20 +) + +func conversionFailure(code string) error { + message := "The retained-column conversion selector or capability is malformed." + if code == "capability-unsupported" { + message = "This installed package or a required owner does not support the exact retained-column selection." + } + return causedError{&apiError{422, code, message}, codedError{code, errors.New(message)}} +} +func (c *ConversionContract) UnmarshalJSON(raw []byte) error { + type plain ConversionContract + var v plain + if strictJSON(raw, &v) != nil { + return conversionFailure(codeMalformed) + } + m, e := exactMembers(raw) + if e != nil || len(m) != 4 { + return conversionFailure(codeMalformed) + } + for _, k := range []string{"contract", "spec", "profile", "roles"} { + if m[k] == nil { + return conversionFailure(codeMalformed) + } + } + spec, e := exactMembers(m["spec"]) + if e != nil || len(spec) != 4 { + return conversionFailure(codeMalformed) + } + for _, k := range []string{"version", "revision", "schemaSha256", "corpusSha256"} { + if spec[k] == nil { + return conversionFailure(codeMalformed) + } + } + if e := conversionIdentityForm(m); e != nil { + return e + } + if len(bytes.TrimSpace(m["roles"])) == 0 || bytes.TrimSpace(m["roles"])[0] != '[' { + return conversionFailure(codeMalformed) + } + var roles []json.RawMessage + if json.Unmarshal(m["roles"], &roles) != nil { + return conversionFailure(codeMalformed) + } + for _, role := range roles { + role = bytes.TrimSpace(role) + if len(role) == 0 || role[0] != '"' { + return conversionFailure(codeMalformed) + } + } + *c = ConversionContract(v) + return nil +} +func (c *ConversionContract) validate(required ...string) error { + if c == nil { + return nil + } + if c.Contract != "retained-column/1" || c.Profile != "base" || installedConversionSpec.Version == "" || c.Spec != installedConversionSpec { + return conversionFailure("capability-unsupported") + } + if len(c.Roles) == 0 { + return conversionFailure(codeMalformed) + } + last := -1 + for _, role := range c.Roles { + index := -1 + for j, known := range conversionRoles { + if role == known { + index = j + } + } + if index < 0 { + return conversionFailure("capability-unsupported") + } + if index <= last { + return conversionFailure(codeMalformed) + } + last = index + } + for _, role := range required { + found := false + for _, held := range c.Roles { + found = found || held == role + } + if !found { + return conversionFailure("capability-unsupported") + } + } + return nil +} +func sameConversion(a, b *ConversionContract) bool { return bytes.Equal(encode(a), encode(b)) } +func inputConversion(i Input) *ConversionContract { + if i.Source != nil { + return i.Source.ConversionContract + } + return nil +} +func combinedLimit(i Input) int { + if inputConversion(i) != nil { + return columnCombinedLimit + } + return MaxBody +} +func responseLimit(c *ConversionContract) int { + if c != nil { + return columnResponseLimit + } + return MaxBody +} +func recordLimit(i Input) int { + if inputConversion(i) != nil { + return columnRecordLimit + } + return maxOutput +} + +type conversionContext struct{} + +func requestConversion(r *http.Request) *ConversionContract { + c, _ := r.Context().Value(conversionContext{}).(*ConversionContract) + return c +} + +// conversionRequest executes after authentication and before routing/body reads. +// Only these existing consumer operations have a scoped adapter; other paths +// explicitly refuse instead of inheriting expanded limits through a prefix. +func conversionRequest(r *http.Request) (*http.Request, error) { + const prefix = "/v1/retained-column/1/" + if !strings.HasPrefix(r.URL.Path, prefix) { + if len(r.Header.Values("JPack-Conversion-Contract")) != 0 { + return nil, conversionFailure("capability-unsupported") + } + return r, nil + } + values := r.Header.Values("JPack-Conversion-Contract") + if len(values) != 1 || len(values[0]) > 4096 { + return nil, conversionFailure(codeMalformed) + } + raw, e := base64.RawURLEncoding.Strict().DecodeString(values[0]) + if e != nil || base64.RawURLEncoding.EncodeToString(raw) != values[0] { + return nil, conversionFailure(codeMalformed) + } + var c ConversionContract + if e = strictJSON(raw, &c); e != nil { + return nil, conversionFailure(codeMalformed) + } + path := "/v1/" + strings.TrimPrefix(r.URL.Path, prefix) + required := []string{"document-validation", "preview", "preparation"} + parts := strings.Split(path, "/") + runRoute := len(parts) == 5 && parts[1] == "v1" && parts[2] == "jobs" && parts[3] != "" && parts[4] == "runs" + exportRoute := len(parts) == 5 && parts[1] == "v1" && parts[2] == "runs" && parts[3] != "" && parts[4] == "verification" + supported := r.Method == "POST" && (path == "/v1/inputs/next" || path == "/v1/inputs/preview" || path == "/v1/previews" || runRoute) + if r.Method == "GET" && exportRoute { + supported = true + required = []string{"preparation-verification"} + } + if !supported { + return nil, conversionFailure("capability-unsupported") + } + if e = c.validate(required...); e != nil { + return nil, e + } + r = r.Clone(context.WithValue(r.Context(), conversionContext{}, &c)) + r.URL.Path = path + return r, nil +} +func admitInputConversion(i Input, selected *ConversionContract) error { + c := inputConversion(i) + if !sameConversion(c, selected) { + return conversionFailure("capability-unsupported") + } + return c.validate("document-validation", "preview", "preparation") +} +func scopedJSON(raw []byte, limit int) ([]byte, error) { + if len(raw) > limit { + return nil, errors.New("value exceeds selected artifact limit") + } + // Retained case/response strings are opaque custody, not canonical claims. + if e := measureBytes(raw, 32); e != nil { + return nil, e + } + if _, e := readInputJSON(raw); e != nil { + return nil, e + } + return derivation.Canon(raw) +} + +func selectedConversion(cs []*ConversionContract) *ConversionContract { + if len(cs) > 0 { + return cs[0] + } + return nil +} +func artifactLimit(c *ConversionContract, ordinary, selected int) int { + if c != nil { + return selected + } + return ordinary +} +func preparationLimit(i Input) int { + return artifactLimit(inputConversion(i), maxPreparationDocument, columnPreparationLimit) +} + +// ParseConversionSelector admits an explicit transport selection against only +// the installed manifest, before the selected artifact is read. +func ParseConversionSelector(encoded string, roles ...string) (*ConversionContract, error) { + if encoded == "" { + return nil, nil + } + if len(encoded) > 4096 { + return nil, conversionFailure(codeMalformed) + } + raw, e := base64.RawURLEncoding.Strict().DecodeString(encoded) + if e != nil || base64.RawURLEncoding.EncodeToString(raw) != encoded { + return nil, conversionFailure(codeMalformed) + } + var c ConversionContract + if strictJSON(raw, &c) != nil { + return nil, conversionFailure(codeMalformed) + } + if e = c.validate(roles...); e != nil { + return nil, e + } + return &c, nil +} + +// ConversionExportLimit is a pre-read ceiling, granted only by a validated +// explicit selector, never by peeking into the untrusted export. +func ConversionExportLimit(c *ConversionContract) (int, error) { + if e := c.validate("preparation-verification"); e != nil { + return 0, e + } + return artifactLimit(c, MaxExportSize, ColumnExportWireLimit), nil +} + +type conversionWriter struct { + http.ResponseWriter + limit int +} + +func selectedReplyWriter(w http.ResponseWriter, r *http.Request) http.ResponseWriter { + if requestConversion(r) == nil { + return w + } + limit := columnReplyLimit + if r.Method == "GET" && strings.HasSuffix(r.URL.Path, "/verification") { + limit = ColumnExportWireLimit + } + return conversionWriter{w, limit} +} + +func conversionIdentityForm(m map[string]json.RawMessage) error { + for _, k := range []string{"contract", "profile"} { + v := bytes.TrimSpace(m[k]) + if len(v) == 0 || v[0] != '"' { + return conversionFailure(codeMalformed) + } + } + spec, e := exactMembers(m["spec"]) + if e != nil { + return conversionFailure(codeMalformed) + } + for _, k := range []string{"version", "revision", "schemaSha256", "corpusSha256"} { + v := bytes.TrimSpace(spec[k]) + if len(v) == 0 || v[0] != '"' { + return conversionFailure(codeMalformed) + } + } + var pin ConversionSpec + if strictJSON(m["spec"], &pin) != nil || pin.Version == "" || !validHex(pin.Revision, 20) || !validDigest(pin.SchemaSHA256) || !validDigest(pin.CorpusSHA256) { + return conversionFailure(codeMalformed) + } + return nil +} + +func (p *Preparation) UnmarshalJSON(raw []byte) error { + type plain Preparation + var held plain + if e := strictJSON(raw, &held); e != nil { + return e + } + m, e := exactMembers(raw) + if e != nil { + return e + } + for k, v := range m { + if strings.EqualFold(k, "conversionContract") && (k != "conversionContract" || bytes.Equal(bytes.TrimSpace(v), []byte("null"))) { + return conversionFailure(codeMalformed) + } + } + *p = Preparation(held) + return nil +} + +func taskConversionMatches(raw []byte, selected *ConversionContract) bool { + var frozen sourceRequest + return strictJSON(raw, &frozen) == nil && sameConversion(frozen.ConversionContract, selected) +} + +func (r *sourceRequest) UnmarshalJSON(raw []byte) error { + type plain sourceRequest + var held plain + if e := strictJSON(raw, &held); e != nil { + return e + } + m, e := exactMembers(raw) + if e != nil { + return e + } + for k, v := range m { + if strings.EqualFold(k, "conversionContract") && (k != "conversionContract" || bytes.Equal(bytes.TrimSpace(v), []byte("null"))) { + return conversionFailure(codeMalformed) + } + } + *r = sourceRequest(held) + return nil +} +func (s *sourceStatus) UnmarshalJSON(raw []byte) error { + type plain sourceStatus + var held plain + if e := strictJSON(raw, &held); e != nil { + return e + } + m, e := exactMembers(raw) + if e != nil { + return e + } + for k, v := range m { + if strings.EqualFold(k, "retainedResponseJson") && (k != "retainedResponseJson" || m["response"] != nil || held.RetainedResponseJSON == "" || bytes.Equal(bytes.TrimSpace(v), []byte("null"))) { + return conversionFailure(codeMalformed) + } + } + *s = sourceStatus(held) + return nil +} diff --git a/internal/runner/column_role_v1_bounds_test.go b/internal/runner/column_role_v1_bounds_test.go new file mode 100644 index 0000000..6a1eccb --- /dev/null +++ b/internal/runner/column_role_v1_bounds_test.go @@ -0,0 +1,316 @@ +package runner + +import ( + "bytes" + "encoding/json" + "fmt" + "github.com/Judgment-Pack/judgment-pack-runner/internal/derivation" + "net/http/httptest" + "strings" + "testing" + "time" +) + +func paddedJSON(raw []byte, n int) []byte { + return append(bytes.Repeat([]byte(" "), n-len(raw)), raw...) +} +func TestColumnRoleOfflineArtifactBoundaries(t *testing.T) { + original := columnCase(t, "number", `"-0"`) + original.Source.ConversionContract = selectedContract() + i, e := normalizeV2(original, nil, time.Now()) + if e != nil { + t.Fatal(e) + } + for _, tc := range []struct { + name string + max int + field func(*PreparationFixture) *[]byte + }{{"document", 1048576, func(f *PreparationFixture) *[]byte { return &f.Dialect }}, {"preparation", 16777216, func(f *PreparationFixture) *[]byte { return &f.Preparation }}, {"profiles", 81920, func(f *PreparationFixture) *[]byte { return &f.Profiles }}} { + t.Run(tc.name, func(t *testing.T) { + f := columnFixture(i) + f.ConversionContract = selectedContract() + held := tc.field(&f) + *held = paddedJSON(*held, tc.max) + if report := VerifyPreparation(f); report.Result != ResultReading { + t.Fatalf("exact %s artifact refused: %+v", tc.name, report) + } + *held = append([]byte(" "), (*held)...) + if report := VerifyPreparation(f); report.Code != codeOverBound { + t.Fatalf("one-over %s did not refuse at byte guard: %+v", tc.name, report) + } + }) + } + f := columnFixture(i) + f.ConversionContract = selectedContract() + f.Preparation = paddedJSON(f.Preparation, 16777216) + if PreparationPin(f.Preparation, digest(f.Preparation), selectedContract()) != nil || PreparationPin(f.Preparation, digest([]byte("other")), selectedContract()) == nil { + t.Fatal("selected preparation pin skipped digest within selected bound") + } + ordinary := columnFixture(i) + ordinary.ConversionContract = nil + ordinary.Dialect = paddedJSON(ordinary.Dialect, 131073) + if report := VerifyPreparation(ordinary); report.Code != codeOverBound { + t.Fatal("ordinary document cap grew") + } +} +func TestColumnRoleCarrierResponseCombinedBoundaries(t *testing.T) { + for _, tc := range []struct { + name string + max int + }{{"carrier", 3145728}, {"response", 5242880}} { + t.Run(tc.name, func(t *testing.T) { + f := selectedProducer(t) + raw := f.input.Source.Sources["desk"].Response + if tc.name == "carrier" { + carrier := f.carrier() + grown := append([]byte("{"), append(bytes.Repeat([]byte(" "), tc.max-len(carrier)), carrier[1:]...)...) + raw = bytes.Replace(raw, carrier, grown, 1) + } else { + raw = append([]byte("{"), append(bytes.Repeat([]byte(" "), tc.max-len(raw)), raw[1:]...)...) + } + f.input.Source.Sources["desk"] = SourceValue{RetainedResponseJSON: string(raw)} + if code, _, body := scopedEntry(t, f.input, []InputProfile{f.profile}, nil); code != 200 { + t.Fatalf("exact %s actual entry refused: %d %.500s", tc.name, code, body) + } + if tc.name == "carrier" { + raw = bytes.Replace(raw, []byte(`"result":{`), []byte(`"result":{ `), 1) + } else { + raw = append([]byte("{"), raw...) + raw[1] = ' ' + } + f.input.Source.Sources["desk"] = SourceValue{RetainedResponseJSON: string(raw)} + if _, e := normalizeV2(f.input, []InputProfile{f.profile}, f.at); e == nil { + t.Fatalf("one-over %s accepted", tc.name) + } + }) + } + f := selectedProducer(t) + f.input.Source.Case = []byte(`{"opaque":"` + strings.Repeat("a", 4*1048576-len(`{"opaque":""}`)) + `"}`) + raw := f.input.Source.Sources["desk"].Response + f.input.Source.Sources["desk"] = SourceValue{RetainedResponseJSON: string(raw)} + growth := 12582912 - len(encode(f.input.Source)) + tabs := growth / 2 + grown := append([]byte("{"), append(bytes.Repeat([]byte("\t"), tabs), raw[1:]...)...) + if growth%2 != 0 { + grown = append(grown, ' ') + } + f.input.Source.Sources["desk"] = SourceValue{RetainedResponseJSON: string(grown)} + if len(encode(f.input.Source)) != 12582912 { + t.Fatal("combined boundary arithmetic wrong") + } + if len(grown) > 5242880 { + t.Fatal("combined fixture exceeds independent response bound") + } + if code, _, body := scopedEntry(t, f.input, []InputProfile{f.profile}, nil); code != 200 { + t.Fatalf("exact combined source actual entry: %d %.500s", code, body) + } + f.input.Source.Sources["desk"] = SourceValue{RetainedResponseJSON: string(grown) + " "} + if _, e := normalizeV2(f.input, []InputProfile{f.profile}, f.at); e == nil { + t.Fatal("one-over combined source accepted") + } +} +func TestColumnRoleStoredAndExportBoundaries(t *testing.T) { + i := columnCase(t, "text", `"A"`) + i.Source.ConversionContract = selectedContract() + i, e := normalizeV2(i, nil, time.Now()) + if e != nil { + t.Fatal(e) + } + release := Release{ID: "limits-release", Pack: `{}`, PackDigest: digest([]byte(`{}`)), InputMapping: &i.Source.Mapping, Sample: i} + run := Run{ID: "limits-run", JobID: "limits-job", ReleaseID: release.ID, State: "queued", Input: i} + t.Run("release", func(t *testing.T) { + r := release + r.Preview = json.RawMessage(`""`) + n := 41943040 - len(encode(r)) + r.Preview = json.RawMessage(`"` + strings.Repeat("a", n) + `"`) + if e := newMemoryStore().update(func(tx runTx) error { return tx.createRelease(r) }); e != nil { + t.Fatal("exact stored release", e) + } + r.Preview = append(r.Preview[:len(r.Preview)-1], 'a', '"') + if e := newMemoryStore().update(func(tx runTx) error { return tx.createRelease(r) }); e == nil { + t.Fatal("one-over stored release accepted") + } + }) + t.Run("run", func(t *testing.T) { + r := run + r.Result = json.RawMessage(`""`) + n := 41943040 - len(runText(r)) + r.Result = json.RawMessage(`"` + strings.Repeat("a", n) + `"`) + if e := newMemoryStore().update(func(tx runTx) error { return tx.createRun(r, "owner", "key", "digest") }); e != nil { + t.Fatal("exact stored run", e) + } + r.Result = append(r.Result[:len(r.Result)-1], 'a', '"') + if e := newMemoryStore().update(func(tx runTx) error { return tx.createRun(r, "owner", "key", "digest") }); e == nil { + t.Fatal("over stored run accepted") + } + }) + bundle := VerificationBundle{Version: 2, Release: release, ReleaseDigest: releaseDigest(release), Run: run} + t.Run("export-base", func(t *testing.T) { + raw := paddedJSON(encode(bundle), 75497472) + if v, e := VerifyInputs(raw, nil, bundle.ReleaseDigest, selectedContract()); e != nil || !v.Checked() { + t.Fatal("exact export base actual reader", e) + } + if _, e := VerifyInputs(append([]byte(" "), raw...), nil, bundle.ReleaseDigest, selectedContract()); e == nil { + t.Fatal("one-over export base accepted") + } + }) + + t.Run("record", func(t *testing.T) { + // A handwritten unsigned audit exercises the actual offline record reader. + // It is not a claim that Runtime emitted a maximum-sized signed record. + b := bundle + b.Version = 3 + b.Run.State = "completed" + disposition := json.RawMessage(`{"kind":"unresolved","reasons":["unknown"]}`) + b.Run.Result = encode(map[string]any{"disposition": disposition}) + audit := map[string]any{"kind": "evaluation", "pack": map[string]any{"digest": release.PackDigest}, "inputs": map[string]any{"facts": json.RawMessage(`{"value":"A"}`), "evidenceSupplied": true, "evidence": json.RawMessage(`{"receipt":"present"}`)}, "disposition": disposition, "cites": []Citation{}, "binding": json.RawMessage(bindingDocument(preparationDigest(i.Preparation))), "padding": ""} + size := 9437184 - len(encode(audit)) + audit["padding"] = strings.Repeat("a", size) + b.Run.AuditBytes = encode(audit) + b.Run.Audit = append(json.RawMessage(nil), b.Run.AuditBytes...) + if len(b.Run.AuditBytes) != 9437184 { + t.Fatal("record boundary arithmetic wrong") + } + if v, e := VerifyInputs(encode(b), nil, b.ReleaseDigest, selectedContract()); e != nil || !v.Checked() { + t.Fatal("exact complete record actual offline reader", e) + } + audit["padding"] = strings.Repeat("a", size+1) + b.Run.AuditBytes = encode(audit) + b.Run.Audit = append(json.RawMessage(nil), b.Run.AuditBytes...) + if _, e := VerifyInputs(encode(b), nil, b.ReleaseDigest, selectedContract()); e == nil { + t.Fatal("one-over record artifact accepted") + } + }) + t.Run("wire", func(t *testing.T) { + if _, e := VerifyInputs(bytes.Repeat([]byte(" "), 90177537), nil, bundle.ReleaseDigest, selectedContract()); e == nil || !strings.Contains(e.Error(), "selected wire limit") { + t.Fatal("one-over wire did not refuse before decoding", e) + } + b := bundle + b.Version = 5 + b.Run.AuditBytes = bytes.Repeat([]byte("a"), 9437184) + b.Run.AuditSignatures = bytes.Repeat([]byte("a"), maxSidecar) + raw := encode(b) + sidecars := len(auditBytesMember) + (9437184+2)/3*4 + len(auditSignaturesMember) + (maxSidecar+2)/3*4 + raw = paddedJSON(raw, 75497472+sidecars) + if len(raw) >= 90177536 || exportWithinLimits(raw, b) != nil { + t.Fatal("coupled maximum base/record/sidecar wire does not fit declared ceiling") + } + }) + t.Run("reply", func(t *testing.T) { + raw := json.RawMessage(`"` + strings.Repeat("a", 37748733) + `"`) + w := httptest.NewRecorder() + write(conversionWriter{w, 37748736}, 200, raw) + if w.Code != 200 || w.Body.Len() != 37748736 { + t.Fatal("exact selected reply refused or wire length changed") + } + w = httptest.NewRecorder() + raw = append(raw[:len(raw)-1], 'a', '"') + write(conversionWriter{w, 37748736}, 200, raw) + if w.Code < 400 { + t.Fatal("over selected reply accepted") + } + }) +} + +func TestColumnRoleOrdinaryAndCaseLimits(t *testing.T) { + ordinary := columnCase(t, "text", `"A"`) + raw := paddedJSON(encode(ordinary), 2097152) + for _, n := range []int{0, 1} { + req := httptest.NewRequest("POST", "/v1/inputs/next", bytes.NewReader(append(bytes.Repeat([]byte(" "), n), raw...))) + req.Header.Set("Authorization", "Bearer ordinary") + w := httptest.NewRecorder() + (&Service{}).Handler("ordinary").ServeHTTP(w, req) + if n == 0 && w.Code != 200 || n == 1 && w.Code != 400 { + t.Fatalf("ordinary body limit changed: over=%d status=%d", n, w.Code) + } + } + i := columnCase(t, "text", `"A"`) + i.Source.ConversionContract = selectedContract() + base := i.Source.Case + i.Source.Case = append([]byte("{"), append(bytes.Repeat([]byte(" "), 4194560-len(base)), base[1:]...)...) + if code, _, body := scopedEntry(t, i, nil, nil); code != 200 { + t.Fatalf("exact retained case bound refused: %d %.500s", code, body) + } + i.Source.Case = append([]byte("{"), append([]byte(" "), i.Source.Case[1:]...)...) + if _, e := normalizeV2(i, nil, time.Now()); e == nil { + t.Fatal("one-over retained case string accepted") + } +} + +// Build received UTF-8 directly: encoding/json would first expand U+2028/2029 +// and therefore test a smaller input. The generated producer is a signed fixture. +func TestColumnRoleLiteralSeparatorWireCustody(t *testing.T) { + separator := "\u2028\u2029" + t.Run("maximum-asserted-frame", func(t *testing.T) { + values := `"X":"A","Evidence":"present"` + for n := 0; n < 130; n++ { + values += fmt.Sprintf(`,"f%d":"`, n) + strings.Repeat(separator, 2600) + `"` + } + frame := `{"contractVersion":"1","origin":"asserted","values":{` + values + `},"research":null}` + frame = "{" + strings.Repeat(" ", 2097152-len(frame)) + frame[1:] + rawCase := []byte(`{"retained":` + frame + `}`) + i := columnCase(t, "text", `"A"`) + i.Source.ConversionContract = selectedContract() + i.Source.Case = rawCase + code, plan, body := scopedEntry(t, i, nil, nil) + if code != 200 || plan.Input == nil { + t.Fatalf("literal maximum frame HTTP preparation: %d %.500s", code, body) + } + if !bytes.Equal(mustColumnCaseBytes(plan.Input.Source), rawCase) { + t.Fatal("literal separator case custody changed") + } + if len(body) > 37748736 || !strings.Contains(body, `\u2028\u2029`) { + t.Fatal("literal separator HTTP wire was not measured after escaping") + } + r := Release{ID: "separator-release", Pack: `{}`, PackDigest: digest([]byte(`{}`)), InputMapping: &i.Source.Mapping, Sample: *plan.Input} + b := VerificationBundle{Version: 2, Release: r, ReleaseDigest: releaseDigest(r), Run: Run{ID: "separator-run", ReleaseID: r.ID, State: "queued", Input: *plan.Input}} + w := httptest.NewRecorder() + write(conversionWriter{w, 90177536}, 200, b) + if w.Code != 200 || exportWithinLimits(w.Body.Bytes(), b) != nil { + t.Fatal("literal separator complete export wire refused") + } + v, e := VerifyInputs(w.Body.Bytes(), nil, b.ReleaseDigest, selectedContract()) + if e != nil || !v.Checked() { + t.Fatal("literal separator export actual reader", e) + } + t.Logf("receivedFrameBytes=%d inputBodyBytes=%d inputReplyBytes=%d exportWireBytes=%d", len(frame), len(encode(i)), len(body), w.Body.Len()) + }) + t.Run("maximum-original-snapshot-valueJson", func(t *testing.T) { + f := selectedProducer(t) + literal := strings.Repeat(separator, 80000) + rawValue := `"` + literal + `"` + f.snapshot = strings.Replace(f.snapshot, `"value":" B "`, `"value":`+rawValue, 1) + f.frame = strings.Replace(f.frame, `"valueJson":"\" B \""`, `"valueJson":"\"`+literal+`\""`, 1) + f.snapshot += strings.Repeat(" ", 524288-len(f.snapshot)) + f.frame = "{" + strings.Repeat(" ", 2097152-len(f.frame)) + f.frame[1:] + // The legacy fixture signer has an ordinary 2 MiB guard. Sign this larger + // selected carrier explicitly using the same canonical receipt algorithm. + var parts map[string]json.RawMessage + json.Unmarshal(f.input.Source.Sources["desk"].Response, &parts) + var receipt map[string]any + json.Unmarshal(parts["receipt"], &receipt) + canon, err := derivation.Canon(f.carrier()) + if err != nil { + t.Fatal(err) + } + receipt["resultDigest"] = digest(canon) + signReceipt(t, receipt, f.key) + rawResponse := []byte(`{ "result":` + string(f.carrier()) + `, "receipt":` + string(encode(receipt)) + `, "salts":` + string(parts["salts"]) + ` }`) + f.input.Source.Sources["desk"] = SourceValue{Response: rawResponse} + code, plan, body := scopedEntry(t, f.input, []InputProfile{f.profile}, nil) + if code != 200 || plan.Input == nil { + t.Fatalf("literal generated valueJson HTTP preparation: %d %.500s", code, body) + } + held := plan.Input.Source.Sources["desk"].RetainedResponseJSON + carrier, e := readColumnCarrier(f.carrier(), selectedContract()) + if e != nil || string(carrier.RawFrame) != f.frame || string(carrier.OriginalSnapshot) != f.snapshot || !strings.Contains(held, literal) { + t.Fatal("literal valueJson exact producer custody changed", e) + } + fixture := producerPreparationFixture(*plan.Input, f.profile) + fixture.ConversionContract = selectedContract() + if report := VerifyPreparation(fixture); report.Result != ResultReading { + t.Fatalf("literal valueJson offline preparation: %+v", report) + } + t.Logf("originalSnapshotBytes=%d receivedFrameBytes=%d carrierBytes=%d inputReplyBytes=%d", len(f.snapshot), len(f.frame), len(f.carrier()), len(body)) + }) +} diff --git a/internal/runner/column_role_v1_capabilities.go b/internal/runner/column_role_v1_capabilities.go new file mode 100644 index 0000000..43f01d5 --- /dev/null +++ b/internal/runner/column_role_v1_capabilities.go @@ -0,0 +1,226 @@ +package runner + +import ( + "bytes" + "context" + "encoding/json" + "os/exec" + "strconv" + "time" +) + +// ConversionCapability is trusted installation metadata, separate from a +// caller's selector. Existing profile approval and digest bind producer support. +type ConversionCapability struct { + Contract string `json:"contract"` + Spec ConversionSpec `json:"spec"` + Profile string `json:"profile"` + Role string `json:"role"` + Limits map[string]int `json:"limits"` + ProducerGrammar string `json:"producerGrammar,omitempty"` +} + +func conversionRoleLimits(role string) map[string]int { + switch role { + case "document-validation": + return map[string]int{"documentBytes": columnDocumentLimit, "frameBytes": columnFrameLimit} + case "producer-carrier": + return map[string]int{"originalSnapshotBytes": 524288, "carrierBytes": columnCarrierLimit, "grantBytes": columnCarrierLimit, "adapterStdoutBytes": columnCarrierLimit, "responseBytes": columnResponseLimit, "profilesBytes": columnProfilesLimit} + case "preview": + return map[string]int{"documentBytes": columnDocumentLimit, "combinedBytes": columnCombinedLimit, "frameBytes": columnFrameLimit, "profilesBytes": columnProfilesLimit, "requestBodyBytes": columnRequestLimit, "inputReplyBytes": columnReplyLimit} + case "preparation", "preparation-verification": + return map[string]int{"documentBytes": columnDocumentLimit, "combinedBytes": columnCombinedLimit, "frameBytes": columnFrameLimit, "preparationBytes": columnPreparationLimit, "recordBytes": columnRecordLimit, "profilesBytes": columnProfilesLimit, "requestBodyBytes": columnRequestLimit, "inputReplyBytes": columnReplyLimit, "releaseStoredBytes": columnStoredLimit, "runStoredBytes": columnStoredLimit, "exportBaseBytes": columnExportBaseLimit, "exportWireBytes": ColumnExportWireLimit} + } + return nil +} +func (c *ConversionCapability) UnmarshalJSON(raw []byte) error { + type plain ConversionCapability + var p plain + if strictJSON(raw, &p) != nil { + return conversionFailure(codeMalformed) + } + m, e := exactMembers(raw) + if e != nil || len(m) < 5 || len(m) > 6 { + return conversionFailure(codeMalformed) + } + for _, k := range []string{"contract", "spec", "profile", "role", "limits"} { + if m[k] == nil { + return conversionFailure(codeMalformed) + } + } + // Five required members; producerGrammar is the only optional member. + if len(m) != 5 && len(m) != 6 { + return conversionFailure(codeMalformed) + } + for k := range m { + if k != "contract" && k != "spec" && k != "profile" && k != "role" && k != "limits" && k != "producerGrammar" { + return conversionFailure(codeMalformed) + } + } + spec, e := exactMembers(m["spec"]) + if e != nil || len(spec) != 4 { + return conversionFailure(codeMalformed) + } + for _, k := range []string{"version", "revision", "schemaSha256", "corpusSha256"} { + if spec[k] == nil { + return conversionFailure(codeMalformed) + } + } + if e := conversionIdentityForm(m); e != nil { + return e + } + for _, k := range []string{"role"} { + v := bytes.TrimSpace(m[k]) + if len(v) == 0 || v[0] != '"' { + return conversionFailure(codeMalformed) + } + } + if v, ok := m["producerGrammar"]; ok { + if p.Role != "preparation" && p.Role != "preparation-verification" && p.Role != "producer-carrier" { + return conversionFailure(codeMalformed) + } + if p.ProducerGrammar == "" { + return conversionFailure(codeMalformed) + } + v = bytes.TrimSpace(v) + if len(v) == 0 || v[0] != '"' { + return conversionFailure(codeMalformed) + } + } + limits, e := exactMembers(m["limits"]) + if e != nil { + return conversionFailure(codeMalformed) + } + for _, v := range limits { + n, e := strconv.ParseInt(string(v), 10, 64) + if e != nil || n <= 0 || n > 9007199254740991 || strconv.FormatInt(n, 10) != string(v) { + return conversionFailure(codeMalformed) + } + } + *c = ConversionCapability(p) + return c.validate() +} +func (c ConversionCapability) validate() error { + if c.Contract != "retained-column/1" || c.Spec != installedConversionSpec || c.Profile != "base" { + return conversionFailure("capability-unsupported") + } + expected := conversionRoleLimits(c.Role) + if expected == nil { + return conversionFailure("capability-unsupported") + } + if len(c.Limits) != len(expected) { + return conversionFailure(codeMalformed) + } + for k := range expected { + if c.Limits[k] <= 0 || c.Limits[k] > 9007199254740991 { + return conversionFailure(codeMalformed) + } + } + grammar := c.Role == "preparation" || c.Role == "preparation-verification" || c.Role == "producer-carrier" + if grammar && c.ProducerGrammar != "" && c.ProducerGrammar != columnProducerGrammar { + return conversionFailure("capability-unsupported") + } + if !grammar && c.ProducerGrammar != "" { + return conversionFailure(codeMalformed) + } + return nil +} +func validateConversionCapabilities(cs []ConversionCapability) error { + if len(cs) > 32 { + return conversionFailure(codeMalformed) + } + seen := map[string]bool{} + for _, c := range cs { + if e := c.validate(); e != nil { + return e + } + key := c.Role + "/" + c.ProducerGrammar + if seen[key] { + return conversionFailure(codeMalformed) + } + seen[key] = true + } + return nil +} +func requireConversionCapability(cs []ConversionCapability, role string, producer bool) error { + if e := validateConversionCapabilities(cs); e != nil { + return e + } + for _, c := range cs { + if c.Role != role || producer && c.ProducerGrammar != columnProducerGrammar { + continue + } + for k, n := range conversionRoleLimits(role) { + if c.Limits[k] < n { + return conversionFailure("capability-unsupported") + } + } + return nil + } + return conversionFailure("capability-unsupported") +} + +// ConversionCapabilities is the experimental installed package's declaration. +// Producer support belongs to each independently approved producer profile. +func ConversionCapabilities(roles ...string) []ConversionCapability { + out := []ConversionCapability{} + for _, role := range roles { + limits := conversionRoleLimits(role) + if limits == nil { + continue + } + c := ConversionCapability{Contract: "retained-column/1", Spec: installedConversionSpec, Profile: "base", Role: role, Limits: limits} + if role == "preparation" || role == "preparation-verification" { + c.ProducerGrammar = columnProducerGrammar + } + out = append(out, c) + } + return out +} +func runtimeConversionAdmission(ctx context.Context, bin, dir string, c *ConversionContract, starters ...func(*exec.Cmd) error) error { + if c == nil { + return nil + } + if e := c.validate("document-validation"); e != nil { + return e + } + ctx, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + cmd := exec.CommandContext(ctx, bin, "dialect", "contract", "--draft-contract", c.Contract+"@"+c.Spec.Revision, "--draft-profile", "base", "--format", "json") + cmd.Dir = dir + cmd.Env = []string{"LANG=C", "LC_ALL=C"} + cmd.WaitDelay = time.Second + var out, errout bytes.Buffer + cmd.Stdout = &boundedWriter{&out, 80 << 10} + cmd.Stderr = &boundedWriter{&errout, 64 << 10} + start := (*exec.Cmd).Start + if len(starters) > 0 { + start = starters[0] + } + if e := start(cmd); e != nil { + return e + } + if e := cmd.Wait(); e != nil { + return conversionFailure("capability-unsupported") + } + var root map[string]json.RawMessage + if strictJSON(out.Bytes(), &root) != nil { + return conversionFailure(codeMalformed) + } + var capabilities map[string]json.RawMessage + if strictJSON(root["capabilities"], &capabilities) != nil { + return conversionFailure("capability-unsupported") + } + var cs []ConversionCapability + if _, exists := capabilities["conversionContracts"]; !exists { + return conversionFailure("capability-unsupported") + } + if err := strictJSON(capabilities["conversionContracts"], &cs); err != nil { + _, code := verificationOutcome(err) + if code != "capability-unsupported" { + code = codeMalformed + } + return conversionFailure(code) + } + return requireConversionCapability(cs, "document-validation", false) +} diff --git a/internal/runner/column_role_v1_lifecycle_test.go b/internal/runner/column_role_v1_lifecycle_test.go new file mode 100644 index 0000000..77ab42e --- /dev/null +++ b/internal/runner/column_role_v1_lifecycle_test.go @@ -0,0 +1,254 @@ +package runner + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "sync" + "testing" + "time" +) + +// The Gateway below is a signed producer fixture, not a live Desk producer. +// Runtime execution, SQLite custody, source-worker transport and exports are real. +func TestColumnRoleRealRuntimeFirstSaveSignedExports(t *testing.T) { + cfg := testConfig(t) + cfg.SigningKey = signingKey(t) + cfg.disableAutomation = true + cfg.disableDispatcher = true + if !runtimeTakesBinding(t, cfg.Runtime) { + t.Fatal("selected Runtime test binary must expose an explicit version supporting preparation bindings") + } + producer := selectedProducer(t) + producer.input.Source.Mapping.Case.Facts = []FactMapping{{Target: "/caseNumber", Source: "/retained", Conversion: json.RawMessage(`{"contractVersion":"1","column":"X","kind":"number"}`)}} + producer.input.Source.Mapping.Sources[0].Read.Copy.Evidence[0].Requirement = "intake-form" + producer.input.Source.Mapping.Admits.Facts["/caseNumber"] = []string{"asserted"} + producer.input.Source.Mapping.Admits.Evidence = map[string][]string{"intake-form": {"generated"}} + producer.input.Source.Mapping.Unmapped = []string{"/request/appropriateness", "/request/completeness", "/request/embargoedInformationToUnauthorizedRecipients", "/request/type"} + producer.input.Source.Mapping.UnmappedEvidence = []string{"sponsor-endorsement", "sensitive-data-approvals"} + rawCase := []byte("{\n \"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"values\":{\"X\":\"-0\"},\"research\":null},\"policy\":{\"kind\":\"number\"},\"provenance\":{\"originalValues\":{\"X\":\"-0\"}}\n}") + producer.input.Source.Case = rawCase + cfg.InputProfiles = []InputProfile{producer.profile} + var mu sync.Mutex + var received []byte + calls := 0 + gateway := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.URL.Path == "/seal" { + write(w, 200, map[string]any{"sealed": true}) + return + } + var request struct { + Session string `json:"session"` + Arguments json.RawMessage `json:"arguments"` + } + if r.URL.Path != "/acquire" || json.NewDecoder(r.Body).Decode(&request) != nil { + w.WriteHeader(400) + return + } + signed := signResponse(t, producer.profile, producer.key, request.Arguments, producer.carrier(), time.Now(), 0) + var parts map[string]json.RawMessage + json.Unmarshal(signed, &parts) + var receipt map[string]any + json.Unmarshal(parts["receipt"], &receipt) + receipt["sessionId"] = request.Session + signReceipt(t, receipt, producer.key) + raw := []byte("{\n \"result\":" + string(producer.carrier()) + ", \"receipt\":" + string(encode(receipt)) + ", \"salts\":" + string(parts["salts"]) + " }\n") + mu.Lock() + received = append([]byte(nil), raw...) + calls++ + mu.Unlock() + w.Header().Set("Content-Type", "application/json") + w.Write(raw) + })) + defer gateway.Close() + worker, e := OpenSourceWorker(SourceWorkerConfig{Dir: filepath.Join(sourceWorkerTempDir(t), "caller"), Gateway: gateway.URL}) + if e != nil { + t.Fatal(e) + } + defer worker.Close() + operations := httptest.NewServer(worker.Handler()) + defer operations.Close() + cfg.GatewayConnections = []GatewayConnection{{Profile: producer.profile.ID, URL: gateway.URL, Durable: true, OperationsURL: operations.URL, OperationsTokenFile: worker.TokenFile()}} + s, e := Open(cfg) + if e != nil { + t.Fatal(e) + } + defer func() { + if s != nil { + s.Close() + } + }() + pack, e := os.ReadFile("testdata/triage.pack.json") + if e != nil { + t.Fatal(e) + } + body := encode(PreviewRequest{Pack: string(pack), Input: producer.input}) + body = bytes.Replace(body, encode(rawCase), rawCase, 1) + sampleResponse := producer.input.Source.Sources["desk"].Response + body = bytes.Replace(body, encode(sampleResponse), sampleResponse, 1) + req := httptest.NewRequest("POST", "/v1/retained-column/1/previews", bytes.NewReader(body)) + req.Header.Set("Authorization", "Bearer lifecycle") + req.Header.Set("JPack-Conversion-Contract", selectedHeader(selectedContract())) + w := httptest.NewRecorder() + s.Handler("lifecycle").ServeHTTP(w, req) + if w.Code != 201 { + t.Fatalf("actual selected release preview: %d %.1000s", w.Code, w.Body.String()) + } + var release Release + if json.Unmarshal(w.Body.Bytes(), &release) != nil { + t.Fatal("release response") + } + job, e := s.createJob("Selected retained", release.ID) + if e != nil { + t.Fatal(e) + } + triggerConfig := constantTrigger(time.Now()) + triggerConfig.Input = &AutomaticInput{Kind: "mapped-sources", Case: rawCase} + triggerConfig.PreparationSeconds = 3600 + trigger, e := s.configureTrigger(job.ID, "", 0, triggerConfig) + if e != nil { + t.Fatal(e) + } + occurrence := newOccurrence(trigger, job, time.Now()) + occurrence.PendingInput = triggerConfig.Input + tx, e := s.db.Begin() + if e != nil { + t.Fatal(e) + } + if e = s.admitOccurrence(tx, trigger, &occurrence, "fixture", ""); e != nil { + tx.Rollback() + t.Fatal(e) + } + if e = tx.Commit(); e != nil { + t.Fatal(e) + } + // Actual seed and first durable checkpoint, before advance can mask a loss. + seed, e := s.automaticInputSeed(occurrence.PendingInput, release, nil) + if e != nil || !sameConversion(inputConversion(seed), selectedContract()) { + t.Fatal("automatic seed lost selected release identity", e) + } + occurrence.State = "waiting" + occurrence.Preparation = &SourcePreparation{StartedAt: now(), Deadline: time.Now().Add(time.Hour).UTC().Format(time.RFC3339Nano), Tasks: []SourceTask{}, Input: &seed} + if e = s.saveOccurrence(occurrence); e != nil { + t.Fatal(e) + } + s.Close() + s, e = Open(cfg) + if e != nil { + t.Fatal(e) + } + occurrence, e = s.occurrence(occurrence.ID) + if e != nil { + t.Fatal(e) + } + if occurrence.Preparation == nil || occurrence.Preparation.Input == nil || !sameConversion(inputConversion(*occurrence.Preparation.Input), selectedContract()) || !bytes.Equal(mustColumnCaseBytes(occurrence.Preparation.Input.Source), rawCase) { + t.Fatal("actual first-save restart lost selected identity or exact case") + } + for step := 0; step < 30 && occurrence.State == "waiting"; step++ { + occurrence = stepPreparation(t, s, occurrence.ID) + if occurrence.State == "waiting" { + time.Sleep(10 * time.Millisecond) + } + } + if occurrence.State != "accepted" || occurrence.Input == nil || len(occurrence.Preparation.Tasks) != 1 { + t.Fatalf("actual continued source preparation: state=%s reason=%s", occurrence.State, occurrence.Reason) + } + task := occurrence.Preparation.Tasks[0] + if !taskConversionMatches(task.Request, selectedContract()) { + t.Fatal("durable source request lost selected identity") + } + changed := selectedContract() + changed.Roles = append(append([]string(nil), changed.Roles[:3]...), changed.Roles[4]) + if taskConversionMatches(task.Request, changed) { + t.Fatal("resumed operation allowed conversion rebind") + } + var heldRequest sourceRequest + if strictJSON(task.Request, &heldRequest) != nil { + t.Fatal("durable operation request") + } + heldRequest.ConversionContract = changed + if _, code, e := worker.submit(heldRequest); code != 409 || e == nil { + t.Fatal("source operation ID accepted a changed selected identity", code, e) + } + mu.Lock() + exact := append([]byte(nil), received...) + count := calls + mu.Unlock() + if count != 1 || occurrence.Input.Source.Sources["desk"].RetainedResponseJSON != string(exact) { + t.Fatal("source worker first durable response save changed exact custody or repeated acquisition") + } + worker.mu.Lock() + status, e := worker.status(task.ID) + worker.mu.Unlock() + if e != nil || status.RetainedResponseJSON != string(exact) || len(status.Response) != 0 { + t.Fatal("selected source status custody changed", e) + } + // Admit the exact recovered occurrence input through the public run adapter. + req = httptest.NewRequest("POST", "/v1/retained-column/1/jobs/"+job.ID+"/runs", bytes.NewReader(encode(*occurrence.Input))) + req.Header.Set("Authorization", "Bearer lifecycle") + req.Header.Set("JPack-Conversion-Contract", selectedHeader(selectedContract())) + req.Header.Set("Idempotency-Key", "selected-first-save") + w = httptest.NewRecorder() + s.Handler("lifecycle").ServeHTTP(w, req) + if w.Code != 202 { + t.Fatalf("actual selected run admission: %d %.1000s", w.Code, w.Body.String()) + } + var queued Run + if json.Unmarshal(w.Body.Bytes(), &queued) != nil { + t.Fatal("run response") + } + if worked, e := s.dispatchNext(context.Background()); e != nil || !worked { + t.Fatal("actual Runtime dispatch", worked, e) + } + run := waitRun(t, s, queued.ID) + if run.State != "completed" || run.Binding == nil || run.Binding.Status != RunBound || run.Signing == nil || run.Signing.Status != SigningSigned || len(run.AuditSignatures) == 0 { + t.Fatalf("actual Runtime did not complete bound signed record: state=%s binding=%+v signing=%+v problem=%s", run.State, run.Binding, run.Signing, run.Problem) + } + facts := member(run.Audit, "inputs", "facts") + if !bytes.Contains(facts, []byte(`"caseNumber":-0`)) || !bytes.Contains(facts, []byte(`"min":-0`)) { + t.Fatalf("actual Runtime audit changed asserted/range negative zero: %s", facts) + } + evidence := os.Getenv("JPACK_ROLE_EVIDENCE_DIR") + for _, version := range []int{2, 3, 4, 5} { + req = httptest.NewRequest("GET", fmt.Sprintf("/v1/retained-column/1/runs/%s/verification?version=%d", run.ID, version), nil) + req.Header.Set("Authorization", "Bearer lifecycle") + req.Header.Set("JPack-Conversion-Contract", selectedHeader(selectedContract())) + w = httptest.NewRecorder() + s.Handler("lifecycle").ServeHTTP(w, req) + if w.Code != 200 { + t.Fatalf("actual export v%d: %d %.1000s", version, w.Code, w.Body.String()) + } + v, e := VerifyInputs(w.Body.Bytes(), cfg.InputProfiles, releaseDigest(release), selectedContract()) + if e != nil || !v.Checked() || v.ExportVersion() != version { + t.Fatalf("actual signed Runtime export v%d offline: %v", version, e) + } + if version == 5 { + report := v.CheckSignature(s.expectedKey) + if report.Status != SignatureSigned { + t.Fatalf("real Runtime signature not verified: %+v", report) + } + } + if evidence != "" { + if e = os.WriteFile(filepath.Join(evidence, fmt.Sprintf("real-export-v%d.json", version)), w.Body.Bytes(), 0600); e != nil { + t.Fatal(e) + } + } + } + if evidence != "" { + for name, data := range map[string][]byte{"real-release.json": encode(release), "real-run.json": encode(served(run)), "real-selector.txt": []byte(selectedHeader(selectedContract())), "real-profiles.json": encode(cfg.InputProfiles), "real-release-digest.txt": []byte(releaseDigest(release)), "real-record.json": run.AuditBytes, "real-operation-request.json": task.Request, "real-acquired-response.json": exact, "real-dialect.json": encode(run.Input.Source.Mapping), "real-case.json": mustColumnCaseBytes(run.Input.Source), "real-sources.json": encode(run.Input.Source.Sources), "real-preparation.json": encode(run.Input.Preparation), "real-preparation-digest.txt": []byte(digest(encode(run.Input.Preparation)))} { + if e = os.WriteFile(filepath.Join(evidence, name), data, 0600); e != nil { + t.Fatal(e) + } + } + } + if !strings.Contains(string(exact), "\n") { + t.Fatal("exact custody fixture lost its intentional whitespace") + } + t.Logf("actual pinned Runtime %s; record=%s bytes=%d; selected SQLite first-save restart, real SourceWorker with signed producer fixture, binding, signature and exports2/3/4/5 passed", release.RuntimeDigest, digest(run.AuditBytes), len(run.AuditBytes)) +} diff --git a/internal/runner/column_role_v1_test.go b/internal/runner/column_role_v1_test.go new file mode 100644 index 0000000..e1c2c7a --- /dev/null +++ b/internal/runner/column_role_v1_test.go @@ -0,0 +1,422 @@ +package runner + +import ( + "bytes" + "context" + "encoding/base64" + "encoding/json" + "github.com/Judgment-Pack/judgment-pack-runner/internal/retainedcolumns" + "io" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "testing" + "time" +) + +func selectedContract() *ConversionContract { + return &ConversionContract{Contract: "retained-column/1", Spec: installedConversionSpec, Profile: "base", Roles: append([]string(nil), conversionRoles[:]...)} +} +func selectedHeader(c *ConversionContract) string { + return base64.RawURLEncoding.EncodeToString(encode(c)) +} + +type unreadBody struct{ reads int } + +func (b *unreadBody) Read([]byte) (int, error) { b.reads++; return 0, io.EOF } +func (*unreadBody) Close() error { return nil } +func scopedEntry(t *testing.T, i Input, p []InputProfile, raw []byte) (int, InputPlan, string) { + t.Helper() + if raw == nil { + raw = encode(i) + if i.Source != nil { + if len(i.Source.Case) > 0 { + raw = bytes.Replace(raw, encode(i.Source.Case), i.Source.Case, 1) + } + if v, ok := i.Source.Sources["desk"]; ok && len(v.Response) > 0 { + raw = bytes.Replace(raw, encode(v.Response), v.Response, 1) + } + } + } + req := httptest.NewRequest("POST", "/v1/retained-column/1/inputs/next", bytes.NewReader(raw)) + req.Header.Set("Authorization", "Bearer role-test") + req.Header.Set("JPack-Conversion-Contract", selectedHeader(inputConversion(i))) + w := httptest.NewRecorder() + (&Service{cfg: Config{InputProfiles: p}}).Handler("role-test").ServeHTTP(w, req) + var plan InputPlan + json.Unmarshal(w.Body.Bytes(), &plan) + return w.Code, plan, w.Body.String() +} +func selectedProducer(t *testing.T) producerFixture { + t.Helper() + f := newProducerFixture(t, "research-value", "Range") + f.input.Source.ConversionContract = selectedContract() + f.profile.ConversionContracts = ConversionCapabilities("producer-carrier") + f.profile.ConversionContracts[0].ProducerGrammar = columnProducerGrammar + f.input.Source.Mapping.Sources[0].ProfileDigest = profileHash(f.profile) + f.sign(t) + return f +} +func TestColumnRoleSelectorRefusesBeforeBody(t *testing.T) { + valid := selectedContract() + validJSON := string(encode(valid)) + bad := []string{"", selectedHeader(valid) + "=", base64.RawURLEncoding.EncodeToString([]byte(strings.Replace(validJSON, `"base"`, `"extended"`, 1))), base64.RawURLEncoding.EncodeToString([]byte(strings.Replace(validJSON, `"roles":[`, `"roles":["preview",`, 1))), base64.RawURLEncoding.EncodeToString([]byte(strings.Replace(validJSON, `"contract":`, `"unknown":1,"contract":`, 1))), base64.RawURLEncoding.EncodeToString([]byte(strings.Replace(validJSON, valid.Spec.Revision, strings.Repeat("0", 40), 1))), base64.RawURLEncoding.EncodeToString([]byte(strings.Replace(validJSON, `"preparation",`, "", 1)))} + for j, h := range bad { + b := &unreadBody{} + req := httptest.NewRequest("POST", "/v1/retained-column/1/inputs/next", b) + req.Header.Set("Authorization", "Bearer role-test") + if h != "" { + req.Header.Set("JPack-Conversion-Contract", h) + } + w := httptest.NewRecorder() + (&Service{}).Handler("role-test").ServeHTTP(w, req) + if w.Code < 400 || b.reads != 0 { + t.Fatalf("selector %d admitted or read body: status=%d reads=%d", j, w.Code, b.reads) + } + } + req := httptest.NewRequest("POST", "/v1/retained-column/1/inputs/next", &unreadBody{}) + req.Header.Set("JPack-Conversion-Contract", selectedHeader(valid)) + w := httptest.NewRecorder() + (&Service{}).Handler("role-test").ServeHTTP(w, req) + if w.Code != 401 { + t.Fatal("selected route bypassed authentication") + } +} +func TestColumnRoleCapabilityClosureAndIndependentProducer(t *testing.T) { + c := ConversionCapabilities("producer-carrier")[0] + c.ProducerGrammar = columnProducerGrammar + for _, mutate := range []func(map[string]any){func(m map[string]any) { m["extra"] = true }, func(m map[string]any) { delete(m, "limits") }, func(m map[string]any) { m["limits"].(map[string]any)["carrierBytes"] = 3.0 }, func(m map[string]any) { m["role"] = "unknown" }, func(m map[string]any) { m["producerGrammar"] = "unknown" }} { + var m map[string]any + json.Unmarshal(encode(c), &m) + mutate(m) + raw := encode(m) + if bytes.Contains(raw, []byte(`"carrierBytes":3`)) { + raw = bytes.Replace(raw, []byte(`"carrierBytes":3`), []byte(`"carrierBytes":3.0`), 1) + } + var held ConversionCapability + if strictJSON(raw, &held) == nil { + t.Fatalf("malformed capability accepted: %s", raw) + } + } + f := selectedProducer(t) + noResponse := cloneInput(f.input) + noResponse.Source.Sources = nil + oldProfile := f.profile + oldProfile.ConversionContracts = nil + noResponse.Source.Mapping.Sources[0].ProfileDigest = profileHash(oldProfile) + if code, _, body := scopedEntry(t, noResponse, []InputProfile{oldProfile}, nil); code < 400 { + t.Fatalf("missing producer role planned acquisition: %s", body) + } + noResponse.Source.Mapping.Sources[0].ProfileDigest = profileHash(f.profile) + if code, plan, body := scopedEntry(t, noResponse, []InputProfile{f.profile}, nil); code != 200 || plan.Next == nil || !sameConversion(plan.Next.ConversionContract, selectedContract()) { + t.Fatalf("independently pinned producer plan: %d %s", code, body) + } + ordinary := newProducerFixture(t, "text", "Text") + if code, _, body := producerHTTP(t, ordinary.input, ordinary.profile); code != 200 { + t.Fatalf("ordinary producer changed: %d %s", code, body) + } +} +func TestColumnRoleExactHTTPStoreOfflineCustody(t *testing.T) { + f := selectedProducer(t) + // Coupled original inventory/revision, raw range -0, opaque provenance and + // maximum original snapshot, preserving the producer relation in one input. + pad := 524288 - len(f.snapshot) - len(`"pad":"",`) + f.snapshot = strings.Replace(f.snapshot, `"opaque":`, `"pad":"`+strings.Repeat(`\"`, pad/2)+`","opaque":`, 1) + if len(f.snapshot) < 524288 { + f.snapshot += " " + } + f.sign(t) + if len(f.snapshot) != 524288 { + t.Fatal("handwritten snapshot boundary is wrong") + } + code, plan, body := scopedEntry(t, f.input, []InputProfile{f.profile}, nil) + if code != 200 || plan.Input == nil { + t.Fatalf("selected actual HTTP preparation: %d %s", code, body) + } + i := *plan.Input + if !sameConversion(i.Preparation.ConversionContract, inputConversion(i)) || i.Source.Sources["desk"].RetainedResponseJSON != string(f.input.Source.Sources["desk"].Response) || !bytes.Contains(i.Facts, []byte(`"min":-0`)) { + t.Fatal("selected preparation lost identity/raw custody/numeric spelling") + } + if len(encode(i.Source)) <= MaxBody { + t.Fatal("maximum snapshot did not exercise expanded complete source") + } + r := Release{ID: "role-release", Pack: `{}`, PackDigest: digest([]byte(`{}`)), InputMapping: &i.Source.Mapping, InputProfiles: []InputProfile{f.profile}, Sample: i} + run := Run{ID: "role-run", JobID: "role-job", ReleaseID: r.ID, State: "queued", Input: i} + store := newMemoryStore() + if e := store.update(func(tx runTx) error { + if e := tx.createRelease(r); e != nil { + return e + } + return tx.createRun(run, "owner", "role-key", "request") + }); e != nil { + t.Fatal(e) + } + restored, e := store.run(run.ID) + if e != nil || !sameConversion(inputConversion(restored.Input), inputConversion(i)) || restored.Input.Source.Sources["desk"].RetainedResponseJSON != i.Source.Sources["desk"].RetainedResponseJSON { + t.Fatal("durable serialized custody changed", e) + } + fixture := producerPreparationFixture(restored.Input, f.profile) + fixture.ConversionContract = selectedContract() + if report := VerifyPreparation(fixture); report.Result != ResultReading { + t.Fatalf("selected offline preparation: %+v", report) + } + b := VerificationBundle{Version: 2, Release: r, ReleaseDigest: releaseDigest(r), Run: restored} + v, e := VerifyInputs(encode(b), []InputProfile{f.profile}, b.ReleaseDigest, selectedContract()) + if e != nil || !v.Checked() { + t.Fatalf("selected offline export: %v", e) + } + if _, e := VerifyInputs(encode(b), []InputProfile{f.profile}, b.ReleaseDigest); e == nil { + t.Fatal("offline export inferred selection from body") + } + changed := cloneInput(restored.Input) + changed.Source.ConversionContract.Roles = changed.Source.ConversionContract.Roles[:3] + if mappingMatchesRelease(r, changed) { + t.Fatal("release run selection mismatch accepted") + } + f.snapshot += " " + f.sign(t) + if code, _, body := scopedEntry(t, f.input, []InputProfile{f.profile}, nil); code < 400 { + t.Fatalf("one-over snapshot accepted: %s", body) + } +} +func TestColumnRoleBodyAndFrameBoundaries(t *testing.T) { + i := columnCase(t, "text", `"A"`) + i.Source.ConversionContract = selectedContract() + raw := encode(i) + exact := append(bytes.Repeat([]byte(" "), 16777216-len(raw)), raw...) + if code, _, body := scopedEntry(t, i, nil, exact); code != 200 { + t.Fatalf("exact selected HTTP body: %d %s", code, body) + } + if code, _, _ := scopedEntry(t, i, nil, append([]byte(" "), exact...)); code != 400 { + t.Fatal("one-over selected HTTP body accepted") + } + frame := `{"contractVersion":"1","origin":"asserted","values":{"X":"A","Evidence":"present"},"research":null}` + atFrame := "{" + strings.Repeat(" ", 2097152-len(frame)) + frame[1:] + i.Source.Case = []byte(`{"retained":` + atFrame + `}`) + if code, _, body := scopedEntry(t, i, nil, nil); code != 200 { + t.Fatalf("exact selected frame: %d %s", code, body) + } + i.Source.Case = []byte(`{"retained":{ ` + atFrame[1:] + `}`) + if _, e := normalizeV2(i, nil, time.Now()); e == nil { + t.Fatal("one-over frame accepted") + } +} + +func TestColumnRoleScopedCanonDoesNotRelaxClaims(t *testing.T) { + for _, raw := range []string{`{"n":1.25}`, `{"n":9007199254740992}`, `{"n":1e309}`} { + if _, e := scopedJSON([]byte(raw), 12582912); e == nil { + t.Fatalf("selected canonical member accepted unsupported number: %s", raw) + } + if _, e := proofCanon([]byte(raw)); e == nil { + t.Fatal("ordinary canonical domain changed") + } + } + if _, e := scopedJSON([]byte(`{"n":-0,"text":"1.25"}`), 12582912); e != nil { + t.Fatal("supported selected canonical member refused", e) + } +} +func TestColumnRoleSelectedSourceExpiryClearsCustody(t *testing.T) { + s, req, barrier, _ := workerFixture(t) + req.ConversionContract = selectedContract() + req.Deadline = time.Now().Add(200 * time.Millisecond).UTC().Format(time.RFC3339Nano) + ready, retain := make(chan struct{}), make(chan struct{}) + s.beforeRetain = func() { close(ready); <-retain } + if _, _, e := s.submit(req); e != nil { + t.Fatal(e) + } + close(barrier) + select { + case <-ready: + case <-time.After(time.Second): + t.Fatal("selected completion did not reach retain barrier") + } + time.Sleep(250 * time.Millisecond) + close(retain) + s.workers.Wait() + status, _, e := s.submit(req) + if e != nil || status.State != "expired" || status.RetainedResponseJSON != "" || len(status.Response) > 0 { + t.Fatal("expired selected response custody survived", e, status.State, len(status.RetainedResponseJSON)) + } +} + +func TestColumnRoleHandwrittenSelectionVectors(t *testing.T) { + raw, e := os.ReadFile("../../vectors/retained-column-selection.json") + if e != nil { + t.Fatal(e) + } + var f struct { + Status string `json:"status"` + Selection ConversionContract `json:"selection"` + Capabilities []ConversionCapability `json:"capabilities"` + Negative []struct { + Name, Member, Code string + Value json.RawMessage + } `json:"negativeSelections"` + Conversions []json.RawMessage `json:"conversions"` + Availability json.RawMessage `json:"availability"` + Lineages []json.RawMessage `json:"lineages"` + SourceInputs []json.RawMessage `json:"sourceInputs"` + Preparations []json.RawMessage `json:"preparations"` + Profiles []json.RawMessage `json:"profiles"` + SourceValues []json.RawMessage `json:"sourceValues"` + CopyMappings []json.RawMessage `json:"copyMappings"` + } + if e := strictJSON(raw, &f); e != nil { + t.Fatal(e) + } + if f.Status != "handwritten-test-only" || f.Selection.Spec != installedConversionSpec { + t.Fatal("external handwritten installed pin differs") + } + if len(f.Capabilities) != 5 { + t.Fatal("missing role witness") + } + for _, entry := range f.Capabilities { + if e := requireConversionCapability([]ConversionCapability{entry}, entry.Role, entry.Role == "producer-carrier"); e != nil { + t.Fatal(entry.Role, e) + } + } + for _, raw := range f.Conversions { + if _, e := columnPlan(raw, false); e != nil { + t.Fatal("handwritten conversion", e) + } + } + if _, e := columnPlan(f.Availability, true); e != nil { + t.Fatal("handwritten availability", e) + } + for _, raw := range f.Lineages { + var transformation retainedcolumns.Transformation + if e := strictJSON(raw, &transformation); e != nil { + t.Fatal("handwritten lineage", e) + } + } + for _, raw := range f.CopyMappings { + var mapping CopyMapping + if e := strictJSON(raw, &mapping); e != nil { + t.Fatal("handwritten copy mapping", e) + } + } + for _, raw := range f.SourceInputs { + var input SourceInput + if e := strictJSON(raw, &input); e != nil { + t.Fatal("handwritten source envelope", e) + } + } + for _, raw := range f.Preparations { + var preparation Preparation + if e := strictJSON(raw, &preparation); e != nil { + t.Fatal("handwritten preparation", e) + } + } + for _, raw := range f.Profiles { + var profile InputProfile + if e := strictJSON(raw, &profile); e != nil { + t.Fatal("handwritten profile", e) + } + } + for _, raw := range f.SourceValues { + var value SourceValue + if e := strictJSON(raw, &value); e != nil { + t.Fatal("handwritten source custody", e) + } + } + for _, n := range f.Negative { + t.Run(n.Name, func(t *testing.T) { + m, _ := exactMembers(encode(f.Selection)) + m[n.Member] = n.Value + header := base64.RawURLEncoding.EncodeToString(encode(m)) + body := &unreadBody{} + req := httptest.NewRequest("POST", "/v1/retained-column/1/inputs/next", body) + req.Header.Set("Authorization", "Bearer vector") + req.Header.Set("JPack-Conversion-Contract", header) + w := httptest.NewRecorder() + (&Service{}).Handler("vector").ServeHTTP(w, req) + if w.Code < 400 || body.reads != 0 { + t.Fatal("negative selector read body or admitted", n.Name, w.Code, body.reads) + } + var result struct { + Error struct { + Code string `json:"code"` + } `json:"error"` + } + json.Unmarshal(w.Body.Bytes(), &result) + if result.Error.Code != n.Code { + t.Fatalf("wrong refusal class: got=%s expected=%s body=%s", result.Error.Code, n.Code, w.Body.String()) + } + }) + } +} + +func TestColumnRoleOwnerReportAndRequestAdmission(t *testing.T) { + i := columnCase(t, "text", `"A"`) + i.Source.ConversionContract = selectedContract() + other := cloneInput(i) + other.Source.ConversionContract.Roles = other.Source.ConversionContract.Roles[:3] + if code, _, _ := scopedEntry(t, i, nil, encode(other)); code != 422 { + t.Fatal("body replaced admitted header selection", code) + } + producer := ConversionCapabilities("producer-carrier")[0] + producer.ProducerGrammar = columnProducerGrammar + producer.Limits["carrierBytes"] = 3145727 + if requireConversionCapability([]ConversionCapability{producer}, "producer-carrier", true) == nil { + t.Fatal("incomplete independently trusted producer capacity admitted") + } + producer.Limits["carrierBytes"] = 3145728 + if validateConversionCapabilities([]ConversionCapability{producer, producer}) == nil { + t.Fatal("duplicate capability role admitted") + } + if validateConversionCapabilities(make([]ConversionCapability, 33)) == nil { + t.Fatal("overbound capability list admitted") + } + dir := t.TempDir() + reportPath := filepath.Join(dir, "report.json") + bin := filepath.Join(dir, "reported-runtime") + if e := os.WriteFile(bin, []byte("#!/bin/sh\nexec /bin/cat '"+reportPath+"'\n"), 0700); e != nil { + t.Fatal(e) + } + doc := ConversionCapabilities("document-validation")[0] + for _, tc := range []struct { + name string + report any + accepted bool + }{ + {"exact", map[string]any{"capabilities": map[string]any{"conversionContracts": []ConversionCapability{doc}}}, true}, + {"absent", map[string]any{"capabilities": map[string]any{}}, false}, + {"other-owner", map[string]any{"capabilities": map[string]any{"conversionContracts": []ConversionCapability{producer}}}, false}, + {"empty", map[string]any{"capabilities": map[string]any{"conversionContracts": []ConversionCapability{}}}, false}, + } { + t.Run(tc.name, func(t *testing.T) { + if e := os.WriteFile(reportPath, encode(tc.report), 0600); e != nil { + t.Fatal(e) + } + e := runtimeConversionAdmission(context.Background(), bin, dir, selectedContract()) + if (e == nil) != tc.accepted { + t.Fatal("independent Runtime document owner report admission differed", tc.name, e) + } + }) + } + doc.Limits["frameBytes"] = 2097151 + if e := os.WriteFile(reportPath, encode(map[string]any{"capabilities": map[string]any{"conversionContracts": []ConversionCapability{doc}}}), 0600); e != nil { + t.Fatal(e) + } + if runtimeConversionAdmission(context.Background(), bin, dir, selectedContract()) == nil { + t.Fatal("undersized Runtime frame capacity admitted") + } + if runtimeConversionAdmission(context.Background(), filepath.Join(dir, "absent"), dir, nil) != nil { + t.Fatal("ordinary input required selected Runtime report") + } +} + +// The closed role grammar and duplicate guard independently make lists this +// large invalid. This explicit count control bounds work before entry validation. +func TestColumnRoleOwnerListLimit(t *testing.T) { + entry := ConversionCapabilities("producer-carrier")[0] + entry.ProducerGrammar = columnProducerGrammar + entries := make([]ConversionCapability, 33) + for j := range entries { + entries[j] = entry + } + if validateConversionCapabilities(entries) == nil { + t.Fatal("overbound capability list admitted") + } +} diff --git a/internal/runner/dialect_artifact.go b/internal/runner/dialect_artifact.go index 9a6d09d..466ed95 100644 --- a/internal/runner/dialect_artifact.go +++ b/internal/runner/dialect_artifact.go @@ -37,6 +37,7 @@ func (m InputMapping) marshalArtifact() ([]byte, error) { return nil, err } return json.Marshal(struct { + Profile string `json:"profile,omitempty"` FormatVersion string `json:"formatVersion"` ID string `json:"id"` Version string `json:"version"` @@ -45,7 +46,7 @@ func (m InputMapping) marshalArtifact() ([]byte, error) { Admits *Admission `json:"admits,omitempty"` Unmapped []string `json:"unmapped,omitempty"` UnmappedEvidence []string `json:"unmappedEvidence,omitempty"` - }{m.FormatVersion, m.ArtifactID, m.ArtifactVersion, m.Case, m.Sources, m.Admits, m.Unmapped, m.UnmappedEvidence}) + }{m.Profile, m.FormatVersion, m.ArtifactID, m.ArtifactVersion, m.Case, m.Sources, m.Admits, m.Unmapped, m.UnmappedEvidence}) } func (m *InputMapping) UnmarshalJSON(raw []byte) error { // DisallowUnknownFields still applies inside this custom decoder. @@ -60,6 +61,14 @@ func (m *InputMapping) UnmarshalJSON(raw []byte) error { if err != nil { return err } + for key := range members { + if strings.EqualFold(key, "profile") && key != "profile" { + return errors.New("retained-column profile member must be case-sensitive") + } + } + if code := columnProfileBytes(raw); code != "" && code != "profile-unsupported" { + return withCode(code, errors.New("unknown or malformed retained-column profile")) + } if _, named := members["formatVersion"]; !named { var legacy plain if err := strictJSON(raw, &legacy); err != nil { diff --git a/internal/runner/dialect_v3.go b/internal/runner/dialect_v3.go index 418dc28..3e14150 100644 --- a/internal/runner/dialect_v3.go +++ b/internal/runner/dialect_v3.go @@ -57,13 +57,14 @@ func (m InputMapping) MarshalJSON() ([]byte, error) { return json.Marshal(plain(m)) } return json.Marshal(struct { + Profile string `json:"profile,omitempty"` Case *CaseMapping `json:"case,omitempty"` Sources []MappingSource `json:"sources,omitempty"` Admits *Admission `json:"admits,omitempty"` Unmapped []string `json:"unmapped,omitempty"` UnmappedEvidence []string `json:"unmappedEvidence,omitempty"` Version int `json:"version"` - }{m.Case, m.Sources, m.Admits, m.Unmapped, m.UnmappedEvidence, m.Version}) + }{m.Profile, m.Case, m.Sources, m.Admits, m.Unmapped, m.UnmappedEvidence, m.Version}) } // DialectImport is the import step's request member, source.import: the @@ -286,11 +287,15 @@ func importedSource(src *SourceInput, profiles []InputProfile) (*SourceInput, er if src == nil { return nil, nil } + if e := src.ConversionContract.validate("preparation"); e != nil { + return nil, e + } c := *src + c.Mapping.selectedConversion = c.ConversionContract if c.Import == nil { return &c, nil } - bound, e := bindDialect(*c.Import, profiles) + bound, e := bindDialect(*c.Import, profiles, c.ConversionContract) if e != nil { return nil, e } @@ -321,7 +326,7 @@ func importedSource(src *SourceInput, profiles []InputProfile) (*SourceInput, er // adapter is not the source's record. A research source is bound to its // AI profile and its web profiles (bindResearch). The bound dialect is then // held to the form every dialect is. -func bindDialect(imp DialectImport, profiles []InputProfile) (InputMapping, error) { +func bindDialect(imp DialectImport, profiles []InputProfile, selection ...*ConversionContract) (InputMapping, error) { fail := func(format string, a ...any) (InputMapping, error) { return InputMapping{}, inputProblem("Mapping v3: " + fmt.Sprintf(format, a...)) } @@ -336,7 +341,10 @@ func bindDialect(imp DialectImport, profiles []InputProfile) (InputMapping, erro if absent(imp.Dialect) || absent(imp.Binding) { return fail("an import names the published dialect and its binding document") } - if len(imp.Dialect) > maxPublishedDialect || len(imp.Binding) > maxBindingDocument { + if e := selectedConversion(selection).validate("preparation"); e != nil { + return InputMapping{}, e + } + if len(imp.Dialect) > artifactLimit(selectedConversion(selection), maxPublishedDialect, columnDocumentLimit) || len(imp.Binding) > maxBindingDocument { return fail("a published dialect is at most 128 KiB, and a binding document at most 64 KiB") } @@ -345,6 +353,7 @@ func bindDialect(imp DialectImport, profiles []InputProfile) (InputMapping, erro if e := strictJSON(imp.Dialect, &m); e != nil { return fail("the published dialect is not a dialect document: %v", e) } + m.selectedConversion = selectedConversion(selection) if m.Version != 3 { return fail("the published dialect is of version %d: only a dialect of version 3 has unbound sources to bind, and one of version 2 is given as the mapping", m.Version) } diff --git a/internal/runner/dialect_v3_test.go b/internal/runner/dialect_v3_test.go index c0ffaf1..aeb139a 100644 --- a/internal/runner/dialect_v3_test.go +++ b/internal/runner/dialect_v3_test.go @@ -459,7 +459,7 @@ func TestTheImportStepRefusesByName(t *testing.T) { recorded := f.profile recorded.Adapter.Name = "another-adapter" twoSources := f.published - twoSources.Sources = append(append([]MappingSource(nil), f.published.Sources...), MappingSource{Name: "file", Kind: "selected-file", Provider: "local-file", Read: SourceRead{Copy: &CopyMapping{[]FactMapping{{"/file", "/file"}}, []EvidenceMapping{}}}}) + twoSources.Sources = append(append([]MappingSource(nil), f.published.Sources...), MappingSource{Name: "file", Kind: "selected-file", Provider: "local-file", Read: SourceRead{Copy: &CopyMapping{[]FactMapping{{Target: "/file", Source: "/file"}}, []EvidenceMapping{}}}}) partial := f.published partial.Sources = append([]MappingSource(nil), f.published.Sources...) partial.Sources[0].Record = nil @@ -510,7 +510,7 @@ func TestTheImportStepRefusesByName(t *testing.T) { // v3KindSource is a version-3 source of kind, with the members the // specification gives that kind (spec/dialect.md §4.3), pinned to p. func v3KindSource(kind string, p InputProfile) MappingSource { - s := MappingSource{Name: "asked", Kind: kind, Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Read: SourceRead{Copy: &CopyMapping{[]FactMapping{{"/asked", "/answer"}}, []EvidenceMapping{}}}} + s := MappingSource{Name: "asked", Kind: kind, Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Read: SourceRead{Copy: &CopyMapping{[]FactMapping{{Target: "/asked", Source: "/answer"}}, []EvidenceMapping{}}}} switch kind { case "http": s.Method, s.Path, s.Query, s.Headers = json.RawMessage(`"GET"`), json.RawMessage(`"/vendors"`), json.RawMessage(`{"id":{"$param":"vendorId"}}`), json.RawMessage(`["accept"]`) @@ -581,7 +581,7 @@ func TestTheVersion3KindOperationIsPrepared(t *testing.T) { // prepared as version 2 prepares them. func TestTheVersion3KindSelectedFileIsPrepared(t *testing.T) { local := fileInput(string(encode(sample())), InputMapping{Version: 1, Provider: "local-file"}) - copy := CopyMapping{Facts: []FactMapping{{"/request", "/facts/request"}}, Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}}} + copy := CopyMapping{Facts: []FactMapping{{Target: "/request", Source: "/facts/request"}}, Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}}} at := time.Now().UTC().Truncate(time.Second) for _, version := range []int{2, 3} { input := Input{Source: &SourceInput{Mapping: InputMapping{Version: version, Sources: []MappingSource{{Name: "file", Kind: "selected-file", Provider: "local-file", Read: SourceRead{Copy: ©}}}}, Sources: map[string]SourceValue{"file": {Snapshot: local.Source.Snapshot}}}} @@ -648,7 +648,7 @@ func driveFixture(t *testing.T) (Input, InputProfile, ed25519.PrivateKey, time.T Case: &CaseMapping{Parameters: map[string]Parameter{"fileId": {Pointer: "/fileId", Type: "string"}, "grant": {Pointer: "/grant", Type: "string"}}, Facts: []FactMapping{}, Evidence: []EvidenceMapping{}}, Sources: []MappingSource{{Name: "file", Kind: "selected-file", Provider: "google-drive", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Arguments: json.RawMessage(`{"fileId":{"$param":"fileId"},"grant":{"$param":"grant"}}`), - Read: SourceRead{Copy: &CopyMapping{[]FactMapping{{"/approved", "/approved"}}, []EvidenceMapping{}}}, + Read: SourceRead{Copy: &CopyMapping{[]FactMapping{{Target: "/approved", Source: "/approved"}}, []EvidenceMapping{}}}, }}, } return Input{Source: &SourceInput{Mapping: mapping, Case: args, Sources: map[string]SourceValue{"file": {Snapshot: encode(snap)}}}}, p, key, at diff --git a/internal/runner/http.go b/internal/runner/http.go index e3aca89..0248f3e 100644 --- a/internal/runner/http.go +++ b/internal/runner/http.go @@ -14,6 +14,10 @@ import ( ) func write(w http.ResponseWriter, status int, v any) { + if selected, ok := w.(conversionWriter); ok && len(encode(v))+1 > selected.limit { + failure(selected.ResponseWriter, codedProblem(codeOverBound, "reply exceeds selected complete artifact limit")) + return + } w.Header().Set("Content-Type", "application/json") w.Header().Set("Cache-Control", "no-store") w.WriteHeader(status) @@ -37,7 +41,11 @@ func decode(w http.ResponseWriter, r *http.Request, dst any) error { // decodeRaw is decode, which also returns the bytes it read, so that a // refusal can still name what the request named. func decodeRaw(w http.ResponseWriter, r *http.Request, dst any) ([]byte, error) { - raw, err := io.ReadAll(http.MaxBytesReader(w, r.Body, MaxBody)) + limit := int64(MaxBody) + if requestConversion(r) != nil { + limit = columnRequestLimit + } + raw, err := io.ReadAll(http.MaxBytesReader(w, r.Body, limit)) if err != nil || strictJSON(raw, dst) != nil { return raw, &apiError{400, "invalid_request", "Supply one bounded JSON request with supported fields and no duplicate members."} } @@ -71,8 +79,14 @@ func decodeInput(w http.ResponseWriter, r *http.Request, dst any) error { return fmt.Errorf("a request of type %T names no input", dst) } if src == nil { + if requestConversion(r) != nil { + return conversionFailure("capability-unsupported") + } return nil } + if err := admitInputConversion(Input{Source: src}, requestConversion(r)); err != nil { + return err + } src.mappingGiven = namedAt(raw, path...) return keptAsWritten(raw, src.Mapping, path...) } @@ -134,6 +148,10 @@ func (s *Service) Handler(token string) http.Handler { failure(w, err) return } + if !sameConversion(inputConversion(run.Input), requestConversion(r)) { + failure(w, conversionFailure("capability-unsupported")) + return + } var bundle VerificationBundle if version < 4 { bundle = verificationExport(release, run, version) @@ -158,6 +176,12 @@ func (s *Service) Handler(token string) http.Handler { return } } + if requestConversion(r) != nil { + if err := exportWithinLimits(append(encode(bundle), '\n'), bundle); err != nil { + failure(w, err) + return + } + } write(w, 200, bundle) }) mux.HandleFunc("GET /v1/run-chain", s.runChainHandler) @@ -169,7 +193,7 @@ func (s *Service) Handler(token string) http.Handler { mux.HandleFunc("GET /v1/runs/{run}/briefs", s.briefHandler("run")) mux.HandleFunc("POST /v1/runs/{run}/briefs", s.briefHandler("run")) mux.HandleFunc("GET /v1/status", func(w http.ResponseWriter, r *http.Request) { - write(w, 200, map[string]any{"healthy": !s.unhealthy.Load(), "schemaVersion": "1", "workspace": s.cfg.Workspace, "owner": s.cfg.Owner, "runtimeDigest": s.runtimeDigest, "stateDirectory": s.cfg.Dir, "capabilities": []string{"single-pack", "manual", "api", "durable-history", "release-tests", "connected-inputs", "mapping-v2-mcp", "verified-input-lineage", "local-schedules", "event-delivery", "record-delivery", "local-file-triggers", "google-cloud-triggers", "gateway-automatic-inputs", "activity-journal", "run-diagnostics", "journal-backward", "job-upgrades", "job-upgrade-receipts", "dialect-format-2.0.0", "dialect-format-3.0.0", "immutable-input-profile-registration"}}) + write(w, 200, map[string]any{"conversionContracts": ConversionCapabilities("preview", "preparation"), "healthy": !s.unhealthy.Load(), "schemaVersion": "1", "workspace": s.cfg.Workspace, "owner": s.cfg.Owner, "runtimeDigest": s.runtimeDigest, "stateDirectory": s.cfg.Dir, "capabilities": []string{"single-pack", "manual", "api", "durable-history", "release-tests", "connected-inputs", "mapping-v2-mcp", "verified-input-lineage", "local-schedules", "event-delivery", "record-delivery", "local-file-triggers", "google-cloud-triggers", "gateway-automatic-inputs", "activity-journal", "run-diagnostics", "journal-backward", "job-upgrades", "job-upgrade-receipts", "dialect-format-2.0.0", "dialect-format-3.0.0", "immutable-input-profile-registration"}}) }) mux.HandleFunc("POST /v1/inputs/next", func(w http.ResponseWriter, r *http.Request) { var input Input @@ -307,7 +331,12 @@ func (s *Service) Handler(token string) http.Handler { write(w, 403, map[string]string{"message": "Use the authenticated Desk API."}) return } - mux.ServeHTTP(w, r) + adapted, err := conversionRequest(r) + if err != nil { + failure(w, err) + return + } + mux.ServeHTTP(selectedReplyWriter(w, adapted), adapted) }) } func (s *Service) list(w http.ResponseWriter, r *http.Request, kind, job string) { diff --git a/internal/runner/mapping_v2.go b/internal/runner/mapping_v2.go index 05d6e32..71720cf 100644 --- a/internal/runner/mapping_v2.go +++ b/internal/runner/mapping_v2.go @@ -9,6 +9,7 @@ import ( "time" "github.com/Judgment-Pack/judgment-pack-runner/internal/derivation" + "github.com/Judgment-Pack/judgment-pack-runner/internal/retainedcolumns" ) func (s *Service) normalizeInput(i Input) (Input, error) { @@ -43,6 +44,9 @@ func writeTarget(root map[string]any, pointer string, value any) { at[parts[len(parts)-1]] = value } func copyClaim(c CopyMapping, artifact any) (derivedClaim, error) { + if hasColumnCopy(c) { + return derivedClaim{}, withCode(codeReadFailed, errors.New("retained columns require original case bytes and asserted source context")) + } facts := map[string]any{} evidence := map[string]string{} basis := []string{} @@ -183,6 +187,15 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool if offline { admitProfiles = verifierProfileKeys } + if e := inputConversion(i).validate("document-validation", "preview", "preparation"); e != nil { + return i, e + } + if i.Preparation != nil && !sameConversion(i.Preparation.ConversionContract, inputConversion(i)) { + return i, conversionFailure("capability-unsupported") + } + if inputConversion(i) != nil && len(encode(profiles)) > columnProfilesLimit { + return i, codedProblem(codeOverBound, "profiles exceed selected limit") + } profileKeys, e := admitProfiles(profiles) if e != nil { return i, e @@ -204,9 +217,21 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool if len(c.Snapshot) > 0 { return i, inputProblem("v2 uses named sources, not the v1 snapshot") } - if len(encode(c)) > MaxBody { + if err := columnInputBounds(c); err != nil { + return i, err + } + if !hasColumnMapping(m) && len(encode(c)) > MaxBody { return i, inputProblem("v2 input exceeds aggregate limit") } + if err := preflightColumnSources(m, profiles); err != nil { + return i, inputProblemOf(err.Error(), err) + } + // This carrier is only admitted on an explicitly bound Draft producer read. + for _, source := range m.Sources { + if c.Sources[source.Name].RetainedResponseJSON != "" && (source.Read.Copy == nil || !hasColumnCopy(*source.Read.Copy)) { + return i, sourceFailure(source.Name, withCode(codeMalformed, errors.New("retainedResponseJson is only admitted for a Draft producer read"))) + } + } if err := preflightPreparation(m, profiles, !offline); err != nil { return i, inputProblemOf(err.Error(), err) } @@ -266,10 +291,21 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool if c.MappingDigest != "" && c.MappingDigest != hash { return i, inputProblem("mapping digest changed") } - if len(c.Case) == 0 { - c.Case = json.RawMessage(`{}`) + if hasColumnCase(m) && m.Profile != "base" { + return i, codedProblem(codeMalformed, "retained case conversions require an explicit Draft base profile") + } + if c.RetainedCaseJSON != "" && (!hasColumnCase(m) || m.Profile != "base") { + return i, codedProblem(codeMalformed, "retainedCaseJson requires an explicit Draft Base case conversion") + } + caseRaw, e := columnCaseBytes(c) + if e != nil { + return i, inputProblemOf(e.Error(), e) + } + if len(caseRaw) == 0 { + caseRaw = json.RawMessage(`{}`) + c.Case = caseRaw } - caseValue, e := readInputJSON(c.Case) + caseValue, e := readInputJSON(caseRaw) if e != nil { return i, inputProblem("invalid case JSON") } @@ -280,7 +316,7 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool evidence := map[string]string{} caseParams := map[string]any{"runAt": at.UTC().Format("2006-01-02T15:04:05Z")} caseTypes := map[string]string{"runAt": "timestamp"} - prep := &Preparation{Version: m.Version, VerifiedAt: at.UTC().Format("2006-01-02T15:04:05Z"), MappingDigest: hash, Verification: "verified acquisitions; session sealing and input truth are not established", Cites: []Citation{}, Lineage: []TargetLineage{}, Outcomes: []SourceOutcome{}} + prep := &Preparation{ConversionContract: c.ConversionContract, Version: m.Version, VerifiedAt: at.UTC().Format("2006-01-02T15:04:05Z"), MappingDigest: hash, Verification: "verified acquisitions; session sealing and input truth are not established", Cites: []Citation{}, Lineage: []TargetLineage{}, Outcomes: []SourceOutcome{}} claims := map[string]derivedClaim{} generated := map[string]bool{} used := map[string]bool{} @@ -316,7 +352,7 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool // reconciliation reads (spec/dialect.md §6.4). records := map[string]any{} var admissionFailure error - merge := func(name, class string, gen bool, read SourceRead, claim derivedClaim, deps []Dependency, cite *Citation, receipts *[]Citation, calc *CalculationLineage) error { + merge := func(name, class string, gen bool, read SourceRead, claim derivedClaim, deps []Dependency, cite *Citation, receipts *[]Citation, calc *CalculationLineage, transformations map[string]*retainedcolumns.Transformation) error { ft, et, err := readTargets(read) if err != nil { return err @@ -342,7 +378,7 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool if present { writeTarget(facts, f.Target, v) } - prep.Lineage = append(prep.Lineage, TargetLineage{f.Target, "fact", name, class, gen, present, claim.Status, claim.Reason, rd, claim.Basis, candidateFrom(read, f.Target), deps, cite, receipts, calc}) + prep.Lineage = append(prep.Lineage, TargetLineage{Target: f.Target, Kind: "fact", Source: name, Class: class, GeneratedInfluence: gen, Present: present, Status: claim.Status, Reason: claim.Reason, ReadDigest: rd, Basis: claim.Basis, Candidates: candidateFrom(read, f.Target), Dependencies: deps, Receipt: cite, Receipts: receipts, Calculation: calc, ColumnTransformation: transformations["fact:"+f.Target]}) } for _, f := range et { if !admitted(m, "evidence", f.Requirement, class, gen) { @@ -358,7 +394,7 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool if present { evidence[f.Requirement] = v } - prep.Lineage = append(prep.Lineage, TargetLineage{f.Requirement, "evidence", name, class, gen, present, claim.Status, claim.Reason, rd, claim.Basis, candidateFrom(read, f.Requirement), deps, cite, receipts, calc}) + prep.Lineage = append(prep.Lineage, TargetLineage{Target: f.Requirement, Kind: "evidence", Source: name, Class: class, GeneratedInfluence: gen, Present: present, Status: claim.Status, Reason: claim.Reason, ReadDigest: rd, Basis: claim.Basis, Candidates: candidateFrom(read, f.Requirement), Dependencies: deps, Receipt: cite, Receipts: receipts, Calculation: calc, ColumnTransformation: transformations["evidence:"+f.Requirement]}) } return nil } @@ -374,14 +410,23 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool caseTypes[n] = p.Type } read := SourceRead{Copy: &CopyMapping{m.Case.Facts, m.Case.Evidence}} - claim, err := applyRead(read, caseValue, caseParams) + claim, transformations, err := applyColumnCase(read, caseRaw, caseValue, caseParams, c.ConversionContract) if err != nil { return i, sourceFailure("case", err) } - if err = merge("case", "asserted", false, read, claim, nil, nil, nil, nil); err != nil { + if err = merge("case", "asserted", false, read, claim, nil, nil, nil, nil, transformations); err != nil { return i, sourceFailure("case", err) } prep.Outcomes = append(prep.Outcomes, SourceOutcome{Name: "case", Status: claim.Status, Reason: claim.Reason, Parameters: encode(caseParams), Claim: encode(claim)}) + if hasColumnCase(m) { + retainColumnCase(c, caseRaw) + if err := columnInputBounds(c); err != nil { + return i, err + } + // A planned acquisition may checkpoint the original request pointer. Retain + // exact case custody before that effect, without a second serialized copy. + retainColumnCase(i.Source, caseRaw) + } } for _, source := range m.Sources { fail := func(err error) (Input, error) { return i, sourceFailure(source.Name, err) } @@ -441,6 +486,8 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool var cite *Citation var receipts *[]Citation var calc *CalculationLineage + var transformations map[string]*retainedcolumns.Transformation + var carrier *retainedColumnCarrier if unavailable { if present && research { return fail(researchFail(codeUnexpected, "a skipped dependent source must not supply a response")) @@ -502,7 +549,7 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool } if !present { if planning { - return i, &acquisitionNeeded{PlannedSource{Name: source.Name, Kind: source.Kind, Provider: source.Provider, Profile: source.Profile, Source: profile.Source, Arguments: args}} + return i, &acquisitionNeeded{PlannedSource{retainResponse: source.Read.Copy != nil && hasColumnCopy(*source.Read.Copy), Name: source.Name, Kind: source.Kind, Provider: source.Provider, Profile: source.Profile, Source: profile.Source, Arguments: args}} } return fail(withCode(codeMissing, errors.New("required source response is missing"))) } @@ -538,11 +585,39 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool if len(value.Snapshot) > 0 { return fail(errors.New("operations must supply a response only")) } - result, citation, err := verifyAcquisition(value.Response, args, profile, profileKeys[profile.ID], at, source.MaxAge) - if err != nil { - return fail(err) + var result json.RawMessage + if source.Read.Copy != nil && hasColumnCopy(*source.Read.Copy) { + raw, err := columnRetainedResponse(value, c.ConversionContract) + if err != nil { + return fail(err) + } + verified, citation, err := verifyRetainedAcquisition(raw, args, profile, profileKeys[profile.ID], at, source.MaxAge, c.ConversionContract) + if err != nil { + return fail(err) + } + parsed, err := readColumnCarrier(verified.Raw, c.ConversionContract) + if err != nil { + return fail(err) + } + if err = validateColumnProducerRelation(parsed); err != nil { + return fail(err) + } + carrier = &parsed + cite = citation + result = verified.Canonical + value = SourceValue{RetainedResponseJSON: string(raw)} + c.Sources[source.Name] = value + // The sole retained text and its JSON escaping are real artifact bytes. + if err := columnInputBounds(c); err != nil { + return fail(err) + } + } else { + var err error + result, cite, err = verifyAcquisition(value.Response, args, profile, profileKeys[profile.ID], at, source.MaxAge) + if err != nil { + return fail(err) + } } - cite = citation artifact, e = readInputJSON(result) if e != nil { return fail(e) @@ -568,6 +643,15 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool } if calc != nil && calc.Status != calculationComputed { claim, e = calculationUnknown(source.Read, calc.Status) + } else if carrier != nil { + claim, transformations, e = applyColumnCopy(source.Read, artifact, func(_ string, leaf json.RawMessage, availability bool) (*retainedcolumns.Transformation, error) { + plan, err := columnPlan(leaf, availability) + if err != nil { + return nil, err + } + t, err := retainedcolumns.Derive(plan, carrier.Frame) + return t, columnError(err) + }, c.ConversionContract) } else { claim, e = deriveRead(source.Read, artifact, params) } @@ -575,7 +659,7 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool return fail(e) } } - if e = merge(source.Name, class, gen, source.Read, claim, deps, cite, receipts, calc); e != nil { + if e = merge(source.Name, class, gen, source.Read, claim, deps, cite, receipts, calc, transformations); e != nil { return fail(e) } // A verified source that was not skipped had its acquisition's times @@ -607,6 +691,9 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool if len(recipes) == 0 { sort.SliceStable(prep.Cites, func(a, b int) bool { return prep.Cites[a].CallIndex < prep.Cites[b].CallIndex }) } + if hasColumnMapping(m) && len(encode(prep)) > preparationLimit(Input{Source: c}) { + return i, codedProblem(codeOverBound, "retained-column preparation exceeds base limit") + } c.MappingDigest = hash mapped := Input{Facts: encode(facts), Source: c, Preparation: prep} for _, l := range prep.Lineage { diff --git a/internal/runner/mapping_v2_calculation_test.go b/internal/runner/mapping_v2_calculation_test.go index 62487cc..95b6978 100644 --- a/internal/runner/mapping_v2_calculation_test.go +++ b/internal/runner/mapping_v2_calculation_test.go @@ -164,7 +164,7 @@ func TestCalculatorAnswerIsHeldToItsBinding(t *testing.T) { func TestCalculationThatCouldNotComputeIsUnknownUnderItsOwnReason(t *testing.T) { input, p, key, at := calculatorFixture(t) // A source that needs the converted amount is skipped when there is none. - input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: "ledger", Kind: "operation", Profile: "vendors", ProfileDigest: "", MaxAge: 300, Parameters: map[string]Parameter{"converted": {From: "fx", Pointer: "/invoice/converted", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"converted":{"$param":"converted"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/ledger", "/ledger"}}, Evidence: []EvidenceMapping{}}}}) + input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: "ledger", Kind: "operation", Profile: "vendors", ProfileDigest: "", MaxAge: 300, Parameters: map[string]Parameter{"converted": {From: "fx", Pointer: "/invoice/converted", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"converted":{"$param":"converted"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/ledger", Source: "/ledger"}}, Evidence: []EvidenceMapping{}}}}) vendors, _ := testProfile(t) input.Source.Mapping.Sources[1].ProfileDigest = profileHash(vendors) profiles := []InputProfile{p, vendors} @@ -221,7 +221,7 @@ func TestACalculatedSourceSkippedBehindAnotherCarriesNoCalculation(t *testing.T) input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: "tax", Kind: "operation", Profile: tax.ID, ProfileDigest: profileHash(tax), MaxAge: 300, Parameters: map[string]Parameter{"converted": {From: "fx", Pointer: "/invoice/converted", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"tax","arguments":{"amount":{"$param":"converted"}}}`), - Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/invoice/tax", "/tax"}}, Evidence: []EvidenceMapping{}}}, + Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/invoice/tax", Source: "/tax"}}, Evidence: []EvidenceMapping{}}}, Calculation: &CalculationBinding{Inputs: map[string]string{"amount": "converted"}, Tables: map[string]int{}}}) profiles := []InputProfile{p, tax} computed := cloneInput(input) @@ -360,7 +360,7 @@ func TestCalculatorProfileAndBindingGoTogetherBeforeAnyAcquisition(t *testing.T) }) } t.Run("a binding on a selected file", func(t *testing.T) { - m := InputMapping{Version: 2, Sources: []MappingSource{{Name: "file", Kind: "selected-file", Provider: "local-file", Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/x", "/x"}}, Evidence: []EvidenceMapping{}}}, Calculation: &CalculationBinding{Inputs: map[string]string{}, Tables: map[string]int{}}}}} + m := InputMapping{Version: 2, Sources: []MappingSource{{Name: "file", Kind: "selected-file", Provider: "local-file", Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/x", Source: "/x"}}, Evidence: []EvidenceMapping{}}}, Calculation: &CalculationBinding{Inputs: map[string]string{}, Tables: map[string]int{}}}}} if e := m.validate(); e == nil || !strings.Contains(e.Error(), "only an operation") { t.Fatal(e) } @@ -415,7 +415,7 @@ func TestCalculatedRunIsEvaluatedAndVerifiedOffline(t *testing.T) { cfg.InputProfiles = []InputProfile{p} // The real pack reads one object and two evidence requirements; the // calculator answers with them beside its calculation member. - input.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/request", "/facts/request"}}, Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}, {"sponsor-endorsement", "/evidence/sponsor-endorsement"}}}} + input.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/request", Source: "/facts/request"}}, Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/evidence/sponsor-endorsement"}}}} input.Source.Mapping.UnmappedEvidence = []string{"sensitive-data-approvals"} result := map[string]any{"calculation": calculation(at)} _ = json.Unmarshal(encode(sample()), &result) @@ -473,8 +473,8 @@ func calculatedSignedExport(t *testing.T, status string, change ...func(*Input)) input, profile, key, at := calculatorFixture(t) cfg.InputProfiles = []InputProfile{profile} input.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{ - Facts: []FactMapping{{"/request", "/facts/request"}}, - Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}, {"sponsor-endorsement", "/evidence/sponsor-endorsement"}}, + Facts: []FactMapping{{Target: "/request", Source: "/facts/request"}}, + Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/evidence/sponsor-endorsement"}}, }} input.Source.Mapping.UnmappedEvidence = []string{"sensitive-data-approvals"} calc := calculation(at) @@ -633,7 +633,7 @@ func TestAPreparationKeepsItsNumbersAsWritten(t *testing.T) { t.Fatalf("%s was taken as an integer parameter: %v", literal, err) } copied := cloneInput(input) - copied.Source.Mapping.Case.Facts = []FactMapping{{"/count", "/count"}} + copied.Source.Mapping.Case.Facts = []FactMapping{{Target: "/count", Source: "/count"}} copied.Source.Case = json.RawMessage(`{"amount":"1200.00","currency":"EUR","count":` + literal + `}`) if _, err := normalizeV2(copied, []InputProfile{p}, at); err == nil || !strings.Contains(err.Error(), literal) { t.Fatalf("%s was copied into a claim: %v", literal, err) diff --git a/internal/runner/mapping_v2_export.go b/internal/runner/mapping_v2_export.go index 3f9dbe7..948eb5b 100644 --- a/internal/runner/mapping_v2_export.go +++ b/internal/runner/mapping_v2_export.go @@ -34,8 +34,8 @@ func releaseDigest(r Release) string { b, _ := canonical(encode(r)); return dige // come from a separate trusted channel, never implicitly from the export. // The result is an input-lineage finding, not verification of policy truth, // sealed-session completeness, or a re-execution of Runtime. -func VerifyRun(raw []byte, profiles []InputProfile, trustedReleaseDigest string) error { - _, e := VerifyInputs(raw, profiles, trustedReleaseDigest) +func VerifyRun(raw []byte, profiles []InputProfile, trustedReleaseDigest string, selection ...*ConversionContract) error { + _, e := VerifyInputs(raw, profiles, trustedReleaseDigest, selectedConversion(selection)) return e } @@ -105,9 +105,9 @@ func (v VerifiedRun) Checked() bool { return v.checked } // counted from the recomputed lineage, which is the retained lineage: an export // whose lineage differs from the recomputation is refused. So is a mapping-v2 // export whose record's members cannot be read for its binding. -func VerifyInputs(raw []byte, profiles []InputProfile, trustedReleaseDigest string) (VerifiedRun, error) { +func VerifyInputs(raw []byte, profiles []InputProfile, trustedReleaseDigest string, selection ...*ConversionContract) (VerifiedRun, error) { var judged []judgedFreshness - b, prepared, e := verifyInputs(raw, profiles, trustedReleaseDigest, &judged) + b, prepared, e := verifyInputs(raw, profiles, trustedReleaseDigest, &judged, selectedConversion(selection)) // A disposition that differs from the audit record is a finding beside // the preparation's verification, which depends on nothing in the // disposition: when the preparation verified, its checked report is kept @@ -169,8 +169,8 @@ var ErrDispositionDiffers = errors.New("the retained disposition differs from a // that was hashed is the one run. The evaluation is a rehearsal in a private // temporary directory, removed after, so nothing is written to a runner's store // and no audit record is appended; a Runtime that leaves one anyway is refused. -func VerifyDisposition(ctx context.Context, raw []byte, profiles []InputProfile, trustedReleaseDigest, runtime string) error { - v, e := VerifyInputs(raw, profiles, trustedReleaseDigest) +func VerifyDisposition(ctx context.Context, raw []byte, profiles []InputProfile, trustedReleaseDigest, runtime string, selection ...*ConversionContract) error { + v, e := VerifyInputs(raw, profiles, trustedReleaseDigest, selectedConversion(selection)) if e != nil { return e } @@ -195,6 +195,9 @@ func (v VerifiedRun) Disposition(ctx context.Context, runtime string) error { if hash != b.Release.RuntimeDigest { return errors.New("this executable is not the Runtime the release froze") } + if e := runtimeConversionAdmission(ctx, bin, dir, inputConversion(prepared)); e != nil { + return e + } work := filepath.Join(dir, "evaluation") out, _, _, _, e := evaluateWith(ctx, bin, b.Release, Input{Facts: prepared.Facts, Evidence: prepared.Evidence}, work, true, signingInputs{}) if e != nil { @@ -230,13 +233,23 @@ func member(raw json.RawMessage, path ...string) json.RawMessage { // verifyInputs is VerifyRun's check. It returns the export and the inputs it // recomputed, which a re-execution evaluates, and lists in judged what the // recomputation judged against the export's instant. -func verifyInputs(raw []byte, profiles []InputProfile, trustedReleaseDigest string, judged *[]judgedFreshness) (b VerificationBundle, prepared Input, e error) { - if len(raw) > MaxExportSize { +func verifyInputs(raw []byte, profiles []InputProfile, trustedReleaseDigest string, judged *[]judgedFreshness, selection ...*ConversionContract) (b VerificationBundle, prepared Input, e error) { + limit, err := ConversionExportLimit(selectedConversion(selection)) + if err != nil { + return b, prepared, err + } + if len(raw) > limit { + if selectedConversion(selection) != nil { + return b, prepared, errors.New("verification bundle exceeds selected wire limit") + } return b, prepared, errors.New("verification bundle exceeds 8 MiB") } if e = strictJSON(raw, &b); e != nil { return b, prepared, e } + if !sameConversion(inputConversion(b.Run.Input), selectedConversion(selection)) { + return b, prepared, conversionFailure("capability-unsupported") + } if e = exportWithinLimits(raw, b); e != nil { return b, prepared, e } diff --git a/internal/runner/mapping_v2_freshness_test.go b/internal/runner/mapping_v2_freshness_test.go index 35001f3..ebdaa03 100644 --- a/internal/runner/mapping_v2_freshness_test.go +++ b/internal/runner/mapping_v2_freshness_test.go @@ -41,7 +41,7 @@ func TestFreshnessJudgedAgainstTheInstantIsNamedSourceBySource(t *testing.T) { }) t.Run("a calculator read by a copy", func(t *testing.T) { i := cloneInput(input) - i.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/invoice/converted", "/converted"}}, Evidence: []EvidenceMapping{}}} + i.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/invoice/converted", Source: "/converted"}}, Evidence: []EvidenceMapping{}}} got, prepared := freshnessOf(t, i, []InputProfile{p}, at) if string(encode(got)) != want(`[{"source":"fx","checks":["acquisition","calculation"],"targets":1}]`) { t.Fatal(string(encode(got))) @@ -60,7 +60,7 @@ func TestFreshnessJudgedAgainstTheInstantIsNamedSourceBySource(t *testing.T) { }) t.Run("a calculator that could not compute, and a source skipped behind it", func(t *testing.T) { i := cloneInput(input) - i.Source.Mapping.Sources = append(i.Source.Mapping.Sources, MappingSource{Name: "ledger", Kind: "operation", Profile: "vendors", MaxAge: 300, Parameters: map[string]Parameter{"converted": {From: "fx", Pointer: "/invoice/converted", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"converted":{"$param":"converted"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/ledger", "/ledger"}}, Evidence: []EvidenceMapping{}}}}) + i.Source.Mapping.Sources = append(i.Source.Mapping.Sources, MappingSource{Name: "ledger", Kind: "operation", Profile: "vendors", MaxAge: 300, Parameters: map[string]Parameter{"converted": {From: "fx", Pointer: "/invoice/converted", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"converted":{"$param":"converted"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/ledger", Source: "/ledger"}}, Evidence: []EvidenceMapping{}}}}) vendors, _ := testProfile(t) i.Source.Mapping.Sources[1].ProfileDigest = profileHash(vendors) c := calculation(at) @@ -74,7 +74,7 @@ func TestFreshnessJudgedAgainstTheInstantIsNamedSourceBySource(t *testing.T) { }) t.Run("a local file beside an acquired calculator", func(t *testing.T) { i := cloneInput(input) - local := MappingSource{Name: "lookup", Kind: "selected-file", Provider: "local-file", Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/vendor/id", "/id"}}, Evidence: []EvidenceMapping{}}}} + local := MappingSource{Name: "lookup", Kind: "selected-file", Provider: "local-file", Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/vendor/id", Source: "/id"}}, Evidence: []EvidenceMapping{}}}} i.Source.Mapping.Sources = append([]MappingSource{local}, i.Source.Mapping.Sources...) i.Source.Sources["lookup"] = SourceValue{Snapshot: fileInput(`{"id":7}`, InputMapping{Version: 1, Provider: "local-file"}).Source.Snapshot} got, prepared := freshnessOf(t, i, []InputProfile{p}, at) @@ -88,7 +88,7 @@ func TestFreshnessJudgedAgainstTheInstantIsNamedSourceBySource(t *testing.T) { t.Run("a case-only run", func(t *testing.T) { i := cloneInput(input) i.Source.Mapping.Sources = nil - i.Source.Mapping.Case.Facts = []FactMapping{{"/amount", "/amount"}} + i.Source.Mapping.Case.Facts = []FactMapping{{Target: "/amount", Source: "/amount"}} i.Source.Sources = map[string]SourceValue{} if got, _ := freshnessOf(t, i, nil, at); got != nil { t.Fatal(string(encode(got))) diff --git a/internal/runner/mapping_v2_localfile_params_test.go b/internal/runner/mapping_v2_localfile_params_test.go index 22cec57..292d371 100644 --- a/internal/runner/mapping_v2_localfile_params_test.go +++ b/internal/runner/mapping_v2_localfile_params_test.go @@ -14,7 +14,7 @@ func TestALocalFileMayDeclareSourceParameters(t *testing.T) { input, p, key, at := calculatorFixture(t) local := MappingSource{Name: "lookup", Kind: "selected-file", Provider: "local-file", Parameters: map[string]Parameter{"converted": {From: "fx", Pointer: "/invoice/converted", Type: "string"}}, - Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/vendor/id", "/id"}}, Evidence: []EvidenceMapping{}}}} + Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/vendor/id", Source: "/id"}}, Evidence: []EvidenceMapping{}}}} input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, local) snapshot := fileInput(`{"id":7}`, InputMapping{Version: 1, Provider: "local-file"}).Source.Snapshot diff --git a/internal/runner/mapping_v2_next.go b/internal/runner/mapping_v2_next.go index d63f742..0593063 100644 --- a/internal/runner/mapping_v2_next.go +++ b/internal/runner/mapping_v2_next.go @@ -10,12 +10,14 @@ import ( // PlannedSource is an instruction to acquire, not permission to evaluate. // The endpoint is read-only: the caller fetches and submits receipts for checking. type PlannedSource struct { - Name string `json:"name"` - Kind string `json:"kind"` - Provider string `json:"provider,omitempty"` - Profile string `json:"profile,omitempty"` - Source string `json:"source,omitempty"` - Arguments json.RawMessage `json:"arguments,omitempty"` + retainResponse bool + ConversionContract *ConversionContract `json:"conversionContract,omitempty"` + Name string `json:"name"` + Kind string `json:"kind"` + Provider string `json:"provider,omitempty"` + Profile string `json:"profile,omitempty"` + Source string `json:"source,omitempty"` + Arguments json.RawMessage `json:"arguments,omitempty"` } type InputPlan struct { Next *PlannedSource `json:"next,omitempty"` @@ -34,6 +36,7 @@ func nextInput(input Input, profiles []InputProfile, at time.Time) (InputPlan, e mapped, err := normalizeV2Mode(input, profiles, at, true) var needed *acquisitionNeeded if errors.As(err, &needed) { + needed.PlannedSource.ConversionContract = inputConversion(input) return InputPlan{Next: &needed.PlannedSource}, nil } if err != nil { diff --git a/internal/runner/mapping_v2_next_test.go b/internal/runner/mapping_v2_next_test.go index d14c6dc..e85aaf4 100644 --- a/internal/runner/mapping_v2_next_test.go +++ b/internal/runner/mapping_v2_next_test.go @@ -7,7 +7,7 @@ import ( func TestV2PlanningVerifiesPrefixBeforeChaining(t *testing.T) { input, p, key, at := v2Fixture(t) - input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: "detail", Kind: "operation", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Parameters: map[string]Parameter{"description": {From: "vendor", Pointer: "/vendor/description", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"description":{"$param":"description"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/detail", "/detail"}}, Evidence: []EvidenceMapping{}}}}) + input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: "detail", Kind: "operation", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Parameters: map[string]Parameter{"description": {From: "vendor", Pointer: "/vendor/description", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"description":{"$param":"description"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/detail", Source: "/detail"}}, Evidence: []EvidenceMapping{}}}}) prefix := cloneInput(input) prefix.Source.Sources = nil plan, err := nextInput(prefix, []InputProfile{p}, at) diff --git a/internal/runner/mapping_v2_proof.go b/internal/runner/mapping_v2_proof.go index a369a17..6e38395 100644 --- a/internal/runner/mapping_v2_proof.go +++ b/internal/runner/mapping_v2_proof.go @@ -76,6 +76,9 @@ func validateProfileKeys(profiles []InputProfile) (map[string]ed25519.PublicKey, ids := map[string]bool{} keys := map[string]ed25519.PublicKey{} for _, p := range profiles { + if e := validateConversionCapabilities(p.ConversionContracts); e != nil { + return nil, e + } // §12's bounds on an endpoint scope come first, before every limit // Runner sets on an installation's profile, so that a scope over // them is input-over-bound on every path. @@ -99,6 +102,11 @@ func validateProfileKeys(profiles []InputProfile) (map[string]ed25519.PublicKey, if c := p.Calculator; c != nil && (p.Class != "record" || p.Shape != "mcp" || c.Name == "" || len(c.Name) > 256 || c.Version == "" || len(c.Version) > 256) { return nil, errors.New("a calculator profile is a record MCP profile naming its calculator and version") } + if p.RetainedColumnProducer != nil { + if e := columnProducerProfile(p); e != nil { + return nil, e + } + } if e := researchDeclarationForm(p); e != nil { return nil, e } @@ -121,6 +129,9 @@ func validateProfileKeys(profiles []InputProfile) (map[string]ed25519.PublicKey, } func profileFor(s MappingSource, profiles []InputProfile) (InputProfile, error) { for _, p := range profiles { + if e := validateConversionCapabilities(p.ConversionContracts); e != nil { + return InputProfile{}, e + } if p.ID == s.Profile { if profileHash(p) != s.ProfileDigest { return p, withCode(codeMismatch, errors.New("trusted input profile changed; review a new release")) @@ -154,7 +165,7 @@ func profileFor(s MappingSource, profiles []InputProfile) (InputProfile, error) // acquisitionTimes gives, with no rule between the two (runner #98). // Its sessionId is a string of any content (§5.2 does not hold it to the // gateway's token form), read and cited as given (runner #99). -func verifyAcquisition(raw, args []byte, p InputProfile, public ed25519.PublicKey, at time.Time, maxAge int) (json.RawMessage, *Citation, error) { +func verifyAcquisition(raw, args []byte, p InputProfile, public ed25519.PublicKey, at time.Time, maxAge int, selection ...*ConversionContract) (json.RawMessage, *Citation, error) { fail := func(s string) (json.RawMessage, *Citation, error) { return nil, nil, withCode(codeInvalid, errors.New(s)) } @@ -171,6 +182,9 @@ func verifyAcquisition(raw, args []byte, p InputProfile, public ed25519.PublicKe return malformed("malformed acquisition response") } result, e := proofCanon(response.Result) + if selectedConversion(selection) != nil { + result, e = scopedJSON(response.Result, columnCarrierLimit) + } if len(response.Result) == 0 { return malformed("result is outside the gateway canonical domain") } diff --git a/internal/runner/mapping_v2_sessions_test.go b/internal/runner/mapping_v2_sessions_test.go index 86ae18a..18a88a2 100644 --- a/internal/runner/mapping_v2_sessions_test.go +++ b/internal/runner/mapping_v2_sessions_test.go @@ -32,7 +32,7 @@ func threeSources(t *testing.T) (Input, InputProfile, ed25519.PrivateKey, time.T t.Helper() input, p, key, at := v2Fixture(t) for _, name := range []string{"detail", "standing"} { - input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: name, Kind: "operation", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"of":"` + name + `"}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/" + name, "/" + name}}, Evidence: []EvidenceMapping{}}}}) + input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: name, Kind: "operation", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"of":"` + name + `"}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/" + name, Source: "/" + name}}, Evidence: []EvidenceMapping{}}}}) } return input, p, key, at, map[string][]byte{ "vendor": []byte(`{"tool":"execute_sql","arguments":{"sql":"SELECT * FROM vendors WHERE id = 7"}}`), @@ -358,7 +358,7 @@ func TestV2OneAcquisitionAloneIsTakenAtAnyIndex(t *testing.T) { // skipped for what it depends on, was taken before and is taken the same. func TestV2ASkippedOperationLeavesOneAcquisition(t *testing.T) { input, p, key, at := v2Fixture(t) - input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: "detail", Kind: "operation", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Parameters: map[string]Parameter{"description": {From: "vendor", Pointer: "/vendor/description", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"description":{"$param":"description"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/detail", "/detail"}}, Evidence: []EvidenceMapping{}}}}) + input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: "detail", Kind: "operation", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Parameters: map[string]Parameter{"description": {From: "vendor", Pointer: "/vendor/description", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"description":{"$param":"description"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/detail", Source: "/detail"}}, Evidence: []EvidenceMapping{}}}}) input.Source.Sources["vendor"] = SourceValue{Response: signResponseIn(t, p, key, []byte(`{"tool":"execute_sql","arguments":{"sql":"SELECT * FROM vendors WHERE id = 7"}}`), []byte(`{"id":8,"description":"of another vendor"}`), at, "job.a", 3)} got, e := normalizeV2(input, []InputProfile{p}, at) if e != nil || len(got.Preparation.Cites) != 1 || got.Preparation.Outcomes[2].Reason != "dependency-unavailable" { diff --git a/internal/runner/mapping_v2_test.go b/internal/runner/mapping_v2_test.go index 5299278..3165da6 100644 --- a/internal/runner/mapping_v2_test.go +++ b/internal/runner/mapping_v2_test.go @@ -139,7 +139,7 @@ func TestV2VerifiedProjectionAndAdversarialMutations(t *testing.T) { } func TestV2WrongSubjectCannotFeedChainedRequest(t *testing.T) { input, p, key, at := v2Fixture(t) - input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: "detail", Kind: "operation", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Parameters: map[string]Parameter{"description": {From: "vendor", Pointer: "/vendor/description", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"description":{"$param":"description"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/detail", "/detail"}}, Evidence: []EvidenceMapping{}}}}) + input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: "detail", Kind: "operation", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Parameters: map[string]Parameter{"description": {From: "vendor", Pointer: "/vendor/description", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"description":{"$param":"description"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/detail", Source: "/detail"}}, Evidence: []EvidenceMapping{}}}}) input.Source.Sources["vendor"] = SourceValue{Response: signResponse(t, p, key, []byte(`{"tool":"execute_sql","arguments":{"sql":"SELECT * FROM vendors WHERE id = 7"}}`), []byte(`{"id":8,"description":"wrong vendor raw data"}`), at, 0)} got, e := normalizeV2(input, []InputProfile{p}, at) if e != nil { @@ -169,7 +169,7 @@ func TestV2GeneratedAdmissionAndPropagation(t *testing.T) { second.PublicKey = p.PublicKey second.ID = "second" second.Source = "second/live" - input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: "detail", Kind: "operation", Profile: second.ID, ProfileDigest: profileHash(second), MaxAge: 300, Parameters: map[string]Parameter{"description": {From: "vendor", Pointer: "/vendor/description", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"description":{"$param":"description"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/detail", "/detail"}}, Evidence: []EvidenceMapping{}}}}) + input.Source.Mapping.Sources = append(input.Source.Mapping.Sources, MappingSource{Name: "detail", Kind: "operation", Profile: second.ID, ProfileDigest: profileHash(second), MaxAge: 300, Parameters: map[string]Parameter{"description": {From: "vendor", Pointer: "/vendor/description", Type: "string"}}, Arguments: json.RawMessage(`{"tool":"lookup","arguments":{"description":{"$param":"description"}}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/detail", Source: "/detail"}}, Evidence: []EvidenceMapping{}}}}) input.Source.Sources["detail"] = SourceValue{Response: signResponse(t, second, key, []byte(`{"tool":"lookup","arguments":{"description":"a verified vendor"}}`), []byte(`{"detail":"record chosen by model output"}`), at, 1)} if _, e = normalizeV2(input, []InputProfile{p, second}, at); e == nil { t.Fatal("generated influence laundered through record") @@ -203,7 +203,7 @@ func TestV2StrictRulesTemplatesAndNumericDomain(t *testing.T) { "unknown-rule-field": func(i *Input) { i.Source.Mapping.Sources[0].Read.Rule = append([]byte(`{"extra":1,`), vendorRule()[1:]...) }, - "overlap": func(i *Input) { i.Source.Mapping.Case.Facts = []FactMapping{{"/vendor", "/id"}} }, + "overlap": func(i *Input) { i.Source.Mapping.Case.Facts = []FactMapping{{Target: "/vendor", Source: "/id"}} }, "reserved-param": func(i *Input) { i.Source.Mapping.Case.Parameters["runAt"] = Parameter{Pointer: "/id", Type: "integer"} }, "fractional-param": func(i *Input) { i.Source.Case = []byte(`{"id":7.0}`) }, } { @@ -215,7 +215,7 @@ func TestV2StrictRulesTemplatesAndNumericDomain(t *testing.T) { } }) } - local := fileInput(`{"amount":1.25,"zero":0,"no":false,"nil":null}`, InputMapping{Version: 1, Provider: "local-file", Facts: []FactMapping{{"/amount", "/amount"}}, Evidence: []EvidenceMapping{}}) + local := fileInput(`{"amount":1.25,"zero":0,"no":false,"nil":null}`, InputMapping{Version: 1, Provider: "local-file", Facts: []FactMapping{{Target: "/amount", Source: "/amount"}}, Evidence: []EvidenceMapping{}}) if _, e := normalizeInput(local); e != nil { t.Fatal("v1 decimal compatibility", e) } @@ -224,7 +224,7 @@ func TestV2StrictRulesTemplatesAndNumericDomain(t *testing.T) { if _, e := normalizeV2(v2, nil, at); e == nil { t.Fatal("silently accepted fractional v2 claim") } - v2.Source.Mapping.Sources[0].Read.Copy.Facts = []FactMapping{{"/zero", "/zero"}, {"/no", "/no"}, {"/nil", "/nil"}, {"/missing", "/missing"}} + v2.Source.Mapping.Sources[0].Read.Copy.Facts = []FactMapping{{Target: "/zero", Source: "/zero"}, {Target: "/no", Source: "/no"}, {Target: "/nil", Source: "/nil"}, {Target: "/missing", Source: "/missing"}} got, e := normalizeV2(v2, nil, at) if e != nil || string(got.Facts) != `{"nil":null,"no":false,"zero":0}` { t.Fatal(string(got.Facts), e) @@ -243,7 +243,7 @@ func mappingLifecycle(t *testing.T, family int) { cfg.InputProfiles = []InputProfile{p} // The exact real pack consumes one projected object and two evidence requirements. input.Source.Mapping.UnmappedEvidence = []string{"sensitive-data-approvals"} - input.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/request", "/facts/request"}}, Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}, {"sponsor-endorsement", "/evidence/sponsor-endorsement"}}}} + input.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/request", Source: "/facts/request"}}, Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/evidence/sponsor-endorsement"}}}} input.Source.Sources["vendor"] = SourceValue{Response: signResponse(t, p, key, []byte(`{"tool":"execute_sql","arguments":{"sql":"SELECT * FROM vendors WHERE id = 7"}}`), encode(sample()), at, 0)} var publishedDigest string if family != 0 { @@ -365,7 +365,7 @@ func TestV2DriveVerifiesSelectedBytesAndRequest(t *testing.T) { Case: &CaseMapping{Parameters: map[string]Parameter{"fileId": {Pointer: "/fileId", Type: "string"}, "grant": {Pointer: "/grant", Type: "string"}}, Facts: []FactMapping{}, Evidence: []EvidenceMapping{}}, Sources: []MappingSource{{Name: "file", Kind: "selected-file", Provider: "google-drive", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Arguments: json.RawMessage(`{"fileId":{"$param":"fileId"},"grant":{"$param":"grant"}}`), - Read: SourceRead{Copy: &CopyMapping{[]FactMapping{{"/approved", "/approved"}}, []EvidenceMapping{}}}, + Read: SourceRead{Copy: &CopyMapping{[]FactMapping{{Target: "/approved", Source: "/approved"}}, []EvidenceMapping{}}}, }}, } input := Input{Source: &SourceInput{Mapping: mapping, Case: args, Sources: map[string]SourceValue{"file": {Snapshot: encode(snap)}}}} @@ -445,7 +445,7 @@ func TestV2RealRuntimeWithoutExternalCitations(t *testing.T) { t.Fatal(err) } defer s.Close() - copy := CopyMapping{Facts: []FactMapping{{"/request", "/facts/request"}}, Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}, {"sponsor-endorsement", "/evidence/sponsor-endorsement"}}} + copy := CopyMapping{Facts: []FactMapping{{Target: "/request", Source: "/facts/request"}}, Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/evidence/sponsor-endorsement"}}} input := Input{Source: &SourceInput{Mapping: InputMapping{Version: 2, UnmappedEvidence: []string{"sensitive-data-approvals"}}}} if kind == "case" { input.Source.Case = encode(sample()) diff --git a/internal/runner/mapping_v2_types.go b/internal/runner/mapping_v2_types.go index 9abdab6..593aff9 100644 --- a/internal/runner/mapping_v2_types.go +++ b/internal/runner/mapping_v2_types.go @@ -1,19 +1,24 @@ package runner -import "encoding/json" +import ( + "encoding/json" + + "github.com/Judgment-Pack/judgment-pack-runner/internal/retainedcolumns" +) // InputProfile is installation authority, supplied only by the trusted host. // Its digest pins classification and adapter expectations into a release. // Classification describes acquisition, not the ultimate authorship of bytes. type InputProfile struct { - ID string `json:"id"` - PublicKey string `json:"publicKey"` - Class string `json:"class"` - Source string `json:"source"` - Authority string `json:"authority"` - Shape string `json:"shape"` - Adapter AdapterPin `json:"adapter"` - Endpoint *string `json:"endpoint"` + ConversionContracts []ConversionCapability `json:"conversionContracts,omitempty"` + ID string `json:"id"` + PublicKey string `json:"publicKey"` + Class string `json:"class"` + Source string `json:"source"` + Authority string `json:"authority"` + Shape string `json:"shape"` + Adapter AdapterPin `json:"adapter"` + Endpoint *string `json:"endpoint"` // EndpointScope, when set, is the profile's endpoint constraint in // place of one exact endpoint, which is then null: the endpoint prefixes, // or the wildcard, a page receipt's endpoint must match (spec/dialect.md @@ -32,6 +37,9 @@ type InputProfile struct { // the installation's declaration, never an observation of the model, // and its digest pins it. Absent, the profile encodes as before. Research *ResearchDeclaration `json:"research,omitempty"` + // RetainedColumnProducer is a trusted host's Draft-only producer grammar pin. + // Absent, profiles retain their historical bytes and digest. + RetainedColumnProducer *RetainedColumnProducer `json:"retainedColumnProducer,omitempty"` // canonDigest is set only on a profile the preparation verifier is // given: the digest of its canon bytes as given (spec/dialect.md §5.1, // verifierProfiles), which profileHash names for it. An installation's @@ -140,6 +148,10 @@ type Admission struct { type SourceValue struct { Snapshot json.RawMessage `json:"snapshot,omitempty"` Response json.RawMessage `json:"response,omitempty"` + // RetainedResponseJSON is the sole exact signed envelope serialization on + // the Draft producer path, mutually exclusive with Response/Snapshot. + // Its signature authenticates canonical content, not outer whitespace/spelling. + RetainedResponseJSON string `json:"retainedResponseJson,omitempty"` } type Citation struct { SessionID string `json:"sessionId"` @@ -169,8 +181,9 @@ type TargetLineage struct { // to the preparation's cites, in their order: each retained response's, // then the record's own when it has one (spec/dialect.md §9.3). It is // written even when empty, and absent for every other source. - Receipts *[]Citation `json:"receipts,omitempty"` - Calculation *CalculationLineage `json:"calculation,omitempty"` + Receipts *[]Citation `json:"receipts,omitempty"` + Calculation *CalculationLineage `json:"calculation,omitempty"` + ColumnTransformation *retainedcolumns.Transformation `json:"columnTransformation,omitempty"` } // CalculationLineage records, for a calculated source, which calculator answered, @@ -196,13 +209,14 @@ type SourceOutcome struct { Claim json.RawMessage `json:"claim"` } type Preparation struct { - Version int `json:"version"` - VerifiedAt string `json:"verifiedAt"` - MappingDigest string `json:"mappingDigest"` - Verification string `json:"verification"` - Cites []Citation `json:"cites"` - Lineage []TargetLineage `json:"lineage"` - Outcomes []SourceOutcome `json:"outcomes"` + ConversionContract *ConversionContract `json:"conversionContract,omitempty"` + Version int `json:"version"` + VerifiedAt string `json:"verifiedAt"` + MappingDigest string `json:"mappingDigest"` + Verification string `json:"verification"` + Cites []Citation `json:"cites"` + Lineage []TargetLineage `json:"lineage"` + Outcomes []SourceOutcome `json:"outcomes"` } type ruleDocument struct { Version string `json:"ruleVersion"` diff --git a/internal/runner/mapping_v2_unsigned_test.go b/internal/runner/mapping_v2_unsigned_test.go index 302031f..42f1d28 100644 --- a/internal/runner/mapping_v2_unsigned_test.go +++ b/internal/runner/mapping_v2_unsigned_test.go @@ -39,7 +39,7 @@ func TestUnsignedParametersAreWorkedOutFromTheFrozenMapping(t *testing.T) { ref := func(from string) map[string]Parameter { return map[string]Parameter{"ref": {From: from, Pointer: "/vendor/id", Type: "integer"}} } - copied := SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/vendor/id", "/id"}}, Evidence: []EvidenceMapping{}}} + copied := SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/vendor/id", Source: "/id"}}, Evidence: []EvidenceMapping{}}} file := MappingSource{Name: "lookup", Kind: "selected-file", Provider: "local-file", Read: copied} // run is a preparation in which each source has the targets given, and was // acquired or not; a calculator's status is given when it is one. @@ -253,7 +253,7 @@ func TestVerifyInputsReportsAnEarlierSourcesFactByItsSource(t *testing.T) { p, key := testProfile(t) cfg.InputProfiles = []InputProfile{p} at := time.Now().UTC().Truncate(time.Second) - facts := CopyMapping{Facts: []FactMapping{{"/vendor/id", "/id"}}, Evidence: []EvidenceMapping{}} + facts := CopyMapping{Facts: []FactMapping{{Target: "/vendor/id", Source: "/id"}}, Evidence: []EvidenceMapping{}} upstream := MappingSource{Name: "lookup", Kind: "operation", Profile: p.ID, ProfileDigest: profileHash(p), MaxAge: 300, Arguments: json.RawMessage(`{"tool":"execute_sql","arguments":{"sql":"SELECT id FROM vendors WHERE id = 7"}}`), Read: SourceRead{Copy: &facts}} value := SourceValue{Response: signResponse(t, p, key, []byte(`{"tool":"execute_sql","arguments":{"sql":"SELECT id FROM vendors WHERE id = 7"}}`), []byte(`{"id":7,"region":"north"}`), at, 0)} index := 1 diff --git a/internal/runner/mapping_v2_validate.go b/internal/runner/mapping_v2_validate.go index 63affef..13d8757 100644 --- a/internal/runner/mapping_v2_validate.go +++ b/internal/runner/mapping_v2_validate.go @@ -203,6 +203,9 @@ func readTargets(r SourceRead) ([]FactMapping, []EvidenceMapping, error) { } } if r.Copy != nil { + if err := validateColumnCopy(*r.Copy); err != nil { + return nil, nil, err + } return r.Copy.Facts, r.Copy.Evidence, nil } if err := derivation.Validate(r.Rule); err != nil { @@ -227,11 +230,11 @@ func readTargets(r SourceRead) ([]FactMapping, []EvidenceMapping, error) { f := []FactMapping{} ev := []EvidenceMapping{} for _, x := range cl.Claim.Facts { - f = append(f, FactMapping{x.Pointer, x.From}) + f = append(f, FactMapping{Target: x.Pointer, Source: x.From}) facts[x.Pointer] = x.From } for k := range cl.Claim.Evidence { - ev = append(ev, EvidenceMapping{k, ""}) + ev = append(ev, EvidenceMapping{Requirement: k, Source: ""}) evidence[k] = true } if err := (InputMapping{Version: 1, Provider: "local-file", Facts: f, Evidence: ev}).validate(); err != nil { @@ -241,10 +244,10 @@ func readTargets(r SourceRead) ([]FactMapping, []EvidenceMapping, error) { f := []FactMapping{} ev := []EvidenceMapping{} for _, k := range sortedKeys(facts) { - f = append(f, FactMapping{k, facts[k]}) + f = append(f, FactMapping{Target: k, Source: facts[k]}) } for _, k := range sortedKeys(evidence) { - ev = append(ev, EvidenceMapping{k, ""}) + ev = append(ev, EvidenceMapping{Requirement: k, Source: ""}) } return f, ev, nil } @@ -316,6 +319,9 @@ func validateDialect(m InputMapping, open bool) error { return validateDialectMo // VerifyPreparation refuses the kind after. A local file's source parameters // are held to the rules of every source's (§3, §4) on every path. func validateDialectMode(m InputMapping, open, offline bool) error { + if e := validateColumnMapping(m); e != nil { + return e + } if e := m.validateArtifactIdentity(); e != nil { return e } @@ -326,7 +332,7 @@ func validateDialectMode(m InputMapping, open, offline bool) error { fail := func(s string) error { return inputProblem(prefix + s) } // failOn is fail with e's sentence, keeping e and the code it names. failOn := func(e error) error { return inputProblemOf(prefix+e.Error(), e) } - if len(encode(m)) > 128<<10 { + if len(encode(m)) > artifactLimit(m.selectedConversion, 128<<10, columnDocumentLimit) { return codedProblem(codeOverBound, prefix+"mapping exceeds 128 KiB") } if _, e := proofCanon(encode(m)); e != nil { @@ -490,7 +496,7 @@ func validateDialectMode(m InputMapping, open, offline bool) error { allEvidence = append(allEvidence, ev...) prior[s.Name] = true } - if e := (InputMapping{Version: 1, Provider: "local-file", Facts: allFacts, Evidence: allEvidence}).validate(); e != nil { + if e := (InputMapping{Version: 1, Provider: "local-file", Facts: ordinaryFactTargets(allFacts), Evidence: ordinaryEvidenceTargets(allEvidence)}).validate(); e != nil { return e } targets := map[string]bool{} diff --git a/internal/runner/model.go b/internal/runner/model.go index 75e9fa0..aa23bb7 100644 --- a/internal/runner/model.go +++ b/internal/runner/model.go @@ -174,6 +174,9 @@ func decodeRun(b []byte) (Run, error) { held.Run.Input = held.Run.manual.input() } held.Run.InterruptedAt, held.Run.Reason, held.Run.Signing, held.Run.Binding = held.InterruptedAt, held.Reason, held.Signing, held.Binding + if e == nil { + e = validateStoredRun(held.Run) + } return held.Run, e } diff --git a/internal/runner/preparation.go b/internal/runner/preparation.go index 1e81ba4..e756e4a 100644 --- a/internal/runner/preparation.go +++ b/internal/runner/preparation.go @@ -269,7 +269,7 @@ func (s *Service) advancePreparation(ctx context.Context, o Occurrence) error { return s.stopPreparation(o, "needs-attention", "The durable Gateway connection is no longer installed.") } operation := id("") - p.Tasks = append(p.Tasks, SourceTask{Name: next.Name, ID: operation, State: "waiting", StartedAt: now(), Gateway: gateway, OperationsURL: operationsURL, Profile: next.Profile, Request: encode(map[string]any{"gateway": gateway, "id": operation, "source": next.Source, "arguments": next.Arguments, "deadline": p.Deadline})}) + p.Tasks = append(p.Tasks, SourceTask{Name: next.Name, ID: operation, State: "waiting", StartedAt: now(), Gateway: gateway, OperationsURL: operationsURL, Profile: next.Profile, Request: encode(sourceRequest{ID: operation, Gateway: gateway, Source: next.Source, Arguments: next.Arguments, Deadline: p.Deadline, ConversionContract: next.ConversionContract})}) task = &p.Tasks[len(p.Tasks)-1] if e = s.savePreparation(o); e != nil { return e @@ -287,14 +287,18 @@ func (s *Service) advancePreparation(ctx context.Context, o Occurrence) error { if !installed { return s.stopPreparation(o, "needs-attention", "The acquisition connection changed. Restore it to reconcile this operation.") } - var result struct { - ID string `json:"id"` - State string `json:"state"` - Deadline string `json:"deadline"` - Response json.RawMessage `json:"response,omitempty"` - Reason string `json:"reason,omitempty"` + if !taskConversionMatches(task.Request, inputConversion(*p.Input)) { + return s.stopPreparation(o, "needs-attention", "The retained conversion selection changed; the operation was not rebound.") } - raw, code, e := operationCall(ctx, task.OperationsURL+"/operations", task.Request, tokenFile) + var result struct { + RetainedResponseJSON string `json:"retainedResponseJson,omitempty"` + ID string `json:"id"` + State string `json:"state"` + Deadline string `json:"deadline"` + Response json.RawMessage `json:"response,omitempty"` + Reason string `json:"reason,omitempty"` + } + raw, code, e := operationCall(ctx, task.OperationsURL+"/operations", task.Request, tokenFile, inputConversion(*p.Input)) task.Checks++ if e != nil || code == 429 || code >= 500 { if ctx.Err() != nil { @@ -331,14 +335,28 @@ func (s *Service) advancePreparation(ctx context.Context, o Occurrence) error { Index int `json:"callIndex"` } `json:"receipt"` } - if json.Unmarshal(result.Response, &binding) != nil || binding.Receipt.Session != "async."+task.ID || binding.Receipt.Index != 0 { + response := result.Response + value := SourceValue{Response: response} + if inputConversion(*p.Input) != nil { + if len(result.Response) > 0 || result.RetainedResponseJSON == "" || len(result.RetainedResponseJSON) > columnResponseLimit { + return s.stopPreparation(o, "needs-attention", "The retained source response has an invalid custody variant or exceeds its selected limit.") + } + response = []byte(result.RetainedResponseJSON) + value = SourceValue{Response: response} + if next.retainResponse { + value = SourceValue{RetainedResponseJSON: result.RetainedResponseJSON} + } + } else if result.RetainedResponseJSON != "" { + return s.stopPreparation(o, "needs-attention", "Unexpected selected response custody.") + } + if json.Unmarshal(response, &binding) != nil || binding.Receipt.Session != "async."+task.ID || binding.Receipt.Index != 0 { return s.stopPreparation(o, "needs-attention", "The source receipt does not belong to this operation.") } if p.Input.Source.Sources == nil { p.Input.Source.Sources = map[string]SourceValue{} } - p.Input.Source.Sources[next.Name] = SourceValue{Response: result.Response} - if len(encode(*p.Input)) > MaxBody { + p.Input.Source.Sources[next.Name] = value + if len(encode(*p.Input)) > combinedLimit(*p.Input) { return s.stopPreparation(o, "needs-attention", "Acquired inputs exceed the combined input limit.") } if _, e = s.nextInput(*p.Input, time.Now()); e != nil { @@ -355,7 +373,7 @@ func (s *Service) advancePreparation(ctx context.Context, o Occurrence) error { // Requests only exchange control-plane state. They never hold a worker for // the duration of an acquisition. Retries always carry identical intent. -func operationCall(parent context.Context, target string, body []byte, tokenFile string) ([]byte, int, error) { +func operationCall(parent context.Context, target string, body []byte, tokenFile string, selection ...*ConversionContract) ([]byte, int, error) { ctx, stop := context.WithTimeout(parent, 3*time.Second) defer stop() req, e := http.NewRequestWithContext(ctx, http.MethodPost, target, bytes.NewReader(body)) @@ -373,8 +391,9 @@ func operationCall(parent context.Context, target string, body []byte, tokenFile return nil, 0, e } defer res.Body.Close() - raw, e := io.ReadAll(io.LimitReader(res.Body, MaxBody+1)) - if e == nil && len(raw) > MaxBody { + limit := artifactLimit(selectedConversion(selection), MaxBody, columnReplyLimit) + raw, e := io.ReadAll(io.LimitReader(res.Body, int64(limit)+1)) + if e == nil && len(raw) > limit { e = errors.New("operation response too large") } return raw, res.StatusCode, e diff --git a/internal/runner/preparation_integration_test.go b/internal/runner/preparation_integration_test.go index 77f24ed..b63d324 100644 --- a/internal/runner/preparation_integration_test.go +++ b/internal/runner/preparation_integration_test.go @@ -72,7 +72,7 @@ func TestDurablePreparationRealGatewayMCPAndRunnerRestart(t *testing.T) { t.Fatal(e) } profile := InputProfile{ID: "live", PublicKey: hex.EncodeToString(pub), Class: "record", Source: "live", Authority: "gateway:durable-test", Shape: "mcp", Adapter: AdapterPin{Name: source, Version: "0.1", Digest: digest(image)}, Endpoint: &endpoint, Tools: []string{"lookup"}} - mapping := InputMapping{Version: 2, UnmappedEvidence: []string{"sensitive-data-approvals"}, Sources: []MappingSource{{Name: "input", Kind: "operation", Profile: profile.ID, ProfileDigest: profileHash(profile), MaxAge: 300, Arguments: []byte(`{"tool":"lookup","arguments":{}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/request", "/structuredContent/facts/request"}}, Evidence: []EvidenceMapping{{"intake-form", "/structuredContent/evidence/intake-form"}, {"sponsor-endorsement", "/structuredContent/evidence/sponsor-endorsement"}}}}}}} + mapping := InputMapping{Version: 2, UnmappedEvidence: []string{"sensitive-data-approvals"}, Sources: []MappingSource{{Name: "input", Kind: "operation", Profile: profile.ID, ProfileDigest: profileHash(profile), MaxAge: 300, Arguments: []byte(`{"tool":"lookup","arguments":{}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/request", Source: "/structuredContent/facts/request"}}, Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/structuredContent/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/structuredContent/evidence/sponsor-endorsement"}}}}}}} raw, e := automaticCall(context.Background(), origin+"/acquire", encode(map[string]any{"session": "release-preview", "source": "live", "arguments": json.RawMessage(`{"tool":"lookup","arguments":{}}`)}), MaxBody) if e != nil { t.Fatal(e) diff --git a/internal/runner/preparation_test.go b/internal/runner/preparation_test.go index 30df11c..1ef0c84 100644 --- a/internal/runner/preparation_test.go +++ b/internal/runner/preparation_test.go @@ -258,7 +258,7 @@ func TestDurablePreparationCheckAgainReusesIdentity(t *testing.T) { func TestDurablePreparationCompletedSourcesSurviveRestart(t *testing.T) { s, cfg, o, f := preparationFixture(t) r, _ := s.release(o.ReleaseID) - r.InputMapping.Sources = append(r.InputMapping.Sources, MappingSource{Name: "detail", Kind: "operation", Profile: f.p.ID, ProfileDigest: profileHash(f.p), MaxAge: 300, Arguments: []byte(`{"tool":"lookup","arguments":{}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/detail", "/detail"}}, Evidence: []EvidenceMapping{}}}}) + r.InputMapping.Sources = append(r.InputMapping.Sources, MappingSource{Name: "detail", Kind: "operation", Profile: f.p.ID, ProfileDigest: profileHash(f.p), MaxAge: 300, Arguments: []byte(`{"tool":"lookup","arguments":{}}`), Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/detail", Source: "/detail"}}, Evidence: []EvidenceMapping{}}}}) s.db.Exec("UPDATE releases SET record=? WHERE id=?", string(encode(r)), r.ID) f.mu.Lock() f.ready = true diff --git a/internal/runner/preparation_verify_form.go b/internal/runner/preparation_verify_form.go index a3eebc8..565e02c 100644 --- a/internal/runner/preparation_verify_form.go +++ b/internal/runner/preparation_verify_form.go @@ -21,6 +21,13 @@ func exactAcquisitionMembers(raw []byte) bool { return false } for k := range v { + if k == "retainedResponseJson" { + var text string + if len(v) != 1 || json.Unmarshal(v[k], &text) != nil || text == "" { + return false + } + continue + } if k != "response" { return false } @@ -178,7 +185,18 @@ func preparationAcquisitionForms(m InputMapping, acquisitions map[string]SourceV // Every other acquisition, a selected file's among them, has §5.2's // envelope; a kind the verifier does not read is refused after every // form (§11's sixth phase). - if !operationEnvelopeForm(value.Response) { + raw := value.Response + if value.RetainedResponseJSON != "" { + if !known || source.Read.Copy == nil || !hasColumnCopy(*source.Read.Copy) { + return researchFail(codeMalformed, "retainedResponseJson is only admitted for a Draft producer read") + } + var err error + raw, err = columnRetainedResponse(value, m.selectedConversion) + if err != nil { + return err + } + } + if !operationEnvelopeForm(raw) { return researchFail(codeMalformed, "invalid acquisition envelope") } } diff --git a/internal/runner/preparation_verify_profiles.go b/internal/runner/preparation_verify_profiles.go index a6ca542..5735d77 100644 --- a/internal/runner/preparation_verify_profiles.go +++ b/internal/runner/preparation_verify_profiles.go @@ -69,7 +69,7 @@ func verifierProfiles(document any, raw []byte) ([]InputProfile, error) { // each, are counted before any form (preparationCountBounds). func profileForm(value any, ids map[string]bool) error { p, ok := value.(map[string]any) - if !ok || !closedMembers(p, []string{"id", "publicKey", "class", "source", "authority", "shape", "adapter", "endpoint"}, []string{"endpointScope", "tools", "calculator", "research"}) { + if !ok || !closedMembers(p, []string{"id", "publicKey", "class", "source", "authority", "shape", "adapter", "endpoint"}, []string{"endpointScope", "tools", "calculator", "research", "retainedColumnProducer", "conversionContracts"}) { return errors.New("a profile is an object of exactly id, publicKey, class, source, authority, shape, adapter and endpoint, and optionally endpointScope, tools, calculator and research") } str := func(v any) bool { _, ok := v.(string); return ok } @@ -145,6 +145,19 @@ func profileForm(value any, ids map[string]bool) error { return errors.New("its research model is not a non-empty string") } } + if producer, present := p["retainedColumnProducer"]; present { + obj, _ := producer.(map[string]any) + if !closedMembers(obj, []string{"contractVersion", "grammar"}, nil) { + return errors.New("retainedColumnProducer requires exactly contractVersion and grammar") + } + var profile InputProfile + if e := strictJSON(encode(p), &profile); e != nil { + return e + } + if e := columnProducerProfile(profile); e != nil { + return e + } + } if scope, present := p["endpointScope"]; present { list, ok := scope.([]any) entries := make([]string, 0, len(list)) diff --git a/internal/runner/profile_registry_test.go b/internal/runner/profile_registry_test.go index a5b0c90..2a09c37 100644 --- a/internal/runner/profile_registry_test.go +++ b/internal/runner/profile_registry_test.go @@ -138,7 +138,7 @@ func TestRegisteredProfileAvailableToPreparationAndRetainedRelease(t *testing.T) cfg := testConfig(t) input, p, key, at := v2Fixture(t) input.Source.Mapping.UnmappedEvidence = []string{"sensitive-data-approvals"} - input.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/request", "/facts/request"}}, Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}, {"sponsor-endorsement", "/evidence/sponsor-endorsement"}}}} + input.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/request", Source: "/facts/request"}}, Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/evidence/sponsor-endorsement"}}}} input.Source.Sources["vendor"] = SourceValue{Response: signResponse(t, p, key, []byte(`{"tool":"execute_sql","arguments":{"sql":"SELECT * FROM vendors WHERE id = 7"}}`), encode(sample()), at, 0)} s := openJournal(t, cfg) defer s.Close() diff --git a/internal/runner/profile_set_aside_test.go b/internal/runner/profile_set_aside_test.go index 367d5e7..70ab8a6 100644 --- a/internal/runner/profile_set_aside_test.go +++ b/internal/runner/profile_set_aside_test.go @@ -117,7 +117,7 @@ func TestAStoreAnEarlierRunnerWroteOpensWithItsRefusedProfileSetAside(t *testing cfg := testConfig(t) input, exact, key, at := v2Fixture(t) input.Source.Mapping.UnmappedEvidence = []string{"sensitive-data-approvals"} - input.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/request", "/facts/request"}}, Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}, {"sponsor-endorsement", "/evidence/sponsor-endorsement"}}}} + input.Source.Mapping.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/request", Source: "/facts/request"}}, Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/evidence/sponsor-endorsement"}}}} input.Source.Sources["vendor"] = SourceValue{Response: signResponse(t, exact, key, []byte(`{"tool":"execute_sql","arguments":{"sql":"SELECT * FROM vendors WHERE id = 7"}}`), encode(sample()), at, 0)} scoped, f := earlierScoped(t) s, err := Open(cfg) diff --git a/internal/runner/record_delivery_contract_test.go b/internal/runner/record_delivery_contract_test.go index 4309da9..71f8502 100644 --- a/internal/runner/record_delivery_contract_test.go +++ b/internal/runner/record_delivery_contract_test.go @@ -787,7 +787,7 @@ func TestARecordDeliveryCarryingAnAcquisitionKeepsTheReceiptRuleAndAcquiresNothi m.UnmappedEvidence = []string{"sensitive-data-approvals"} m.Admits = &Admission{Facts: map[string][]string{"/request": {"generated"}}, Evidence: map[string][]string{"intake-form": {"generated"}, "sponsor-endorsement": {"generated"}}} m.Sources[0].ProfileDigest = profileHash(p) - m.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{"/request", "/facts/request"}}, Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}, {"sponsor-endorsement", "/evidence/sponsor-endorsement"}}}} + m.Sources[0].Read = SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/request", Source: "/facts/request"}}, Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/evidence/sponsor-endorsement"}}}} input.Source.Sources["vendor"] = SourceValue{Response: signResponse(t, p, key, []byte(`{"tool":"execute_sql","arguments":{"sql":"SELECT * FROM vendors WHERE id = 7"}}`), encode(sample()), at, 0)} cfg.InputProfiles = []InputProfile{p} cfg.GatewayConnections = []GatewayConnection{{Profile: p.ID, URL: gateway.URL}} diff --git a/internal/runner/research_plans_test.go b/internal/runner/research_plans_test.go index ce73b8b..8709e75 100644 --- a/internal/runner/research_plans_test.go +++ b/internal/runner/research_plans_test.go @@ -367,8 +367,8 @@ func (p researchPlan) published(t *testing.T) InputMapping { admits[target] = []string{"generated"} } m := InputMapping{Version: 3, - Case: &CaseMapping{Parameters: p.parameters, Facts: []FactMapping{{"/request", "/request"}}, - Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}, {"sponsor-endorsement", "/evidence/sponsor-endorsement"}}}, + Case: &CaseMapping{Parameters: p.parameters, Facts: []FactMapping{{Target: "/request", Source: "/request"}}, + Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/evidence/sponsor-endorsement"}}}, Admits: &Admission{Facts: admits}, UnmappedEvidence: []string{"sensitive-data-approvals"}, } diff --git a/internal/runner/runtime.go b/internal/runner/runtime.go index 11bb956..79a327f 100644 --- a/internal/runner/runtime.go +++ b/internal/runner/runtime.go @@ -194,6 +194,12 @@ func invokeStarting(ctx context.Context, bin, dir, label string, env []string, s return b, nil } func (s *Service) preview(ctx context.Context, req PreviewRequest) (Release, error) { + if s.cfg.ExecutorAdmission != nil && inputConversion(req.Input) != nil { + return Release{}, manualUnsupported() + } + if e := runtimeConversionAdmission(ctx, s.runtime, s.cfg.Dir, inputConversion(req.Input), s.startRuntime); e != nil { + return Release{}, e + } if len(req.Pack) == 0 || len(req.Pack) > 1<<20 { return Release{}, bad("invalid_pack", "Choose a pack smaller than 1 MiB.") } @@ -308,7 +314,7 @@ func (s *Service) evaluate(ctx context.Context, r Release, input Input, dir stri if s.expectedKey != nil { signing = signingInputs{path: s.cfg.SigningKey, publicKey: hex.EncodeToString(s.expectedKey)} } - return evaluateWithInvoker(ctx, bin, r, input, dir, rehearsal, signing, s.invokeWith) + return evaluateWithInvoker(ctx, bin, r, input, dir, rehearsal, signing, s.invokeWith, s.startRuntime) } // signingInputs is what an operational evaluation's Runtime is given to sign @@ -346,7 +352,10 @@ func evaluateWith(ctx context.Context, bin string, r Release, input Input, dir s return evaluateWithInvoker(ctx, bin, r, input, dir, rehearsal, signing, invokeWith) } -func evaluateWithInvoker(ctx context.Context, bin string, r Release, input Input, dir string, rehearsal bool, signing signingInputs, invoke runtimeInvoker) (json.RawMessage, json.RawMessage, []byte, *RunBinding, error) { +func evaluateWithInvoker(ctx context.Context, bin string, r Release, input Input, dir string, rehearsal bool, signing signingInputs, invoke runtimeInvoker, starters ...func(*exec.Cmd) error) (json.RawMessage, json.RawMessage, []byte, *RunBinding, error) { + if e := runtimeConversionAdmission(ctx, bin, filepath.Dir(dir), inputConversion(input), starters...); e != nil { + return nil, nil, nil, nil, e + } // The directory is exclusively created per invocation and never reused. if err := os.Mkdir(dir, 0700); err != nil { return nil, nil, nil, nil, err @@ -415,7 +424,7 @@ func evaluateWithInvoker(ctx context.Context, bin string, r Release, input Input if rehearsal { return out, nil, nil, nil, nil } - audit, err := readLimit(filepath.Join(dir, "audit", "evaluations.jsonl"), maxOutput) + audit, err := readLimit(filepath.Join(dir, "audit", "evaluations.jsonl"), int64(artifactLimit(inputConversion(input), maxOutput, columnRecordLimit+1))) if err != nil { return nil, nil, nil, nil, errors.New("operational audit record could not be read") } diff --git a/internal/runner/source_inputs.go b/internal/runner/source_inputs.go index 1e360fc..2831bf5 100644 --- a/internal/runner/source_inputs.go +++ b/internal/runner/source_inputs.go @@ -19,17 +19,21 @@ import ( const maxInputDocument = 200_000 type FactMapping struct { - Target string `json:"target"` - Source string `json:"source"` + Target string `json:"target"` + Source string `json:"source"` + Conversion json.RawMessage `json:"conversion,omitempty"` } type EvidenceMapping struct { - Requirement string `json:"requirement"` - Source string `json:"source"` + Requirement string `json:"requirement"` + Source string `json:"source"` + Availability json.RawMessage `json:"availability,omitempty"` } type InputMapping struct { // Only offline verification retains the original legacy document encoding. - originalDocument json.RawMessage + originalDocument json.RawMessage + selectedConversion *ConversionContract + Profile string `json:"profile,omitempty"` FormatVersion string `json:"-"` ArtifactID string `json:"-"` ArtifactVersion string `json:"-"` @@ -44,11 +48,14 @@ type InputMapping struct { Evidence []EvidenceMapping `json:"evidence"` } type SourceInput struct { - Case json.RawMessage `json:"case,omitempty"` - Sources map[string]SourceValue `json:"sources,omitempty"` - Mapping InputMapping `json:"mapping"` - Snapshot json.RawMessage `json:"snapshot,omitempty"` - MappingDigest string `json:"mappingDigest,omitempty"` + ConversionContract *ConversionContract `json:"conversionContract,omitempty"` + Case json.RawMessage `json:"case,omitempty"` + // RetainedCaseJSON is Draft-only sole exact case custody, excluding Case. + RetainedCaseJSON string `json:"retainedCaseJson,omitempty"` + Sources map[string]SourceValue `json:"sources,omitempty"` + Mapping InputMapping `json:"mapping"` + Snapshot json.RawMessage `json:"snapshot,omitempty"` + MappingDigest string `json:"mappingDigest,omitempty"` // Import is a published dialect of version 3 and the binding document // that binds its unbound sources to this installation's input profiles // (dialect_v3.go). Mapping is the bound dialect they make, and the @@ -268,6 +275,9 @@ func (m InputMapping) validate() error { if m.dialect() { return validateMappingV2(m) } + if m.Profile != "" || hasColumnCopy(CopyMapping{Facts: m.Facts, Evidence: m.Evidence}) { + return inputProblem("Retained columns require a dialect document.") + } if m.Case != nil || m.Sources != nil || m.Admits != nil || m.Unmapped != nil || m.UnmappedEvidence != nil { return inputProblem("Version 2 fields require mapping version 2.") } @@ -379,7 +389,7 @@ func readSourceDocument(c *SourceInput, requireRegistry bool) (any, sourceSnapsh return data, s, r, nil } func normalizeInput(i Input) (Input, error) { - if i.Source != nil && (i.Source.Mapping.dialect() || i.Source.Import != nil || len(i.Source.Case) > 0 || i.Source.Sources != nil) { + if i.Source != nil && (i.Source.Mapping.dialect() || i.Source.Import != nil || len(i.Source.Case) > 0 || i.Source.RetainedCaseJSON != "" || i.Source.Sources != nil) { return i, inputProblem("Mapping v2 requires the trusted Runner service.") } if i.Preparation != nil { @@ -450,6 +460,9 @@ func normalizeInput(i Input) (Input, error) { return mapped, mapped.validate() } func mappingMatchesRelease(r Release, i Input) bool { + if !sameConversion(inputConversion(r.Sample), inputConversion(i)) { + return false + } if r.InputMapping == nil { return i.Source == nil } diff --git a/internal/runner/source_inputs_test.go b/internal/runner/source_inputs_test.go index 174afdb..9896b53 100644 --- a/internal/runner/source_inputs_test.go +++ b/internal/runner/source_inputs_test.go @@ -20,7 +20,7 @@ func fileMapping() InputMapping { func trialFile() Input { return fileInput(string(encode(sample())), fileMapping()) } func TestSourceMappingPreservesValuesAndOmission(t *testing.T) { - mapping := InputMapping{Version: 1, Provider: "local-file", Facts: []FactMapping{{"/data/no", "/no"}, {"/data/zero", "/zero"}, {"/data/nil", "/nil"}, {"/data/precise", "/precise"}, {"/data/decimal", "/decimal"}, {"/data/missing", "/missing"}, {"/data/slash", "/a~1b/0"}}, Evidence: []EvidenceMapping{{"receipt", "/evidence/receipt"}, {"missing", "/evidence/missing"}}} + mapping := InputMapping{Version: 1, Provider: "local-file", Facts: []FactMapping{{Target: "/data/no", Source: "/no"}, {Target: "/data/zero", Source: "/zero"}, {Target: "/data/nil", Source: "/nil"}, {Target: "/data/precise", Source: "/precise"}, {Target: "/data/decimal", Source: "/decimal"}, {Target: "/data/missing", Source: "/missing"}, {Target: "/data/slash", Source: "/a~1b/0"}}, Evidence: []EvidenceMapping{{Requirement: "receipt", Source: "/evidence/receipt"}, {Requirement: "missing", Source: "/evidence/missing"}}} got, err := normalizeInput(fileInput(`{"no":false,"zero":0,"nil":null,"precise":9007199254740993,"decimal":1.234567890123456789,"a/b":["first"],"evidence":{"receipt":"unknown"}}`, mapping)) if err != nil { t.Fatal(err) @@ -52,7 +52,7 @@ func TestSourceInputRejectsAmbiguityAndUnsafeMappings(t *testing.T) { if _, err := normalizeInput(fileInput(`{"x":"\ud83d\ude00","escaped":"\\ud800"}`, fileMapping())); err != nil { t.Fatal("valid surrogate/escaped backslash refused", err) } - for _, facts := range [][]FactMapping{{{"/a", "/x"}, {"/a/b", "/y"}}, {{"/a", "/x"}, {"/a", "/y"}}, {{"/__proto__/x", "/x"}}, {{"/a", "/bad~2"}}, {{"", "/a"}}} { + for _, facts := range [][]FactMapping{{{Target: "/a", Source: "/x"}, {Target: "/a/b", Source: "/y"}}, {{Target: "/a", Source: "/x"}, {Target: "/a", Source: "/y"}}, {{Target: "/__proto__/x", Source: "/x"}}, {{Target: "/a", Source: "/bad~2"}}, {{Target: "", Source: "/a"}}} { m := fileMapping() m.Facts = facts if _, err := normalizeInput(fileInput(`{}`, m)); err == nil { @@ -60,7 +60,7 @@ func TestSourceInputRejectsAmbiguityAndUnsafeMappings(t *testing.T) { } } m := fileMapping() - m.Evidence = []EvidenceMapping{{"receipt", "/receipt"}} + m.Evidence = []EvidenceMapping{{Requirement: "receipt", Source: "/receipt"}} for _, value := range []string{`true`, `null`, `"yes"`, `1`} { if _, err := normalizeInput(fileInput(`{"receipt":`+value+`}`, m)); err == nil { t.Fatal("coerced evidence", value) diff --git a/internal/runner/source_worker.go b/internal/runner/source_worker.go index 1877ca9..2bdf6ce 100644 --- a/internal/runner/source_worker.go +++ b/internal/runner/source_worker.go @@ -26,18 +26,20 @@ import ( type SourceWorkerConfig struct{ Dir, Gateway, GatewayTokenFile string } type sourceRequest struct { - ID string `json:"id"` - Gateway string `json:"gateway"` - Source string `json:"source"` - Arguments json.RawMessage `json:"arguments"` - Deadline string `json:"deadline"` + ConversionContract *ConversionContract `json:"conversionContract,omitempty"` + ID string `json:"id"` + Gateway string `json:"gateway"` + Source string `json:"source"` + Arguments json.RawMessage `json:"arguments"` + Deadline string `json:"deadline"` } type sourceStatus struct { - ID string `json:"id"` - State string `json:"state"` - Deadline string `json:"deadline"` - Response json.RawMessage `json:"response,omitempty"` - Reason string `json:"reason,omitempty"` + RetainedResponseJSON string `json:"retainedResponseJson,omitempty"` + ID string `json:"id"` + State string `json:"state"` + Deadline string `json:"deadline"` + Response json.RawMessage `json:"response,omitempty"` + Reason string `json:"reason,omitempty"` } type SourceWorker struct { cfg SourceWorkerConfig @@ -234,6 +236,7 @@ func (s *SourceWorker) Handler() http.Handler { if cancel && (status.State == "running" || status.State == "queued" || status.State == "needs-attention") { status.State = "cancelled" status.Response = nil + status.RetainedResponseJSON = "" status.Reason = "Cancelled locally; the provider may still finish." if _, e = s.db.Exec("UPDATE source_operations SET state=?,status=? WHERE id=?", status.State, string(encode(status)), id); e != nil { write(w, 500, map[string]string{"error": "cancellation could not be retained"}) @@ -247,14 +250,31 @@ func (s *SourceWorker) Handler() http.Handler { }) } func (s *SourceWorker) status(id string) (sourceStatus, error) { - var raw string + var raw, request string var status sourceStatus - e := s.db.QueryRow("SELECT status FROM source_operations WHERE id=?", id).Scan(&raw) + e := s.db.QueryRow("SELECT request,status FROM source_operations WHERE id=?", id).Scan(&request, &raw) if e == nil { + var frozen sourceRequest + if strictJSON([]byte(request), &frozen) != nil { + return status, conversionFailure(codeMalformed) + } + if e := frozen.ConversionContract.validate("preparation", "producer-carrier"); e != nil { + return status, e + } e = json.Unmarshal([]byte(raw), &status) if e != nil { return status, e } + if frozen.ConversionContract != nil { + if len(status.Response) > 0 || status.State == "completed" && status.RetainedResponseJSON == "" { + return status, conversionFailure(codeMalformed) + } + if len(status.RetainedResponseJSON) > columnResponseLimit || len(encode(status))+1 > columnReplyLimit { + return status, codedProblem(codeOverBound, "retained source status exceeds selected limit") + } + } else if status.RetainedResponseJSON != "" { + return status, conversionFailure("capability-unsupported") + } previous := status.State if status.State == "running" && s.active[id] == nil { status.State = "needs-attention" @@ -268,6 +288,7 @@ func (s *SourceWorker) status(id string) (sourceStatus, error) { } if status.State != previous { status.Response = nil + status.RetainedResponseJSON = "" if _, e = s.db.Exec("UPDATE source_operations SET state=?,status=? WHERE id=?", status.State, string(encode(status)), id); e != nil { return sourceStatus{}, e } @@ -281,6 +302,9 @@ func (s *SourceWorker) status(id string) (sourceStatus, error) { return status, e } func (s *SourceWorker) submit(req sourceRequest) (sourceStatus, int, error) { + if e := req.ConversionContract.validate("preparation", "producer-carrier"); e != nil { + return sourceStatus{}, 422, e + } if !sourceOperationID.MatchString(req.ID) || (!readSourceName.MatchString(req.Source) || strings.HasSuffix(req.Source, "/write")) || req.Gateway != s.cfg.Gateway || !json.Valid(req.Arguments) { return sourceStatus{}, 400, errors.New("invalid operation binding") } @@ -346,7 +370,7 @@ func (s *SourceWorker) submit(req sourceRequest) (sourceStatus, int, error) { func (s *SourceWorker) acquire(ctx context.Context, stop context.CancelFunc, req sourceRequest) { defer s.workers.Done() defer stop() - raw, e := s.call(ctx, "/acquire", encode(map[string]any{"session": "async." + req.ID, "source": req.Source, "arguments": req.Arguments}), MaxBody) + raw, e := s.call(ctx, "/acquire", encode(map[string]any{"session": "async." + req.ID, "source": req.Source, "arguments": req.Arguments}), int64(responseLimit(req.ConversionContract))) status := sourceStatus{ID: req.ID, State: "completed", Deadline: req.Deadline} if e != nil || ctx.Err() != nil { status.State = "needs-attention" @@ -366,7 +390,11 @@ func (s *SourceWorker) acquire(ctx context.Context, stop context.CancelFunc, req status.State = "needs-attention" status.Reason = "The Gateway response does not belong to this operation's first acquisition. It was not repeated." } else { - status.Response = raw + if req.ConversionContract != nil { + status.RetainedResponseJSON = string(raw) + } else { + status.Response = raw + } } } if s.beforeRetain != nil { @@ -376,6 +404,7 @@ func (s *SourceWorker) acquire(ctx context.Context, stop context.CancelFunc, req if deadline, _ := time.Parse(time.RFC3339Nano, req.Deadline); !time.Now().Before(deadline) { status.State = "expired" status.Response = nil + status.RetainedResponseJSON = "" status.Reason = "The source deadline elapsed; remote completion may still occur." } // Cancellation/expiry wins even when a response was already in transit. diff --git a/internal/runner/store_contract.go b/internal/runner/store_contract.go index 4c2568a..6724e67 100644 --- a/internal/runner/store_contract.go +++ b/internal/runner/store_contract.go @@ -222,3 +222,43 @@ func openStore(kind string, o storeOpening) (runStore, error) { } return open(o) } + +// validateStoredInput rechecks the installed selection at each persistence +// boundary. Stores keep the existing transaction and CAS contract unchanged. +func validateStoredInput(i Input) error { + c := inputConversion(i) + if e := c.validate("document-validation", "preview", "preparation"); e != nil { + return e + } + if i.Preparation != nil && !sameConversion(c, i.Preparation.ConversionContract) { + return conversionFailure("capability-unsupported") + } + if c == nil { + return nil + } + if i.Source == nil || !hasColumnMapping(i.Source.Mapping) || i.Source.Mapping.Profile != "base" { + return conversionFailure("capability-unsupported") + } + if i.Preparation != nil && (!sameConversion(c, i.Preparation.ConversionContract) || len(encode(i.Preparation)) > columnPreparationLimit) { + return codedProblem(codeOverBound, "stored preparation exceeds selected limit or differs in selection") + } + return columnInputBounds(i.Source) +} +func validateStoredRelease(r Release) error { + if e := validateStoredInput(r.Sample); e != nil { + return storeFailure(faultRefused, "release", e) + } + if inputConversion(r.Sample) != nil && len(encode(r)) > columnStoredLimit { + return storeFailure(faultRefused, "release", codedProblem(codeOverBound, "retained release exceeds selected storage limit")) + } + return nil +} +func validateStoredRun(r Run) error { + if e := validateStoredInput(r.Input); e != nil { + return storeFailure(faultRefused, "run", e) + } + if inputConversion(r.Input) != nil && (len(runText(r)) > columnStoredLimit || len(r.AuditBytes) > columnRecordLimit) { + return storeFailure(faultRefused, "run", codedProblem(codeOverBound, "retained run or audit record exceeds selected storage limit")) + } + return nil +} diff --git a/internal/runner/store_memory_test.go b/internal/runner/store_memory_test.go index fcbb4d9..707350e 100644 --- a/internal/runner/store_memory_test.go +++ b/internal/runner/store_memory_test.go @@ -215,6 +215,9 @@ func (r memoryReads) release(id string) (Release, error) { if err := json.Unmarshal(b, &rel); err != nil { return rel, storeFailure(faultUnreadable, "release", err) } + if e := validateStoredRelease(rel); e != nil { + return rel, storeFailure(faultUnreadable, "release", e) + } return rel, nil } @@ -262,6 +265,9 @@ func (t *memoryTx) activeRuns() (int, error) { } func (t *memoryTx) createRun(r Run, caller, key, requestDigest string) error { + if e := validateStoredRun(r); e != nil { + return e + } for _, held := range t.s.runs { if held.id == r.ID || held.job == r.JobID && held.caller == caller && held.idem == key { return storeFailure(faultTaken, "run", errors.New("a run is held under that id or request key")) @@ -273,6 +279,9 @@ func (t *memoryTx) createRun(r Run, caller, key, requestDigest string) error { } func (t *memoryTx) putRun(r Run, expected string) (string, error) { + if e := validateStoredRun(r); e != nil { + return "", e + } for i := range t.s.runs { held := &t.s.runs[i] if held.id != r.ID { @@ -329,6 +338,9 @@ func (t *memoryTx) createEntry(sequence int64, run string, line []byte) error { } func (t *memoryTx) createRelease(r Release) error { + if e := validateStoredRelease(r); e != nil { + return e + } if _, ok := t.s.releases[r.ID]; ok { return storeFailure(faultTaken, "release", errors.New("a release is held under that id")) } diff --git a/internal/runner/store_sqlite.go b/internal/runner/store_sqlite.go index 64d1fb3..50b9506 100644 --- a/internal/runner/store_sqlite.go +++ b/internal/runner/store_sqlite.go @@ -276,6 +276,9 @@ func (r sqliteReads) release(id string) (Release, error) { if err := json.Unmarshal(b, &rel); err != nil { return rel, storeFailure(faultUnreadable, "release", err) } + if e := validateStoredRelease(rel); e != nil { + return rel, storeFailure(faultUnreadable, "release", e) + } return rel, nil } @@ -371,11 +374,17 @@ func (t *sqliteTx) activeRuns() (int, error) { } func (t *sqliteTx) createRun(r Run, caller, key, requestDigest string) error { + if e := validateStoredRun(r); e != nil { + return e + } _, err := t.tx.Exec("INSERT INTO runs(id,job_id,caller,idem,request_digest,state,record) VALUES (?,?,?,?,?,?,?)", r.ID, r.JobID, caller, key, requestDigest, r.State, runText(r)) return sqliteFault("run", err, true) } func (t *sqliteTx) putRun(r Run, expected string) (string, error) { + if e := validateStoredRun(r); e != nil { + return "", e + } var from string if err := t.tx.QueryRow("SELECT state FROM runs WHERE id=?", r.ID).Scan(&from); err != nil { return "", sqliteFault("run", err, false) @@ -416,6 +425,9 @@ func (t *sqliteTx) createEntry(sequence int64, run string, line []byte) error { } func (t *sqliteTx) createRelease(r Release) error { + if e := validateStoredRelease(r); e != nil { + return e + } _, err := t.tx.Exec("INSERT INTO releases(id,record) VALUES (?,?)", r.ID, string(encode(r))) return sqliteFault("release", err, true) } diff --git a/internal/runner/testdata/retained-column-producer-draft/cases.json b/internal/runner/testdata/retained-column-producer-draft/cases.json new file mode 100644 index 0000000..ff2be38 --- /dev/null +++ b/internal/runner/testdata/retained-column-producer-draft/cases.json @@ -0,0 +1,22 @@ +{ + "scope": "Structural projection vectors only; arbitrary retained text is not a valid acquisition and cannot produce preparation.", + "cases": [ + {"name":"annotation-array","definition":"producerAnnotation","value":[],"valid":false}, + {"name":"source-array","definition":"retainedPreparationSource","value":[],"valid":false}, + {"name":"no-response-form","definition":"retainedPreparationSource","value":{},"valid":false}, + {"name":"numeric-text","definition":"retainedPreparationSource","value":{"retainedResponseJson":42},"valid":false}, + {"name":"closed-producer-annotation","definition":"producerAnnotation","value":{"contractVersion":"1","grammar":"desk-reviewed-input/1"},"valid":true}, + {"name":"missing-version","definition":"producerAnnotation","value":{"grammar":"desk-reviewed-input/1"},"valid":false}, + {"name":"missing-grammar","definition":"producerAnnotation","value":{"contractVersion":"1"},"valid":false}, + {"name":"old-contract","definition":"producerAnnotation","value":{"contractVersion":"0","grammar":"desk-reviewed-input/1"},"valid":false}, + {"name":"unknown-grammar","definition":"producerAnnotation","value":{"contractVersion":"1","grammar":"desk-reviewed-input/2"},"valid":false}, + {"name":"caller-authority","definition":"producerAnnotation","value":{"contractVersion":"1","grammar":"desk-reviewed-input/1","trusted":true},"valid":false}, + {"name":"received-text-projection","definition":"retainedPreparationSource","value":{"retainedResponseJson":"{ }"},"valid":true}, + {"name":"both-response-forms","definition":"retainedPreparationSource","value":{"response":{},"retainedResponseJson":"{ }"},"valid":false}, + {"name":"missing-exact-text","definition":"retainedPreparationSource","value":{"response":{}},"valid":false}, + {"name":"empty-exact-text","definition":"retainedPreparationSource","value":{"retainedResponseJson":""},"valid":false}, + {"name":"null-exact-text","definition":"retainedPreparationSource","value":{"retainedResponseJson":null},"valid":false}, + {"name":"unrelated-snapshot","definition":"retainedPreparationSource","value":{"retainedResponseJson":"{ }","snapshot":{}},"valid":false}, + {"name":"wrong-case","definition":"retainedPreparationSource","value":{"response":{},"RetainedResponseJson":"{ }"},"valid":false} + ] +} diff --git a/internal/runner/testdata/retained-column-producer-draft/schema.json b/internal/runner/testdata/retained-column-producer-draft/schema.json new file mode 100644 index 0000000..5ca6282 --- /dev/null +++ b/internal/runner/testdata/retained-column-producer-draft/schema.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "urn:judgment-pack:runner:draft:retained-column-producer-transport:1", + "title": "Runner Draft retained-column transport projections", + "description": "Structural projections only. These definitions confer no acquisition, signature or original-history authority. The complete trusted profile, mapping and signed envelope are independently verified by Runner.", + "$defs": { + "producerAnnotation": { + "type": "object", + "required": ["contractVersion", "grammar"], + "properties": { + "contractVersion": {"const": "1"}, + "grammar": {"const": "desk-reviewed-input/1"} + }, + "additionalProperties": false + }, + "retainedPreparationSource": { + "type": "object", + "required": ["retainedResponseJson"], + "properties": { + "retainedResponseJson": {"type": "string", "minLength": 1} + }, + "additionalProperties": false + } + } +} diff --git a/internal/runner/verify_disposition_test.go b/internal/runner/verify_disposition_test.go index 9f2cca7..408f7a7 100644 --- a/internal/runner/verify_disposition_test.go +++ b/internal/runner/verify_disposition_test.go @@ -32,7 +32,7 @@ import ( func completedExport(t *testing.T, classes string) (VerificationBundle, []InputProfile, string) { t.Helper() cfg := testConfig(t) - copy := CopyMapping{Facts: []FactMapping{{"/request", "/facts/request"}}, Evidence: []EvidenceMapping{{"intake-form", "/evidence/intake-form"}, {"sponsor-endorsement", "/evidence/sponsor-endorsement"}}} + copy := CopyMapping{Facts: []FactMapping{{Target: "/request", Source: "/facts/request"}}, Evidence: []EvidenceMapping{{Requirement: "intake-form", Source: "/evidence/intake-form"}, {Requirement: "sponsor-endorsement", Source: "/evidence/sponsor-endorsement"}}} // The case carries a member named like "facts" but for case. It is data, not // a field of the export, and the export still verifies. data := encode(sample()) @@ -61,7 +61,7 @@ func completedExport(t *testing.T, classes string) (VerificationBundle, []InputP fixture.Source.Mapping.Case.Facts = copy.Facts fixture.Source.Mapping.Case.Evidence = copy.Evidence[:1] fixture.Source.Case = json.RawMessage(`{"id":7,"evidence":{"intake-form":"present"}}`) - read = CopyMapping{Facts: []FactMapping{{"/vendor/name", "/name"}}, Evidence: []EvidenceMapping{}} + read = CopyMapping{Facts: []FactMapping{{Target: "/vendor/name", Source: "/name"}}, Evidence: []EvidenceMapping{}} second(p, "name", "/vendor/name", CopyMapping{Facts: []FactMapping{}, Evidence: copy.Evidence[1:]}) case "influenced": p.Class = "generated" @@ -71,7 +71,7 @@ func completedExport(t *testing.T, classes string) (VerificationBundle, []InputP fixture.Source.Mapping.Sources[0].ProfileDigest = profileHash(p) both := []string{"record", "generated"} fixture.Source.Mapping.Admits = &Admission{Facts: map[string][]string{"/screen/kind": {"generated"}, "/request": both}, Evidence: map[string][]string{"intake-form": both, "sponsor-endorsement": both}} - read = CopyMapping{Facts: []FactMapping{{"/screen/kind", "/kind"}}, Evidence: []EvidenceMapping{}} + read = CopyMapping{Facts: []FactMapping{{Target: "/screen/kind", Source: "/kind"}}, Evidence: []EvidenceMapping{}} result = []byte(`{"kind":"data-access"}`) second(record, "kind", "/screen/kind", copy) fixture.Source.Sources["detail"] = SourceValue{Response: signResponse(t, record, key, []byte(`{"tool":"lookup","arguments":{"kind":"data-access"}}`), encode(sample()), at, 1)} diff --git a/internal/runner/verify_preparation.go b/internal/runner/verify_preparation.go index 0749d2f..de16907 100644 --- a/internal/runner/verify_preparation.go +++ b/internal/runner/verify_preparation.go @@ -63,7 +63,7 @@ const ( // refusalCodes are the codes §11 gives a refusal; every other code is a // finding's. -var refusalCodes = map[string]bool{codeOverBound: true, codeMalformed: true, "version-unread": true, codeKindUnread: true} +var refusalCodes = map[string]bool{"capability-unsupported": true, "profile-unsupported": true, codeOverBound: true, codeMalformed: true, "version-unread": true, codeKindUnread: true} // verifiedKinds are the source kinds the verifier reads: those the vectors // hold (spec/dialect.md §4, §14). A dialect that names another kind Runner @@ -136,12 +136,13 @@ func verificationOutcome(err error) (result, code string) { // read. Binding is nil when no binding document is given, and Sources when no // acquisitions are, which is the empty object. type PreparationFixture struct { - Dialect []byte - Binding []byte - Case []byte - Sources []byte - Profiles []byte - Preparation []byte + ConversionContract *ConversionContract + Dialect []byte + Binding []byte + Case []byte + Sources []byte + Profiles []byte + Preparation []byte } // PreparationPin holds an expected preparation's bytes to the digest supplied @@ -150,8 +151,11 @@ type PreparationFixture struct { // name is not the one its publisher pinned, and is not read. A preparation // over its bound is not digested: the reading refuses it, input-over-bound, // without reading it whole. -func PreparationPin(preparation []byte, pin string) error { - if len(preparation) > maxPreparationDocument { +func PreparationPin(preparation []byte, pin string, selection ...*ConversionContract) error { + if e := selectedConversion(selection).validate("preparation-verification"); e != nil { + return e + } + if len(preparation) > artifactLimit(selectedConversion(selection), maxPreparationDocument, columnPreparationLimit) { return nil } if got := digest(preparation); got != pin { @@ -237,6 +241,16 @@ func VerifyPreparation(f PreparationFixture) PreparationReport { return PreparationReport{Result: result, Code: code, Reason: err.Error()} } + if e := f.ConversionContract.validate("document-validation", "preview", "preparation", "preparation-verification"); e != nil { + return failed(e) + } + prepLimit := artifactLimit(f.ConversionContract, maxPreparationDocument, columnPreparationLimit) + docLimit := artifactLimit(f.ConversionContract, maxPublishedDialect, columnDocumentLimit) + allLimit := artifactLimit(f.ConversionContract, MaxBody, columnCombinedLimit) + profilesLimit := artifactLimit(f.ConversionContract, maxProfilesDocument, columnProfilesLimit) + if code := columnProfileBytes(f.Dialect); code != "" { + return stop(code, "retained-column profile is unsupported or malformed") + } sources := f.Sources if sources == nil { sources = []byte(`{}`) @@ -245,13 +259,13 @@ func VerifyPreparation(f PreparationFixture) PreparationReport { // §12's bounds on bytes, on every document before any is read (§11's // first phase). switch { - case len(f.Preparation) > maxPreparationDocument: + case len(f.Preparation) > prepLimit: return stop(codeOverBound, fmt.Sprintf("the preparation is over %d bytes", maxPreparationDocument)) - case len(f.Dialect) > maxPublishedDialect: + case len(f.Dialect) > docLimit: return stop(codeOverBound, fmt.Sprintf("the dialect is over %d bytes", maxPublishedDialect)) - case len(f.Dialect)+len(f.Case)+len(sources) > MaxBody: + case len(f.Dialect)+len(f.Case)+len(sources) > allLimit: return stop(codeOverBound, fmt.Sprintf("the dialect, the case and the acquisitions are together over %d bytes", MaxBody)) - case len(f.Profiles) > maxProfilesDocument: + case len(f.Profiles) > profilesLimit: return stop(codeOverBound, fmt.Sprintf("the profiles are over %d bytes", maxProfilesDocument)) case f.Binding != nil && len(f.Binding) > maxBindingDocument: return stop(codeOverBound, fmt.Sprintf("the binding document is over %d bytes", maxBindingDocument)) @@ -306,11 +320,18 @@ func VerifyPreparation(f PreparationFixture) PreparationReport { if err != nil { return stop(codeMalformed, "the profiles: "+err.Error()) } - source := &SourceInput{Case: f.Case} + source := &SourceInput{Case: f.Case, ConversionContract: f.ConversionContract} if err = strictJSON(sources, &source.Sources); err != nil || source.Sources == nil || !exactAcquisitionMembers(sources) { return stop(codeMalformed, fmt.Sprintf("the acquisitions are not one object of acquisitions by source: %v", err)) } given, _ := read["the preparation"].(map[string]any) + var selectedPreparation Preparation + if strictJSON(f.Preparation, &selectedPreparation) != nil || !sameConversion(selectedPreparation.ConversionContract, f.ConversionContract) { + return stop(codeMalformed, "preparation conversion selection differs") + } + if err := columnReferenceForms(given); err != nil { + return stop(codeMalformed, err.Error()) + } verifiedAt, _ := given["verifiedAt"].(string) at, ok := receiptInstant(verifiedAt) if !ok { @@ -320,6 +341,7 @@ func VerifyPreparation(f PreparationFixture) PreparationReport { if err = strictJSON(f.Dialect, &dialect); err != nil { return stop(codeMalformed, "the dialect is not a dialect document: "+err.Error()) } + dialect.selectedConversion = f.ConversionContract if err = exactDialectForm(f.Dialect, dialect); err != nil { return stop(codeMalformed, "the dialect has invalid members") } @@ -400,14 +422,15 @@ const PreparationVerifierVersion = 1 func PreparationVerifierCapabilities(release string) []byte { shapes := sortedKeys(adapterShapes) capabilities := map[string]any{ - "command": "verify-preparation", - "version": PreparationVerifierVersion, - "runner": release, - "dialectVersions": []int{2, 3}, - "formatVersions": []string{"2.0.0", "3.0.0"}, - "sourceKinds": sortedKeys(verifiedKinds), - "shapes": shapes, - "instant": freshnessAgainst, + "conversionContracts": ConversionCapabilities("preparation-verification"), + "command": "verify-preparation", + "version": PreparationVerifierVersion, + "runner": release, + "dialectVersions": []int{2, 3}, + "formatVersions": []string{"2.0.0", "3.0.0"}, + "sourceKinds": sortedKeys(verifiedKinds), + "shapes": shapes, + "instant": freshnessAgainst, "report": map[string]any{ "form": "spec/dialect.md §11", "version": 1, diff --git a/internal/runner/workflow_attempt.go b/internal/runner/workflow_attempt.go index 7f7c6a4..6d8799c 100644 --- a/internal/runner/workflow_attempt.go +++ b/internal/runner/workflow_attempt.go @@ -200,7 +200,11 @@ func finishWorkflowAttempt(w workflowInventory, id string, result workflowAttemp if bundle.Run.Input.Preparation == nil && (bundle.Run.State == "completed" || len(bundle.Run.Audit) > 0 || len(bundle.Run.Result) > 0) { return w, errWorkflowTransition } - _, caseBytes, err := workflowCase(bundle.Run.Input.Source.Case) + retainedCase, caseErr := columnCaseBytes(bundle.Run.Input.Source) + if caseErr != nil { + return w, errWorkflowTransition + } + _, caseBytes, err := workflowCase(retainedCase) if err != nil || instance.CaseDigest == nil || digest(caseBytes) != *instance.CaseDigest { return w, errWorkflowTransition } diff --git a/internal/runner/workflow_checkpoint.go b/internal/runner/workflow_checkpoint.go index 5add76e..cacc7bb 100644 --- a/internal/runner/workflow_checkpoint.go +++ b/internal/runner/workflow_checkpoint.go @@ -13,7 +13,9 @@ func workflowRunExtends(previous, current Run) bool { return false } a, b := previous.Input.Source, current.Input.Source - if !sameJSON(a.Case, b.Case) || !sameJSON(encode(a.Mapping), encode(b.Mapping)) || !sameJSON(encode(a.Import), encode(b.Import)) { + ac, ae := columnCaseBytes(a) + bc, be := columnCaseBytes(b) + if ae != nil || be != nil || !sameJSON(ac, bc) || !sameJSON(encode(a.Mapping), encode(b.Mapping)) || !sameJSON(encode(a.Import), encode(b.Import)) { return false } for name, value := range a.Sources { diff --git a/internal/runner/workflow_read_artifacts.go b/internal/runner/workflow_read_artifacts.go index c584de6..80d3b5d 100644 --- a/internal/runner/workflow_read_artifacts.go +++ b/internal/runner/workflow_read_artifacts.go @@ -272,7 +272,7 @@ func (r *workflowReader) preparations() error { // Recompute with the same offline ordering to retain lineage and whether // evidence was absent, which the public report deliberately normalizes. var source SourceInput - source.Case = fixture.Case + setColumnCase(&source, fixture.Case) if strictJSON(fixture.Sources, &source.Sources) != nil { return workflowRefusal(codeMalformed) } diff --git a/internal/runner/workflow_read_identity.go b/internal/runner/workflow_read_identity.go index a08f393..d6d2bf7 100644 --- a/internal/runner/workflow_read_identity.go +++ b/internal/runner/workflow_read_identity.go @@ -116,7 +116,8 @@ func (r *workflowReader) identities() error { a := &r.attempts[i][j] b := a.bundle source := b.Run.Input.Source - if b.ReleaseDigest != frozen.ReleaseDigest || releaseDigest(b.Release) != frozen.ReleaseDigest || b.Run.ReleaseID != held.releaseValue.ID || !mappingMatchesRelease(held.releaseValue, b.Run.Input) || source == nil || !sameWorkflowCanonical(encode(source.Mapping), held.bound) || !sameJSON(source.Case, caseBytes) { + sourceCase, sourceCaseErr := columnCaseBytes(source) + if sourceCaseErr != nil || b.ReleaseDigest != frozen.ReleaseDigest || releaseDigest(b.Release) != frozen.ReleaseDigest || b.Run.ReleaseID != held.releaseValue.ID || !mappingMatchesRelease(held.releaseValue, b.Run.Input) || source == nil || !sameWorkflowCanonical(encode(source.Mapping), held.bound) || !sameJSON(sourceCase, caseBytes) { return workflowFinding("stage-binding-mismatch") } if len(held.binding) > 0 { diff --git a/openapi.json b/openapi.json index ef50571..c428382 100644 --- a/openapi.json +++ b/openapi.json @@ -1886,1170 +1886,2371 @@ } } } - } - }, - "components": { - "securitySchemes": { - "bearer": { - "type": "http", - "scheme": "bearer" - } }, - "schemas": { - "Input": { - "type": "object", - "properties": { - "facts": {}, - "evidence": { - "type": "object", - "additionalProperties": { - "enum": [ - "present", - "absent", - "unknown" - ] + "/retained-column/1/inputs/next": { + "post": { + "operationId": "retainedColumnPlanNextInputSource", + "description": "Experimental retained-column Base adapter. Exact installed identity and complete operation roles are required before effects. Ordinary routes retain ordinary limits. Verify and derive a mapping v2 prefix. Returns the next instantiated acquisition request, or complete prepared input. Accepts source-only partial input; checks every trusted profile and class admission before returning any request. Performs no network calls, evaluation or persistence.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Input" + } } - }, - "source": { - "$ref": "#/components/schemas/SourceInput" - }, - "preparation": { - "$ref": "#/components/schemas/Preparation", - "readOnly": true, - "description": "Server-computed for v2; never trusted from a caller." } }, - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "facts" - ] + "responses": { + "200": { + "description": "Next source or complete preparation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InputPlan" + } + } + } }, + "default": { + "description": "Rejected input", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "parameters": [ { - "required": [ - "source" - ] + "name": "JPack-Conversion-Contract", + "in": "header", + "required": true, + "schema": { + "type": "string", + "maxLength": 4096 + }, + "description": "Canonical unpadded base64url of closed ConversionContract JSON. Validated after authentication and before the larger body read. Body source.conversionContract must match exactly." } - ], - "description": "Manual facts/evidence, v1 selected file, or ordered v2 case/file/gateway-operation mapping. Omit facts/evidence to use projection; supplied values must match. V2 verification requires installation profiles. A dialect of version 3 is read as version 2 is, its unbound sources bound at import (source.import)." - }, - "PreviewRequest": { - "type": "object", - "properties": { - "pack": { - "type": "string", - "maxLength": 1048576 - }, - "input": { - "$ref": "#/components/schemas/Input" - }, - "matrix": { - "type": "string", - "maxLength": 1048576, - "description": "Optional serialized Runtime matrix with saved expectations. Omit only when no saved tests exist. It is evaluated afresh against the frozen pack and Runtime." - }, - "testSource": { - "$ref": "#/components/schemas/TestSource" + ] + } + }, + "/retained-column/1/inputs/preview": { + "post": { + "operationId": "retainedColumnPreviewInputMapping", + "description": "Experimental retained-column Base adapter. Exact installed identity and complete operation roles are required before effects. Ordinary routes retain ordinary limits. Project a retained v1 file or verify/derive a v2 ordered mapping, without network acquisition, persistence or evaluation. Invalid proof and derivation errors refuse preparation; valid rule unknowns remain policy data.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Input" + } + } } }, - "required": [ - "pack", - "input" - ], - "additionalProperties": false - }, - "CreateJob": { - "type": "object", - "properties": { - "name": { - "type": "string", - "minLength": 1, - "maxLength": 160 - }, - "releaseId": { - "type": "string" - }, - "reviewed": { - "const": true + "responses": { + "200": { + "description": "Mapped inputs", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InputPreview" + } + } + } }, - "trigger": { - "$ref": "#/components/schemas/TriggerConfig" + "default": { + "description": "Rejected input", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } } }, - "required": [ - "name", - "releaseId", - "reviewed" - ], - "additionalProperties": false, - "description": "Requires explicit review. Only passed checks and explicitly reviewed not-run releases are admitted. Failed, incomplete or mismatched test evidence returns 409 release_not_ready. An installation booted with requireTestedReleases refuses a new job from a not-run release with 409 release_untested; repeating the creation of an existing job still returns it. Coverage never gates. Reusing an immutable release and name is idempotent. A new job from a release that names a profile set aside when Runner opened its store is refused as 422 input_profile_set_aside; repeating the creation of a job made before still returns it." - }, - "Job": { - "type": "object", - "properties": { - "schemaVersion": { - "const": "1" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "releaseId": { - "type": "string" - }, - "revision": { - "const": 1 - }, - "createdAt": { - "type": "string" - }, - "workspace": { - "type": "string" - }, - "owner": { - "type": "string" - }, - "initialTriggerId": { - "type": "string" - }, - "initialTriggerDigest": { - "type": "string" - }, - "packTitle": { - "type": "string" - }, - "packVersion": { - "type": "string" - }, - "recentRuns": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "state": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time" + "parameters": [ + { + "name": "JPack-Conversion-Contract", + "in": "header", + "required": true, + "schema": { + "type": "string", + "maxLength": 4096 + }, + "description": "Canonical unpadded base64url of closed ConversionContract JSON. Validated after authentication and before the larger body read. Body source.conversionContract must match exactly." + } + ] + } + }, + "/retained-column/1/previews": { + "post": { + "operationId": "retainedColumnPreviewRelease", + "responses": { + "201": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Release" } - }, - "required": [], - "additionalProperties": false + } } }, - "triggers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "kind": { - "type": "string" - }, - "paused": { - "type": "boolean" - }, - "nextAt": { - "type": "string" + "default": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" } - }, - "required": [], - "additionalProperties": false + } } } }, - "required": [ - "schemaVersion", - "id", - "name", - "releaseId", - "revision", - "createdAt", - "workspace", - "owner" - ], - "additionalProperties": false - }, - "Release": { - "type": "object", - "required": [ - "id", - "pack", - "packDigest", - "runtimeDigest", - "validation", - "preview", - "sample", - "tests" + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PreviewRequest" + } + } + } + }, + "parameters": [ + { + "name": "JPack-Conversion-Contract", + "in": "header", + "required": true, + "schema": { + "type": "string", + "maxLength": 4096 + }, + "description": "Canonical unpadded base64url of closed ConversionContract JSON. Validated after authentication and before the larger body read. Body source.conversionContract must match exactly." + } ], - "properties": { - "id": { - "type": "string" - }, - "pack": { - "type": "string" - }, - "packDigest": { - "type": "string" - }, - "runtimeDigest": { - "type": "string" + "description": "Experimental retained-column Base adapter. Exact installed identity and complete operation roles are required before effects. Ordinary routes retain ordinary limits. " + } + }, + "/retained-column/1/jobs/{job}/runs": { + "get": { + "operationId": "retainedColumnListRuns", + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Page" + } + } + } }, - "validation": { - "type": "object" + "default": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "parameters": [ + { + "name": "job", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, - "preview": { - "type": "object" + { + "name": "after", + "in": "query", + "schema": { + "type": "integer", + "minimum": 0 + }, + "description": "Cursor from the previous response. Omit for the newest page." }, - "sample": { - "$ref": "#/components/schemas/Input" + { + "name": "q", + "in": "query", + "description": "Literal case-insensitive substring search; ASCII case folding. Applied before pagination.", + "schema": { + "type": "string", + "maxLength": 200 + } }, - "tests": { - "enum": [ - "not-run", - "passed", - "failed", - "error" - ] + { + "name": "state", + "in": "query", + "schema": { + "type": "string", + "enum": [ + "queued", + "running", + "completed", + "failed", + "interrupted" + ] + } }, - "testEvidence": { - "$ref": "#/components/schemas/ReleaseTests" + { + "name": "review", + "in": "query", + "description": "Only failed/interrupted runs or completed runs with unresolved decisions or requested handoff.", + "schema": { + "type": "boolean" + } }, - "inputMapping": { - "$ref": "#/components/schemas/InputMapping" + { + "name": "JPack-Conversion-Contract", + "in": "header", + "required": true, + "schema": { + "type": "string", + "maxLength": 4096 + }, + "description": "Canonical unpadded base64url of closed ConversionContract JSON. Validated after authentication and before the larger body read. Body source.conversionContract must match exactly." + } + ], + "description": "Experimental retained-column Base adapter. Exact installed identity and complete operation roles are required before effects. Ordinary routes retain ordinary limits. " + }, + "post": { + "operationId": "retainedColumnSubmitRun", + "responses": { + "202": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Run" + } + } + } }, - "inputProfiles": { - "type": "array", - "items": { - "$ref": "#/components/schemas/InputProfile" + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Run" + } + } } }, - "mappingWarnings": { - "type": "array", - "items": { - "type": "string" + "default": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } } } - } - }, - "Run": { - "type": "object", - "required": [ - "id", - "jobId", - "releaseId", - "revision", - "state", - "input", - "createdAt", - "attempt" - ], - "properties": { - "id": { - "type": "string" - }, - "jobId": { - "type": "string" + }, + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Input" + } + } + } + }, + "parameters": [ + { + "name": "job", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, - "releaseId": { - "type": "string" + { + "name": "Idempotency-Key", + "in": "header", + "required": true, + "schema": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^[!-~]+$" + }, + "description": "An identical retry under the same key returns the run first accepted, also after a profile its mapping names was set aside. A retry whose input is an import that names a set-aside profile is refused as 422 input_profile_set_aside: the import is bound before the retry is looked up." }, - "revision": { - "const": 1 + { + "name": "JPack-Conversion-Contract", + "in": "header", + "required": true, + "schema": { + "type": "string", + "maxLength": 4096 + }, + "description": "Canonical unpadded base64url of closed ConversionContract JSON. Validated after authentication and before the larger body read. Body source.conversionContract must match exactly." + } + ], + "description": "Experimental retained-column Base adapter. Exact installed identity and complete operation roles are required before effects. Ordinary routes retain ordinary limits. " + } + }, + "/retained-column/1/runs/{run}/verification": { + "get": { + "operationId": "retainedColumnExportInputVerification", + "description": "Experimental retained-column Base adapter. Exact installed identity and complete operation roles are required before effects. Ordinary routes retain ordinary limits. Offline input lineage bundle. Trust the profiles and release digest independently. Does not establish sealed-session completeness or policy truth. Version 2, 3, 4 or 5 may be asked for, at most once (none asked is 2), and the run is served at the highest version up to the one asked whose material it holds, answered 200 either way, so read version from the body: version 3 adds the audit record's original bytes, version 4 also the run's entry in the installation's chain of runs, and version 5 also the record's signature sidecar. A run the store no longer holds, whose entry the chain still names, is answered with 410 run_not_held, naming the entry's sequence. A run of a job with no input mapping, or a v1 file mapping, has no lineage: it is served from version 3 on, by the same steps, with inputs: not-mapped and no preparation, and is refused with 422 not_verified_mapping when it holds no audit record's bytes or version 2 (or none) is asked.", + "parameters": [ + { + "name": "run", + "in": "path", + "required": true, + "schema": { + "type": "string" + } }, - "state": { - "enum": [ - "queued", - "running", - "completed", - "failed", - "interrupted" + { + "name": "version", + "in": "query", + "required": false, + "description": "The export version asked for, at most once, in a well-formed query. Without it, or with 2: version 2, unchanged. With 3: version 3 when the run holds its audit record's bytes, and version 2 for a run that holds none (recorded before Runner kept them, or without an audit record). With 4: version 4 when the run also has an entry in the installation's chain of runs, and otherwise what 3 serves: a run recorded before Runner chained its runs has no entry and is unchained. With 5: version 5 when the run also keeps the signature sidecar of its audit record, and otherwise what 4 serves: a run recorded without a signing key, by a Runtime that cannot sign, or before Runner kept the sidecar, is unsigned. Anything else, or a malformed query, is refused with invalid_version. A run without lineage (no input mapping, or a v1 file mapping) has no version-2 export: with none or 2 it is refused with 422 not_verified_mapping, and with 3, 4 or 5 it is served as above, from version 3.", + "schema": { + "type": "integer", + "enum": [ + 2, + 3, + 4, + 5 + ], + "default": 2 + } + }, + { + "name": "JPack-Conversion-Contract", + "in": "header", + "required": true, + "schema": { + "type": "string", + "maxLength": 4096 + }, + "description": "Canonical unpadded base64url of closed ConversionContract JSON. Validated after authentication and before the larger body read. Body source.conversionContract must match exactly." + } + ], + "responses": { + "200": { + "description": "Verification bundle", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/VerificationBundle" + }, + { + "$ref": "#/components/schemas/VerificationBundleV3" + }, + { + "$ref": "#/components/schemas/VerificationBundleV4" + }, + { + "$ref": "#/components/schemas/VerificationBundleV5" + } + ] + } + } + } + }, + "422": { + "description": "not_verified_mapping: the run's job has no input mapping, or a v1 file mapping, so its export has no lineage, and the run holds no audit record's bytes (it failed, was interrupted, expired or has not finished, or was recorded before Runner kept them) or version 2, or none, was asked. Message: \"This run does not use mapping v2, and an export without lineage carries the audit record's bytes: ask for version 3, 4 or 5 of a completed run that holds them.\"", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "default": { + "description": "Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "bearer": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "Input": { + "type": "object", + "properties": { + "facts": {}, + "evidence": { + "type": "object", + "additionalProperties": { + "enum": [ + "present", + "absent", + "unknown" + ] + } + }, + "source": { + "$ref": "#/components/schemas/SourceInput" + }, + "preparation": { + "$ref": "#/components/schemas/Preparation", + "readOnly": true, + "description": "Server-computed for v2; never trusted from a caller." + } + }, + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "facts" + ] + }, + { + "required": [ + "source" ] + } + ], + "description": "Manual facts/evidence, v1 selected file, or ordered v2 case/file/gateway-operation mapping. Omit facts/evidence to use projection; supplied values must match. V2 verification requires installation profiles. A dialect of version 3 is read as version 2 is, its unbound sources bound at import (source.import)." + }, + "PreviewRequest": { + "type": "object", + "properties": { + "pack": { + "type": "string", + "maxLength": 1048576 }, "input": { "$ref": "#/components/schemas/Input" }, - "createdAt": { + "matrix": { + "type": "string", + "maxLength": 1048576, + "description": "Optional serialized Runtime matrix with saved expectations. Omit only when no saved tests exist. It is evaluated afresh against the frozen pack and Runtime." + }, + "testSource": { + "$ref": "#/components/schemas/TestSource" + } + }, + "required": [ + "pack", + "input" + ], + "additionalProperties": false + }, + "CreateJob": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "releaseId": { "type": "string" }, - "attempt": { - "type": "integer", - "minimum": 0, - "maximum": 1 + "reviewed": { + "const": true }, - "result": { - "type": "object" + "trigger": { + "$ref": "#/components/schemas/TriggerConfig" + } + }, + "required": [ + "name", + "releaseId", + "reviewed" + ], + "additionalProperties": false, + "description": "Requires explicit review. Only passed checks and explicitly reviewed not-run releases are admitted. Failed, incomplete or mismatched test evidence returns 409 release_not_ready. An installation booted with requireTestedReleases refuses a new job from a not-run release with 409 release_untested; repeating the creation of an existing job still returns it. Coverage never gates. Reusing an immutable release and name is idempotent. A new job from a release that names a profile set aside when Runner opened its store is refused as 422 input_profile_set_aside; repeating the creation of a job made before still returns it." + }, + "Job": { + "type": "object", + "properties": { + "schemaVersion": { + "const": "1" }, - "audit": { - "type": "object" + "id": { + "type": "string" }, - "auditBytes": { - "type": "string", - "contentEncoding": "base64", - "description": "The audit record exactly as the Runtime wrote it, without the newline that ends its line, in standard base64: the bytes a digest of the record, such as a gateway receipt's decision.recordDigest, is taken over. audit is the same record parsed, which Runner encodes again with other bytes. Every run Runner now records completed has them: an evaluation whose trail is not that one line, ended by a newline, is refused and its run fails. Absent for a run recorded before Runner kept them, for one Runner 0.4.0 completed without them, and for a run that did not complete. Not in run lists or briefs." + "name": { + "type": "string" }, - "auditSignatures": { - "type": "string", - "contentEncoding": "base64", - "description": "The signature sidecar of the attempt's audit trail, signatures.jsonl, exactly as the Runtime wrote it, newlines included, in standard base64: the line signing the audit record, when the installation gave the Runtime a signing key (signingKey on the boot line) and it could sign. At most 16 KiB. Absent for a run recorded without a key, by a Runtime that cannot sign, or before Runner kept the sidecar; such a run is unsigned. What it holds is checked only by verify-run --public-key. Not in run lists or briefs." + "releaseId": { + "type": "string" }, - "problem": { + "revision": { + "const": 1 + }, + "createdAt": { "type": "string" }, - "trigger": { - "$ref": "#/components/schemas/TriggerOrigin" + "workspace": { + "type": "string" }, - "interruptedAt": { - "type": "string", - "description": "When Runner saw this run stop, at an orderly stop: the moment the evaluation it was in was cancelled. finishedAt keeps its meaning, the time Runner recorded the run's end. A run found running at a restart has none, since Runner did not see it stop: its run.interrupted journal entry gives the window the stop lies in. Served with the run and in run lists; not in verification exports, whose version-2 readers decode strictly." + "owner": { + "type": "string" }, - "reason": { - "enum": [ - "queue-expired", - "binding-refused", - "profile-set-aside" - ], - "description": "Why a run ended without an evaluation, as a code: queue-expired, for an automatic run whose queue time ran out before the dispatcher reached it; binding-refused, for a mapping-v2 run whose Runtime refused the preparation's binding Runner passed (JPS-INVOCATION-BINDING), a defect of Runner, never retried without the binding; profile-set-aside, for a mapping-v2 run queued before a profile its release names was set aside when Runner opened its store, which never starts; its problem names the profile. Its state stays failed, and its problem the sentence it was. Absent for every other run, and for a run that expired before Runner kept the code. Served with the run and in run lists; not in verification exports." + "initialTriggerId": { + "type": "string" }, - "signing": { - "type": "object", - "description": "Whether the run's audit record is signed under the expected key: the public key of the installation's signing key as Runner read it at start, or the boot line's signingPublicKey, which that key must have, fixed for as long as it runs, and passed to each operational evaluation's Runtime as JPACK_SIGNING_PUBLIC_KEY. Held to the record's bytes the run keeps and the sidecar as kept (auditSignatures), by the check verify-run --public-key makes: signed when a valid signature under that key covers the record and no check failed, failed otherwise, with the reason in these exact words. A failed signing never withholds the decision: the run completes as an unsigned one does. Every run recorded completed with a signing key has it; absent for a run recorded without a key, one that did not complete, and one recorded before Runner kept it. Served with the run and in run lists; not in verification exports, which carry the sidecar itself.", - "required": [ - "status" - ], - "properties": { - "status": { - "enum": [ - "signed", - "failed" - ] + "initialTriggerDigest": { + "type": "string" + }, + "packTitle": { + "type": "string" + }, + "packVersion": { + "type": "string" + }, + "recentRuns": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "state": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time" + } }, - "publicKey": { - "type": "string", - "pattern": "^[0-9a-f]{64}$", + "required": [], + "additionalProperties": false + } + }, + "triggers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "paused": { + "type": "boolean" + }, + "nextAt": { + "type": "string" + } + }, + "required": [], + "additionalProperties": false + } + } + }, + "required": [ + "schemaVersion", + "id", + "name", + "releaseId", + "revision", + "createdAt", + "workspace", + "owner" + ], + "additionalProperties": false + }, + "Release": { + "type": "object", + "required": [ + "id", + "pack", + "packDigest", + "runtimeDigest", + "validation", + "preview", + "sample", + "tests" + ], + "properties": { + "id": { + "type": "string" + }, + "pack": { + "type": "string" + }, + "packDigest": { + "type": "string" + }, + "runtimeDigest": { + "type": "string" + }, + "validation": { + "type": "object" + }, + "preview": { + "type": "object" + }, + "sample": { + "$ref": "#/components/schemas/Input" + }, + "tests": { + "enum": [ + "not-run", + "passed", + "failed", + "error" + ] + }, + "testEvidence": { + "$ref": "#/components/schemas/ReleaseTests" + }, + "inputMapping": { + "$ref": "#/components/schemas/InputMapping" + }, + "inputProfiles": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InputProfile" + } + }, + "mappingWarnings": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "Run": { + "type": "object", + "required": [ + "id", + "jobId", + "releaseId", + "revision", + "state", + "input", + "createdAt", + "attempt" + ], + "properties": { + "id": { + "type": "string" + }, + "jobId": { + "type": "string" + }, + "releaseId": { + "type": "string" + }, + "revision": { + "const": 1 + }, + "state": { + "enum": [ + "queued", + "running", + "completed", + "failed", + "interrupted" + ] + }, + "input": { + "$ref": "#/components/schemas/Input" + }, + "createdAt": { + "type": "string" + }, + "attempt": { + "type": "integer", + "minimum": 0, + "maximum": 1 + }, + "result": { + "type": "object" + }, + "audit": { + "type": "object" + }, + "auditBytes": { + "type": "string", + "contentEncoding": "base64", + "description": "The audit record exactly as the Runtime wrote it, without the newline that ends its line, in standard base64: the bytes a digest of the record, such as a gateway receipt's decision.recordDigest, is taken over. audit is the same record parsed, which Runner encodes again with other bytes. Every run Runner now records completed has them: an evaluation whose trail is not that one line, ended by a newline, is refused and its run fails. Absent for a run recorded before Runner kept them, for one Runner 0.4.0 completed without them, and for a run that did not complete. Not in run lists or briefs." + }, + "auditSignatures": { + "type": "string", + "contentEncoding": "base64", + "description": "The signature sidecar of the attempt's audit trail, signatures.jsonl, exactly as the Runtime wrote it, newlines included, in standard base64: the line signing the audit record, when the installation gave the Runtime a signing key (signingKey on the boot line) and it could sign. At most 16 KiB. Absent for a run recorded without a key, by a Runtime that cannot sign, or before Runner kept the sidecar; such a run is unsigned. What it holds is checked only by verify-run --public-key. Not in run lists or briefs." + }, + "problem": { + "type": "string" + }, + "trigger": { + "$ref": "#/components/schemas/TriggerOrigin" + }, + "interruptedAt": { + "type": "string", + "description": "When Runner saw this run stop, at an orderly stop: the moment the evaluation it was in was cancelled. finishedAt keeps its meaning, the time Runner recorded the run's end. A run found running at a restart has none, since Runner did not see it stop: its run.interrupted journal entry gives the window the stop lies in. Served with the run and in run lists; not in verification exports, whose version-2 readers decode strictly." + }, + "reason": { + "enum": [ + "queue-expired", + "binding-refused", + "profile-set-aside" + ], + "description": "Why a run ended without an evaluation, as a code: queue-expired, for an automatic run whose queue time ran out before the dispatcher reached it; binding-refused, for a mapping-v2 run whose Runtime refused the preparation's binding Runner passed (JPS-INVOCATION-BINDING), a defect of Runner, never retried without the binding; profile-set-aside, for a mapping-v2 run queued before a profile its release names was set aside when Runner opened its store, which never starts; its problem names the profile. Its state stays failed, and its problem the sentence it was. Absent for every other run, and for a run that expired before Runner kept the code. Served with the run and in run lists; not in verification exports." + }, + "signing": { + "type": "object", + "description": "Whether the run's audit record is signed under the expected key: the public key of the installation's signing key as Runner read it at start, or the boot line's signingPublicKey, which that key must have, fixed for as long as it runs, and passed to each operational evaluation's Runtime as JPACK_SIGNING_PUBLIC_KEY. Held to the record's bytes the run keeps and the sidecar as kept (auditSignatures), by the check verify-run --public-key makes: signed when a valid signature under that key covers the record and no check failed, failed otherwise, with the reason in these exact words. A failed signing never withholds the decision: the run completes as an unsigned one does. Every run recorded completed with a signing key has it; absent for a run recorded without a key, one that did not complete, and one recorded before Runner kept it. Served with the run and in run lists; not in verification exports, which carry the sidecar itself.", + "required": [ + "status" + ], + "properties": { + "status": { + "enum": [ + "signed", + "failed" + ] + }, + "publicKey": { + "type": "string", + "pattern": "^[0-9a-f]{64}$", "description": "The expected key, which a signed record is signed under. Present only when signed." }, - "reason": { - "enum": [ - "The record's signature sidecar could not be read.", - "The record's signature sidecar names a key that is not the expected one.", - "The record's signature sidecar does not verify under the expected key.", - "The Runtime signed nothing: the key at the signing key's path is not the expected key.", - "The Runtime signed nothing, and the key at the signing key's path could not be read as a key.", - "The record carries no signature." - ], - "description": "Why the signing failed. A sidecar that could not be read is never taken for no sidecar. Where no line signs the record, the key at the signing key's path, read again after the evaluation, says which of the last three: Runtime 0.30.0 and later refuse to sign with a seed that is not the expected key. Present only when failed. It names no path and no key." - } - }, - "additionalProperties": false - }, - "binding": { - "type": "object", - "description": "What Runner passed the Runtime of a completed mapping-v2 run's operational evaluation (MAPPING-V2, The preparation's binding): bound, when the Runtime was given the binding {\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:\"} and the run's audit record carries it byte for byte; unsupported-runtime, when the Runtime names a release before 0.31.0 and was given none; unversioned-runtime, when it names no release (0.0.0-dev, a build without its release's version), so that whether it takes a binding cannot be told, and was given none. Absent for a run without a mapping v2, one that did not complete, and one recorded before Runner passed a binding. Served with the run and in run lists; not in verification exports, whose audit record carries the binding itself.", - "required": [ - "status" - ], - "properties": { - "status": { - "enum": [ - "bound", - "unsupported-runtime", - "unversioned-runtime" - ] - } + "reason": { + "enum": [ + "The record's signature sidecar could not be read.", + "The record's signature sidecar names a key that is not the expected one.", + "The record's signature sidecar does not verify under the expected key.", + "The Runtime signed nothing: the key at the signing key's path is not the expected key.", + "The Runtime signed nothing, and the key at the signing key's path could not be read as a key.", + "The record carries no signature." + ], + "description": "Why the signing failed. A sidecar that could not be read is never taken for no sidecar. Where no line signs the record, the key at the signing key's path, read again after the evaluation, says which of the last three: Runtime 0.30.0 and later refuse to sign with a seed that is not the expected key. Present only when failed. It names no path and no key." + } + }, + "additionalProperties": false + }, + "binding": { + "type": "object", + "description": "What Runner passed the Runtime of a completed mapping-v2 run's operational evaluation (MAPPING-V2, The preparation's binding): bound, when the Runtime was given the binding {\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:\"} and the run's audit record carries it byte for byte; unsupported-runtime, when the Runtime names a release before 0.31.0 and was given none; unversioned-runtime, when it names no release (0.0.0-dev, a build without its release's version), so that whether it takes a binding cannot be told, and was given none. Absent for a run without a mapping v2, one that did not complete, and one recorded before Runner passed a binding. Served with the run and in run lists; not in verification exports, whose audit record carries the binding itself.", + "required": [ + "status" + ], + "properties": { + "status": { + "enum": [ + "bound", + "unsupported-runtime", + "unversioned-runtime" + ] + } + }, + "additionalProperties": false + } + } + }, + "JobDetail": { + "type": "object", + "properties": { + "job": { + "$ref": "#/components/schemas/Job" + }, + "release": { + "$ref": "#/components/schemas/Release" + } + }, + "required": [ + "job", + "release" + ], + "additionalProperties": false + }, + "Page": { + "type": "object", + "properties": { + "items": { + "type": "array", + "maxItems": 50, + "items": { + "type": "object" + } + }, + "next": { + "type": "integer", + "minimum": 0 + } + }, + "required": [ + "items", + "next" + ], + "additionalProperties": false + }, + "Status": { + "type": "object" + }, + "Error": { + "type": "object", + "properties": { + "error": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "code", + "message", + "retryable" + ], + "additionalProperties": false + } + }, + "required": [ + "error" + ], + "additionalProperties": false + }, + "TestSource": { + "type": "object", + "additionalProperties": false, + "properties": { + "packKey": { + "type": "string" + }, + "suiteRevision": { + "type": "integer" + }, + "caseNames": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "exploratoryCount": { + "type": "integer" + } + } + }, + "ReleaseTests": { + "type": "object", + "required": [ + "status", + "matrix", + "matrixDigest", + "packDigest", + "runtimeDigest", + "checkedAt" + ], + "properties": { + "status": { + "enum": [ + "passed", + "failed", + "error" + ] + }, + "matrix": { + "type": "string" + }, + "matrixDigest": { + "type": "string" + }, + "packDigest": { + "type": "string" + }, + "runtimeDigest": { + "type": "string" + }, + "checkedAt": { + "type": "string", + "format": "date-time" + }, + "source": { + "$ref": "#/components/schemas/TestSource" + }, + "report": { + "type": "object", + "description": "Retained Runtime packs test outputVersion 2, including rows and advisory coverage. Incomplete invocations may retain a diagnostic report." + }, + "problem": { + "type": "string" + } + } + }, + "InputMapping": { + "oneOf": [ + { + "$ref": "#/components/schemas/InputMappingV1" + }, + { + "$ref": "#/components/schemas/InputMappingV2" + }, + { + "$ref": "#/components/schemas/InputMappingV3" + }, + { + "$ref": "#/components/schemas/NamedInputMappingV2" + }, + { + "$ref": "#/components/schemas/NamedInputMappingV3" + } + ] + }, + "SourceInput": { + "type": "object", + "additionalProperties": false, + "properties": { + "mapping": { + "$ref": "#/components/schemas/InputMapping", + "description": "The mapping. With import, omit it, and Runner makes it the bound dialect; or give that bound dialect, which must be the one the import makes. Runner makes it only when the member is absent: a mapping given beside import, {} and null included, that is not the bound dialect byte for byte in canonical form is refused as invalid_source_input." + }, + "snapshot": { + "$ref": "#/components/schemas/SourceSnapshot" + }, + "mappingDigest": { + "type": "string", + "description": "Runner-computed mapping digest; if supplied it must match." + }, + "case": { + "type": "object" + }, + "sources": { + "type": "object", + "maxProperties": 16, + "propertyNames": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + }, + "additionalProperties": { + "$ref": "#/components/schemas/SourceValue" + } + }, + "import": { + "$ref": "#/components/schemas/DialectImport" + }, + "conversionContract": { + "$ref": "#/components/schemas/ConversionContract" + }, + "retainedCaseJson": { + "type": "string", + "minLength": 1, + "description": "Sole exact case JSON text on the retained-column path, mutually exclusive with case. Stored text is not canonicalized." + } + }, + "anyOf": [ + { + "required": [ + "mapping" + ] + }, + { + "required": [ + "import" + ] + } + ], + "allOf": [ + { + "not": { + "required": [ + "case", + "retainedCaseJson" + ] + } + } + ] + }, + "SourceSnapshot": { + "type": "object", + "required": [ + "version", + "original" + ], + "description": "Retained JSON file (200,000 decoded bytes maximum). local-file requires selectedAt and forbids proof. google-drive requires the existing Desk DocumentObject proof with Drive selection, receipt response and sealed registry. Runner checks structural/byte binding, not cryptographic authenticity; consumers verify with their configured pin. No provider credentials. Snapshot max 1 MiB.", + "properties": { + "version": { + "const": 1 + }, + "selectedAt": { + "type": "string", + "format": "date-time" + }, + "original": { + "type": "object", + "required": [ + "name", + "mediaType", + "bytes", + "sha256" + ], + "properties": { + "name": { + "type": "string", + "maxLength": 1024 + }, + "mediaType": { + "enum": [ + "application/json", + "text/plain" + ], + "description": "text/plain requires a .json filename." + }, + "bytes": { + "type": "string", + "contentEncoding": "base64" + }, + "sha256": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + } + } + }, + "proof": { + "type": "object", + "description": "Existing signed document acquisition and sealed registry contract; required for Google Drive." + } + } + }, + "InputPreview": { + "type": "object", + "required": [ + "input", + "factsText", + "evidenceText" + ], + "properties": { + "input": { + "$ref": "#/components/schemas/Input" + }, + "factsText": { + "type": "string", + "description": "Exact mapped facts JSON for consumers that cannot represent all JSON numbers losslessly." + }, + "evidenceText": { + "type": "string", + "description": "Exact availability JSON; empty if omitted." + } + } + }, + "InputMappingV1": { + "type": "object", + "required": [ + "version", + "provider", + "facts", + "evidence" + ], + "additionalProperties": false, + "properties": { + "version": { + "const": 1 + }, + "provider": { + "enum": [ + "local-file", + "google-drive" + ] + }, + "facts": { + "type": "array", + "maxItems": 256, + "items": { + "type": "object", + "required": [ + "target", + "source" + ], + "additionalProperties": false, + "properties": { + "target": { + "type": "string", + "description": "Non-root JSON Pointer destination. Targets must not overlap." + }, + "source": { + "type": "string", + "description": "JSON Pointer in the input object, or empty for the root." + } + } + } + }, + "evidence": { + "type": "array", + "maxItems": 128, + "items": { + "type": "object", + "required": [ + "requirement", + "source" + ], + "additionalProperties": false, + "properties": { + "requirement": { + "type": "string", + "minLength": 1, + "maxLength": 256 + }, + "source": { + "type": "string" + } + } + } + } + } + }, + "CopyMapping": { + "type": "object", + "properties": { + "facts": { + "type": "array", + "maxItems": 256, + "items": { + "type": "object", + "required": [ + "target", + "source" + ], + "additionalProperties": false, + "properties": { + "target": { + "type": "string", + "description": "Non-root JSON Pointer destination. Targets must not overlap." + }, + "source": { + "type": "string", + "description": "JSON Pointer in the input object, or empty for the root." + }, + "conversion": { + "$ref": "#/components/schemas/RetainedColumnConversion" + } + } + } + }, + "evidence": { + "type": "array", + "maxItems": 128, + "items": { + "type": "object", + "required": [ + "requirement", + "source" + ], + "additionalProperties": false, + "properties": { + "requirement": { + "type": "string", + "minLength": 1, + "maxLength": 256 + }, + "source": { + "type": "string" + }, + "availability": { + "$ref": "#/components/schemas/RetainedColumnAvailability" + } + } + } + } + }, + "required": [ + "facts", + "evidence" + ], + "additionalProperties": false + }, + "Parameter": { + "type": "object", + "properties": { + "from": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + }, + "pointer": { + "type": "string" + }, + "type": { + "enum": [ + "string", + "integer", + "timestamp" + ] + } + }, + "required": [ + "pointer", + "type" + ], + "additionalProperties": false + }, + "CaseMapping": { + "type": "object", + "properties": { + "parameters": { + "type": "object", + "maxProperties": 64, + "propertyNames": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + }, + "additionalProperties": { + "$ref": "#/components/schemas/Parameter" + } + }, + "facts": { + "type": "array", + "maxItems": 256, + "items": { + "type": "object", + "required": [ + "target", + "source" + ], + "additionalProperties": false, + "properties": { + "target": { + "type": "string", + "description": "Non-root JSON Pointer destination. Targets must not overlap." + }, + "source": { + "type": "string", + "description": "JSON Pointer in the input object, or empty for the root." + }, + "conversion": { + "$ref": "#/components/schemas/RetainedColumnConversion" + } + } + } + }, + "evidence": { + "type": "array", + "maxItems": 128, + "items": { + "type": "object", + "required": [ + "requirement", + "source" + ], + "additionalProperties": false, + "properties": { + "requirement": { + "type": "string", + "minLength": 1, + "maxLength": 256 + }, + "source": { + "type": "string" + }, + "availability": { + "$ref": "#/components/schemas/RetainedColumnAvailability" + } + } + } + } + }, + "required": [ + "facts", + "evidence" + ], + "additionalProperties": false + }, + "RuleCondition": { + "oneOf": [ + { + "type": "object", + "properties": { + "op": { + "const": "always" + } + }, + "required": [ + "op" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "op": { + "const": "exists" + }, + "field": { + "type": "string" + } + }, + "required": [ + "op", + "field" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "op": { + "const": "isTrue" + }, + "field": { + "type": "string" + } + }, + "required": [ + "op", + "field" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "op": { + "const": "isDecimalString" + }, + "field": { + "type": "string" + } + }, + "required": [ + "op", + "field" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "op": { + "const": "equals" + }, + "field": { + "type": "string" + }, + "to": {} + }, + "required": [ + "op", + "field", + "to" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "op": { + "const": "equalsParam" + }, + "field": { + "type": "string" + }, + "param": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + } + }, + "required": [ + "op", + "field", + "param" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "op": { + "const": "freshWithin" + }, + "field": { + "type": "string" + }, + "asOf": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + }, + "maxAge": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + } + }, + "required": [ + "op", + "field", + "asOf", + "maxAge" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "op": { + "const": "not" + }, + "of": { + "$ref": "#/components/schemas/RuleCondition" + } + }, + "required": [ + "op", + "of" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "op": { + "const": "all" + }, + "of": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleCondition" + }, + "maxItems": 64 + } + }, + "required": [ + "op", + "of" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "op": { + "const": "any" + }, + "of": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleCondition" + }, + "maxItems": 64 + } + }, + "required": [ + "op", + "of" + ], + "additionalProperties": false + } + ] + }, + "DerivationRule": { + "type": "object", + "properties": { + "ruleVersion": { + "const": "1" + }, + "parameters": { + "type": "object", + "additionalProperties": { + "enum": [ + "string", + "integer", + "timestamp" + ] + } + }, + "clauses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "when": { + "$ref": "#/components/schemas/RuleCondition" + }, + "reason": { + "type": "string" + }, + "claim": { + "type": "object", + "properties": { + "facts": { + "type": "array", + "items": { + "type": "object", + "properties": { + "pointer": { + "type": "string" + }, + "from": { + "type": "string" + } + }, + "required": [ + "pointer", + "from" + ], + "additionalProperties": false + }, + "maxItems": 256 + }, + "evidence": { + "type": "object", + "maxProperties": 128, + "additionalProperties": { + "enum": [ + "present", + "absent", + "unknown" + ] + } + }, + "acquisitionStatus": { + "enum": [ + "resolved", + "absent", + "unknown" + ] + } + }, + "required": [ + "facts", + "evidence", + "acquisitionStatus" + ], + "additionalProperties": false + } + }, + "required": [ + "when", + "claim", + "reason" + ], + "additionalProperties": false }, - "additionalProperties": false - } - } - }, - "JobDetail": { - "type": "object", - "properties": { - "job": { - "$ref": "#/components/schemas/Job" - }, - "release": { - "$ref": "#/components/schemas/Release" + "minItems": 1, + "maxItems": 64 } }, "required": [ - "job", - "release" + "ruleVersion", + "parameters", + "clauses" ], "additionalProperties": false }, - "Page": { + "SourceRead": { "type": "object", "properties": { - "items": { + "unwrap": { "type": "array", - "maxItems": 50, "items": { - "type": "object" - } + "type": "string" + }, + "maxItems": 4 }, - "next": { - "type": "integer", - "minimum": 0 + "copy": { + "$ref": "#/components/schemas/CopyMapping" + }, + "rule": { + "$ref": "#/components/schemas/DerivationRule" + }, + "sources": { + "type": "array", + "minItems": 1, + "maxItems": 15, + "items": { + "type": "string" + }, + "description": "A research source's reconciliation (spec/dialect.md section 6.4): the earlier research sources it reads, distinct, beside a rule over {\"current\": its record, \"sources\": each named source's record, a skipped one absent}, with no copy and no unwrap. The rule guards each value it selects as found, names what every other status and absence does, writes no evidence, and ends with a clause that writes no fact and resolves nothing; anything else is refused, input-malformed." } }, - "required": [ - "items", - "next" - ], - "additionalProperties": false - }, - "Status": { - "type": "object" - }, - "Error": { - "type": "object", - "properties": { - "error": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - }, - "retryable": { - "type": "boolean" - } - }, + "required": [], + "additionalProperties": false, + "oneOf": [ + { "required": [ - "code", - "message", - "retryable" + "copy" ], - "additionalProperties": false + "not": { + "required": [ + "rule" + ] + } + }, + { + "required": [ + "rule" + ], + "not": { + "required": [ + "copy" + ] + } } - }, - "required": [ - "error" ], - "additionalProperties": false + "description": "copy or rule; a research source's read reads its record through a closed list of pointers (/fields, a declared field's entry, its status, its cites, its value and what is below it, and in a condition an observation's value) and never takes a value from under values, or is a reconciliation (sources and rule)." }, - "TestSource": { + "MappingSource": { "type": "object", - "additionalProperties": false, "properties": { - "packKey": { - "type": "string" + "name": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" }, - "suiteRevision": { - "type": "integer" + "kind": { + "enum": [ + "operation", + "selected-file", + "http", + "sql", + "web", + "research" + ], + "description": "operation and selected-file are version 2's, and a version-3 document's too, prepared as version 2 prepares them. research is a kind of dialect version 3 (spec/dialect.md sections 4.3 and 4.4): a recipe, bound to an AI profile and web profiles of class generated, prepared from the research record its caller retains, each retained response replayed under the profile it came through; Runner asks no model and reads no page. http, sql and web are kinds of dialect version 3 that Runner refuses by name: in a version-3 document, each is refused with a sentence naming the kind, and in a version-2 document, as an unsupported kind." }, - "caseNames": { + "provider": { + "enum": [ + "local-file", + "google-drive" + ] + }, + "profile": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + }, + "profileDigest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + }, + "maxAge": { + "type": "integer", + "minimum": 1, + "maximum": 86400 + }, + "parameters": { "type": "object", + "maxProperties": 64, + "propertyNames": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + }, "additionalProperties": { - "type": "string" + "$ref": "#/components/schemas/Parameter" } }, - "exploratoryCount": { - "type": "integer" - } - } - }, - "ReleaseTests": { - "type": "object", - "required": [ - "status", - "matrix", - "matrixDigest", - "packDigest", - "runtimeDigest", - "checkedAt" - ], - "properties": { - "status": { + "arguments": { + "type": "object", + "description": "Frozen template; whole-value $param and integer-only $text. runAt is derivation-only." + }, + "read": { + "$ref": "#/components/schemas/SourceRead" + }, + "calculation": { + "$ref": "#/components/schemas/CalculationBinding" + }, + "platform": { + "type": "string", + "minLength": 1, + "description": "Version 3, unbound operation: the gateway catalog platform it is read through." + }, + "operation": { + "type": "string", + "minLength": 1, + "description": "Version 3, unbound operation: the operation of that platform's binding." + }, + "shape": { "enum": [ - "passed", - "failed", - "error" - ] + "airbyte", + "mcp", + "http" + ], + "description": "Version 3, unbound operation: the shape that serves it. The profile it is bound to must be of this shape." }, - "matrix": { - "type": "string" + "record": { + "type": "string", + "minLength": 1, + "description": "Version 3, unbound operation: the record it is written against, as a profile's adapter.name names it. The profile it is bound to must name this adapter." }, - "matrixDigest": { - "type": "string" + "method": { + "description": "Version 3, kind http: refused by name with its source." }, - "packDigest": { - "type": "string" + "path": { + "description": "Version 3, kind http: refused by name with its source." }, - "runtimeDigest": { - "type": "string" + "query": { + "description": "Version 3, kind http: refused by name with its source." }, - "checkedAt": { - "type": "string", - "format": "date-time" + "body": { + "description": "Version 3, kind http: refused by name with its source." }, - "source": { - "$ref": "#/components/schemas/TestSource" + "headers": { + "description": "Version 3, kind http: refused by name with its source." }, - "report": { - "type": "object", - "description": "Retained Runtime packs test outputVersion 2, including rows and advisory coverage. Incomplete invocations may retain a diagnostic report." + "statement": { + "description": "Version 3, kind sql: refused by name with its source." }, - "problem": { - "type": "string" - } - } - }, - "InputMapping": { - "oneOf": [ - { - "$ref": "#/components/schemas/InputMappingV1" + "bindings": { + "description": "Version 3, kind sql: refused by name with its source." }, - { - "$ref": "#/components/schemas/InputMappingV2" + "url": { + "description": "Version 3, kind web: refused by name with its source." }, - { - "$ref": "#/components/schemas/InputMappingV3" - } - ] - }, - "SourceInput": { - "type": "object", - "additionalProperties": false, - "properties": { - "mapping": { - "$ref": "#/components/schemas/InputMapping", - "description": "The mapping. With import, omit it, and Runner makes it the bound dialect; or give that bound dialect, which must be the one the import makes. Runner makes it only when the member is absent: a mapping given beside import, {} and null included, that is not the bound dialect byte for byte in canonical form is refused as invalid_source_input." + "question": { + "description": "Version 3, kind research: the question, a string template: a string, a $text whose placeholders name integer parameters, or a $param naming a parameter of type string or timestamp, never runAt. The source's request is its recipe, the question instantiated; it is recorded and never sent." }, - "snapshot": { - "$ref": "#/components/schemas/SourceSnapshot" + "constraints": { + "type": "object", + "description": "Version 3, kind research: the recipe's constraints, in the gateway canonical domain; kept as written." }, - "mappingDigest": { + "model": { "type": "string", - "description": "Runner-computed mapping digest; if supplied it must match." - }, - "case": { - "type": "object" + "minLength": 1, + "description": "Version 3, kind research: the model the recipe asks, at most 256 UTF-8 bytes. The AI profile the source is bound to must declare this model: profile-mismatch otherwise." }, - "sources": { - "type": "object", - "maxProperties": 16, - "propertyNames": { + "evidence": { + "type": "array", + "items": { "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + "minLength": 1 }, - "additionalProperties": { - "$ref": "#/components/schemas/SourceValue" - } - }, - "import": { - "$ref": "#/components/schemas/DialectImport" - } - }, - "anyOf": [ - { - "required": [ - "mapping" - ] + "description": "Version 3, kind research: the evidence to retain, each instruction at most 4096 UTF-8 bytes." }, - { - "required": [ - "import" - ] - } - ] - }, - "SourceSnapshot": { - "type": "object", - "required": [ - "version", - "original" - ], - "description": "Retained JSON file (200,000 decoded bytes maximum). local-file requires selectedAt and forbids proof. google-drive requires the existing Desk DocumentObject proof with Drive selection, receipt response and sealed registry. Runner checks structural/byte binding, not cryptographic authenticity; consumers verify with their configured pin. No provider credentials. Snapshot max 1 MiB.", - "properties": { - "version": { - "const": 1 + "fields": { + "type": "array", + "minItems": 1, + "maxItems": 64, + "description": "Version 3, kind research: the requested fields, in order, each exactly name (a non-empty string other than case, at most 64 UTF-8 bytes, distinct), type, required and description (at most 2048 UTF-8 bytes). The research record answers them.", + "items": { + "type": "object", + "additionalProperties": false, + "required": [ + "name", + "type", + "required", + "description" + ], + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "type": { + "enum": [ + "integer", + "decimal", + "boolean", + "text", + "text-list", + "range" + ] + }, + "required": { + "type": "boolean" + }, + "description": { + "type": "string", + "minLength": 1 + } + } + } }, - "selectedAt": { - "type": "string", - "format": "date-time" + "capabilities": { + "type": "array", + "minItems": 1, + "maxItems": 3, + "items": { + "enum": [ + "answer", + "search", + "page" + ] + }, + "uniqueItems": true, + "description": "Version 3, kind research: the capabilities the recipe needs, distinct, in the order answer, search, page; answer is required." }, - "original": { + "webProfiles": { "type": "object", - "required": [ - "name", - "mediaType", - "bytes", - "sha256" - ], + "additionalProperties": false, + "maxProperties": 2, "properties": { - "name": { - "type": "string", - "maxLength": 1024 - }, - "mediaType": { - "enum": [ - "application/json", - "text/plain" + "search": { + "type": "object", + "additionalProperties": false, + "required": [ + "profile", + "profileDigest" ], - "description": "text/plain requires a .json filename." - }, - "bytes": { - "type": "string", - "contentEncoding": "base64" + "properties": { + "profile": { + "type": "string", + "minLength": 1 + }, + "profileDigest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + } + } }, - "sha256": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" + "page": { + "type": "object", + "additionalProperties": false, + "required": [ + "profile", + "profileDigest" + ], + "properties": { + "profile": { + "type": "string", + "minLength": 1 + }, + "profileDigest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + } + } } - } - }, - "proof": { - "type": "object", - "description": "Existing signed document acquisition and sealed registry contract; required for Google Drive." - } - } - }, - "InputPreview": { - "type": "object", - "required": [ - "input", - "factsText", - "evidenceText" - ], - "properties": { - "input": { - "$ref": "#/components/schemas/Input" - }, - "factsText": { - "type": "string", - "description": "Exact mapped facts JSON for consumers that cannot represent all JSON numbers losslessly." - }, - "evidenceText": { - "type": "string", - "description": "Exact availability JSON; empty if omitted." + }, + "description": "Version 3, kind research, bound: a profile for each web capability the source asks for, exactly those, written even when empty. With profile and profileDigest, the AI profile for answer, all three or none: a research source published with none is bound at import (SourceInput.import)." } - } - }, - "InputMappingV1": { - "type": "object", + }, "required": [ - "version", - "provider", - "facts", - "evidence" + "name", + "kind", + "read" ], "additionalProperties": false, - "properties": { - "version": { - "const": 1 - }, - "provider": { - "enum": [ - "local-file", - "google-drive" - ] - }, - "facts": { - "type": "array", - "maxItems": 256, - "items": { - "type": "object", + "allOf": [ + { + "if": { + "properties": { + "kind": { + "const": "operation" + } + }, "required": [ - "target", - "source" + "kind" + ] + }, + "then": { + "required": [ + "maxAge", + "arguments" ], - "additionalProperties": false, - "properties": { - "target": { - "type": "string", - "description": "Non-root JSON Pointer destination. Targets must not overlap." + "not": { + "required": [ + "provider" + ] + }, + "oneOf": [ + { + "required": [ + "profile", + "profileDigest" + ], + "not": { + "anyOf": [ + { + "required": [ + "platform" + ] + }, + { + "required": [ + "operation" + ] + }, + { + "required": [ + "shape" + ] + }, + { + "required": [ + "record" + ] + } + ] + } }, - "source": { - "type": "string", - "description": "JSON Pointer in the input object, or empty for the root." + { + "required": [ + "platform", + "operation", + "shape", + "record" + ], + "not": { + "anyOf": [ + { + "required": [ + "profile" + ] + }, + { + "required": [ + "profileDigest" + ] + } + ] + } } - } + ] } }, - "evidence": { - "type": "array", - "maxItems": 128, - "items": { - "type": "object", - "required": [ - "requirement", - "source" - ], - "additionalProperties": false, + { + "if": { "properties": { - "requirement": { - "type": "string", - "minLength": 1, - "maxLength": 256 - }, - "source": { - "type": "string" + "kind": { + "const": "selected-file" } - } - } - } - } - }, - "CopyMapping": { - "type": "object", - "properties": { - "facts": { - "type": "array", - "maxItems": 256, - "items": { - "type": "object", + }, "required": [ - "target", - "source" - ], - "additionalProperties": false, + "kind" + ] + }, + "then": { + "required": [ + "provider" + ] + } + }, + { + "if": { "properties": { - "target": { - "type": "string", - "description": "Non-root JSON Pointer destination. Targets must not overlap." - }, - "source": { - "type": "string", - "description": "JSON Pointer in the input object, or empty for the root." + "provider": { + "const": "google-drive" } - } + }, + "required": [ + "provider" + ] + }, + "then": { + "required": [ + "profile", + "profileDigest", + "maxAge", + "arguments" + ] } }, - "evidence": { - "type": "array", - "maxItems": 128, - "items": { - "type": "object", - "required": [ - "requirement", - "source" - ], - "additionalProperties": false, + { + "if": { "properties": { - "requirement": { - "type": "string", - "minLength": 1, - "maxLength": 256 - }, - "source": { - "type": "string" + "kind": { + "const": "research" } + }, + "required": [ + "kind" + ] + }, + "then": { + "required": [ + "maxAge", + "question", + "constraints", + "model", + "evidence", + "fields", + "capabilities" + ], + "not": { + "anyOf": [ + { + "required": [ + "provider" + ] + }, + { + "required": [ + "arguments" + ] + }, + { + "required": [ + "calculation" + ] + }, + { + "required": [ + "platform" + ] + }, + { + "required": [ + "operation" + ] + }, + { + "required": [ + "shape" + ] + }, + { + "required": [ + "record" + ] + } + ] } } } - }, - "required": [ - "facts", - "evidence" - ], - "additionalProperties": false - }, - "Parameter": { - "type": "object", - "properties": { - "from": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - }, - "pointer": { - "type": "string" - }, - "type": { - "enum": [ - "string", - "integer", - "timestamp" - ] - } - }, - "required": [ - "pointer", - "type" ], - "additionalProperties": false + "description": "A source of a dialect document. In version 3 an operation may be unbound: platform, operation, shape and record, all four, in place of profile and profileDigest (spec/dialect.md section 4.4); and a research source may be unbound, with none of profile, profileDigest and webProfiles. Runner prepares only a bound source: an unbound one is bound at import (SourceInput.import) and refused by name elsewhere. A research source is held to its recipe's form and the maxima of spec/dialect.md section 12, each refusal naming the specification's code at its end, input-malformed or input-over-bound; a profile it is bound to that this installation does not hold by that id and digest, that is not of class generated, declares no research capabilities, lacks the capability it is bound for or names another model is refused, profile-mismatch. The members of the kinds http, sql and web are read only so that a source of those kinds is refused for its kind. A version-2 source has none of the members of version 3." }, - "CaseMapping": { + "Admission": { "type": "object", "properties": { - "parameters": { + "facts": { "type": "object", - "maxProperties": 64, - "propertyNames": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - }, "additionalProperties": { - "$ref": "#/components/schemas/Parameter" - } - }, - "facts": { - "type": "array", - "maxItems": 256, - "items": { - "type": "object", - "required": [ - "target", - "source" - ], - "additionalProperties": false, - "properties": { - "target": { - "type": "string", - "description": "Non-root JSON Pointer destination. Targets must not overlap." - }, - "source": { - "type": "string", - "description": "JSON Pointer in the input object, or empty for the root." - } - } + "type": "array", + "items": { + "enum": [ + "asserted", + "record", + "generated" + ] + }, + "minItems": 1, + "maxItems": 3, + "uniqueItems": true } }, "evidence": { - "type": "array", - "maxItems": 128, - "items": { - "type": "object", - "required": [ - "requirement", - "source" - ], - "additionalProperties": false, - "properties": { - "requirement": { - "type": "string", - "minLength": 1, - "maxLength": 256 - }, - "source": { - "type": "string" - } - } + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "enum": [ + "asserted", + "record", + "generated" + ] + }, + "minItems": 1, + "maxItems": 3, + "uniqueItems": true } } }, - "required": [ - "facts", - "evidence" - ], + "required": [], "additionalProperties": false }, - "RuleCondition": { - "oneOf": [ - { - "type": "object", - "properties": { - "op": { - "const": "always" - } - }, - "required": [ - "op" - ], - "additionalProperties": false + "InputMappingV2": { + "type": "object", + "properties": { + "version": { + "const": 2 }, - { - "type": "object", - "properties": { - "op": { - "const": "exists" - }, - "field": { - "type": "string" - } - }, - "required": [ - "op", - "field" - ], - "additionalProperties": false + "case": { + "$ref": "#/components/schemas/CaseMapping" }, - { - "type": "object", - "properties": { - "op": { - "const": "isTrue" - }, - "field": { - "type": "string" - } + "sources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MappingSource" }, - "required": [ - "op", - "field" - ], - "additionalProperties": false + "maxItems": 16 }, - { - "type": "object", - "properties": { - "op": { - "const": "isDecimalString" - }, - "field": { - "type": "string" - } - }, - "required": [ - "op", - "field" - ], - "additionalProperties": false + "admits": { + "$ref": "#/components/schemas/Admission" }, - { - "type": "object", - "properties": { - "op": { - "const": "equals" - }, - "field": { - "type": "string" - }, - "to": {} + "unmapped": { + "type": "array", + "items": { + "type": "string" }, - "required": [ - "op", - "field", - "to" - ], - "additionalProperties": false + "maxItems": 256, + "uniqueItems": true }, - { - "type": "object", - "properties": { - "op": { - "const": "equalsParam" - }, - "field": { - "type": "string" - }, - "param": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - } + "unmappedEvidence": { + "type": "array", + "items": { + "type": "string" }, - "required": [ - "op", - "field", - "param" - ], - "additionalProperties": false + "maxItems": 128, + "uniqueItems": true }, - { - "type": "object", - "properties": { - "op": { - "const": "freshWithin" - }, - "field": { - "type": "string" - }, - "asOf": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - }, - "maxAge": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - } - }, - "required": [ - "op", - "field", - "asOf", - "maxAge" + "provider": { + "const": "" + }, + "facts": { + "type": [ + "array", + "null" ], - "additionalProperties": false + "maxItems": 0 }, - { - "type": "object", - "properties": { - "op": { - "const": "not" - }, - "of": { - "$ref": "#/components/schemas/RuleCondition" - } - }, - "required": [ - "op", - "of" + "evidence": { + "type": [ + "array", + "null" ], - "additionalProperties": false + "maxItems": 0 }, + "profile": { + "type": "string", + "enum": [ + "base" + ], + "description": "Explicit Base is required for retained-column conversions. Absent, ordinary legacy behavior and limits apply." + } + }, + "required": [ + "version" + ], + "additionalProperties": false, + "anyOf": [ { - "type": "object", - "properties": { - "op": { - "const": "all" - }, - "of": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RuleCondition" - }, - "maxItems": 64 - } - }, "required": [ - "op", - "of" - ], - "additionalProperties": false + "case" + ] }, { - "type": "object", - "properties": { - "op": { - "const": "any" - }, - "of": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RuleCondition" - }, - "maxItems": 64 - } - }, "required": [ - "op", - "of" + "sources" ], - "additionalProperties": false + "properties": { + "sources": { + "minItems": 1 + } + } } ] }, - "DerivationRule": { + "AdapterPin": { "type": "object", "properties": { - "ruleVersion": { - "const": "1" + "name": { + "type": "string" }, - "parameters": { - "type": "object", - "additionalProperties": { - "enum": [ - "string", - "integer", - "timestamp" - ] - } + "version": { + "type": "string" }, - "clauses": { + "digest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + } + }, + "required": [ + "name", + "version", + "digest" + ], + "additionalProperties": false + }, + "InputProfile": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + }, + "publicKey": { + "type": "string", + "pattern": "^[a-f0-9]{64}$" + }, + "class": { + "enum": [ + "record", + "generated" + ] + }, + "source": { + "type": "string" + }, + "authority": { + "type": "string" + }, + "shape": { + "enum": [ + "airbyte", + "mcp", + "http", + "command" + ] + }, + "adapter": { + "$ref": "#/components/schemas/AdapterPin" + }, + "endpoint": { + "type": [ + "string", + "null" + ] + }, + "endpointScope": { "type": "array", + "minItems": 1, + "maxItems": 32, + "uniqueItems": true, "items": { - "type": "object", - "properties": { - "when": { - "$ref": "#/components/schemas/RuleCondition" - }, - "reason": { - "type": "string" - }, - "claim": { - "type": "object", - "properties": { - "facts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "pointer": { - "type": "string" - }, - "from": { - "type": "string" - } - }, - "required": [ - "pointer", - "from" - ], - "additionalProperties": false - }, - "maxItems": 256 - }, - "evidence": { - "type": "object", - "maxProperties": 128, - "additionalProperties": { - "enum": [ - "present", - "absent", - "unknown" - ] - } - }, - "acquisitionStatus": { - "enum": [ - "resolved", - "absent", - "unknown" - ] - } - }, - "required": [ - "facts", - "evidence", - "acquisitionStatus" - ], - "additionalProperties": false + "type": "string", + "maxLength": 2048, + "description": "One entry: an endpoint prefix or https://*. Each entry is ASCII, each character from U+0021 to U+007E, so its 2048-character maxLength equals spec/dialect.md section 5.1's 2048 UTF-8 bytes." + }, + "description": "An endpoint constraint in place of one exact endpoint, which is then null (spec/dialect.md section 5.1): 1 to 32 distinct endpoint prefixes, each https://, a DNS name of two or more labels, nothing, :443 or : with nothing, and an optional path beginning with /, with no user, query, fragment, IP literal or other port, no escaped slash or backslash (%2f, %2F, %5c, %5C) in the path, and no path segment that is a dot segment, or whose part before its first ;, %3b, %3B, %3f, %3F, %23 or %00 is one; or exactly https://*, admitted on a generated profile only. Only on shape http with adapter.name adapter-web; a generated profile carrying it declares research capabilities exactly [\"page\"]. A page receipt's acquisition.endpoint must match an entry: hosts equal with ASCII case folded, the three spellings of port 443 one port, the path a prefix at a literal / boundary, nothing decoded. The whole scope enters the profile's digest. It binds a research source's page assignment alone; an operation or a selected file bound to it is profile-mismatch." + }, + "tools": { + "type": "array", + "items": { + "type": "string" + }, + "maxItems": 64, + "uniqueItems": true + }, + "calculator": { + "$ref": "#/components/schemas/CalculatorPin" + }, + "research": { + "type": "object", + "additionalProperties": false, + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "type": "array", + "minItems": 1, + "maxItems": 3, + "uniqueItems": true, + "items": { + "enum": [ + "answer", + "search", + "page" + ] } }, - "required": [ - "when", - "claim", - "reason" - ], - "additionalProperties": false + "model": { + "type": "string", + "minLength": 1, + "maxLength": 256 + } + }, + "description": "What the channel serves of a research source's capabilities, distinct, in the order answer, search, page, and the model that answers, exactly when it serves answer (spec/dialect.md section 5.1): the form a gateway's web-search status row gives as research. The installation's declaration, pinned by the profile's digest; not an observation of the model. Runner refuses to start with one of another form." + }, + "conversionContracts": { + "type": "array", + "maxItems": 32, + "items": { + "$ref": "#/components/schemas/ConversionCapability" }, - "minItems": 1, - "maxItems": 64 + "description": "Trusted registered-profile metadata bound by the existing profile digest and approval. Absent entries grant no selected producer support." + }, + "retainedColumnProducer": { + "type": "object", + "additionalProperties": false, + "required": [ + "contractVersion", + "grammar" + ], + "properties": { + "contractVersion": { + "type": "string", + "enum": [ + "1" + ] + }, + "grammar": { + "type": "string", + "enum": [ + "desk-reviewed-input/1" + ] + } + } } }, "required": [ - "ruleVersion", - "parameters", - "clauses" + "id", + "publicKey", + "class", + "source", + "authority", + "shape", + "adapter", + "endpoint" ], "additionalProperties": false }, - "SourceRead": { + "SourceValue": { "type": "object", "properties": { - "unwrap": { - "type": "array", - "items": { - "type": "string" - }, - "maxItems": 4 - }, - "copy": { - "$ref": "#/components/schemas/CopyMapping" - }, - "rule": { - "$ref": "#/components/schemas/DerivationRule" + "snapshot": { + "$ref": "#/components/schemas/SourceSnapshot" }, - "sources": { - "type": "array", - "minItems": 1, - "maxItems": 15, - "items": { - "type": "string" + "response": { + "type": "object", + "properties": { + "result": {}, + "receipt": { + "type": "object", + "description": "Complete signed Gateway v3 acquisition receipt; Runner verifies the signed fields, profile and canonical result." + }, + "salts": { + "type": "object", + "properties": { + "args": { + "type": "string", + "pattern": "^[a-f0-9]{64}$" + }, + "statement": { + "type": "string" + } + }, + "required": [ + "args" + ], + "additionalProperties": false + } }, - "description": "A research source's reconciliation (spec/dialect.md section 6.4): the earlier research sources it reads, distinct, beside a rule over {\"current\": its record, \"sources\": each named source's record, a skipped one absent}, with no copy and no unwrap. The rule guards each value it selects as found, names what every other status and absence does, writes no evidence, and ends with a clause that writes no fact and resolves nothing; anything else is refused, input-malformed." + "required": [ + "result" + ], + "additionalProperties": false, + "dependentRequired": { + "receipt": [ + "salts" + ], + "salts": [ + "receipt" + ] + }, + "description": "An acquisition, {result, receipt, salts}. A research source's result is its research record, exactly fields and responses (each retained response exactly profile, request, result, receipt and salts), and its receipt and salts are present exactly when the record came back through a gateway source; every other source's are required." + }, + "retainedResponseJson": { + "type": "string", + "minLength": 1, + "description": "Sole exact original signed response JSON text; excludes snapshot and response. It grants no signature, source or producer authority." } }, "required": [], @@ -3057,2380 +4258,2736 @@ "oneOf": [ { "required": [ - "copy" + "snapshot" ], "not": { "required": [ - "rule" + "response" ] } }, { "required": [ - "rule" + "response" ], "not": { "required": [ - "copy" + "snapshot" + ] + } + }, + { + "required": [ + "retainedResponseJson" + ], + "not": { + "anyOf": [ + { + "required": [ + "snapshot" + ] + }, + { + "required": [ + "response" + ] + } ] } } ], - "description": "copy or rule; a research source's read reads its record through a closed list of pointers (/fields, a declared field's entry, its status, its cites, its value and what is below it, and in a condition an observation's value) and never takes a value from under values, or is a reconciliation (sources and rule)." + "allOf": [ + { + "if": { + "required": [ + "retainedResponseJson" + ] + }, + "then": { + "not": { + "anyOf": [ + { + "required": [ + "response" + ] + }, + { + "required": [ + "snapshot" + ] + } + ] + } + } + } + ] }, - "MappingSource": { + "Citation": { "type": "object", "properties": { - "name": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - }, - "kind": { - "enum": [ - "operation", - "selected-file", - "http", - "sql", - "web", - "research" - ], - "description": "operation and selected-file are version 2's, and a version-3 document's too, prepared as version 2 prepares them. research is a kind of dialect version 3 (spec/dialect.md sections 4.3 and 4.4): a recipe, bound to an AI profile and web profiles of class generated, prepared from the research record its caller retains, each retained response replayed under the profile it came through; Runner asks no model and reads no page. http, sql and web are kinds of dialect version 3 that Runner refuses by name: in a version-3 document, each is refused with a sentence naming the kind, and in a version-2 document, as an unsupported kind." - }, - "provider": { - "enum": [ - "local-file", - "google-drive" - ] - }, - "profile": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - }, - "profileDigest": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" + "sessionId": { + "type": "string" }, - "maxAge": { + "callIndex": { "type": "integer", - "minimum": 1, - "maximum": 86400 - }, - "parameters": { - "type": "object", - "maxProperties": 64, - "propertyNames": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - }, - "additionalProperties": { - "$ref": "#/components/schemas/Parameter" - } - }, - "arguments": { - "type": "object", - "description": "Frozen template; whole-value $param and integer-only $text. runAt is derivation-only." - }, - "read": { - "$ref": "#/components/schemas/SourceRead" - }, - "calculation": { - "$ref": "#/components/schemas/CalculationBinding" - }, - "platform": { - "type": "string", - "minLength": 1, - "description": "Version 3, unbound operation: the gateway catalog platform it is read through." - }, - "operation": { - "type": "string", - "minLength": 1, - "description": "Version 3, unbound operation: the operation of that platform's binding." - }, - "shape": { - "enum": [ - "airbyte", - "mcp", - "http" - ], - "description": "Version 3, unbound operation: the shape that serves it. The profile it is bound to must be of this shape." + "minimum": 0, + "maximum": 9007199254740991 }, - "record": { + "signature": { "type": "string", - "minLength": 1, - "description": "Version 3, unbound operation: the record it is written against, as a profile's adapter.name names it. The profile it is bound to must name this adapter." - }, - "method": { - "description": "Version 3, kind http: refused by name with its source." + "pattern": "^[a-f0-9]{128}$" + } + }, + "required": [ + "sessionId", + "callIndex", + "signature" + ], + "additionalProperties": false + }, + "Dependency": { + "type": "object", + "properties": { + "parameter": { + "type": "string" }, - "path": { - "description": "Version 3, kind http: refused by name with its source." + "source": { + "type": "string" }, - "query": { - "description": "Version 3, kind http: refused by name with its source." + "pointer": { + "type": "string" + } + }, + "required": [ + "parameter", + "source", + "pointer" + ], + "additionalProperties": false + }, + "TargetLineage": { + "type": "object", + "properties": { + "target": { + "type": "string" }, - "body": { - "description": "Version 3, kind http: refused by name with its source." + "kind": { + "enum": [ + "fact", + "evidence" + ] }, - "headers": { - "description": "Version 3, kind http: refused by name with its source." + "source": { + "type": "string" }, - "statement": { - "description": "Version 3, kind sql: refused by name with its source." + "class": { + "enum": [ + "asserted", + "record", + "generated" + ] }, - "bindings": { - "description": "Version 3, kind sql: refused by name with its source." + "generatedInfluence": { + "type": "boolean" }, - "url": { - "description": "Version 3, kind web: refused by name with its source." + "present": { + "type": "boolean" }, - "question": { - "description": "Version 3, kind research: the question, a string template: a string, a $text whose placeholders name integer parameters, or a $param naming a parameter of type string or timestamp, never runAt. The source's request is its recipe, the question instantiated; it is recorded and never sent." + "status": { + "enum": [ + "resolved", + "absent", + "unknown" + ] }, - "constraints": { - "type": "object", - "description": "Version 3, kind research: the recipe's constraints, in the gateway canonical domain; kept as written." + "reason": { + "type": "string" }, - "model": { + "readDigest": { "type": "string", - "minLength": 1, - "description": "Version 3, kind research: the model the recipe asks, at most 256 UTF-8 bytes. The AI profile the source is bound to must declare this model: profile-mismatch otherwise." + "pattern": "^sha256:[a-f0-9]{64}$" }, - "evidence": { + "basis": { "type": "array", "items": { - "type": "string", - "minLength": 1 - }, - "description": "Version 3, kind research: the evidence to retain, each instruction at most 4096 UTF-8 bytes." + "type": "string" + } }, - "fields": { + "candidateFrom": { "type": "array", - "minItems": 1, - "maxItems": 64, - "description": "Version 3, kind research: the requested fields, in order, each exactly name (a non-empty string other than case, at most 64 UTF-8 bytes, distinct), type, required and description (at most 2048 UTF-8 bytes). The research record answers them.", "items": { - "type": "object", - "additionalProperties": false, - "required": [ - "name", - "type", - "required", - "description" - ], - "properties": { - "name": { - "type": "string", - "minLength": 1 - }, - "type": { - "enum": [ - "integer", - "decimal", - "boolean", - "text", - "text-list", - "range" - ] - }, - "required": { - "type": "boolean" - }, - "description": { - "type": "string", - "minLength": 1 - } - } + "type": "string" } }, - "capabilities": { + "dependencies": { "type": "array", - "minItems": 1, - "maxItems": 3, "items": { - "enum": [ - "answer", - "search", - "page" - ] - }, - "uniqueItems": true, - "description": "Version 3, kind research: the capabilities the recipe needs, distinct, in the order answer, search, page; answer is required." + "$ref": "#/components/schemas/Dependency" + } }, - "webProfiles": { - "type": "object", - "additionalProperties": false, - "maxProperties": 2, - "properties": { - "search": { - "type": "object", - "additionalProperties": false, - "required": [ - "profile", - "profileDigest" - ], - "properties": { - "profile": { - "type": "string", - "minLength": 1 - }, - "profileDigest": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" - } - } - }, - "page": { - "type": "object", - "additionalProperties": false, - "required": [ - "profile", - "profileDigest" - ], - "properties": { - "profile": { - "type": "string", - "minLength": 1 - }, - "profileDigest": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" - } - } - } + "receipt": { + "$ref": "#/components/schemas/Citation" + }, + "calculation": { + "$ref": "#/components/schemas/CalculationLineage" + }, + "receipts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Citation" }, - "description": "Version 3, kind research, bound: a profile for each web capability the source asks for, exactly those, written even when empty. With profile and profileDigest, the AI profile for answer, all three or none: a research source published with none is bound at import (SourceInput.import)." + "description": "For an acquired research source: every citation it adds to the preparation's cites, in order, each retained response's and then the record's own when it has one; written even when empty. receipt is then the record's own citation, absent when it has none." + }, + "columnTransformation": { + "$ref": "#/components/schemas/RetainedColumnTransformation" } }, "required": [ - "name", + "target", "kind", - "read" + "source", + "class", + "generatedInfluence", + "present", + "status", + "reason", + "readDigest", + "basis" ], - "additionalProperties": false, - "allOf": [ - { - "if": { - "properties": { - "kind": { - "const": "operation" - } - }, - "required": [ - "kind" - ] - }, - "then": { - "required": [ - "maxAge", - "arguments" - ], - "not": { - "required": [ - "provider" - ] - }, - "oneOf": [ - { - "required": [ - "profile", - "profileDigest" - ], - "not": { - "anyOf": [ - { - "required": [ - "platform" - ] - }, - { - "required": [ - "operation" - ] - }, - { - "required": [ - "shape" - ] - }, - { - "required": [ - "record" - ] - } - ] - } - }, - { - "required": [ - "platform", - "operation", - "shape", - "record" - ], - "not": { - "anyOf": [ - { - "required": [ - "profile" - ] - }, - { - "required": [ - "profileDigest" - ] - } - ] - } - } - ] - } + "additionalProperties": false + }, + "SourceOutcome": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "if": { - "properties": { - "kind": { - "const": "selected-file" - } - }, - "required": [ - "kind" - ] + "status": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "parameters": { + "type": "object" + }, + "arguments": { + "type": "object" + }, + "claim": { + "type": "object" + } + }, + "required": [ + "name", + "status", + "reason", + "parameters", + "claim" + ], + "additionalProperties": false + }, + "Preparation": { + "type": "object", + "description": "A mapping-v2 run's verified preparation. From Runtime 0.31.0 on, the run's audit record binds it: the record's binding is {\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:\"}, whose digest is the SHA-256 of this object with its members sorted by name, no insignificant whitespace, numbers as written, and strings escaped as Go's encoding/json escapes them, the form a frozen release is digested by. verify-run recomputes it from the export alone, compares the record's member as recorded, and reports binding: matches, mismatch, absent or foreign-kind, refusing a mismatch and a foreign kind (before any digest is compared), and, with --require-bound, a record without one. A binding that matches, in a record whose signature verifies, commits verifiedAt in the signed record: a program reading verify-run's report knows it when binding.status is matches and signature.status is signed, and unsignedFreshness keeps its name either way. Against the operator, who holds the key, only a witnessed chain shows a record signed again with a new binding.", + "properties": { + "version": { + "enum": [ + 2, + 3 + ], + "description": "The dialect document's version: 3 for a version-3 document, whose preparation is otherwise a version-2 document's." + }, + "verifiedAt": { + "type": "string" + }, + "mappingDigest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + }, + "verification": { + "type": "string" + }, + "cites": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Citation" }, - "then": { - "required": [ - "provider" - ] + "description": "Every acquisition's citation, ordered by callIndex, those of one index in the order of sources; in a preparation with a research source, in the order of sources instead, each research source adding every retained response's citation in the order its record retains them, then the record's own (spec/dialect.md section 9.1)." + }, + "lineage": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TargetLineage" } }, - { - "if": { - "properties": { - "provider": { - "const": "google-drive" - } - }, - "required": [ - "provider" - ] - }, - "then": { - "required": [ - "profile", - "profileDigest", - "maxAge", - "arguments" - ] + "outcomes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SourceOutcome" } }, - { - "if": { - "properties": { - "kind": { - "const": "research" - } + "conversionContract": { + "$ref": "#/components/schemas/ConversionContract" + } + }, + "required": [ + "version", + "verifiedAt", + "mappingDigest", + "verification", + "cites", + "lineage", + "outcomes" + ], + "additionalProperties": false + }, + "VerificationBundle": { + "type": "object", + "description": "Version 2, the export Runner has always made. It carries no original bytes of the audit record.", + "properties": { + "version": { + "const": 2 + }, + "releaseDigest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + }, + "release": { + "$ref": "#/components/schemas/Release" + }, + "run": { + "allOf": [ + { + "$ref": "#/components/schemas/Run" }, - "required": [ - "kind" - ] - }, - "then": { - "required": [ - "maxAge", - "question", - "constraints", - "model", - "evidence", - "fields", - "capabilities" - ], - "not": { - "anyOf": [ - { - "required": [ - "provider" - ] - }, - { - "required": [ - "arguments" - ] - }, - { - "required": [ - "calculation" - ] - }, - { - "required": [ - "platform" - ] - }, - { - "required": [ - "operation" - ] - }, - { - "required": [ - "shape" - ] - }, - { - "required": [ - "record" - ] - } - ] + { + "not": { + "required": [ + "auditBytes" + ] + } } - } + ] } + }, + "required": [ + "version", + "releaseDigest", + "release", + "run" ], - "description": "A source of a dialect document. In version 3 an operation may be unbound: platform, operation, shape and record, all four, in place of profile and profileDigest (spec/dialect.md section 4.4); and a research source may be unbound, with none of profile, profileDigest and webProfiles. Runner prepares only a bound source: an unbound one is bound at import (SourceInput.import) and refused by name elsewhere. A research source is held to its recipe's form and the maxima of spec/dialect.md section 12, each refusal naming the specification's code at its end, input-malformed or input-over-bound; a profile it is bound to that this installation does not hold by that id and digest, that is not of class generated, declares no research capabilities, lacks the capability it is bound for or names another model is refused, profile-mismatch. The members of the kinds http, sql and web are read only so that a source of those kinds is refused for its kind. A version-2 source has none of the members of version 3." + "additionalProperties": false }, - "Admission": { + "VerificationBundleV3": { "type": "object", + "description": "Version 3: version 2 with the audit record's bytes, as run.auditBytes, beside the parsed run.audit. Only a completed run that holds them is exported as version 3. verify-run checks that the bytes parse to run.audit and reports their SHA-256, the digest a gateway receipt would name for those bytes; that they are the bytes the Runtime wrote for this run is shown only by comparison with a digest held independently, such as a receipt's. Held to 8 MiB beside the run.auditBytes member, whose bytes are held to 8 MiB.", "properties": { - "facts": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "enum": [ - "asserted", - "record", - "generated" - ] - }, - "minItems": 1, - "maxItems": 3, - "uniqueItems": true - } + "version": { + "const": 3 }, - "evidence": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "enum": [ - "asserted", - "record", - "generated" - ] + "releaseDigest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + }, + "release": { + "$ref": "#/components/schemas/Release" + }, + "inputs": { + "const": "not-mapped", + "description": "Present only in the export of a run whose job has no input mapping, or a v1 file mapping: the run has no lineage, and its run.input has no preparation. Absent from a mapping-v2 run's export. verify-run checks such an export's bytes, chain entry and signature as any export's, and in place of lineage that the release froze no mapping v2, the run names the release and its mapping, and the audit record evaluated the run's facts and evidence with no citation; it reports inputs: not-mapped and no targetsByClass." + }, + "run": { + "allOf": [ + { + "$ref": "#/components/schemas/Run" }, - "minItems": 1, - "maxItems": 3, - "uniqueItems": true - } + { + "required": [ + "audit", + "auditBytes" + ], + "properties": { + "state": { + "const": "completed" + } + } + } + ] } }, - "required": [], + "required": [ + "version", + "releaseDigest", + "release", + "run" + ], "additionalProperties": false }, - "InputMappingV2": { + "VerificationBundleV4": { "type": "object", + "description": "Version 4: version 3 with the run's entry in the installation's chain of runs, as chain. Only a completed run that holds its audit record's bytes and has an entry is exported as version 4. verify-run checks that the entry names this run and the SHA-256 of run.auditBytes, and that the checkpoint is the entry's; along a supplied chain and against checkpoints held independently of the operator, it checks the entry's place in the chain. Without a held checkpoint it establishes nothing against the operator, who keeps the chain. Held to 8 MiB beside the run.auditBytes and chain members; the entry is held to 1024 bytes. It carries no run.auditSignatures, which only version 5 does.", "properties": { "version": { - "const": 2 - }, - "case": { - "$ref": "#/components/schemas/CaseMapping" - }, - "sources": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MappingSource" - }, - "maxItems": 16 - }, - "admits": { - "$ref": "#/components/schemas/Admission" + "const": 4 }, - "unmapped": { - "type": "array", - "items": { - "type": "string" - }, - "maxItems": 256, - "uniqueItems": true + "releaseDigest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" }, - "unmappedEvidence": { - "type": "array", - "items": { - "type": "string" - }, - "maxItems": 128, - "uniqueItems": true + "release": { + "$ref": "#/components/schemas/Release" }, - "provider": { - "const": "" + "inputs": { + "const": "not-mapped", + "description": "Present only in the export of a run whose job has no input mapping, or a v1 file mapping: the run has no lineage, and its run.input has no preparation. Absent from a mapping-v2 run's export. verify-run checks such an export's bytes, chain entry and signature as any export's, and in place of lineage that the release froze no mapping v2, the run names the release and its mapping, and the audit record evaluated the run's facts and evidence with no citation; it reports inputs: not-mapped and no targetsByClass." }, - "facts": { - "type": [ - "array", - "null" - ], - "maxItems": 0 + "run": { + "allOf": [ + { + "$ref": "#/components/schemas/Run" + }, + { + "required": [ + "audit", + "auditBytes" + ], + "properties": { + "state": { + "const": "completed" + } + } + } + ] }, - "evidence": { - "type": [ - "array", - "null" - ], - "maxItems": 0 + "chain": { + "$ref": "#/components/schemas/RunChainExport" } }, "required": [ - "version" + "version", + "releaseDigest", + "release", + "run", + "chain" ], - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "case" - ] - }, - { - "required": [ - "sources" - ], - "properties": { - "sources": { - "minItems": 1 - } - } - } - ] + "additionalProperties": false }, - "AdapterPin": { + "VerificationBundleV5": { "type": "object", + "description": "Version 5: version 4 with the signature sidecar of the run's audit record, as run.auditSignatures. Only a completed run that has an entry in the installation's chain of runs and keeps a sidecar is exported as version 5. verify-run --public-key checks the record's signature under the key it is given, held first to the key check (no key of small order, no non-canonical encoding), by the Runtime guide's rule with the attempt's one-record trail known; --require-signed refuses a run that no valid signature covers. A valid signature shows only that whoever held the key signed these exact bytes: nothing against the operator, who holds the key, and nothing once the key is copied. Held to 8 MiB beside the run.auditBytes, chain and run.auditSignatures members; the sidecar is held to 16 KiB.", "properties": { - "name": { - "type": "string" - }, "version": { - "type": "string" + "const": 5 }, - "digest": { + "releaseDigest": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" + }, + "release": { + "$ref": "#/components/schemas/Release" + }, + "inputs": { + "const": "not-mapped", + "description": "Present only in the export of a run whose job has no input mapping, or a v1 file mapping: the run has no lineage, and its run.input has no preparation. Absent from a mapping-v2 run's export. verify-run checks such an export's bytes, chain entry and signature as any export's, and in place of lineage that the release froze no mapping v2, the run names the release and its mapping, and the audit record evaluated the run's facts and evidence with no citation; it reports inputs: not-mapped and no targetsByClass." + }, + "run": { + "allOf": [ + { + "$ref": "#/components/schemas/Run" + }, + { + "required": [ + "audit", + "auditBytes", + "auditSignatures" + ], + "properties": { + "state": { + "const": "completed" + } + } + } + ] + }, + "chain": { + "$ref": "#/components/schemas/RunChainExport" } }, "required": [ - "name", "version", - "digest" + "releaseDigest", + "release", + "run", + "chain" ], "additionalProperties": false }, - "InputProfile": { + "RunChainExport": { "type": "object", + "description": "A run's entry in the installation's chain of runs, and that entry's checkpoint, which a holder keeps. The checkpoint is a function of the entry's bytes.", "properties": { - "id": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - }, - "publicKey": { + "entry": { "type": "string", - "pattern": "^[a-f0-9]{64}$" - }, - "class": { - "enum": [ - "record", - "generated" - ] - }, - "source": { - "type": "string" - }, - "authority": { - "type": "string" - }, - "shape": { - "enum": [ - "airbyte", - "mcp", - "http", - "command" - ] - }, - "adapter": { - "$ref": "#/components/schemas/AdapterPin" - }, - "endpoint": { - "type": [ - "string", - "null" - ] - }, - "endpointScope": { - "type": "array", - "minItems": 1, - "maxItems": 32, - "uniqueItems": true, - "items": { - "type": "string", - "maxLength": 2048, - "description": "One entry: an endpoint prefix or https://*. Each entry is ASCII, each character from U+0021 to U+007E, so its 2048-character maxLength equals spec/dialect.md section 5.1's 2048 UTF-8 bytes." - }, - "description": "An endpoint constraint in place of one exact endpoint, which is then null (spec/dialect.md section 5.1): 1 to 32 distinct endpoint prefixes, each https://, a DNS name of two or more labels, nothing, :443 or : with nothing, and an optional path beginning with /, with no user, query, fragment, IP literal or other port, no escaped slash or backslash (%2f, %2F, %5c, %5C) in the path, and no path segment that is a dot segment, or whose part before its first ;, %3b, %3B, %3f, %3F, %23 or %00 is one; or exactly https://*, admitted on a generated profile only. Only on shape http with adapter.name adapter-web; a generated profile carrying it declares research capabilities exactly [\"page\"]. A page receipt's acquisition.endpoint must match an entry: hosts equal with ASCII case folded, the three spellings of port 443 one port, the path a prefix at a literal / boundary, nothing decoded. The whole scope enters the profile's digest. It binds a research source's page assignment alone; an operation or a selected file bound to it is profile-mismatch." - }, - "tools": { - "type": "array", - "items": { - "type": "string" - }, - "maxItems": 64, - "uniqueItems": true - }, - "calculator": { - "$ref": "#/components/schemas/CalculatorPin" + "contentEncoding": "base64", + "description": "The entry's line exactly as stored, in standard base64: one JSON object of entryVersion \"1\", trail (32 lowercase hex characters), sequence (from 1), previous (the SHA-256 of the line before it, or of nothing for the first), kind \"run\", run (the run's id) and auditDigest (the SHA-256 of the run's audit record's exact bytes), in that order as Runner writes it. Read by its members, as JSON reads them." }, - "research": { - "type": "object", - "additionalProperties": false, - "required": [ - "capabilities" - ], - "properties": { - "capabilities": { - "type": "array", - "minItems": 1, - "maxItems": 3, - "uniqueItems": true, - "items": { - "enum": [ - "answer", - "search", - "page" - ] - } - }, - "model": { - "type": "string", - "minLength": 1, - "maxLength": 256 - } - }, - "description": "What the channel serves of a research source's capabilities, distinct, in the order answer, search, page, and the model that answers, exactly when it serves answer (spec/dialect.md section 5.1): the form a gateway's web-search status row gives as research. The installation's declaration, pinned by the profile's digest; not an observation of the model. Runner refuses to start with one of another form." + "checkpoint": { + "$ref": "#/components/schemas/Checkpoint" + } + }, + "required": [ + "entry", + "checkpoint" + ], + "additionalProperties": false + }, + "Checkpoint": { + "type": "object", + "description": "The Runtime's checkpoint (ADR-0047): a chain's identity, an entry's sequence, and the SHA-256 of that entry's exact line bytes. Its compact encoding, members in this order, is its RFC 8785 canonical form.", + "properties": { + "checkpointVersion": { + "const": "1" + }, + "recordDigest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + }, + "sequence": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740990 + }, + "trail": { + "type": "string", + "pattern": "^[a-f0-9]{32}$" } }, "required": [ - "id", - "publicKey", - "class", - "source", - "authority", - "shape", - "adapter", - "endpoint" + "checkpointVersion", + "recordDigest", + "sequence", + "trail" ], "additionalProperties": false }, - "SourceValue": { + "PlannedSource": { "type": "object", + "additionalProperties": false, + "required": [ + "name", + "kind" + ], "properties": { - "snapshot": { - "$ref": "#/components/schemas/SourceSnapshot" + "name": { + "type": "string" }, - "response": { - "type": "object", - "properties": { - "result": {}, - "receipt": { - "type": "object", - "description": "Complete signed Gateway v3 acquisition receipt; Runner verifies the signed fields, profile and canonical result." - }, - "salts": { - "type": "object", - "properties": { - "args": { - "type": "string", - "pattern": "^[a-f0-9]{64}$" - }, - "statement": { - "type": "string" - } - }, - "required": [ - "args" - ], - "additionalProperties": false - } - }, - "required": [ - "result" - ], - "additionalProperties": false, - "dependentRequired": { - "receipt": [ - "salts" - ], - "salts": [ - "receipt" - ] - }, - "description": "An acquisition, {result, receipt, salts}. A research source's result is its research record, exactly fields and responses (each retained response exactly profile, request, result, receipt and salts), and its receipt and salts are present exactly when the record came back through a gateway source; every other source's are required." + "kind": { + "enum": [ + "operation", + "selected-file", + "research" + ] + }, + "provider": { + "enum": [ + "local-file", + "google-drive" + ] + }, + "profile": { + "type": "string" + }, + "source": { + "type": "string" + }, + "arguments": { + "type": "object" } }, - "required": [], - "additionalProperties": false, + "description": "The next source to acquire. For a research source, the caller runs the recipe (arguments) through the profiles the source is bound to and supplies the research record it assembles from the responses it retains: Runner asks no model and reads no page." + }, + "InputPlan": { "oneOf": [ { + "type": "object", + "additionalProperties": false, "required": [ - "snapshot" + "next" ], - "not": { - "required": [ - "response" - ] + "properties": { + "next": { + "$ref": "#/components/schemas/PlannedSource" + } } }, { + "type": "object", + "additionalProperties": false, "required": [ - "response" + "input" ], - "not": { - "required": [ - "snapshot" - ] + "properties": { + "input": { + "$ref": "#/components/schemas/Input" + }, + "factsText": { + "type": "string" + }, + "evidenceText": { + "type": "string" + } } } ] }, - "Citation": { + "Schedule": { "type": "object", "properties": { - "sessionId": { + "kind": { + "enum": [ + "interval", + "daily", + "weekly", + "once" + ] + }, + "timezone": { "type": "string" }, - "callIndex": { + "startAt": { + "type": "string", + "format": "date-time" + }, + "endAt": { + "type": "string", + "format": "date-time" + }, + "everySeconds": { + "type": "integer", + "minimum": 60, + "maximum": 2592000 + }, + "time": { + "type": "string", + "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$" + }, + "weekday": { "type": "integer", "minimum": 0, - "maximum": 9007199254740991 + "maximum": 6 + } + }, + "required": [ + "kind", + "timezone", + "startAt" + ], + "additionalProperties": false, + "description": "Intervals use elapsed time. Calendar schedules skip nonexistent local times and choose the first repeated time. End is exclusive. Kind-specific fields are mutually exclusive." + }, + "AutomaticInput": { + "type": "object", + "properties": { + "kind": { + "enum": [ + "constant", + "input-file", + "mapped-files", + "mapped-sources" + ] }, - "signature": { + "value": { "type": "string", - "pattern": "^[a-f0-9]{128}$" + "description": "Exact JSON Input envelope; constants only. Source responses and computed preparation are forbidden." + }, + "path": { + "type": "string", + "description": "Project-relative JSON input envelope or v2 case file." + }, + "case": { + "type": "object" + }, + "files": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, "required": [ - "sessionId", - "callIndex", - "signature" + "kind" ], - "additionalProperties": false + "additionalProperties": false, + "description": "mapped-sources supports v2 local files and installed Gateway operations. Retained source responses and interactive file grants are never reused." }, - "Dependency": { + "TriggerConfig": { "type": "object", "properties": { - "parameter": { + "name": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "kind": { + "enum": [ + "schedule", + "file", + "event", + "cloud" + ] + }, + "schedule": { + "$ref": "#/components/schemas/Schedule" + }, + "input": { + "$ref": "#/components/schemas/AutomaticInput" + }, + "missed": { + "enum": [ + "skip", + "latest" + ] + }, + "overlap": { + "enum": [ + "skip", + "queue" + ] + }, + "queueSeconds": { + "type": "integer", + "minimum": 60, + "maximum": 86400 + }, + "watchPath": { "type": "string" }, - "source": { - "type": "string" + "stableSeconds": { + "type": "integer", + "minimum": 1, + "maximum": 3600 + }, + "cloud": { + "$ref": "#/components/schemas/CloudBinding" }, - "pointer": { - "type": "string" + "preparationSeconds": { + "description": "Omit or use 0 for one hour on durable connections. Explicit waits require mapped-sources and all operation profiles installed as durable.", + "oneOf": [ + { + "const": 0 + }, + { + "type": "integer", + "minimum": 60, + "maximum": 604800 + } + ] } }, "required": [ - "parameter", - "source", - "pointer" + "name", + "kind", + "missed", + "overlap", + "queueSeconds" ], - "additionalProperties": false + "additionalProperties": false, + "description": "Event triggers take inputs from each delivery and forbid schedule/input/watch fields. Schedules require schedule and input. File triggers require a watched path used by their file inputs and a stability delay. Cloud triggers require cloud and input and forbid schedule/watch fields. For cloud, missed=latest delivers every signal before expiry; expiry starts at scheduledAt." }, - "TargetLineage": { + "Trigger": { "type": "object", "properties": { - "target": { + "id": { "type": "string" }, - "kind": { - "enum": [ - "fact", - "evidence" - ] - }, - "source": { + "jobId": { "type": "string" }, - "class": { + "revision": { + "type": "integer", + "minimum": 1 + }, + "authority": { "enum": [ - "asserted", - "record", - "generated" + "local", + "google-cloud" ] }, - "generatedInfluence": { - "type": "boolean" + "config": { + "$ref": "#/components/schemas/TriggerConfig" }, - "present": { + "paused": { "type": "boolean" }, - "status": { - "enum": [ - "resolved", - "absent", - "unknown" - ] - }, - "reason": { - "type": "string" - }, - "readDigest": { + "createdAt": { "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" - }, - "basis": { - "type": "array", - "items": { - "type": "string" - } - }, - "candidateFrom": { - "type": "array", - "items": { - "type": "string" - } + "format": "date-time" }, - "dependencies": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Dependency" - } + "updatedAt": { + "type": "string", + "format": "date-time" }, - "receipt": { - "$ref": "#/components/schemas/Citation" + "nextAt": { + "type": "string", + "format": "date-time" }, - "calculation": { - "$ref": "#/components/schemas/CalculationLineage" + "hasKey": { + "type": "boolean" }, - "receipts": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Citation" - }, - "description": "For an acquired research source: every citation it adds to the preparation's cites, in order, each retained response's and then the record's own when it has one; written even when empty. receipt is then the record's own citation, absent when it has none." + "problem": { + "type": "string" } }, "required": [ - "target", - "kind", - "source", - "class", - "generatedInfluence", - "present", - "status", - "reason", - "readDigest", - "basis" + "id", + "jobId", + "revision", + "authority", + "config", + "paused", + "createdAt", + "updatedAt", + "hasKey" ], "additionalProperties": false }, - "SourceOutcome": { + "TriggerOrigin": { "type": "object", "properties": { - "name": { + "occurrenceId": { "type": "string" }, - "status": { + "triggerId": { "type": "string" }, - "reason": { + "triggerRevision": { + "type": "integer", + "minimum": 1 + }, + "kind": { "type": "string" }, - "parameters": { - "type": "object" + "scheduledAt": { + "type": "string", + "format": "date-time" }, - "arguments": { - "type": "object" + "eventId": { + "type": "string" }, - "claim": { - "type": "object" + "inputDigest": { + "type": "string" + }, + "expiresAt": { + "type": "string", + "format": "date-time" } }, "required": [ - "name", - "status", - "reason", - "parameters", - "claim" + "occurrenceId", + "triggerId", + "triggerRevision", + "kind" ], "additionalProperties": false }, - "Preparation": { + "Occurrence": { "type": "object", - "description": "A mapping-v2 run's verified preparation. From Runtime 0.31.0 on, the run's audit record binds it: the record's binding is {\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:\"}, whose digest is the SHA-256 of this object with its members sorted by name, no insignificant whitespace, numbers as written, and strings escaped as Go's encoding/json escapes them, the form a frozen release is digested by. verify-run recomputes it from the export alone, compares the record's member as recorded, and reports binding: matches, mismatch, absent or foreign-kind, refusing a mismatch and a foreign kind (before any digest is compared), and, with --require-bound, a record without one. A binding that matches, in a record whose signature verifies, commits verifiedAt in the signed record: a program reading verify-run's report knows it when binding.status is matches and signature.status is signed, and unsignedFreshness keeps its name either way. Against the operator, who holds the key, only a witnessed chain shows a record signed again with a new binding.", "properties": { - "version": { - "enum": [ - 2, - 3 - ], - "description": "The dialect document's version: 3 for a version-3 document, whose preparation is otherwise a version-2 document's." + "id": { + "type": "string" }, - "verifiedAt": { + "jobId": { "type": "string" }, - "mappingDigest": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" + "releaseId": { + "type": "string" }, - "verification": { + "jobRevision": { + "type": "integer", + "minimum": 1 + }, + "triggerId": { "type": "string" }, - "cites": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Citation" - }, - "description": "Every acquisition's citation, ordered by callIndex, those of one index in the order of sources; in a preparation with a research source, in the order of sources instead, each research source adding every retained response's citation in the order its record retains them, then the record's own (spec/dialect.md section 9.1)." + "triggerRevision": { + "type": "integer", + "minimum": 1 }, - "lineage": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TargetLineage" - } + "kind": { + "type": "string" }, - "outcomes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SourceOutcome" - } - } - }, - "required": [ - "version", - "verifiedAt", - "mappingDigest", - "verification", - "cites", - "lineage", - "outcomes" - ], - "additionalProperties": false - }, - "VerificationBundle": { - "type": "object", - "description": "Version 2, the export Runner has always made. It carries no original bytes of the audit record.", - "properties": { - "version": { - "const": 2 + "eventId": { + "type": "string" + }, + "scheduledAt": { + "type": "string", + "format": "date-time" + }, + "receivedAt": { + "type": "string", + "format": "date-time" + }, + "expiresAt": { + "type": "string", + "format": "date-time" + }, + "inputDigest": { + "type": "string" + }, + "state": { + "enum": [ + "accepted", + "submitted", + "skipped", + "failed", + "expired", + "preparing", + "waiting", + "needs-attention", + "cancelled" + ] }, - "releaseDigest": { + "runId": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "missedFrom": { "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" + "format": "date-time" }, - "release": { - "$ref": "#/components/schemas/Release" + "missedThrough": { + "type": "string", + "format": "date-time" }, - "run": { - "allOf": [ - { - "$ref": "#/components/schemas/Run" - }, - { - "not": { - "required": [ - "auditBytes" - ] - } - } - ] + "preparationSeconds": { + "type": "integer" + }, + "queueSeconds": { + "type": "integer" + }, + "readyUntil": { + "type": "string", + "format": "date-time" + }, + "preparation": { + "$ref": "#/components/schemas/SourcePreparation" } }, "required": [ - "version", - "releaseDigest", - "release", - "run" + "id", + "jobId", + "releaseId", + "jobRevision", + "triggerId", + "triggerRevision", + "kind", + "receivedAt", + "expiresAt", + "state" ], "additionalProperties": false }, - "VerificationBundleV3": { + "EventDelivery": { "type": "object", - "description": "Version 3: version 2 with the audit record's bytes, as run.auditBytes, beside the parsed run.audit. Only a completed run that holds them is exported as version 3. verify-run checks that the bytes parse to run.audit and reports their SHA-256, the digest a gateway receipt would name for those bytes; that they are the bytes the Runtime wrote for this run is shown only by comparison with a digest held independently, such as a receipt's. Held to 8 MiB beside the run.auditBytes member, whose bytes are held to 8 MiB.", "properties": { - "version": { - "const": 3 - }, - "releaseDigest": { + "id": { "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" - }, - "release": { - "$ref": "#/components/schemas/Release" + "minLength": 1, + "maxLength": 128 }, - "inputs": { - "const": "not-mapped", - "description": "Present only in the export of a run whose job has no input mapping, or a v1 file mapping: the run has no lineage, and its run.input has no preparation. Absent from a mapping-v2 run's export. verify-run checks such an export's bytes, chain entry and signature as any export's, and in place of lineage that the release froze no mapping v2, the run names the release and its mapping, and the audit record evaluated the run's facts and evidence with no citation; it reports inputs: not-mapped and no targetsByClass." + "occurredAt": { + "type": "string", + "format": "date-time" }, - "run": { - "allOf": [ - { - "$ref": "#/components/schemas/Run" - }, - { - "required": [ - "audit", - "auditBytes" - ], - "properties": { - "state": { - "const": "completed" - } - } - } - ] + "input": { + "$ref": "#/components/schemas/Input" } }, "required": [ - "version", - "releaseDigest", - "release", - "run" + "id", + "occurredAt", + "input" ], "additionalProperties": false }, - "VerificationBundleV4": { + "TriggerPreview": { "type": "object", - "description": "Version 4: version 3 with the run's entry in the installation's chain of runs, as chain. Only a completed run that holds its audit record's bytes and has an entry is exported as version 4. verify-run checks that the entry names this run and the SHA-256 of run.auditBytes, and that the checkpoint is the entry's; along a supplied chain and against checkpoints held independently of the operator, it checks the entry's place in the chain. Without a held checkpoint it establishes nothing against the operator, who keeps the chain. Held to 8 MiB beside the run.auditBytes and chain members; the entry is held to 1024 bytes. It carries no run.auditSignatures, which only version 5 does.", "properties": { - "version": { - "const": 4 + "config": { + "$ref": "#/components/schemas/TriggerConfig" }, - "releaseDigest": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" + "next": { + "type": "array", + "items": { + "type": "string", + "format": "date-time" + } }, - "release": { - "$ref": "#/components/schemas/Release" + "inputReady": { + "type": "boolean" }, - "inputs": { - "const": "not-mapped", - "description": "Present only in the export of a run whose job has no input mapping, or a v1 file mapping: the run has no lineage, and its run.input has no preparation. Absent from a mapping-v2 run's export. verify-run checks such an export's bytes, chain entry and signature as any export's, and in place of lineage that the release froze no mapping v2, the run names the release and its mapping, and the audit record evaluated the run's facts and evidence with no citation; it reports inputs: not-mapped and no targetsByClass." + "factsText": { + "type": "string" }, - "run": { - "allOf": [ - { - "$ref": "#/components/schemas/Run" - }, - { - "required": [ - "audit", - "auditBytes" - ], - "properties": { - "state": { - "const": "completed" - } - } - } - ] + "evidenceText": { + "type": "string" }, - "chain": { - "$ref": "#/components/schemas/RunChainExport" + "configurationReady": { + "type": "boolean" + }, + "deferred": { + "type": "boolean" } }, "required": [ - "version", - "releaseDigest", - "release", - "run", - "chain" + "config", + "next", + "inputReady" ], "additionalProperties": false }, - "VerificationBundleV5": { + "TriggerMutation": { "type": "object", - "description": "Version 5: version 4 with the signature sidecar of the run's audit record, as run.auditSignatures. Only a completed run that has an entry in the installation's chain of runs and keeps a sidecar is exported as version 5. verify-run --public-key checks the record's signature under the key it is given, held first to the key check (no key of small order, no non-canonical encoding), by the Runtime guide's rule with the attempt's one-record trail known; --require-signed refuses a run that no valid signature covers. A valid signature shows only that whoever held the key signed these exact bytes: nothing against the operator, who holds the key, and nothing once the key is copied. Held to 8 MiB beside the run.auditBytes, chain and run.auditSignatures members; the sidecar is held to 16 KiB.", "properties": { - "version": { - "const": 5 + "trigger": { + "$ref": "#/components/schemas/Trigger" }, - "releaseDigest": { + "token": { "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" - }, - "release": { - "$ref": "#/components/schemas/Release" - }, - "inputs": { - "const": "not-mapped", - "description": "Present only in the export of a run whose job has no input mapping, or a v1 file mapping: the run has no lineage, and its run.input has no preparation. Absent from a mapping-v2 run's export. verify-run checks such an export's bytes, chain entry and signature as any export's, and in place of lineage that the release froze no mapping v2, the run names the release and its mapping, and the audit record evaluated the run's facts and evidence with no citation; it reports inputs: not-mapped and no targetsByClass." - }, - "run": { - "allOf": [ - { - "$ref": "#/components/schemas/Run" - }, - { - "required": [ - "audit", - "auditBytes", - "auditSignatures" - ], - "properties": { - "state": { - "const": "completed" - } - } - } - ] - }, - "chain": { - "$ref": "#/components/schemas/RunChainExport" + "description": "Plaintext only when first enabling an event or rotating its credential; otherwise empty. Never retrievable later." } }, "required": [ - "version", - "releaseDigest", - "release", - "run", - "chain" + "trigger", + "token" ], "additionalProperties": false }, - "RunChainExport": { + "CloudBinding": { "type": "object", - "description": "A run's entry in the installation's chain of runs, and that entry's checkpoint, which a holder keeps. The checkpoint is a function of the entry's bytes.", + "additionalProperties": false, + "required": [ + "connection", + "subscription", + "job" + ], "properties": { - "entry": { - "type": "string", - "contentEncoding": "base64", - "description": "The entry's line exactly as stored, in standard base64: one JSON object of entryVersion \"1\", trail (32 lowercase hex characters), sequence (from 1), previous (the SHA-256 of the line before it, or of nothing for the first), kind \"run\", run (the run's id) and auditDigest (the SHA-256 of the run's audit record's exact bytes), in that order as Runner writes it. Read by its members, as JSON reads them." + "connection": { + "type": "string" }, - "checkpoint": { - "$ref": "#/components/schemas/Checkpoint" + "subscription": { + "type": "string" + }, + "job": { + "type": "string" } - }, - "required": [ - "entry", - "checkpoint" - ], - "additionalProperties": false + } }, - "Checkpoint": { + "CloudConnectionStatus": { "type": "object", - "description": "The Runtime's checkpoint (ADR-0047): a chain's identity, an entry's sequence, and the SHA-256 of that entry's exact line bytes. Its compact encoding, members in this order, is its RFC 8785 canonical form.", + "additionalProperties": false, + "required": [ + "id", + "subscription", + "problem" + ], "properties": { - "checkpointVersion": { - "const": "1" - }, - "recordDigest": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" + "id": { + "type": "string" }, - "sequence": { - "type": "integer", - "minimum": 1, - "maximum": 9007199254740990 + "subscription": { + "type": "string" }, - "trail": { - "type": "string", - "pattern": "^[a-f0-9]{32}$" + "problem": { + "type": "string" } - }, - "required": [ - "checkpointVersion", - "recordDigest", - "sequence", - "trail" - ], - "additionalProperties": false + } }, - "PlannedSource": { + "SourceTask": { "type": "object", "additionalProperties": false, "required": [ "name", - "kind" + "id", + "state", + "startedAt", + "checks" ], "properties": { "name": { "type": "string" }, - "kind": { - "enum": [ - "operation", - "selected-file", - "research" - ] - }, - "provider": { - "enum": [ - "local-file", - "google-drive" - ] - }, - "profile": { + "id": { "type": "string" }, - "source": { + "state": { "type": "string" }, - "arguments": { - "type": "object" - } - }, - "description": "The next source to acquire. For a research source, the caller runs the recipe (arguments) through the profiles the source is bound to and supplies the research record it assembles from the responses it retains: Runner asks no model and reads no page." - }, - "InputPlan": { - "oneOf": [ - { - "type": "object", - "additionalProperties": false, - "required": [ - "next" - ], - "properties": { - "next": { - "$ref": "#/components/schemas/PlannedSource" - } - } + "startedAt": { + "type": "string", + "format": "date-time" }, - { - "type": "object", - "additionalProperties": false, - "required": [ - "input" - ], - "properties": { - "input": { - "$ref": "#/components/schemas/Input" - }, - "factsText": { - "type": "string" - }, - "evidenceText": { - "type": "string" - } - } + "completedAt": { + "type": "string", + "format": "date-time" + }, + "checks": { + "type": "integer", + "minimum": 0 } - ] + } }, - "Schedule": { + "SourcePreparation": { "type": "object", + "additionalProperties": false, + "required": [ + "startedAt", + "deadline", + "tasks" + ], "properties": { - "kind": { - "enum": [ - "interval", - "daily", - "weekly", - "once" - ] - }, - "timezone": { - "type": "string" - }, - "startAt": { + "startedAt": { "type": "string", "format": "date-time" }, - "endAt": { + "deadline": { "type": "string", "format": "date-time" }, - "everySeconds": { - "type": "integer", - "minimum": 60, - "maximum": 2592000 - }, - "time": { + "nextCheck": { "type": "string", - "pattern": "^([01][0-9]|2[0-3]):[0-5][0-9]$" + "format": "date-time" }, - "weekday": { - "type": "integer", - "minimum": 0, - "maximum": 6 + "tasks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SourceTask" + } } }, - "required": [ - "kind", - "timezone", - "startAt" - ], - "additionalProperties": false, - "description": "Intervals use elapsed time. Calendar schedules skip nonexistent local times and choose the first repeated time. End is exclusive. Kind-specific fields are mutually exclusive." + "description": "Public progress only. Checkpoint bytes, frozen operation requests and installed Gateway URLs remain private." }, - "AutomaticInput": { + "EventResult": { "type": "object", "properties": { - "kind": { + "id": { + "type": "string" + }, + "state": { "enum": [ - "constant", - "input-file", - "mapped-files", - "mapped-sources" + "accepted", + "submitted", + "skipped", + "failed", + "expired", + "preparing", + "waiting", + "needs-attention", + "cancelled" ] }, - "value": { + "run": { + "type": "object", + "description": "Present once the occurrence has a run.", + "properties": { + "state": { + "enum": [ + "queued", + "running", + "completed", + "failed", + "interrupted" + ] + }, + "result": { + "type": "object", + "description": "Present once the run completed.", + "properties": { + "disposition": { + "type": "object" + }, + "handoffTarget": { + "type": [ + "object", + "null" + ] + } + }, + "required": [ + "disposition", + "handoffTarget" + ], + "additionalProperties": false + } + }, + "required": [ + "state" + ], + "additionalProperties": false + } + }, + "required": [ + "id", + "state" + ], + "additionalProperties": false + }, + "CalculatorPin": { + "type": "object", + "description": "The installation's statement that each allowed tool computes a deterministic function of the inputs it echoes and the tables it reports, calling no model. Only on a record MCP profile.", + "properties": { + "name": { "type": "string", - "description": "Exact JSON Input envelope; constants only. Source responses and computed preparation are forbidden." + "minLength": 1, + "maxLength": 256 }, - "path": { + "version": { "type": "string", - "description": "Project-relative JSON input envelope or v2 case file." - }, - "case": { - "type": "object" + "minLength": 1, + "maxLength": 256 + } + }, + "required": [ + "name", + "version" + ], + "additionalProperties": false + }, + "CalculationBinding": { + "type": "object", + "description": "Required exactly when the operation's profile names a calculator. Binds each echoed input to a parameter of the source (never runAt) and each reported table to its maximum age in seconds.", + "properties": { + "inputs": { + "type": "object", + "maxProperties": 64, + "propertyNames": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + }, + "additionalProperties": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + } }, - "files": { + "tables": { "type": "object", + "maxProperties": 64, + "propertyNames": { + "type": "string", + "pattern": "^[a-zA-Z0-9_.-]{1,128}$" + }, "additionalProperties": { - "type": "string" + "type": "integer", + "minimum": 1, + "maximum": 315360000 } } }, "required": [ - "kind" + "inputs", + "tables" ], - "additionalProperties": false, - "description": "mapped-sources supports v2 local files and installed Gateway operations. Retained source responses and interactive file grants are never reused." + "additionalProperties": false }, - "TriggerConfig": { + "CalculationLineage": { "type": "object", "properties": { - "name": { - "type": "string", - "minLength": 1, - "maxLength": 160 - }, - "kind": { - "enum": [ - "schedule", - "file", - "event", - "cloud" - ] - }, - "schedule": { - "$ref": "#/components/schemas/Schedule" - }, - "input": { - "$ref": "#/components/schemas/AutomaticInput" - }, - "missed": { - "enum": [ - "skip", - "latest" - ] + "calculator": { + "$ref": "#/components/schemas/CalculatorPin" }, - "overlap": { + "status": { "enum": [ - "skip", - "queue" + "computed", + "input-missing", + "cannot-compute" ] }, - "queueSeconds": { - "type": "integer", - "minimum": 60, - "maximum": 86400 - }, - "watchPath": { - "type": "string" - }, - "stableSeconds": { - "type": "integer", - "minimum": 1, - "maximum": 3600 - }, - "cloud": { - "$ref": "#/components/schemas/CloudBinding" + "inputs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CalculationInput" + } }, - "preparationSeconds": { - "description": "Omit or use 0 for one hour on durable connections. Explicit waits require mapped-sources and all operation profiles installed as durable.", - "oneOf": [ - { - "const": 0 - }, - { - "type": "integer", - "minimum": 60, - "maximum": 604800 - } - ] + "asOf": { + "type": "object", + "additionalProperties": { + "type": "string" + } } }, "required": [ - "name", - "kind", - "missed", - "overlap", - "queueSeconds" + "calculator", + "status", + "inputs", + "asOf" ], - "additionalProperties": false, - "description": "Event triggers take inputs from each delivery and forbid schedule/input/watch fields. Schedules require schedule and input. File triggers require a watched path used by their file inputs and a stability delay. Cloud triggers require cloud and input and forbid schedule/watch fields. For cloud, missed=latest delivers every signal before expiry; expiry starts at scheduledAt." + "additionalProperties": false }, - "Trigger": { + "CalculationInput": { "type": "object", + "description": "An input the calculator echoed, the parameter it is bound to, and where that parameter's value came from: the case or an earlier source, and the pointer.", "properties": { - "id": { + "name": { "type": "string" }, - "jobId": { + "parameter": { "type": "string" }, - "revision": { - "type": "integer", - "minimum": 1 - }, - "authority": { - "enum": [ - "local", - "google-cloud" - ] - }, - "config": { - "$ref": "#/components/schemas/TriggerConfig" - }, - "paused": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "type": "string", - "format": "date-time" - }, - "nextAt": { - "type": "string", - "format": "date-time" - }, - "hasKey": { - "type": "boolean" + "source": { + "type": "string" }, - "problem": { + "pointer": { "type": "string" } }, "required": [ - "id", - "jobId", - "revision", - "authority", - "config", - "paused", - "createdAt", - "updatedAt", - "hasKey" + "name", + "parameter", + "source", + "pointer" ], "additionalProperties": false }, - "TriggerOrigin": { - "type": "object", - "properties": { - "occurrenceId": { - "type": "string" + "JournalActor": { + "description": "Who Runner can say initiated a change. Never a person: Runner cannot know one. installation is whoever holds the owner bearer, named by the boot line's owner; a trigger acts at a revision; a trigger-credential is an event delivery whose X-Trigger-Token was the trigger's current key, named by the revision the key was issued at (null for a key issued before the journal began), never by the token or its digest; a delivery refused after its credential was authenticated is that credential's, as it was then, even if the key is rotated before the refusal is recorded; a cloud-connection is a cloud signal Runner discarded; runner is Runner itself.", + "oneOf": [ + { + "type": "object", + "required": [ + "kind", + "owner" + ], + "additionalProperties": false, + "properties": { + "kind": { + "const": "installation" + }, + "owner": { + "type": "string" + } + } }, - "triggerId": { - "type": "string" + { + "type": "object", + "required": [ + "kind", + "trigger", + "revision" + ], + "additionalProperties": false, + "properties": { + "kind": { + "const": "trigger" + }, + "trigger": { + "type": "string" + }, + "revision": { + "type": "integer", + "minimum": 1 + } + } }, - "triggerRevision": { - "type": "integer", - "minimum": 1 + { + "type": "object", + "required": [ + "kind", + "trigger", + "keyRevision" + ], + "additionalProperties": false, + "properties": { + "kind": { + "const": "trigger-credential" + }, + "trigger": { + "type": "string" + }, + "keyRevision": { + "type": [ + "integer", + "null" + ], + "minimum": 1 + } + } }, - "kind": { + { + "type": "object", + "required": [ + "kind", + "connection" + ], + "additionalProperties": false, + "properties": { + "kind": { + "const": "cloud-connection" + }, + "connection": { + "type": "string" + } + } + }, + { + "type": "object", + "required": [ + "kind" + ], + "additionalProperties": false, + "properties": { + "kind": { + "const": "runner" + } + } + } + ] + }, + "JournalConcerns": { + "type": "object", + "description": "The ids a change is about, each present only where it applies. An entry that names a job also names its release.", + "additionalProperties": false, + "properties": { + "job": { "type": "string" }, - "scheduledAt": { - "type": "string", - "format": "date-time" + "release": { + "type": "string" }, - "eventId": { + "trigger": { "type": "string" }, - "inputDigest": { + "occurrence": { "type": "string" }, - "expiresAt": { - "type": "string", - "format": "date-time" + "run": { + "type": "string" } - }, - "required": [ - "occurrenceId", - "triggerId", - "triggerRevision", - "kind" - ], - "additionalProperties": false + } }, - "Occurrence": { + "JournalInterruption": { "type": "object", + "description": "An interruption's own time. seen true: Runner saw the stop, at at. seen false: Runner found the work at a restart and cannot know when it stopped; it was running at lastKnownRunning, the last time Runner recorded it alive (absent when the journal holds no such time), and had stopped by the restart, the runner.started entry at sequence restart.", + "required": [ + "seen" + ], + "additionalProperties": false, "properties": { - "id": { - "type": "string" + "seen": { + "type": "boolean" }, - "jobId": { + "at": { "type": "string" }, - "releaseId": { + "lastKnownRunning": { "type": "string" }, - "jobRevision": { + "restart": { "type": "integer", "minimum": 1 - }, - "triggerId": { - "type": "string" - }, - "triggerRevision": { + } + } + }, + "JournalEntry": { + "type": "object", + "description": "One entry of the journal of job activity (docs/design/activity-journal.md): one change of state Runner made, written in the transaction that made it, or a refused request to start work. The operator's own log: not chained, not signed, and binding nothing against the operator. It holds no inputs, secrets, tokens or digests of either. The members after reason are particular to kinds, as their descriptions say; a member added later raises entryVersion.", + "required": [ + "sequence", + "entryVersion", + "kind", + "at", + "by", + "concerns" + ], + "additionalProperties": false, + "properties": { + "sequence": { "type": "integer", - "minimum": 1 - }, - "kind": { - "type": "string" - }, - "eventId": { - "type": "string" - }, - "scheduledAt": { - "type": "string", - "format": "date-time" - }, - "receivedAt": { - "type": "string", - "format": "date-time" - }, - "expiresAt": { - "type": "string", - "format": "date-time" + "minimum": 1, + "description": "The entry's place in the journal, from 1, in the order changes committed: the cursor." }, - "inputDigest": { - "type": "string" + "entryVersion": { + "const": "1" }, - "state": { + "kind": { "enum": [ - "accepted", - "submitted", - "skipped", - "failed", - "expired", - "preparing", - "waiting", - "needs-attention", - "cancelled" + "trigger.configured", + "trigger.paused", + "trigger.resumed", + "trigger.key-rotated", + "occurrence.received", + "occurrence.skipped", + "occurrence.preparing", + "occurrence.ready", + "occurrence.submitted", + "occurrence.failed", + "occurrence.expired", + "occurrence.needs-attention", + "occurrence.cancelled", + "occurrence.reconciled", + "run.queued", + "run.started", + "run.expired", + "run.completed", + "run.failed", + "run.interrupted", + "release.previewed", + "job.created", + "job.upgraded", + "admission.refused", + "journal.began", + "runner.started", + "runner.stopped" ] }, - "runId": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "missedFrom": { + "at": { "type": "string", - "format": "date-time" + "description": "When Runner wrote the entry, by its own clock. Order is sequence, never at." }, - "missedThrough": { - "type": "string", - "format": "date-time" + "by": { + "$ref": "#/components/schemas/JournalActor" }, - "preparationSeconds": { - "type": "integer" + "concerns": { + "$ref": "#/components/schemas/JournalConcerns" }, - "queueSeconds": { - "type": "integer" + "revision": { + "type": "integer", + "minimum": 1, + "description": "The trigger revision: after the change, for a change of a trigger; the one an occurrence was admitted under, for the occurrence and its run." }, - "readyUntil": { - "type": "string", - "format": "date-time" + "from": { + "type": [ + "string", + "null" + ], + "description": "The record's state before the change, for triggers (paused or enabled), occurrences and runs; null when the change created the record. Absent for a kind that concerns no record with a state." }, - "preparation": { - "$ref": "#/components/schemas/SourcePreparation" - } - }, - "required": [ - "id", - "jobId", - "releaseId", - "jobRevision", - "triggerId", - "triggerRevision", - "kind", - "receivedAt", - "expiresAt", - "state" - ], - "additionalProperties": false - }, - "EventDelivery": { - "type": "object", - "properties": { - "id": { + "to": { "type": "string", - "minLength": 1, - "maxLength": 128 + "description": "The record's state after the change. Absent for a kind that concerns no record with a state." }, - "occurredAt": { + "reason": { "type": "string", - "format": "date-time" - }, - "input": { - "$ref": "#/components/schemas/Input" - } - }, - "required": [ - "id", - "occurredAt", - "input" - ], - "additionalProperties": false - }, - "TriggerPreview": { - "type": "object", - "properties": { - "config": { - "$ref": "#/components/schemas/TriggerConfig" - }, - "next": { - "type": "array", - "items": { - "type": "string", - "format": "date-time" - } - }, - "inputReady": { - "type": "boolean" - }, - "factsText": { - "type": "string" + "description": "The reason or problem text Runner recorded with the change, where the record serves one, cut at 1,024 bytes; for a discarded cloud signal, the reason Runner gives." }, - "evidenceText": { - "type": "string" + "previousRevision": { + "type": [ + "integer", + "null" + ], + "minimum": 1, + "description": "trigger.*: the trigger's revision before the change; null for a new trigger. The values of both are the trigger's snapshots, never copied here." }, - "configurationReady": { - "type": "boolean" + "triggerKind": { + "enum": [ + "schedule", + "event", + "file", + "cloud" + ], + "description": "trigger.configured: the kind of trigger." }, - "deferred": { - "type": "boolean" - } - }, - "required": [ - "config", - "next", - "inputReady" - ], - "additionalProperties": false - }, - "TriggerMutation": { - "type": "object", - "properties": { - "trigger": { - "$ref": "#/components/schemas/Trigger" + "keyIssued": { + "const": true, + "description": "trigger.resumed: the event trigger's first key was issued at this revision. The key is in the answer to the request, never here." }, - "token": { + "nextAt": { "type": "string", - "description": "Plaintext only when first enabling an event or rotating its credential; otherwise empty. Never retrievable later." - } - }, - "required": [ - "trigger", - "token" - ], - "additionalProperties": false - }, - "CloudBinding": { - "type": "object", - "additionalProperties": false, - "required": [ - "connection", - "subscription", - "job" - ], - "properties": { - "connection": { - "type": "string" - }, - "subscription": { - "type": "string" + "description": "trigger.resumed, for a schedule: its next time." }, - "job": { - "type": "string" - } - } - }, - "CloudConnectionStatus": { - "type": "object", - "additionalProperties": false, - "required": [ - "id", - "subscription", - "problem" - ], - "properties": { - "id": { - "type": "string" + "occurrenceKind": { + "enum": [ + "schedule", + "event", + "file", + "cloud" + ], + "description": "An occurrence's admission (from null): the kind of trigger it came from." }, - "subscription": { - "type": "string" + "scheduledAt": { + "type": "string", + "description": "An occurrence's admission: as the occurrence holds it." }, - "problem": { - "type": "string" - } - } - }, - "SourceTask": { - "type": "object", - "additionalProperties": false, - "required": [ - "name", - "id", - "state", - "startedAt", - "checks" - ], - "properties": { - "name": { - "type": "string" + "missedFrom": { + "type": "string", + "description": "An occurrence's admission: as the occurrence holds it." }, - "id": { - "type": "string" + "missedThrough": { + "type": "string", + "description": "An occurrence's admission: as the occurrence holds it." }, - "state": { - "type": "string" + "expiresAt": { + "type": "string", + "description": "An occurrence's admission: as the occurrence holds it." }, - "startedAt": { + "deadline": { "type": "string", - "format": "date-time" + "description": "occurrence.preparing, for a durable preparation: its deadline." }, - "completedAt": { + "readyUntil": { "type": "string", - "format": "date-time" + "description": "occurrence.ready, for a durable preparation: until when its run may be admitted." }, - "checks": { + "chainSequence": { "type": "integer", - "minimum": 0 - } - } - }, - "SourcePreparation": { - "type": "object", - "additionalProperties": false, - "required": [ - "startedAt", - "deadline", - "tasks" - ], - "properties": { - "startedAt": { + "minimum": 1, + "description": "run.completed: the sequence of the run's entry in the installation's chain of runs, appended in the same transaction." + }, + "interruption": { + "$ref": "#/components/schemas/JournalInterruption" + }, + "packId": { "type": "string", - "format": "date-time" + "description": "release.previewed." }, - "deadline": { + "packVersion": { "type": "string", - "format": "date-time" + "description": "release.previewed." }, - "nextCheck": { + "packDigest": { "type": "string", - "format": "date-time" + "description": "release.previewed." }, - "tasks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SourceTask" - } - } - }, - "description": "Public progress only. Checkpoint bytes, frozen operation requests and installed Gateway URLs remain private." - }, - "EventResult": { - "type": "object", - "properties": { - "id": { - "type": "string" + "runtimeDigest": { + "type": "string", + "description": "release.previewed: the release's Runtime; runner.started: the Runtime this process pinned." }, - "state": { + "tests": { + "type": "string", + "description": "release.previewed: the state of the release's saved tests." + }, + "request": { "enum": [ - "accepted", - "submitted", - "skipped", - "failed", - "expired", - "preparing", - "waiting", - "needs-attention", - "cancelled" - ] + "submit-run", + "deliver-event", + "create-job", + "cloud-signal" + ], + "description": "admission.refused: the request refused. A refusal's entry is best effort: if the store cannot write it, the refusal is answered as it was and has no entry." }, - "run": { + "status": { + "enum": [ + 400, + 401, + 409, + 422, + 429 + ], + "description": "admission.refused: the HTTP status the request was answered with. Absent for a cloud signal." + }, + "code": { + "type": "string", + "description": "admission.refused: the error code the request was answered with. Absent for a cloud signal." + }, + "coalescedSeconds": { + "const": 60, + "description": "admission.refused: identical refusals in this many seconds after the entry are not entries." + }, + "held": { "type": "object", - "description": "Present once the occurrence has a run.", - "properties": { - "state": { - "enum": [ - "queued", - "running", - "completed", - "failed", - "interrupted" - ] - }, - "result": { - "type": "object", - "description": "Present once the run completed.", - "properties": { - "disposition": { - "type": "object" - }, - "handoffTarget": { - "type": [ - "object", - "null" - ] - } - }, - "required": [ - "disposition", - "handoffTarget" - ], - "additionalProperties": false - } - }, + "description": "journal.began: what the store held when its journal began, none of which has an entry.", "required": [ - "state" + "jobs", + "triggers", + "occurrences", + "runs" ], - "additionalProperties": false - } - }, - "required": [ - "id", - "state" - ], - "additionalProperties": false - }, - "CalculatorPin": { - "type": "object", - "description": "The installation's statement that each allowed tool computes a deterministic function of the inputs it echoes and the tables it reports, calling no model. Only on a record MCP profile.", - "properties": { - "name": { - "type": "string", - "minLength": 1, - "maxLength": 256 + "additionalProperties": false, + "properties": { + "jobs": { + "type": "integer", + "minimum": 0 + }, + "triggers": { + "type": "integer", + "minimum": 0 + }, + "occurrences": { + "type": "integer", + "minimum": 0 + }, + "runs": { + "type": "integer", + "minimum": 0 + } + } }, "version": { "type": "string", - "minLength": 1, - "maxLength": 256 + "description": "runner.started: the Runner build." } - }, - "required": [ - "name", - "version" - ], - "additionalProperties": false + } }, - "CalculationBinding": { + "JournalPage": { "type": "object", - "description": "Required exactly when the operation's profile names a calculator. Binds each echoed input to a parameter of the source (never runAt) and each reported table to its maximum age in seconds.", - "properties": { - "inputs": { - "type": "object", - "maxProperties": 64, - "propertyNames": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - }, - "additionalProperties": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - } - }, - "tables": { - "type": "object", - "maxProperties": 64, - "propertyNames": { - "type": "string", - "pattern": "^[a-zA-Z0-9_.-]{1,128}$" - }, - "additionalProperties": { - "type": "integer", - "minimum": 1, - "maximum": 315360000 - } - } - }, "required": [ - "inputs", - "tables" + "journalBegan", + "items", + "next", + "more" ], - "additionalProperties": false - }, - "CalculationLineage": { - "type": "object", + "additionalProperties": false, "properties": { - "calculator": { - "$ref": "#/components/schemas/CalculatorPin" - }, - "status": { - "enum": [ - "computed", - "input-missing", - "cannot-compute" - ] + "journalBegan": { + "type": "string", + "description": "When the store's journal began. Nothing before it has an entry, and nothing is back-filled." }, - "inputs": { + "items": { "type": "array", + "maxItems": 50, "items": { - "$ref": "#/components/schemas/CalculationInput" + "$ref": "#/components/schemas/JournalEntry" } }, - "asOf": { - "type": "object", - "additionalProperties": { - "type": "string" - } + "next": { + "type": "integer", + "minimum": 0, + "description": "The sequence of the page's last entry, or the cursor given when a forward page is empty (0 when a backward page is empty): the after of the next forward request. It never resets to 0 on a forward page." + }, + "more": { + "type": "boolean", + "description": "Another page is already available: after a forward page, later entries; after a backward page (tail or before), entries older than the page." + }, + "before": { + "type": "integer", + "minimum": 0, + "description": "Only in the answer to a request with tail or before: the sequence of the page's first entry, the before of the request for the next older page (the cursor given, or 0 for the newest page, when the page is empty). Forward answers do not carry it." } - }, - "required": [ - "calculator", - "status", - "inputs", - "asOf" - ], - "additionalProperties": false + } }, - "CalculationInput": { + "InputMappingV3": { "type": "object", - "description": "An input the calculator echoed, the parameter it is bound to, and where that parameter's value came from: the case or an earlier source, and the pointer.", "properties": { - "name": { - "type": "string" + "version": { + "const": 3 }, - "parameter": { - "type": "string" + "case": { + "$ref": "#/components/schemas/CaseMapping" }, - "source": { - "type": "string" + "sources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MappingSource" + }, + "maxItems": 16 }, - "pointer": { - "type": "string" + "admits": { + "$ref": "#/components/schemas/Admission" + }, + "unmapped": { + "type": "array", + "items": { + "type": "string" + }, + "maxItems": 256, + "uniqueItems": true + }, + "unmappedEvidence": { + "type": "array", + "items": { + "type": "string" + }, + "maxItems": 128, + "uniqueItems": true + }, + "profile": { + "type": "string", + "enum": [ + "base" + ], + "description": "Explicit Base is required for retained-column conversions. Absent, ordinary legacy behavior and limits apply." } }, "required": [ - "name", - "parameter", - "source", - "pointer" + "version" ], - "additionalProperties": false - }, - "JournalActor": { - "description": "Who Runner can say initiated a change. Never a person: Runner cannot know one. installation is whoever holds the owner bearer, named by the boot line's owner; a trigger acts at a revision; a trigger-credential is an event delivery whose X-Trigger-Token was the trigger's current key, named by the revision the key was issued at (null for a key issued before the journal began), never by the token or its digest; a delivery refused after its credential was authenticated is that credential's, as it was then, even if the key is rotated before the refusal is recorded; a cloud-connection is a cloud signal Runner discarded; runner is Runner itself.", - "oneOf": [ - { - "type": "object", - "required": [ - "kind", - "owner" - ], - "additionalProperties": false, - "properties": { - "kind": { - "const": "installation" - }, - "owner": { - "type": "string" - } - } - }, - { - "type": "object", - "required": [ - "kind", - "trigger", - "revision" - ], - "additionalProperties": false, - "properties": { - "kind": { - "const": "trigger" - }, - "trigger": { - "type": "string" - }, - "revision": { - "type": "integer", - "minimum": 1 - } - } - }, + "additionalProperties": false, + "anyOf": [ { - "type": "object", "required": [ - "kind", - "trigger", - "keyRevision" - ], - "additionalProperties": false, - "properties": { - "kind": { - "const": "trigger-credential" - }, - "trigger": { - "type": "string" - }, - "keyRevision": { - "type": [ - "integer", - "null" - ], - "minimum": 1 - } - } + "case" + ] }, { - "type": "object", "required": [ - "kind", - "connection" + "sources" ], - "additionalProperties": false, "properties": { - "kind": { - "const": "cloud-connection" - }, - "connection": { - "type": "string" + "sources": { + "minItems": 1 } } + } + ], + "description": "A dialect document of version 3 (spec/dialect.md sections 4.3 and 4.4): version 2's members but provider, facts and evidence, which version 3 does not carry. A request's version-3 document is kept as written: one Runner would write otherwise (an optional member written empty, or provider, facts or evidence) is refused, so that its digest, the preparation's mappingDigest, is the digest of the document's own canonical bytes. It is read only at source.mapping (input.source.mapping in a preview request and in an event delivery), each member named exactly so: one under a member that is one of those names but for case, or beside such a member, is refused as invalid_source_input. Its sources are bound, or are bound at import (SourceInput.import)." + }, + "BindingDocument": { + "type": "object", + "additionalProperties": false, + "required": [ + "dialect", + "sources" + ], + "description": "spec/dialect.md section 4.4: binds each unbound source of one published dialect to input profiles of this installation, by id and digest, and changes nothing else: an operation to one profile, and a research source to its AI profile (profile and profileDigest) and a web profile for each web capability it asks for (webProfiles). Its digest is the SHA-256 of its gateway canonical bytes; no preparation holds it.", + "properties": { + "dialect": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$", + "description": "The digest of the published dialect's gateway canonical bytes." }, - { + "sources": { "type": "object", - "required": [ - "kind" - ], - "additionalProperties": false, - "properties": { - "kind": { - "const": "runner" + "maxProperties": 16, + "propertyNames": { + "type": "string", + "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" + }, + "additionalProperties": { + "type": "object", + "additionalProperties": false, + "required": [ + "profile", + "profileDigest" + ], + "properties": { + "profile": { + "type": "string", + "minLength": 1 + }, + "profileDigest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + }, + "webProfiles": { + "type": "object", + "additionalProperties": false, + "maxProperties": 2, + "properties": { + "search": { + "type": "object", + "additionalProperties": false, + "required": [ + "profile", + "profileDigest" + ], + "properties": { + "profile": { + "type": "string", + "minLength": 1 + }, + "profileDigest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + } + } + }, + "page": { + "type": "object", + "additionalProperties": false, + "required": [ + "profile", + "profileDigest" + ], + "properties": { + "profile": { + "type": "string", + "minLength": 1 + }, + "profileDigest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" + } + } + } + }, + "description": "For a research source, REQUIRED: a profile for each web capability it asks for, exactly those, written even when empty." + } } } } - ] + } }, - "JournalConcerns": { + "DialectImport": { "type": "object", - "description": "The ids a change is about, each present only where it applies. An entry that names a job also names its release.", "additionalProperties": false, + "required": [ + "dialect", + "binding" + ], + "description": "The import step. Runner binds the published dialect with the binding document under this installation's input profiles, refusing by name a dialect that is not of version 3, has no unbound source or is written otherwise than Runner keeps it; a binding for another dialect, that leaves an unbound source unbound, binds a source the dialect does not have or one already bound, or names a member other than a profile's id and digest; and a profile this installation does not hold by that id and digest, of another shape than the source's, or whose adapter is not the source's record. A research source is bound by exactly its AI profile, its digest and its web profiles, the web profiles exactly the web capabilities it asks for (input-malformed otherwise; three web assignments are input-over-bound), each profile of class generated, declaring the capability it is bound for and the source's model (profile-mismatch otherwise). The bound dialect is the published one with each unbound operation's platform, operation, shape and record replaced by the profile, and each unbound research source's three assignment members added, every other member as written. Runner keeps it as the input's mapping and keeps both documents here, as given, beside the run: the operator's record of what was bound, which no preparation holds. Every later preparation of the input, a dispatcher's and verify-run's included, binds them again under the profiles it is given and requires the mapping to be the bound dialect.", "properties": { - "job": { - "type": "string" - }, - "release": { - "type": "string" - }, - "trigger": { - "type": "string" - }, - "occurrence": { - "type": "string" + "dialect": { + "oneOf": [ + { + "$ref": "#/components/schemas/InputMappingV3" + }, + { + "$ref": "#/components/schemas/NamedInputMappingV3" + } + ] }, - "run": { - "type": "string" + "binding": { + "$ref": "#/components/schemas/BindingDocument" } } }, - "JournalInterruption": { + "InstalledInputProfile": { "type": "object", - "description": "An interruption's own time. seen true: Runner saw the stop, at at. seen false: Runner found the work at a restart and cannot know when it stopped; it was running at lastKnownRunning, the last time Runner recorded it alive (absent when the journal holds no such time), and had stopped by the restart, the runner.started entry at sequence restart.", - "required": [ - "seen" - ], - "additionalProperties": false, "properties": { - "seen": { - "type": "boolean" - }, - "at": { - "type": "string" - }, - "lastKnownRunning": { - "type": "string" + "profile": { + "$ref": "#/components/schemas/InputProfile" }, - "restart": { - "type": "integer", - "minimum": 1 + "digest": { + "type": "string", + "pattern": "^sha256:[a-f0-9]{64}$" } - } - }, - "JournalEntry": { - "type": "object", - "description": "One entry of the journal of job activity (docs/design/activity-journal.md): one change of state Runner made, written in the transaction that made it, or a refused request to start work. The operator's own log: not chained, not signed, and binding nothing against the operator. It holds no inputs, secrets, tokens or digests of either. The members after reason are particular to kinds, as their descriptions say; a member added later raises entryVersion.", + }, "required": [ - "sequence", - "entryVersion", - "kind", - "at", - "by", - "concerns" + "profile", + "digest" ], - "additionalProperties": false, + "additionalProperties": false + }, + "SetAsideInputProfile": { + "type": "object", + "description": "A registered profile Runner set aside when it opened its store: one an earlier Runner admitted and this Runner's admission refuses on its own. Never bound: a binding, job or run that names it is refused as input_profile_set_aside, naming it. A failure of the stored set, such as a malformed row, more than 16 profiles, an ID stored twice or the ID of a configured profile of another definition, still refuses to open the store; a configured profile this Runner refuses still refuses to start.", "properties": { - "sequence": { - "type": "integer", - "minimum": 1, - "description": "The entry's place in the journal, from 1, in the order changes committed: the cursor." - }, - "entryVersion": { - "const": "1" - }, - "kind": { - "enum": [ - "trigger.configured", - "trigger.paused", - "trigger.resumed", - "trigger.key-rotated", - "occurrence.received", - "occurrence.skipped", - "occurrence.preparing", - "occurrence.ready", - "occurrence.submitted", - "occurrence.failed", - "occurrence.expired", - "occurrence.needs-attention", - "occurrence.cancelled", - "occurrence.reconciled", - "run.queued", - "run.started", - "run.expired", - "run.completed", - "run.failed", - "run.interrupted", - "release.previewed", - "job.created", - "job.upgraded", - "admission.refused", - "journal.began", - "runner.started", - "runner.stopped" - ] + "profile": { + "type": "object", + "description": "The stored profile, which this Runner's form refuses: its stored bytes, served compacted and JSON-escaped as every answer is. The store's row keeps them exactly." }, - "at": { + "digest": { "type": "string", - "description": "When Runner wrote the entry, by its own clock. Order is sequence, never at." - }, - "by": { - "$ref": "#/components/schemas/JournalActor" - }, - "concerns": { - "$ref": "#/components/schemas/JournalConcerns" - }, - "revision": { - "type": "integer", - "minimum": 1, - "description": "The trigger revision: after the change, for a change of a trigger; the one an occurrence was admitted under, for the occurrence and its run." - }, - "from": { - "type": [ - "string", - "null" - ], - "description": "The record's state before the change, for triggers (paused or enabled), occurrences and runs; null when the change created the record. Absent for a kind that concerns no record with a state." + "pattern": "^sha256:[a-f0-9]{64}$", + "description": "The profile's digest, as a binding to it names it." }, - "to": { - "type": "string", - "description": "The record's state after the change. Absent for a kind that concerns no record with a state." + "state": { + "const": "set-aside" }, "reason": { "type": "string", - "description": "The reason or problem text Runner recorded with the change, where the record serves one, cut at 1,024 bytes; for a discarded cloud signal, the reason Runner gives." - }, - "previousRevision": { - "type": [ - "integer", - "null" - ], - "minimum": 1, - "description": "trigger.*: the trigger's revision before the change; null for a new trigger. The values of both are the trigger's snapshots, never copied here." - }, - "triggerKind": { - "enum": [ - "schedule", - "event", - "file", - "cloud" - ], - "description": "trigger.configured: the kind of trigger." + "description": "This Runner's refusal of the profile." + } + }, + "required": [ + "profile", + "digest", + "state", + "reason" + ], + "additionalProperties": false + }, + "ManualExecutionBinding": { + "type": "object", + "additionalProperties": false, + "required": [ + "version", + "workspace", + "jobId", + "jobRevision", + "releaseId", + "releaseProfile", + "releaseDigest", + "releaseBytes" + ], + "properties": { + "version": { + "const": 1 }, - "keyIssued": { - "const": true, - "description": "trigger.resumed: the event trigger's first key was issued at this revision. The key is in the answer to the request, never here." + "workspace": { + "type": "string" }, - "nextAt": { + "jobId": { + "type": "string" + }, + "jobRevision": { "type": "string", - "description": "trigger.resumed, for a schedule: its next time." + "pattern": "^[1-9][0-9]{0,19}$" }, - "occurrenceKind": { - "enum": [ - "schedule", - "event", - "file", - "cloud" - ], - "description": "An occurrence's admission (from null): the kind of trigger it came from." + "releaseId": { + "type": "string" }, - "scheduledAt": { + "releaseProfile": { + "const": "judgment-pack-runner/canonical/1" + }, + "releaseDigest": { "type": "string", - "description": "An occurrence's admission: as the occurrence holds it." + "pattern": "^sha256:[a-f0-9]{64}$" }, - "missedFrom": { + "releaseBytes": { "type": "string", - "description": "An occurrence's admission: as the occurrence holds it." + "contentEncoding": "base64", + "maxLength": 11184812 + } + }, + "description": "Private experimental exact canonical typed Release preimage. Read-only binding material grants no registration or execution permission." + }, + "ConversionSpec": { + "type": "object", + "additionalProperties": false, + "required": [ + "version", + "revision", + "schemaSha256", + "corpusSha256" + ], + "properties": { + "version": { + "type": "string", + "minLength": 1 }, - "missedThrough": { + "revision": { "type": "string", - "description": "An occurrence's admission: as the occurrence holds it." + "pattern": "^[0-9a-f]{40}$" }, - "expiresAt": { + "schemaSha256": { "type": "string", - "description": "An occurrence's admission: as the occurrence holds it." + "pattern": "^sha256:[0-9a-f]{64}$" }, - "deadline": { + "corpusSha256": { "type": "string", - "description": "occurrence.preparing, for a durable preparation: its deadline." + "pattern": "^sha256:[0-9a-f]{64}$" + } + } + }, + "ConversionContract": { + "type": "object", + "additionalProperties": false, + "required": [ + "contract", + "spec", + "profile", + "roles" + ], + "properties": { + "contract": { + "type": "string", + "enum": [ + "retained-column/1" + ] }, - "readyUntil": { + "spec": { + "$ref": "#/components/schemas/ConversionSpec" + }, + "profile": { "type": "string", - "description": "occurrence.ready, for a durable preparation: until when its run may be admitted." + "enum": [ + "base" + ] }, - "chainSequence": { - "type": "integer", - "minimum": 1, - "description": "run.completed: the sequence of the run's entry in the installation's chain of runs, appended in the same transaction." + "roles": { + "type": "array", + "minItems": 1, + "maxItems": 5, + "uniqueItems": true, + "items": { + "type": "string", + "enum": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + } + } + }, + "description": "Experimental immutable Draft selection. Roles follow the listed order. The complete tuple must equal the installed reviewed package manifest; a caller cannot install a revision, maxima or producer authority. Extended Runner is unsupported." + }, + "ConversionCapability": { + "oneOf": [ + { + "type": "object", + "additionalProperties": false, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "properties": { + "contract": { + "type": "string", + "enum": [ + "retained-column/1" + ] + }, + "spec": { + "$ref": "#/components/schemas/ConversionSpec" + }, + "profile": { + "type": "string", + "enum": [ + "base" + ] + }, + "role": { + "type": "string", + "enum": [ + "document-validation" + ] + }, + "limits": { + "type": "object", + "additionalProperties": false, + "required": [ + "documentBytes", + "frameBytes" + ], + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + } + } + } }, - "interruption": { - "$ref": "#/components/schemas/JournalInterruption" + { + "type": "object", + "additionalProperties": false, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "properties": { + "contract": { + "type": "string", + "enum": [ + "retained-column/1" + ] + }, + "spec": { + "$ref": "#/components/schemas/ConversionSpec" + }, + "profile": { + "type": "string", + "enum": [ + "base" + ] + }, + "role": { + "type": "string", + "enum": [ + "preview" + ] + }, + "limits": { + "type": "object", + "additionalProperties": false, + "required": [ + "documentBytes", + "combinedBytes", + "frameBytes", + "profilesBytes", + "requestBodyBytes", + "inputReplyBytes" + ], + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "combinedBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "profilesBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "requestBodyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "inputReplyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + } + } + } }, - "packId": { - "type": "string", - "description": "release.previewed." + { + "type": "object", + "additionalProperties": false, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "properties": { + "contract": { + "type": "string", + "enum": [ + "retained-column/1" + ] + }, + "spec": { + "$ref": "#/components/schemas/ConversionSpec" + }, + "profile": { + "type": "string", + "enum": [ + "base" + ] + }, + "role": { + "type": "string", + "enum": [ + "preparation" + ] + }, + "limits": { + "type": "object", + "additionalProperties": false, + "required": [ + "documentBytes", + "combinedBytes", + "frameBytes", + "preparationBytes", + "recordBytes", + "profilesBytes", + "requestBodyBytes", + "inputReplyBytes", + "releaseStoredBytes", + "runStoredBytes", + "exportBaseBytes", + "exportWireBytes" + ], + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "combinedBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "preparationBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "recordBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "profilesBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "requestBodyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "inputReplyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "releaseStoredBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "runStoredBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "exportBaseBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "exportWireBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + } + }, + "producerGrammar": { + "type": "string", + "enum": [ + "desk-reviewed-input/1" + ] + } + } }, - "packVersion": { - "type": "string", - "description": "release.previewed." + { + "type": "object", + "additionalProperties": false, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "properties": { + "contract": { + "type": "string", + "enum": [ + "retained-column/1" + ] + }, + "spec": { + "$ref": "#/components/schemas/ConversionSpec" + }, + "profile": { + "type": "string", + "enum": [ + "base" + ] + }, + "role": { + "type": "string", + "enum": [ + "preparation-verification" + ] + }, + "limits": { + "type": "object", + "additionalProperties": false, + "required": [ + "documentBytes", + "combinedBytes", + "frameBytes", + "preparationBytes", + "recordBytes", + "profilesBytes", + "requestBodyBytes", + "inputReplyBytes", + "releaseStoredBytes", + "runStoredBytes", + "exportBaseBytes", + "exportWireBytes" + ], + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "combinedBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "preparationBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "recordBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "profilesBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "requestBodyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "inputReplyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "releaseStoredBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "runStoredBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "exportBaseBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "exportWireBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + } + }, + "producerGrammar": { + "type": "string", + "enum": [ + "desk-reviewed-input/1" + ] + } + } }, - "packDigest": { - "type": "string", - "description": "release.previewed." + { + "type": "object", + "additionalProperties": false, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "properties": { + "contract": { + "type": "string", + "enum": [ + "retained-column/1" + ] + }, + "spec": { + "$ref": "#/components/schemas/ConversionSpec" + }, + "profile": { + "type": "string", + "enum": [ + "base" + ] + }, + "role": { + "type": "string", + "enum": [ + "producer-carrier" + ] + }, + "limits": { + "type": "object", + "additionalProperties": false, + "required": [ + "originalSnapshotBytes", + "carrierBytes", + "grantBytes", + "adapterStdoutBytes", + "responseBytes", + "profilesBytes" + ], + "properties": { + "originalSnapshotBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "carrierBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "grantBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "adapterStdoutBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "responseBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "profilesBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + } + }, + "producerGrammar": { + "type": "string", + "enum": [ + "desk-reviewed-input/1" + ] + } + } + } + ], + "description": "Trusted installation metadata, independent of the source selector. Every integer uses a positive non-exponent JSON token. Producer grammar must match the approved source/adapter pin." + }, + "RetainedColumnAvailability": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" }, - "runtimeDigest": { + "column": { "type": "string", - "description": "release.previewed: the release's Runtime; runner.started: the Runtime this process pinned." + "minLength": 1, + "maxLength": 160 + } + }, + "required": [ + "contractVersion", + "column" + ], + "additionalProperties": false + }, + "RetainedColumnTransformation": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" }, - "tests": { + "column": { "type": "string", - "description": "release.previewed: the state of the release's saved tests." - }, - "request": { - "enum": [ - "submit-run", - "deliver-event", - "create-job", - "cloud-signal" - ], - "description": "admission.refused: the request refused. A refusal's entry is best effort: if the store cannot write it, the refusal is answered as it was and has no entry." - }, - "status": { - "enum": [ - 400, - 401, - 409, - 422, - 429 - ], - "description": "admission.refused: the HTTP status the request was answered with. Absent for a cloud signal." + "minLength": 1, + "maxLength": 160 }, - "code": { - "type": "string", - "description": "admission.refused: the error code the request was answered with. Absent for a cloud signal." + "input": { + "$ref": "#/components/schemas/RetainedColumnInput" }, - "coalescedSeconds": { - "const": 60, - "description": "admission.refused: identical refusals in this many seconds after the entry are not entries." + "result": { + "$ref": "#/components/schemas/RetainedColumnResult" }, - "held": { + "researchIdentity": { + "$ref": "#/components/schemas/RetainedColumnResearchIdentity" + } + }, + "required": [ + "contractVersion", + "column", + "input", + "result" + ], + "additionalProperties": false + }, + "RetainedColumnConversion": { + "oneOf": [ + { "type": "object", - "description": "journal.began: what the store held when its journal began, none of which has an entry.", + "properties": { + "contractVersion": { + "const": "1" + }, + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "kind": { + "enum": [ + "text", + "decimal", + "number", + "research-value" + ] + } + }, "required": [ - "jobs", - "triggers", - "occurrences", - "runs" + "contractVersion", + "column", + "kind" ], - "additionalProperties": false, + "additionalProperties": false + }, + { + "type": "object", "properties": { - "jobs": { - "type": "integer", - "minimum": 0 + "contractVersion": { + "const": "1" }, - "triggers": { - "type": "integer", - "minimum": 0 + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 }, - "occurrences": { - "type": "integer", - "minimum": 0 + "kind": { + "const": "boolean" }, - "runs": { - "type": "integer", - "minimum": 0 + "trueValue": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "falseValue": { + "type": "string", + "minLength": 1, + "maxLength": 160 } - } + }, + "required": [ + "contractVersion", + "column", + "kind", + "trueValue", + "falseValue" + ], + "additionalProperties": false + } + ] + }, + "RetainedColumnInput": { + "oneOf": [ + { + "type": "object", + "properties": { + "state": { + "const": "missing" + } + }, + "required": [ + "state" + ], + "additionalProperties": false }, - "version": { - "type": "string", - "description": "runner.started: the Runner build." + { + "type": "object", + "properties": { + "state": { + "const": "present" + }, + "ref": { + "$ref": "#/components/schemas/RetainedColumnInputReference" + } + }, + "required": [ + "state", + "ref" + ], + "additionalProperties": false } - } + ] }, - "JournalPage": { + "RetainedColumnInputReference": { "type": "object", + "properties": { + "frameSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "location": { + "enum": [ + "values", + "research-value" + ] + } + }, "required": [ - "journalBegan", - "items", - "next", - "more" + "frameSha256", + "location" ], - "additionalProperties": false, + "additionalProperties": false + }, + "RetainedColumnResearchIdentity": { + "type": "object", "properties": { - "journalBegan": { + "recipeRevision": { "type": "string", - "description": "When the store's journal began. Nothing before it has an entry, and nothing is back-filled." - }, - "items": { - "type": "array", - "maxItems": 50, - "items": { - "$ref": "#/components/schemas/JournalEntry" - } - }, - "next": { - "type": "integer", - "minimum": 0, - "description": "The sequence of the page's last entry, or the cursor given when a forward page is empty (0 when a backward page is empty): the after of the next forward request. It never resets to 0 on a forward page." - }, - "more": { - "type": "boolean", - "description": "Another page is already available: after a forward page, later entries; after a backward page (tail or before), entries older than the page." + "minLength": 1, + "maxLength": 160 }, - "before": { - "type": "integer", - "minimum": 0, - "description": "Only in the answer to a request with tail or before: the sequence of the page's first entry, the before of the request for the next older page (the cursor given, or 0 for the newest page, when the page is empty). Forward answers do not carry it." + "fieldSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + } + }, + "required": [ + "recipeRevision", + "fieldSha256" + ], + "additionalProperties": false + }, + "RetainedColumnResult": { + "oneOf": [ + { + "type": "object", + "properties": { + "state": { + "const": "value" + }, + "json": { + "type": "string" + } + }, + "required": [ + "state", + "json" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "state": { + "const": "omitted" + }, + "reason": { + "enum": [ + "missing", + "blank", + "legacy-null", + "unavailable" + ] + } + }, + "required": [ + "state", + "reason" + ], + "additionalProperties": false } - } + ] }, - "InputMappingV3": { + "NamedInputMappingV2": { "type": "object", + "additionalProperties": false, "properties": { "version": { - "const": 3 + "type": "string", + "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$" }, "case": { "$ref": "#/components/schemas/CaseMapping" @@ -5460,224 +7017,89 @@ }, "maxItems": 128, "uniqueItems": true - } - }, - "required": [ - "version" - ], - "additionalProperties": false, - "anyOf": [ - { - "required": [ - "case" - ] - }, - { - "required": [ - "sources" - ], - "properties": { - "sources": { - "minItems": 1 - } - } - } - ], - "description": "A dialect document of version 3 (spec/dialect.md sections 4.3 and 4.4): version 2's members but provider, facts and evidence, which version 3 does not carry. A request's version-3 document is kept as written: one Runner would write otherwise (an optional member written empty, or provider, facts or evidence) is refused, so that its digest, the preparation's mappingDigest, is the digest of the document's own canonical bytes. It is read only at source.mapping (input.source.mapping in a preview request and in an event delivery), each member named exactly so: one under a member that is one of those names but for case, or beside such a member, is refused as invalid_source_input. Its sources are bound, or are bound at import (SourceInput.import)." - }, - "BindingDocument": { - "type": "object", - "additionalProperties": false, - "required": [ - "dialect", - "sources" - ], - "description": "spec/dialect.md section 4.4: binds each unbound source of one published dialect to input profiles of this installation, by id and digest, and changes nothing else: an operation to one profile, and a research source to its AI profile (profile and profileDigest) and a web profile for each web capability it asks for (webProfiles). Its digest is the SHA-256 of its gateway canonical bytes; no preparation holds it.", - "properties": { - "dialect": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$", - "description": "The digest of the published dialect's gateway canonical bytes." - }, - "sources": { - "type": "object", - "maxProperties": 16, - "propertyNames": { - "type": "string", - "pattern": "^[a-zA-Z][a-zA-Z0-9_-]{0,63}$" - }, - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "required": [ - "profile", - "profileDigest" - ], - "properties": { - "profile": { - "type": "string", - "minLength": 1 - }, - "profileDigest": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" - }, - "webProfiles": { - "type": "object", - "additionalProperties": false, - "maxProperties": 2, - "properties": { - "search": { - "type": "object", - "additionalProperties": false, - "required": [ - "profile", - "profileDigest" - ], - "properties": { - "profile": { - "type": "string", - "minLength": 1 - }, - "profileDigest": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" - } - } - }, - "page": { - "type": "object", - "additionalProperties": false, - "required": [ - "profile", - "profileDigest" - ], - "properties": { - "profile": { - "type": "string", - "minLength": 1 - }, - "profileDigest": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" - } - } - } - }, - "description": "For a research source, REQUIRED: a profile for each web capability it asks for, exactly those, written even when empty." - } - } - } - } - } - }, - "DialectImport": { - "type": "object", - "additionalProperties": false, - "required": [ - "dialect", - "binding" - ], - "description": "The import step. Runner binds the published dialect with the binding document under this installation's input profiles, refusing by name a dialect that is not of version 3, has no unbound source or is written otherwise than Runner keeps it; a binding for another dialect, that leaves an unbound source unbound, binds a source the dialect does not have or one already bound, or names a member other than a profile's id and digest; and a profile this installation does not hold by that id and digest, of another shape than the source's, or whose adapter is not the source's record. A research source is bound by exactly its AI profile, its digest and its web profiles, the web profiles exactly the web capabilities it asks for (input-malformed otherwise; three web assignments are input-over-bound), each profile of class generated, declaring the capability it is bound for and the source's model (profile-mismatch otherwise). The bound dialect is the published one with each unbound operation's platform, operation, shape and record replaced by the profile, and each unbound research source's three assignment members added, every other member as written. Runner keeps it as the input's mapping and keeps both documents here, as given, beside the run: the operator's record of what was bound, which no preparation holds. Every later preparation of the input, a dispatcher's and verify-run's included, binds them again under the profiles it is given and requires the mapping to be the bound dialect.", - "properties": { - "dialect": { - "$ref": "#/components/schemas/InputMappingV3" - }, - "binding": { - "$ref": "#/components/schemas/BindingDocument" - } - } - }, - "InstalledInputProfile": { - "type": "object", - "properties": { - "profile": { - "$ref": "#/components/schemas/InputProfile" }, - "digest": { - "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" - } - }, - "required": [ - "profile", - "digest" - ], - "additionalProperties": false - }, - "SetAsideInputProfile": { - "type": "object", - "description": "A registered profile Runner set aside when it opened its store: one an earlier Runner admitted and this Runner's admission refuses on its own. Never bound: a binding, job or run that names it is refused as input_profile_set_aside, naming it. A failure of the stored set, such as a malformed row, more than 16 profiles, an ID stored twice or the ID of a configured profile of another definition, still refuses to open the store; a configured profile this Runner refuses still refuses to start.", - "properties": { "profile": { - "type": "object", - "description": "The stored profile, which this Runner's form refuses: its stored bytes, served compacted and JSON-escaped as every answer is. The store's row keeps them exactly." - }, - "digest": { "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$", - "description": "The profile's digest, as a binding to it names it." + "enum": [ + "base" + ], + "description": "Explicit Base is required for retained-column conversions. Absent, ordinary legacy behavior and limits apply." }, - "state": { - "const": "set-aside" + "formatVersion": { + "const": "2.0.0" }, - "reason": { + "id": { "type": "string", - "description": "This Runner's refusal of the profile." + "minLength": 1, + "maxLength": 1024 } }, "required": [ - "profile", - "digest", - "state", - "reason" - ], - "additionalProperties": false + "formatVersion", + "id", + "version", + "case" + ] }, - "ManualExecutionBinding": { + "NamedInputMappingV3": { "type": "object", "additionalProperties": false, - "required": [ - "version", - "workspace", - "jobId", - "jobRevision", - "releaseId", - "releaseProfile", - "releaseDigest", - "releaseBytes" - ], "properties": { "version": { - "const": 1 + "type": "string", + "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$" }, - "workspace": { - "type": "string" + "case": { + "$ref": "#/components/schemas/CaseMapping" }, - "jobId": { - "type": "string" + "sources": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MappingSource" + }, + "maxItems": 16 }, - "jobRevision": { - "type": "string", - "pattern": "^[1-9][0-9]{0,19}$" + "admits": { + "$ref": "#/components/schemas/Admission" }, - "releaseId": { - "type": "string" + "unmapped": { + "type": "array", + "items": { + "type": "string" + }, + "maxItems": 256, + "uniqueItems": true }, - "releaseProfile": { - "const": "judgment-pack-runner/canonical/1" + "unmappedEvidence": { + "type": "array", + "items": { + "type": "string" + }, + "maxItems": 128, + "uniqueItems": true }, - "releaseDigest": { + "profile": { "type": "string", - "pattern": "^sha256:[a-f0-9]{64}$" + "enum": [ + "base" + ], + "description": "Explicit Base is required for retained-column conversions. Absent, ordinary legacy behavior and limits apply." }, - "releaseBytes": { + "formatVersion": { + "const": "3.0.0" + }, + "id": { "type": "string", - "contentEncoding": "base64", - "maxLength": 11184812 + "minLength": 1, + "maxLength": 1024 } }, - "description": "Private experimental exact canonical typed Release preimage. Read-only binding material grants no registration or execution permission." + "required": [ + "formatVersion", + "id", + "version", + "case" + ] } } } diff --git a/vectors/retained-column-selection.json b/vectors/retained-column-selection.json new file mode 100644 index 0000000..e164e8c --- /dev/null +++ b/vectors/retained-column-selection.json @@ -0,0 +1,581 @@ +{ + "status": "handwritten-test-only", + "selection": { + "contract": "retained-column/1", + "spec": { + "version": "Draft RFC0029", + "revision": "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", + "schemaSha256": "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", + "corpusSha256": "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "capabilities": [ + { + "contract": "retained-column/1", + "spec": { + "version": "Draft RFC0029", + "revision": "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", + "schemaSha256": "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", + "corpusSha256": "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "Draft RFC0029", + "revision": "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", + "schemaSha256": "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", + "corpusSha256": "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "Draft RFC0029", + "revision": "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", + "schemaSha256": "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", + "corpusSha256": "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + { + "contract": "retained-column/1", + "spec": { + "version": "Draft RFC0029", + "revision": "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", + "schemaSha256": "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", + "corpusSha256": "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + { + "contract": "retained-column/1", + "spec": { + "version": "Draft RFC0029", + "revision": "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", + "schemaSha256": "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", + "corpusSha256": "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ], + "negativeSelections": [ + { + "name": "null-profile", + "member": "profile", + "value": null, + "code": "input-malformed" + }, + { + "name": "boolean-profile", + "member": "profile", + "value": false, + "code": "input-malformed" + }, + { + "name": "numeric-profile", + "member": "profile", + "value": 0, + "code": "input-malformed" + }, + { + "name": "array-profile", + "member": "profile", + "value": [], + "code": "input-malformed" + }, + { + "name": "object-profile", + "member": "profile", + "value": {}, + "code": "input-malformed" + }, + { + "name": "extended-profile", + "member": "profile", + "value": "extended", + "code": "capability-unsupported" + }, + { + "name": "null-role", + "member": "roles", + "value": [ + null + ], + "code": "input-malformed" + }, + { + "name": "unknown-role", + "member": "roles", + "value": [ + "unknown" + ], + "code": "capability-unsupported" + }, + { + "name": "repeated-role", + "member": "roles", + "value": [ + "preview", + "preview" + ], + "code": "input-malformed" + }, + { + "name": "reversed-role", + "member": "roles", + "value": [ + "preparation", + "preview" + ], + "code": "input-malformed" + }, + { + "name": "empty-role-list", + "member": "roles", + "value": [], + "code": "input-malformed" + }, + { + "name": "missing-operation-role", + "member": "roles", + "value": [ + "document-validation", + "preview" + ], + "code": "capability-unsupported" + } + ], + "conversions": [ + { + "contractVersion": "1", + "column": "X", + "kind": "text" + }, + { + "contractVersion": "1", + "column": "X", + "kind": "decimal" + }, + { + "contractVersion": "1", + "column": "X", + "kind": "number" + }, + { + "contractVersion": "1", + "column": "X", + "kind": "research-value" + }, + { + "contractVersion": "1", + "column": "X", + "kind": "boolean", + "trueValue": "YES", + "falseValue": "NO" + } + ], + "availability": { + "contractVersion": "1", + "column": "X" + }, + "lineages": [ + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "-0" + } + }, + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "missing" + }, + "result": { + "state": "omitted", + "reason": "missing" + } + }, + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "location": "research-value" + } + }, + "result": { + "state": "value", + "json": "-0" + }, + "researchIdentity": { + "recipeRevision": "original-7", + "fieldSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "missing" + }, + "result": { + "state": "omitted", + "reason": "blank" + } + }, + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "missing" + }, + "result": { + "state": "omitted", + "reason": "legacy-null" + } + }, + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "missing" + }, + "result": { + "state": "omitted", + "reason": "unavailable" + } + } + ], + "sourceInputs": [ + { + "conversionContract": { + "contract": "retained-column/1", + "spec": { + "version": "Draft RFC0029", + "revision": "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", + "schemaSha256": "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", + "corpusSha256": "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "retainedCaseJson": "{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"values\":{\"X\":\"-0\"},\"research\":null}}", + "mapping": { + "version": 2, + "profile": "base", + "case": { + "facts": [ + { + "target": "/value", + "source": "/retained", + "conversion": { + "contractVersion": "1", + "column": "X", + "kind": "number" + } + } + ], + "evidence": [ + { + "requirement": "receipt", + "source": "/retained", + "availability": { + "contractVersion": "1", + "column": "X" + } + } + ] + }, + "provider": "", + "facts": null, + "evidence": null + } + }, + { + "conversionContract": { + "contract": "retained-column/1", + "spec": { + "version": "Draft RFC0029", + "revision": "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", + "schemaSha256": "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", + "corpusSha256": "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "retainedCaseJson": "{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"values\":{\"X\":\"-0\"},\"research\":null}}", + "mapping": { + "formatVersion": "2.0.0", + "id": "urn:example:retained", + "version": "1.0.0", + "profile": "base", + "case": { + "facts": [ + { + "target": "/value", + "source": "/retained", + "conversion": { + "contractVersion": "1", + "column": "X", + "kind": "number" + } + } + ], + "evidence": [ + { + "requirement": "receipt", + "source": "/retained", + "availability": { + "contractVersion": "1", + "column": "X" + } + } + ] + } + } + }, + { + "conversionContract": { + "contract": "retained-column/1", + "spec": { + "version": "Draft RFC0029", + "revision": "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", + "schemaSha256": "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", + "corpusSha256": "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "retainedCaseJson": "{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"values\":{\"X\":\"-0\"},\"research\":null}}", + "mapping": { + "formatVersion": "3.0.0", + "id": "urn:example:retained", + "version": "1.0.0", + "profile": "base", + "case": { + "facts": [ + { + "target": "/value", + "source": "/retained", + "conversion": { + "contractVersion": "1", + "column": "X", + "kind": "number" + } + } + ], + "evidence": [ + { + "requirement": "receipt", + "source": "/retained", + "availability": { + "contractVersion": "1", + "column": "X" + } + } + ] + } + } + } + ], + "preparations": [ + { + "version": 2, + "verifiedAt": "2026-10-26T00:00:00Z", + "mappingDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "verification": "handwritten test only", + "cites": [], + "lineage": [], + "outcomes": [], + "conversionContract": { + "contract": "retained-column/1", + "spec": { + "version": "Draft RFC0029", + "revision": "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", + "schemaSha256": "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", + "corpusSha256": "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + } + } + ], + "profiles": [ + { + "id": "fixture", + "publicKey": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "class": "generated", + "source": "desk-inputs", + "authority": "fixture:test", + "shape": "mcp", + "adapter": { + "name": "jpack-desk/reviewed-input", + "version": "2", + "digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000" + }, + "endpoint": "desk-local:reviewed-inputs", + "tools": [ + "read_reviewed_input" + ], + "retainedColumnProducer": { + "contractVersion": "1", + "grammar": "desk-reviewed-input/1" + }, + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "Draft RFC0029", + "revision": "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", + "schemaSha256": "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", + "corpusSha256": "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + } + ], + "sourceValues": [ + { + "retainedResponseJson": "{\"result\":{},\"receipt\":{},\"salts\":{}}" + } + ], + "copyMappings": [ + { + "facts": [ + { + "target": "/value", + "source": "/retained", + "conversion": { + "contractVersion": "1", + "column": "X", + "kind": "number" + } + } + ], + "evidence": [ + { + "requirement": "receipt", + "source": "/retained", + "availability": { + "contractVersion": "1", + "column": "X" + } + } + ] + } + ] +} From 83ea98d61dfacde66e06e316f9b967db7993a65a Mon Sep 17 00:00:00 2001 From: kikashy Date: Mon, 26 Oct 2026 18:21:46 -0400 Subject: [PATCH 02/11] Enforce negotiated retained-column limits at owning boundaries Signed-off-by: kikashy --- docs/design/retained-columns-draft.md | 23 + internal/runner/background.go | 15 +- internal/runner/column_carrier_v1.go | 24 + internal/runner/column_carrier_v1_producer.go | 8 +- internal/runner/column_role_v1.go | 9 + .../runner/column_role_v1_capabilities.go | 155 +++++- .../runner/column_role_v1_lifecycle_test.go | 6 +- .../runner/column_role_v1_negotiation_test.go | 483 ++++++++++++++++++ internal/runner/column_role_v1_test.go | 10 +- internal/runner/mapping_v2_next.go | 13 + internal/runner/mapping_v2_proof.go | 3 + internal/runner/mapping_v2_types.go | 3 + internal/runner/preparation.go | 7 +- .../runner/preparation_verify_profiles.go | 1 + internal/runner/runtime.go | 15 +- internal/runner/source_worker.go | 24 +- openapi.json | 77 ++- 17 files changed, 843 insertions(+), 33 deletions(-) create mode 100644 internal/runner/column_role_v1_negotiation_test.go diff --git a/docs/design/retained-columns-draft.md b/docs/design/retained-columns-draft.md index bd73f94..abd54ce 100644 --- a/docs/design/retained-columns-draft.md +++ b/docs/design/retained-columns-draft.md @@ -223,3 +223,26 @@ the same bounded header encoding, checked before larger files are opened. The AP it separately. They never infer selection from retained bodies. Offline readers revalidate source/preparation/release identities and complete size limits against their own installed manifest. Existing invocations retain ordinary admission. + + +Lower positive owner reports are valid. Runner takes the minimum of its Base +ceiling and the approved profile's reported maximum, then measures the complete +profiles, signed response, carrier and decoded original snapshot separately. +Online planning and offline preparation use the same trusted profile, including +its existing identity, signature and original-inventory checks. Planned and +durable source requests retain all six effective producer ceilings; a changed +installation cannot rebind an in-flight request. These downward caller ceilings +grant no authority and never enlarge Base. A durable `retainedColumn` discriminator is derived only from the trusted +profile and mapping read; producer requests without these ceilings are refused +before dispatch. Ordinary selected mixed-source acquisitions retain their prior +behavior. Resumed intent must match both the discriminator and ceilings, so a +producer request cannot be downgraded into an ordinary request. Runtime document reports are likewise +minimized and checked against the pack, published and bound mappings, and every +retained frame before validation/evaluation effects. The independent binding +document remains capped at 64 KiB. + +Runner receives the signed Gateway response; it cannot observe producer grant +creation or adapter stdout. The retained grant/stdout ceilings are obligations +of those actual owners, not evidence supplied by offline verification or a +Gateway fixture. Producer-owner negotiation and proof remain separate required +integration evidence. diff --git a/internal/runner/background.go b/internal/runner/background.go index 4e4f99e..84abca5 100644 --- a/internal/runner/background.go +++ b/internal/runner/background.go @@ -151,6 +151,12 @@ func (s *Service) acquirePlannedOperation(parent context.Context, next PlannedSo if e := next.ConversionContract.validate("preparation", "producer-carrier"); e != nil { return SourceValue{}, e } + if next.RetainedColumn != (next.retainResponse && next.ConversionContract != nil) { + return SourceValue{}, conversionFailure(codeMalformed) + } + if e := validateProducerLimits(next.RetainedColumn, next.ConversionContract, next.ConversionLimits); e != nil { + return SourceValue{}, e + } if next.Kind != "operation" { return SourceValue{}, bad("automatic_source_unavailable", "A fresh operation source is required.") } @@ -164,7 +170,7 @@ func (s *Service) acquirePlannedOperation(parent context.Context, next PlannedSo return SourceValue{}, bad("gateway_connection_required", "The Gateway connection is no longer available.") } session := id("job.") - raw, e := automaticCall(parent, gateway+"/acquire", encode(map[string]any{"session": session, "source": next.Source, "arguments": next.Arguments}), int64(artifactLimit(next.ConversionContract, 1<<20, columnResponseLimit))) + raw, e := automaticCall(parent, gateway+"/acquire", encode(map[string]any{"session": session, "source": next.Source, "arguments": next.Arguments}), int64(min(artifactLimit(next.ConversionContract, 1<<20, columnResponseLimit), producerResponseLimit(next.ConversionContract, next.ConversionLimits)))) // Housekeeping is bounded and never retries the acquisition itself. cleanup, stop := context.WithTimeout(context.WithoutCancel(parent), 3*time.Second) _, _ = automaticCall(cleanup, gateway+"/seal", encode(map[string]string{"session": session}), 64<<10) @@ -186,6 +192,13 @@ func (s *Service) acquirePlannedOperation(parent context.Context, next PlannedSo return value, bad("gateway_receipt_mismatch", "The Gateway response does not belong to this acquisition.") } if next.ConversionContract != nil && next.retainResponse { + envelope, err := exactMembers(raw) + if err != nil { + return SourceValue{}, err + } + if _, err = readColumnCarrierLimits(envelope["result"], next.ConversionLimits, next.ConversionContract); err != nil { + return SourceValue{}, err + } return SourceValue{RetainedResponseJSON: string(raw)}, nil } return SourceValue{Response: raw}, nil diff --git a/internal/runner/column_carrier_v1.go b/internal/runner/column_carrier_v1.go index 336d890..f31d6f6 100644 --- a/internal/runner/column_carrier_v1.go +++ b/internal/runner/column_carrier_v1.go @@ -26,6 +26,9 @@ type retainedColumnCarrier struct { } func readColumnCarrier(raw []byte, selection ...*ConversionContract) (retainedColumnCarrier, error) { + return readColumnCarrierLimits(raw, nil, selection...) +} +func readColumnCarrierLimits(raw []byte, limits map[string]int, selection ...*ConversionContract) (retainedColumnCarrier, error) { var c retainedColumnCarrier badCarrier := func() (retainedColumnCarrier, error) { return c, withCode(codeMalformed, errors.New("invalid retained-column generated carrier")) @@ -33,6 +36,9 @@ func readColumnCarrier(raw []byte, selection ...*ConversionContract) (retainedCo if e := selectedConversion(selection).validate("producer-carrier"); e != nil { return c, e } + if e := conversionArtifactBound(limits, "carrierBytes", len(raw)); e != nil { + return c, e + } if len(raw) > artifactLimit(selectedConversion(selection), MaxBody, columnCarrierLimit) { return c, withCode(codeOverBound, errors.New("retained-column carrier exceeds base limit")) } @@ -52,6 +58,9 @@ func readColumnCarrier(raw []byte, selection ...*ConversionContract) (retainedCo if json.Unmarshal(m["contractVersion"], &version) != nil || version != "1" || json.Unmarshal(m["originalSnapshotJson"], &snapshot) != nil || json.Unmarshal(m["originalSnapshotSha256"], &pin) != nil || !validDigest(pin) || pin != digest([]byte(snapshot)) { return badCarrier() } + if e := conversionArtifactBound(limits, "originalSnapshotBytes", len(snapshot)); e != nil { + return c, e + } if len(snapshot) > 524288 { return c, withCode(codeOverBound, errors.New("original reviewed snapshot exceeds producer bound")) } @@ -175,6 +184,21 @@ func verifyRetainedAcquisition(raw, args []byte, p InputProfile, public ed25519. if e := selectedConversion(selection).validate("producer-carrier"); e != nil { return retainedAcquisitionResult{}, nil, e } + if selectedConversion(selection) != nil { + limits, err := conversionCapabilityLimits(p.ConversionContracts, "producer-carrier", true) + if err != nil { + return retainedAcquisitionResult{}, nil, err + } + if err = conversionArtifactBound(limits, "responseBytes", len(raw)); err != nil { + return retainedAcquisitionResult{}, nil, err + } + envelope, err := exactMembers(raw) + if err == nil { + if _, err = readColumnCarrierLimits(envelope["result"], limits, selection...); err != nil { + return retainedAcquisitionResult{}, nil, err + } + } + } if len(raw) > responseLimit(selectedConversion(selection)) { return retainedAcquisitionResult{}, nil, withCode(codeOverBound, errors.New("complete retained-column response exceeds base limit")) } diff --git a/internal/runner/column_carrier_v1_producer.go b/internal/runner/column_carrier_v1_producer.go index 1f9fe74..dea9659 100644 --- a/internal/runner/column_carrier_v1_producer.go +++ b/internal/runner/column_carrier_v1_producer.go @@ -64,8 +64,12 @@ func preflightColumnSources(m InputMapping, profiles []InputProfile) error { if e = m.selectedConversion.validate("producer-carrier"); e != nil { return e } - if e = requireConversionCapability(p.ConversionContracts, "producer-carrier", true); e != nil { - return e + limits, err := conversionCapabilityLimits(p.ConversionContracts, "producer-carrier", true) + if err != nil { + return err + } + if err = conversionArtifactBound(limits, "profilesBytes", conversionProfilesBytes(profiles)); err != nil { + return err } } if e = columnProducerProfile(p); e != nil { diff --git a/internal/runner/column_role_v1.go b/internal/runner/column_role_v1.go index ac88309..3d6b640 100644 --- a/internal/runner/column_role_v1.go +++ b/internal/runner/column_role_v1.go @@ -361,6 +361,15 @@ func (r *sourceRequest) UnmarshalJSON(raw []byte) error { if strings.EqualFold(k, "conversionContract") && (k != "conversionContract" || bytes.Equal(bytes.TrimSpace(v), []byte("null"))) { return conversionFailure(codeMalformed) } + if strings.EqualFold(k, "retainedColumn") && (k != "retainedColumn" || !bytes.Equal(v, []byte("true")) && !bytes.Equal(v, []byte("false"))) { + return conversionFailure(codeMalformed) + } + if strings.EqualFold(k, "conversionLimits") && (k != "conversionLimits" || bytes.Equal(bytes.TrimSpace(v), []byte("null"))) { + return conversionFailure(codeMalformed) + } + } + if e := validateProducerLimits(held.RetainedColumn, held.ConversionContract, held.ConversionLimits); e != nil { + return e } *r = sourceRequest(held) return nil diff --git a/internal/runner/column_role_v1_capabilities.go b/internal/runner/column_role_v1_capabilities.go index 43f01d5..19a633a 100644 --- a/internal/runner/column_role_v1_capabilities.go +++ b/internal/runner/column_role_v1_capabilities.go @@ -142,22 +142,61 @@ func validateConversionCapabilities(cs []ConversionCapability) error { } return nil } -func requireConversionCapability(cs []ConversionCapability, role string, producer bool) error { + +// Effective limits never enlarge this installation's profile. A lower positive +// report is supported; owners must measure their actual complete artifacts. +func conversionCapabilityLimits(cs []ConversionCapability, role string, producer bool) (map[string]int, error) { if e := validateConversionCapabilities(cs); e != nil { - return e + return nil, e } for _, c := range cs { if c.Role != role || producer && c.ProducerGrammar != columnProducerGrammar { continue } - for k, n := range conversionRoleLimits(role) { - if c.Limits[k] < n { - return conversionFailure("capability-unsupported") - } + limits := conversionRoleLimits(role) + for k, n := range limits { + limits[k] = min(n, c.Limits[k]) + } + return limits, nil + } + return nil, conversionFailure("capability-unsupported") +} +func requireConversionCapability(cs []ConversionCapability, role string, producer bool) error { + _, e := conversionCapabilityLimits(cs, role, producer) + return e +} +func conversionArtifactBound(limits map[string]int, key string, size int) error { + if n, ok := limits[key]; ok && size > n { + return codedProblem(codeOverBound, "complete retained-column "+key+" exceeds negotiated limit") + } + return nil +} + +// These are downward-only caller ceilings, derived from an approved profile by +// Runner. Persisting them does not mint producer or installation authority. +func validateProducerLimits(retainedColumn bool, c *ConversionContract, limits map[string]int) error { + if !retainedColumn { + if limits != nil { + return conversionFailure(codeMalformed) } return nil } - return conversionFailure("capability-unsupported") + if c == nil || len(limits) != len(conversionRoleLimits("producer-carrier")) { + return conversionFailure(codeMalformed) + } + for k, n := range conversionRoleLimits("producer-carrier") { + if limits[k] <= 0 || limits[k] > n { + return conversionFailure(codeMalformed) + } + } + return nil +} +func producerResponseLimit(c *ConversionContract, limits map[string]int) int { + n := responseLimit(c) + if v := limits["responseBytes"]; v > 0 { + n = min(n, v) + } + return n } // ConversionCapabilities is the experimental installed package's declaration. @@ -178,11 +217,15 @@ func ConversionCapabilities(roles ...string) []ConversionCapability { return out } func runtimeConversionAdmission(ctx context.Context, bin, dir string, c *ConversionContract, starters ...func(*exec.Cmd) error) error { + _, e := runtimeConversionLimits(ctx, bin, dir, c, starters...) + return e +} +func runtimeConversionLimits(ctx context.Context, bin, dir string, c *ConversionContract, starters ...func(*exec.Cmd) error) (map[string]int, error) { if c == nil { - return nil + return nil, nil } if e := c.validate("document-validation"); e != nil { - return e + return nil, e } ctx, cancel := context.WithTimeout(ctx, 10*time.Second) defer cancel() @@ -198,29 +241,109 @@ func runtimeConversionAdmission(ctx context.Context, bin, dir string, c *Convers start = starters[0] } if e := start(cmd); e != nil { - return e + return nil, e } if e := cmd.Wait(); e != nil { - return conversionFailure("capability-unsupported") + return nil, conversionFailure("capability-unsupported") } var root map[string]json.RawMessage if strictJSON(out.Bytes(), &root) != nil { - return conversionFailure(codeMalformed) + return nil, conversionFailure(codeMalformed) } var capabilities map[string]json.RawMessage if strictJSON(root["capabilities"], &capabilities) != nil { - return conversionFailure("capability-unsupported") + return nil, conversionFailure("capability-unsupported") } var cs []ConversionCapability if _, exists := capabilities["conversionContracts"]; !exists { - return conversionFailure("capability-unsupported") + return nil, conversionFailure("capability-unsupported") } if err := strictJSON(capabilities["conversionContracts"], &cs); err != nil { _, code := verificationOutcome(err) if code != "capability-unsupported" { code = codeMalformed } - return conversionFailure(code) + return nil, conversionFailure(code) } - return requireConversionCapability(cs, "document-validation", false) + return conversionCapabilityLimits(cs, "document-validation", false) +} + +// Check each document and frame that the selected Runtime will consume before +// creating an evaluation directory or invoking validation/evaluation. +func runtimeConversionInput(limits map[string]int, input Input, pack string) error { + if limits == nil { + return nil + } + if e := conversionArtifactBound(limits, "documentBytes", len(pack)); e != nil { + return e + } + c := input.Source + if c == nil { + return nil + } + for _, raw := range [][]byte{encode(c.Mapping)} { + if e := conversionArtifactBound(limits, "documentBytes", len(raw)); e != nil { + return e + } + } + if c.Import != nil { + if e := conversionArtifactBound(limits, "documentBytes", len(c.Import.Dialect)); e != nil { + return e + } + } + + checkFrame := func(raw []byte, pointer string) error { + frame, ok := rawPointer(raw, pointer) + if !ok { + return nil + } // shared preparation owns missing/malformed reads + return conversionArtifactBound(limits, "frameBytes", len(frame)) + } + caseRaw, caseErr := columnCaseBytes(c) + if caseErr != nil { + return caseErr + } + if c.Mapping.Case != nil { + for _, f := range c.Mapping.Case.Facts { + if len(f.Conversion) > 0 { + if e := checkFrame(caseRaw, f.Source); e != nil { + return e + } + } + } + for _, f := range c.Mapping.Case.Evidence { + if len(f.Availability) > 0 { + if e := checkFrame(caseRaw, f.Source); e != nil { + return e + } + } + } + } + for _, source := range c.Mapping.Sources { + if source.Read.Copy == nil || !hasColumnCopy(*source.Read.Copy) { + continue + } + v := c.Sources[source.Name] + raw := v.Response + if v.RetainedResponseJSON != "" { + raw = []byte(v.RetainedResponseJSON) + } + envelope, e := exactMembers(raw) + if e == nil { + if e = checkFrame(envelope["result"], "/retained"); e != nil { + return e + } + } + } + return nil +} + +// The serialized list is the artifact for native host profiles. Offline file +// readers additionally retain the measured received list, including whitespace. +func conversionProfilesBytes(profiles []InputProfile) int { + n := len(encode(profiles)) + for _, p := range profiles { + n = max(n, p.profilesDocumentBytes) + } + return n } diff --git a/internal/runner/column_role_v1_lifecycle_test.go b/internal/runner/column_role_v1_lifecycle_test.go index 77ab42e..cba1a8e 100644 --- a/internal/runner/column_role_v1_lifecycle_test.go +++ b/internal/runner/column_role_v1_lifecycle_test.go @@ -26,6 +26,10 @@ func TestColumnRoleRealRuntimeFirstSaveSignedExports(t *testing.T) { t.Fatal("selected Runtime test binary must expose an explicit version supporting preparation bindings") } producer := selectedProducer(t) + producer.profile.ConversionContracts[0].Limits["responseBytes"] = 2621440 + producer.profile.ConversionContracts[0].Limits["carrierBytes"] = 1572864 + producer.profile.ConversionContracts[0].Limits["originalSnapshotBytes"] = 262144 + producer.input.Source.Mapping.Sources[0].ProfileDigest = profileHash(producer.profile) producer.input.Source.Mapping.Case.Facts = []FactMapping{{Target: "/caseNumber", Source: "/retained", Conversion: json.RawMessage(`{"contractVersion":"1","column":"X","kind":"number"}`)}} producer.input.Source.Mapping.Sources[0].Read.Copy.Evidence[0].Requirement = "intake-form" producer.input.Source.Mapping.Admits.Facts["/caseNumber"] = []string{"asserted"} @@ -169,7 +173,7 @@ func TestColumnRoleRealRuntimeFirstSaveSignedExports(t *testing.T) { t.Fatal("resumed operation allowed conversion rebind") } var heldRequest sourceRequest - if strictJSON(task.Request, &heldRequest) != nil { + if strictJSON(task.Request, &heldRequest) != nil || !heldRequest.RetainedColumn || heldRequest.ConversionLimits["responseBytes"] != 2621440 || heldRequest.ConversionLimits["carrierBytes"] != 1572864 || heldRequest.ConversionLimits["originalSnapshotBytes"] != 262144 { t.Fatal("durable operation request") } heldRequest.ConversionContract = changed diff --git a/internal/runner/column_role_v1_negotiation_test.go b/internal/runner/column_role_v1_negotiation_test.go new file mode 100644 index 0000000..50ac4a8 --- /dev/null +++ b/internal/runner/column_role_v1_negotiation_test.go @@ -0,0 +1,483 @@ +package runner + +import ( + "bytes" + "context" + "encoding/json" + "net/http" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "sync/atomic" + "testing" + "time" +) + +// Thresholds come from the complete handwritten producer fixture, independently +// of Runner's preparation/verification result. No expected audit is recorded. +func TestColumnNegotiationTrustedProducerCompleteBounds(t *testing.T) { + for _, key := range []string{"responseBytes", "carrierBytes", "originalSnapshotBytes", "profilesBytes"} { + t.Run(key, func(t *testing.T) { + for _, delta := range []int{100, 0, -1} { + f := selectedProducer(t) + size := map[string]int{"responseBytes": len(f.input.Source.Sources["desk"].Response), "carrierBytes": len(f.carrier()), "originalSnapshotBytes": len(f.snapshot)}[key] + if key == "profilesBytes" { + // Decimal-width fixed point counts the complete profile including its + // own declared maximum, rather than omitting that member from the budget. + size = len(encode([]InputProfile{f.profile})) + for range 4 { + f.profile.ConversionContracts[0].Limits[key] = size + delta + size = len(encode([]InputProfile{f.profile})) + } + } + f.profile.ConversionContracts[0].Limits[key] = size + delta + f.input.Source.Mapping.Sources[0].ProfileDigest = profileHash(f.profile) + f.sign(t) + t.Logf("complete %s threshold=%d delta=%d", key, size, delta) + code, plan, body := scopedEntry(t, f.input, []InputProfile{f.profile}, nil) + if delta >= 0 { + if code != 200 || plan.Input == nil { + t.Fatalf("lower positive complete %s bound rejected delta=%d: %d %s", key, delta, code, body) + } + fixture := producerPreparationFixture(*plan.Input, f.profile) + fixture.ConversionContract = selectedContract() + if r := VerifyPreparation(fixture); r.Result != ResultReading { + t.Fatalf("offline exact lower bound: %+v", r) + } + var round Input + if strictJSON(encode(*plan.Input), &round) != nil { + t.Fatal("persisted input") + } + if _, e := normalizeV2(round, []InputProfile{f.profile}, f.at); e != nil { + t.Fatal("persisted lower capability", e) + } + } else { + if code < 400 || !strings.Contains(body, "exceeds negotiated limit") { + t.Fatalf("actual one-over %s accepted or wrong refusal: %d %s", key, code, body) + } + // Shared offline owner must independently measure this same artifact. + if _, e := prepareV2Mode(f.input, []InputProfile{f.profile}, f.at, false, nil, true); e == nil { + t.Fatal("offline one-over complete artifact accepted") + } else if _, c := verificationOutcome(e); c != codeOverBound { + t.Fatal("offline wrong bound finding", c, e) + } + } + } + }) + } + f := selectedProducer(t) + f.profile.ConversionContracts[0].Limits["responseBytes"] = 2621440 + f.input.Source.Mapping.Sources[0].ProfileDigest = profileHash(f.profile) + if code, plan, body := scopedEntry(t, f.input, []InputProfile{f.profile}, nil); code != 200 || plan.Input == nil { + t.Fatal("valid small artifact under lower report refused", code, body) + } + // Enlarged reports cannot enlarge the fixed local ceiling. + c := f.profile.ConversionContracts[0] + c.Limits["responseBytes"] = columnResponseLimit + 1 + got, e := conversionCapabilityLimits([]ConversionCapability{c}, "producer-carrier", true) + if e != nil || got["responseBytes"] != columnResponseLimit { + t.Fatal("report enlarged local ceiling", got, e) + } + // Whitespace outside the envelope still counts, despite unchanged signature. + f.profile.ConversionContracts[0].Limits["responseBytes"] = len(f.input.Source.Sources["desk"].Response) + f.input.Source.Mapping.Sources[0].ProfileDigest = profileHash(f.profile) + v := f.input.Source.Sources["desk"] + v = SourceValue{RetainedResponseJSON: string(v.Response) + " "} + f.input.Source.Sources["desk"] = v + if code, _, body := scopedEntry(t, f.input, []InputProfile{f.profile}, nil); code < 400 || !strings.Contains(body, "exceeds negotiated limit") { + t.Fatal("response whitespace escaped budget", code, body) + } +} + +func TestColumnNegotiationPreflightAndPlan(t *testing.T) { + f := selectedProducer(t) + f.input.Source.Sources = nil + f.profile.ConversionContracts[0].Limits["responseBytes"] = 6000 + f.profile.ConversionContracts[0].Limits["grantBytes"] = 5000 + f.profile.ConversionContracts[0].Limits["adapterStdoutBytes"] = 5500 + f.input.Source.Mapping.Sources[0].ProfileDigest = profileHash(f.profile) + plan, e := nextInput(f.input, []InputProfile{f.profile}, f.at) + if e != nil || plan.Next == nil || !plan.Next.RetainedColumn || plan.Next.ConversionLimits["responseBytes"] != 6000 || plan.Next.ConversionLimits["grantBytes"] != 5000 || plan.Next.ConversionLimits["adapterStdoutBytes"] != 5500 { + t.Fatal("plan lost negotiated limits", plan, e) + } + // This known complete profiles overage must refuse before planning a call. + f.profile.ConversionContracts[0].Limits["profilesBytes"] = 1 + f.input.Source.Mapping.Sources[0].ProfileDigest = profileHash(f.profile) + if p, e := nextInput(f.input, []InputProfile{f.profile}, f.at); e == nil || p.Next != nil { + t.Fatal("known profile overage planned acquisition", p, e) + } + for _, bad := range []func(*ConversionCapability){func(c *ConversionCapability) { c.Role = "preview" }, func(c *ConversionCapability) { c.ProducerGrammar = "other" }, func(c *ConversionCapability) { c.Spec.Revision = strings.Repeat("0", 40) }, func(c *ConversionCapability) { delete(c.Limits, "responseBytes") }, func(c *ConversionCapability) { c.Limits["responseBytes"] = 0 }} { + p := selectedProducer(t) + p.input.Source.Sources = nil + bad(&p.profile.ConversionContracts[0]) + p.input.Source.Mapping.Sources[0].ProfileDigest = profileHash(p.profile) + if plan, e := nextInput(p.input, []InputProfile{p.profile}, p.at); e == nil || plan.Next != nil { + t.Fatal("invalid owner planned effects", plan, e) + } + } +} + +// This is real SourceWorker HTTP/SQLite/restart custody. The Gateway's signed +// producer is a fixture; it cannot prove actual grant creation/adapter stdout. +func TestColumnNegotiationWorkerActualResponseCustody(t *testing.T) { + for _, key := range []string{"responseBytes", "carrierBytes", "originalSnapshotBytes"} { + for _, delta := range []int{0, -1} { + t.Run(key+map[int]string{0: "/exact", -1: "/one-over"}[delta], func(t *testing.T) { + f := selectedProducer(t) + operation := strings.Repeat("a", 32) + raw := []byte(`{"result":` + string(f.carrier()) + `,"receipt":{"sessionId":"async.` + operation + `","callIndex":0}}`) + limits := conversionRoleLimits("producer-carrier") + limits[key] = map[string]int{"responseBytes": len(raw), "carrierBytes": len(f.carrier()), "originalSnapshotBytes": len(f.snapshot)}[key] + delta + var calls atomic.Int32 + gateway := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.URL.Path == "/seal" { + write(w, 200, map[string]bool{"sealed": true}) + return + } + calls.Add(1) + w.Write(raw) + })) + defer gateway.Close() + cfg := SourceWorkerConfig{Dir: filepath.Join(sourceWorkerTempDir(t), "worker"), Gateway: gateway.URL} + worker, e := OpenSourceWorker(cfg) + if e != nil { + t.Fatal(e) + } + defer func() { + if worker != nil { + worker.Close() + } + }() + req := sourceRequest{RetainedColumn: true, ConversionContract: selectedContract(), ConversionLimits: limits, ID: operation, Gateway: gateway.URL, Source: "desk-inputs", Arguments: json.RawMessage(producerArgs), Deadline: time.Now().Add(time.Minute).UTC().Format(time.RFC3339Nano)} + if _, _, e = worker.submit(req); e != nil { + t.Fatal(e) + } + worker.workers.Wait() + worker.Close() + worker = nil + worker, e = OpenSourceWorker(cfg) + if e != nil { + t.Fatal(e) + } + status, e := worker.status(operation) + if e != nil { + t.Fatal(e) + } + if calls.Load() != 1 { + t.Fatal("acquisition repeated", calls.Load()) + } + if delta == 0 { + if status.State != "completed" || status.RetainedResponseJSON != string(raw) { + t.Fatal("exact response failed durable custody", status.State, status.Reason) + } + } else if status.State != "needs-attention" || status.RetainedResponseJSON != "" || len(status.Response) > 0 { + t.Fatal("oversized response retained", status.State) + } + changed := req + changed.ConversionLimits = conversionRoleLimits("producer-carrier") + if _, code, e := worker.submit(changed); e == nil || code != 409 { + t.Fatal("same operation rebound reported maxima", code, e) + } + changed = req + changed.RetainedColumn = false + changed.ConversionLimits = nil + if _, code, e := worker.submit(changed); e == nil || code != 409 { + t.Fatal("producer operation downgraded into ordinary request", code, e) + } + }) + } + } + worker, req, barrier, calls := workerFixture(t) + req.ConversionContract = selectedContract() + req.RetainedColumn = true + if _, _, e := worker.submit(req); e == nil || calls.Load() != 0 { + t.Fatal("missing selected ceilings dispatched") + } + close(barrier) +} + +func TestColumnNegotiationRuntimeMeasuredBeforeEffects(t *testing.T) { + input := columnCase(t, "text", `"A"`) + input.Source.ConversionContract = selectedContract() + // A nonstandard frame pointer must be measured, not just a member named retained. + input.Source.Case = bytes.Replace(input.Source.Case, []byte(`"retained"`), []byte(`"other"`), 1) + input.Source.Mapping.Case.Facts[0].Source = "/other" + frame, ok := rawPointer(input.Source.Case, "/other") + if !ok { + t.Fatal("handwritten frame pointer") + } + doc := encode(input.Source.Mapping) + pack := strings.Repeat("x", len(doc)) + for _, key := range []string{"documentBytes", "frameBytes"} { + for _, delta := range []int{100, 0, -1} { + limits := conversionRoleLimits("document-validation") + limits[key] = map[string]int{"documentBytes": len(doc), "frameBytes": len(frame)}[key] + delta + e := runtimeConversionInput(limits, input, pack) + if (e == nil) != (delta >= 0) { + t.Fatal("Runtime min actual artifact admission", key, delta, e) + } + } + } + dir := t.TempDir() + report := filepath.Join(dir, "report.json") + bin := filepath.Join(dir, "runtime") + owner := ConversionCapabilities("document-validation")[0] + owner.Limits["documentBytes"] = 1 + if e := os.WriteFile(report, encode(map[string]any{"capabilities": map[string]any{"conversionContracts": []ConversionCapability{owner}}}), 0600); e != nil { + t.Fatal(e) + } + if e := os.WriteFile(bin, []byte("#!/bin/sh\nexec /bin/cat '"+report+"'\n"), 0700); e != nil { + t.Fatal(e) + } + evaluation := filepath.Join(dir, "evaluation") + calls := 0 + invoker := func(context.Context, string, string, string, []string, ...string) ([]byte, error) { + calls++ + return nil, nil + } + if _, _, _, _, e := evaluateWithInvoker(context.Background(), bin, Release{Pack: pack}, input, evaluation, true, signingInputs{}, invoker); e == nil { + t.Fatal("oversized Runtime document invoked") + } + if calls != 0 { + t.Fatal("evaluation effect before negotiated admission", calls) + } + if _, e := os.Stat(evaluation); !os.IsNotExist(e) { + t.Fatal("evaluation directory created before negotiated admission", e) + } +} + +func TestColumnNegotiationAutomaticOwnerBounds(t *testing.T) { + for _, key := range []string{"responseBytes", "carrierBytes", "originalSnapshotBytes"} { + for _, delta := range []int{0, -1} { + t.Run(key+map[int]string{0: "/exact", -1: "/one-over"}[delta], func(t *testing.T) { + f := selectedProducer(t) + rawFor := func(session string) []byte { + return []byte(`{"result":` + string(f.carrier()) + `,"receipt":{"sessionId":"` + session + `","callIndex":0}}`) + } + limits := conversionRoleLimits("producer-carrier") + limits[key] = map[string]int{"responseBytes": len(rawFor("job." + strings.Repeat("a", 32))), "carrierBytes": len(f.carrier()), "originalSnapshotBytes": len(f.snapshot)}[key] + delta + var calls atomic.Int32 + gateway := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.URL.Path == "/seal" { + write(w, 200, map[string]bool{"sealed": true}) + return + } + var q struct { + Session string `json:"session"` + } + if json.NewDecoder(r.Body).Decode(&q) != nil { + w.WriteHeader(400) + return + } + calls.Add(1) + w.Write(rawFor(q.Session)) + })) + defer gateway.Close() + service := &Service{cfg: Config{GatewayConnections: []GatewayConnection{{Profile: f.profile.ID, URL: gateway.URL}}}} + value, e := service.acquirePlannedOperation(context.Background(), PlannedSource{RetainedColumn: true, retainResponse: true, ConversionContract: selectedContract(), ConversionLimits: limits, Name: "desk", Kind: "operation", Profile: f.profile.ID, Source: "desk-inputs", Arguments: json.RawMessage(producerArgs)}) + if calls.Load() != 1 { + t.Fatal("automatic acquisition repeated or absent", calls.Load()) + } + if delta == 0 { + if e != nil || value.RetainedResponseJSON == "" { + t.Fatal("automatic exact artifact refused", e) + } + } else if e == nil || value.RetainedResponseJSON != "" || len(value.Response) > 0 { + t.Fatal("automatic oversized custody accepted", e) + } + }) + } + } +} + +func TestColumnNegotiationWorkerStatusRechecksPersistedBound(t *testing.T) { + worker, req, barrier, calls := workerFixture(t) + req.ConversionContract = selectedContract() + req.RetainedColumn = true + req.ConversionLimits = conversionRoleLimits("producer-carrier") + req.ConversionLimits["responseBytes"] = 1 + if _, _, e := worker.submit(req); e != nil { + t.Fatal(e) + } + close(barrier) + worker.workers.Wait() + if calls.Load() != 1 { + t.Fatal("expected one actual response") + } + // A corrupted persisted completion cannot enlarge its frozen request ceiling. + status := sourceStatus{ID: req.ID, State: "completed", Deadline: req.Deadline, RetainedResponseJSON: `{}`} + if _, e := worker.db.Exec("UPDATE source_operations SET state=?,status=? WHERE id=?", status.State, string(encode(status)), req.ID); e != nil { + t.Fatal(e) + } + if _, e := worker.status(req.ID); e == nil { + t.Fatal("persisted response over negotiated limit accepted") + } +} + +func TestColumnNegotiationRuntimeEachArtifact(t *testing.T) { + f := selectedProducer(t) + limits := conversionRoleLimits("document-validation") + limits["frameBytes"] = len(f.frame) - 1 + if e := runtimeConversionInput(limits, f.input, "{}"); e == nil { + t.Fatal("generated frame over report admitted") + } + limits["frameBytes"] = len(f.frame) + if e := runtimeConversionInput(limits, f.input, "{}"); e != nil { + t.Fatal("generated frame exact report refused", e) + } + limits = conversionRoleLimits("document-validation") + mappingSize := len(encode(f.input.Source.Mapping)) + limits["documentBytes"] = mappingSize + f.input.Source.Import = &DialectImport{Dialect: json.RawMessage(`{}` + strings.Repeat(" ", mappingSize-1)), Binding: json.RawMessage(`{}`)} + if e := runtimeConversionInput(limits, f.input, "{}"); e == nil { + t.Fatal("published document over report admitted") + } + f.input.Source.Import.Dialect = []byte(`{}` + strings.Repeat(" ", mappingSize-2)) + if e := runtimeConversionInput(limits, f.input, "{}"); e != nil { + t.Fatal("published and bound exact documents refused", e) + } + if e := runtimeConversionInput(limits, f.input, strings.Repeat("x", mappingSize+1)); e == nil { + t.Fatal("pack document over report admitted") + } +} + +func TestColumnNegotiationResumeRefusesChangedLimitsBeforeCall(t *testing.T) { + s, cfg, o, remote := preparationFixture(t) + f := selectedProducer(t) + f.input.Source.Sources = nil + s.cfg.InputProfiles = []InputProfile{f.profile} + s.cfg.GatewayConnections[0].Profile = f.profile.ID + deadline := time.Now().Add(time.Hour).UTC().Format(time.RFC3339Nano) + old := conversionRoleLimits("producer-carrier") + old["responseBytes"] = 6000 + g := cfg.GatewayConnections[0] + request := sourceRequest{RetainedColumn: true, ConversionContract: selectedContract(), ConversionLimits: old, ID: strings.Repeat("b", 32), Gateway: g.URL, Source: f.profile.Source, Arguments: json.RawMessage(producerArgs), Deadline: deadline} + + for _, kind := range []string{"limits", "missing-discriminator", "downgrade"} { + t.Run(kind, func(t *testing.T) { + heldRequest := request + if kind == "missing-discriminator" { + heldRequest.RetainedColumn = false + } + if kind == "downgrade" { + heldRequest.RetainedColumn = false + heldRequest.ConversionLimits = nil + } + o.State = "waiting" + o.Preparation = &SourcePreparation{StartedAt: now(), Deadline: deadline, Input: &f.input, Tasks: []SourceTask{{Name: "desk", ID: request.ID, State: "running", Gateway: g.URL, OperationsURL: g.OperationsURL, Profile: f.profile.ID, Request: encode(heldRequest)}}} + if e := s.saveOccurrence(o); e != nil { + t.Fatal(e) + } + if e := s.advancePreparation(context.Background(), o); e != nil { + t.Fatal(e) + } + held, e := s.occurrence(o.ID) + if e != nil { + t.Fatal(e) + } + remote.mu.Lock() + calls := len(remote.requests) + remote.mu.Unlock() + if calls != 0 || held.State != "needs-attention" || !strings.Contains(held.Reason, "not rebound") { + t.Fatal("changed limits reached source owner", calls, held.State, held.Reason) + } + }) + } + +} + +func TestColumnNegotiationOfflineCompleteProfilesWhitespace(t *testing.T) { + f := selectedProducer(t) + size := len(encode([]InputProfile{f.profile})) + for range 4 { + f.profile.ConversionContracts[0].Limits["profilesBytes"] = size + size = len(encode([]InputProfile{f.profile})) + } + f.profile.ConversionContracts[0].Limits["profilesBytes"] = size + f.input.Source.Mapping.Sources[0].ProfileDigest = profileHash(f.profile) + prepared, e := normalizeV2(f.input, []InputProfile{f.profile}, f.at) + if e != nil { + t.Fatal(e) + } + fixture := producerPreparationFixture(prepared, f.profile) + fixture.ConversionContract = selectedContract() + if len(fixture.Profiles) != size { + t.Fatal("handwritten profile fixed point", len(fixture.Profiles), size) + } + if report := VerifyPreparation(fixture); report.Result != ResultReading { + t.Fatal("offline exact profiles refused", report) + } + fixture.Profiles = append(fixture.Profiles, ' ') + if report := VerifyPreparation(fixture); report.Code != codeOverBound { + t.Fatal("complete offline profiles whitespace escaped lower budget", report) + } + // verify-run's actual ParseInputProfiles owner retains the same file count. + profiles, e := ParseInputProfiles(fixture.Profiles) + if e != nil { + t.Fatal(e) + } + if _, e = normalizeV2(f.input, profiles, f.at); e == nil { + t.Fatal("run reader discarded complete profiles file count") + } +} + +func TestColumnNegotiationMixedOrdinaryAndProducer(t *testing.T) { + f := selectedProducer(t) + ordinary, key := testProfile(t) + args := json.RawMessage(`{"tool":"lookup","arguments":{}}`) + src := MappingSource{Name: "ordinary", Kind: "operation", Profile: ordinary.ID, ProfileDigest: profileHash(ordinary), MaxAge: 300, Arguments: args, Read: SourceRead{Copy: &CopyMapping{Facts: []FactMapping{{Target: "/ordinary", Source: "/ok"}}, Evidence: []EvidenceMapping{}}}} + f.input.Source.Mapping.Sources = append([]MappingSource{src}, f.input.Source.Mapping.Sources...) + f.input.Source.Mapping.Admits.Facts["/ordinary"] = []string{"record"} + profiles := []InputProfile{ordinary, f.profile} + full := cloneInput(f.input) + full.Source.Sources["ordinary"] = SourceValue{Response: signResponse(t, ordinary, key, args, json.RawMessage(`{"ok":"yes"}`), f.at, 1)} + prepared, e := normalizeV2(full, profiles, f.at) + if e != nil { + t.Fatal("mixed ordinary/producer preparation", e) + } + if !bytes.Contains(prepared.Facts, []byte(`"ordinary":"yes"`)) { + t.Fatal("ordinary mixed fact lost") + } + pending := cloneInput(f.input) + pending.Source.Sources = nil + plan, e := nextInput(pending, profiles, f.at) + if e != nil || plan.Next == nil || plan.Next.Name != "ordinary" || plan.Next.RetainedColumn || plan.Next.ConversionLimits != nil { + t.Fatal("ordinary selected source required producer authority", plan, e) + } + pending.Source.Sources = map[string]SourceValue{"ordinary": full.Source.Sources["ordinary"]} + plan, e = nextInput(pending, profiles, f.at) + if e != nil || plan.Next == nil || plan.Next.Name != "desk" || !plan.Next.RetainedColumn || len(plan.Next.ConversionLimits) != 6 { + t.Fatal("producer source lost trusted discriminator/ceilings", plan, e) + } + // Worker supports the ordinary acquisition under the same selection without + // inventing producer support, and still retains exact response custody. + worker, req, barrier, calls := workerFixture(t) + req.ConversionContract = selectedContract() + if _, _, e := worker.submit(req); e != nil { + t.Fatal("ordinary selected worker refused", e) + } + close(barrier) + worker.workers.Wait() + status, e := worker.status(req.ID) + if e != nil || status.State != "completed" || status.RetainedResponseJSON == "" || calls.Load() != 1 { + t.Fatal("ordinary selected custody changed", status, e) + } + producerReq := req + producerReq.ID = strings.Repeat("d", 32) + producerReq.ConversionLimits = conversionRoleLimits("producer-carrier") + if _, _, e := worker.submit(producerReq); e == nil { + t.Fatal("missing producer discriminator accepted ceilings") + } +} + +func TestColumnNegotiationRequestDiscriminatorClosure(t *testing.T) { + base := sourceRequest{ID: strings.Repeat("a", 32), Gateway: "http://127.0.0.1:1", Source: "ordinary", Arguments: json.RawMessage(`{}`), Deadline: "2026-10-27T00:00:00Z"} + raw := string(encode(base)) + for _, member := range []string{`"retainedColumn":null,`, `"retainedColumn":"false",`, `"RetainedColumn":false,`} { + var req sourceRequest + if strictJSON([]byte(strings.Replace(raw, "{", "{"+member, 1)), &req) == nil { + t.Fatal("malformed discriminator accepted", member) + } + } +} diff --git a/internal/runner/column_role_v1_test.go b/internal/runner/column_role_v1_test.go index e1c2c7a..2f10d51 100644 --- a/internal/runner/column_role_v1_test.go +++ b/internal/runner/column_role_v1_test.go @@ -219,6 +219,8 @@ func TestColumnRoleScopedCanonDoesNotRelaxClaims(t *testing.T) { func TestColumnRoleSelectedSourceExpiryClearsCustody(t *testing.T) { s, req, barrier, _ := workerFixture(t) req.ConversionContract = selectedContract() + req.ConversionLimits = nil + req.RetainedColumn = false req.Deadline = time.Now().Add(200 * time.Millisecond).UTC().Format(time.RFC3339Nano) ready, retain := make(chan struct{}), make(chan struct{}) s.beforeRetain = func() { close(ready); <-retain } @@ -358,8 +360,8 @@ func TestColumnRoleOwnerReportAndRequestAdmission(t *testing.T) { producer := ConversionCapabilities("producer-carrier")[0] producer.ProducerGrammar = columnProducerGrammar producer.Limits["carrierBytes"] = 3145727 - if requireConversionCapability([]ConversionCapability{producer}, "producer-carrier", true) == nil { - t.Fatal("incomplete independently trusted producer capacity admitted") + if requireConversionCapability([]ConversionCapability{producer}, "producer-carrier", true) != nil { + t.Fatal("valid lower producer capacity refused") } producer.Limits["carrierBytes"] = 3145728 if validateConversionCapabilities([]ConversionCapability{producer, producer}) == nil { @@ -399,8 +401,8 @@ func TestColumnRoleOwnerReportAndRequestAdmission(t *testing.T) { if e := os.WriteFile(reportPath, encode(map[string]any{"capabilities": map[string]any{"conversionContracts": []ConversionCapability{doc}}}), 0600); e != nil { t.Fatal(e) } - if runtimeConversionAdmission(context.Background(), bin, dir, selectedContract()) == nil { - t.Fatal("undersized Runtime frame capacity admitted") + if runtimeConversionAdmission(context.Background(), bin, dir, selectedContract()) != nil { + t.Fatal("valid lower Runtime frame capacity refused") } if runtimeConversionAdmission(context.Background(), filepath.Join(dir, "absent"), dir, nil) != nil { t.Fatal("ordinary input required selected Runtime report") diff --git a/internal/runner/mapping_v2_next.go b/internal/runner/mapping_v2_next.go index 0593063..de90540 100644 --- a/internal/runner/mapping_v2_next.go +++ b/internal/runner/mapping_v2_next.go @@ -10,6 +10,8 @@ import ( // PlannedSource is an instruction to acquire, not permission to evaluate. // The endpoint is read-only: the caller fetches and submits receipts for checking. type PlannedSource struct { + RetainedColumn bool `json:"retainedColumn,omitempty"` + ConversionLimits map[string]int `json:"conversionLimits,omitempty"` retainResponse bool ConversionContract *ConversionContract `json:"conversionContract,omitempty"` Name string `json:"name"` @@ -37,6 +39,17 @@ func nextInput(input Input, profiles []InputProfile, at time.Time) (InputPlan, e var needed *acquisitionNeeded if errors.As(err, &needed) { needed.PlannedSource.ConversionContract = inputConversion(input) + needed.RetainedColumn = needed.retainResponse && inputConversion(input) != nil + if needed.RetainedColumn { + for _, p := range profiles { + if p.ID == needed.Profile { + needed.ConversionLimits, err = conversionCapabilityLimits(p.ConversionContracts, "producer-carrier", true) + if err != nil { + return InputPlan{}, err + } + } + } + } return InputPlan{Next: &needed.PlannedSource}, nil } if err != nil { diff --git a/internal/runner/mapping_v2_proof.go b/internal/runner/mapping_v2_proof.go index 6e38395..80d15e3 100644 --- a/internal/runner/mapping_v2_proof.go +++ b/internal/runner/mapping_v2_proof.go @@ -401,5 +401,8 @@ func ParseInputProfiles(raw []byte) ([]InputProfile, error) { if e := strictJSON(raw, &p); e != nil { return nil, e } + for i := range p { + p[i].profilesDocumentBytes = len(raw) + } return p, validateProfiles(p) } diff --git a/internal/runner/mapping_v2_types.go b/internal/runner/mapping_v2_types.go index 593aff9..6bf2a07 100644 --- a/internal/runner/mapping_v2_types.go +++ b/internal/runner/mapping_v2_types.go @@ -45,6 +45,9 @@ type InputProfile struct { // verifierProfiles), which profileHash names for it. An installation's // profile has none, and is digested as Runner admitted it. canonDigest string + // profilesDocumentBytes is measured only by the actual profiles-file readers. + // It is neither serialized nor authority and preserves whitespace charging. + profilesDocumentBytes int } // ResearchDeclaration is a profile's research member (spec/dialect.md diff --git a/internal/runner/preparation.go b/internal/runner/preparation.go index e756e4a..2edfdb0 100644 --- a/internal/runner/preparation.go +++ b/internal/runner/preparation.go @@ -269,7 +269,7 @@ func (s *Service) advancePreparation(ctx context.Context, o Occurrence) error { return s.stopPreparation(o, "needs-attention", "The durable Gateway connection is no longer installed.") } operation := id("") - p.Tasks = append(p.Tasks, SourceTask{Name: next.Name, ID: operation, State: "waiting", StartedAt: now(), Gateway: gateway, OperationsURL: operationsURL, Profile: next.Profile, Request: encode(sourceRequest{ID: operation, Gateway: gateway, Source: next.Source, Arguments: next.Arguments, Deadline: p.Deadline, ConversionContract: next.ConversionContract})}) + p.Tasks = append(p.Tasks, SourceTask{Name: next.Name, ID: operation, State: "waiting", StartedAt: now(), Gateway: gateway, OperationsURL: operationsURL, Profile: next.Profile, Request: encode(sourceRequest{ID: operation, Gateway: gateway, Source: next.Source, Arguments: next.Arguments, Deadline: p.Deadline, ConversionContract: next.ConversionContract, ConversionLimits: next.ConversionLimits, RetainedColumn: next.RetainedColumn})}) task = &p.Tasks[len(p.Tasks)-1] if e = s.savePreparation(o); e != nil { return e @@ -287,7 +287,8 @@ func (s *Service) advancePreparation(ctx context.Context, o Occurrence) error { if !installed { return s.stopPreparation(o, "needs-attention", "The acquisition connection changed. Restore it to reconcile this operation.") } - if !taskConversionMatches(task.Request, inputConversion(*p.Input)) { + var frozenLimits sourceRequest + if strictJSON(task.Request, &frozenLimits) != nil || frozenLimits.RetainedColumn != next.RetainedColumn || !bytes.Equal(encode(frozenLimits.ConversionLimits), encode(next.ConversionLimits)) || !taskConversionMatches(task.Request, inputConversion(*p.Input)) { return s.stopPreparation(o, "needs-attention", "The retained conversion selection changed; the operation was not rebound.") } var result struct { @@ -338,7 +339,7 @@ func (s *Service) advancePreparation(ctx context.Context, o Occurrence) error { response := result.Response value := SourceValue{Response: response} if inputConversion(*p.Input) != nil { - if len(result.Response) > 0 || result.RetainedResponseJSON == "" || len(result.RetainedResponseJSON) > columnResponseLimit { + if len(result.Response) > 0 || result.RetainedResponseJSON == "" || len(result.RetainedResponseJSON) > producerResponseLimit(inputConversion(*p.Input), next.ConversionLimits) { return s.stopPreparation(o, "needs-attention", "The retained source response has an invalid custody variant or exceeds its selected limit.") } response = []byte(result.RetainedResponseJSON) diff --git a/internal/runner/preparation_verify_profiles.go b/internal/runner/preparation_verify_profiles.go index 5735d77..5247c5c 100644 --- a/internal/runner/preparation_verify_profiles.go +++ b/internal/runner/preparation_verify_profiles.go @@ -50,6 +50,7 @@ func verifierProfiles(document any, raw []byte) ([]InputProfile, error) { return nil, fmt.Errorf("profile %d: %w", i, err) } p.canonDigest = digest(canon) + p.profilesDocumentBytes = len(raw) profiles = append(profiles, p) } return profiles, nil diff --git a/internal/runner/runtime.go b/internal/runner/runtime.go index 79a327f..697e1f1 100644 --- a/internal/runner/runtime.go +++ b/internal/runner/runtime.go @@ -197,7 +197,11 @@ func (s *Service) preview(ctx context.Context, req PreviewRequest) (Release, err if s.cfg.ExecutorAdmission != nil && inputConversion(req.Input) != nil { return Release{}, manualUnsupported() } - if e := runtimeConversionAdmission(ctx, s.runtime, s.cfg.Dir, inputConversion(req.Input), s.startRuntime); e != nil { + limits, admissionErr := runtimeConversionLimits(ctx, s.runtime, s.cfg.Dir, inputConversion(req.Input), s.startRuntime) + if admissionErr != nil { + return Release{}, admissionErr + } + if e := runtimeConversionInput(limits, req.Input, req.Pack); e != nil { return Release{}, e } if len(req.Pack) == 0 || len(req.Pack) > 1<<20 { @@ -211,6 +215,9 @@ func (s *Service) preview(ctx context.Context, req PreviewRequest) (Release, err return Release{}, err } req.Input = normalized + if e := runtimeConversionInput(limits, req.Input, req.Pack); e != nil { + return Release{}, e + } select { case s.previewGate <- struct{}{}: defer func() { <-s.previewGate }() @@ -353,7 +360,11 @@ func evaluateWith(ctx context.Context, bin string, r Release, input Input, dir s } func evaluateWithInvoker(ctx context.Context, bin string, r Release, input Input, dir string, rehearsal bool, signing signingInputs, invoke runtimeInvoker, starters ...func(*exec.Cmd) error) (json.RawMessage, json.RawMessage, []byte, *RunBinding, error) { - if e := runtimeConversionAdmission(ctx, bin, filepath.Dir(dir), inputConversion(input), starters...); e != nil { + limits, admissionErr := runtimeConversionLimits(ctx, bin, filepath.Dir(dir), inputConversion(input), starters...) + if admissionErr != nil { + return nil, nil, nil, nil, admissionErr + } + if e := runtimeConversionInput(limits, input, r.Pack); e != nil { return nil, nil, nil, nil, e } // The directory is exclusively created per invocation and never reused. diff --git a/internal/runner/source_worker.go b/internal/runner/source_worker.go index 2bdf6ce..2c236fc 100644 --- a/internal/runner/source_worker.go +++ b/internal/runner/source_worker.go @@ -26,6 +26,8 @@ import ( type SourceWorkerConfig struct{ Dir, Gateway, GatewayTokenFile string } type sourceRequest struct { + RetainedColumn bool `json:"retainedColumn,omitempty"` + ConversionLimits map[string]int `json:"conversionLimits,omitempty"` ConversionContract *ConversionContract `json:"conversionContract,omitempty"` ID string `json:"id"` Gateway string `json:"gateway"` @@ -269,7 +271,7 @@ func (s *SourceWorker) status(id string) (sourceStatus, error) { if len(status.Response) > 0 || status.State == "completed" && status.RetainedResponseJSON == "" { return status, conversionFailure(codeMalformed) } - if len(status.RetainedResponseJSON) > columnResponseLimit || len(encode(status))+1 > columnReplyLimit { + if len(status.RetainedResponseJSON) > producerResponseLimit(frozen.ConversionContract, frozen.ConversionLimits) || len(encode(status))+1 > columnReplyLimit { return status, codedProblem(codeOverBound, "retained source status exceeds selected limit") } } else if status.RetainedResponseJSON != "" { @@ -302,6 +304,9 @@ func (s *SourceWorker) status(id string) (sourceStatus, error) { return status, e } func (s *SourceWorker) submit(req sourceRequest) (sourceStatus, int, error) { + if e := validateProducerLimits(req.RetainedColumn, req.ConversionContract, req.ConversionLimits); e != nil { + return sourceStatus{}, 422, e + } if e := req.ConversionContract.validate("preparation", "producer-carrier"); e != nil { return sourceStatus{}, 422, e } @@ -370,7 +375,7 @@ func (s *SourceWorker) submit(req sourceRequest) (sourceStatus, int, error) { func (s *SourceWorker) acquire(ctx context.Context, stop context.CancelFunc, req sourceRequest) { defer s.workers.Done() defer stop() - raw, e := s.call(ctx, "/acquire", encode(map[string]any{"session": "async." + req.ID, "source": req.Source, "arguments": req.Arguments}), int64(responseLimit(req.ConversionContract))) + raw, e := s.call(ctx, "/acquire", encode(map[string]any{"session": "async." + req.ID, "source": req.Source, "arguments": req.Arguments}), int64(producerResponseLimit(req.ConversionContract, req.ConversionLimits))) status := sourceStatus{ID: req.ID, State: "completed", Deadline: req.Deadline} if e != nil || ctx.Err() != nil { status.State = "needs-attention" @@ -391,7 +396,20 @@ func (s *SourceWorker) acquire(ctx context.Context, stop context.CancelFunc, req status.Reason = "The Gateway response does not belong to this operation's first acquisition. It was not repeated." } else { if req.ConversionContract != nil { - status.RetainedResponseJSON = string(raw) + if req.RetainedColumn { + envelope, err := exactMembers(raw) + if err == nil { + _, err = readColumnCarrierLimits(envelope["result"], req.ConversionLimits, req.ConversionContract) + } + if err != nil { + status.State = "needs-attention" + status.Reason = "The source response exceeds its negotiated bounds or is malformed." + } else { + status.RetainedResponseJSON = string(raw) + } + } else { + status.RetainedResponseJSON = string(raw) + } } else { status.Response = raw } diff --git a/openapi.json b/openapi.json index c428382..cbd633f 100644 --- a/openapi.json +++ b/openapi.json @@ -4803,9 +4803,39 @@ }, "arguments": { "type": "object" + }, + "conversionContract": { + "$ref": "#/components/schemas/ConversionContract" + }, + "conversionLimits": { + "$ref": "#/components/schemas/ProducerConversionLimits" + }, + "retainedColumn": { + "type": "boolean", + "description": "Derived by Runner from the approved producer profile and mapping read. True requires all effective producer ceilings; it grants no producer authority." } }, - "description": "The next source to acquire. For a research source, the caller runs the recipe (arguments) through the profiles the source is bound to and supplies the research record it assembles from the responses it retains: Runner asks no model and reads no page." + "description": "The next source to acquire. For a research source, the caller runs the recipe (arguments) through the profiles the source is bound to and supplies the research record it assembles from the responses it retains: Runner asks no model and reads no page.", + "allOf": [ + { + "if": { + "properties": { + "retainedColumn": { + "const": true + } + }, + "required": [ + "retainedColumn" + ] + }, + "then": { + "required": [ + "conversionContract", + "conversionLimits" + ] + } + } + ] }, "InputPlan": { "oneOf": [ @@ -7100,6 +7130,51 @@ "version", "case" ] + }, + "ProducerConversionLimits": { + "type": "object", + "additionalProperties": false, + "required": [ + "originalSnapshotBytes", + "carrierBytes", + "grantBytes", + "adapterStdoutBytes", + "responseBytes", + "profilesBytes" + ], + "properties": { + "originalSnapshotBytes": { + "type": "integer", + "minimum": 1, + "maximum": 524288 + }, + "carrierBytes": { + "type": "integer", + "minimum": 1, + "maximum": 3145728 + }, + "grantBytes": { + "type": "integer", + "minimum": 1, + "maximum": 3145728 + }, + "adapterStdoutBytes": { + "type": "integer", + "minimum": 1, + "maximum": 3145728 + }, + "responseBytes": { + "type": "integer", + "minimum": 1, + "maximum": 5242880 + }, + "profilesBytes": { + "type": "integer", + "minimum": 1, + "maximum": 81920 + } + }, + "description": "Downward-only caller ceilings derived from the approved producer profile. They grant no producer or installation authority. Retained with durable acquisition intent; resumed intent must match." } } } From 28de69b6411c935500ca1b955aef7966dc7c8ef4 Mon Sep 17 00:00:00 2001 From: kikashy Date: Mon, 26 Oct 2026 20:08:03 -0400 Subject: [PATCH 03/11] Preserve generated raw values within the original snapshot bound Signed-off-by: kikashy --- internal/retainedcolumns/doc.go | 4 + internal/retainedcolumns/frame.go | 8 +- .../generated_values_bounds_test.go | 108 ++++++++++++++++++ .../column_generated_values_bounds_test.go | 84 ++++++++++++++ 4 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 internal/retainedcolumns/generated_values_bounds_test.go create mode 100644 internal/runner/column_generated_values_bounds_test.go diff --git a/internal/retainedcolumns/doc.go b/internal/retainedcolumns/doc.go index 973b9d7..01dd8a2 100644 --- a/internal/retainedcolumns/doc.go +++ b/internal/retainedcolumns/doc.go @@ -7,6 +7,10 @@ // ParsePlan accepts a closed conversion object or availability object. ParseFrame // requires an explicit profile and measures the received projected bytes. The // caller must separately negotiate support and account for the complete carrier. +// Raw values retain origin-specific UTF-8 limits: asserted/CSV16000 bytes, +// generated524288 bytes, fixed for both profiles. Complete original snapshot, +// frame and carrier budgets remain additional independent caller obligations; +// the generated per-cell ceiling is not a jointly reachable snapshot maximum. // Frames never represent original source bytes. Preview preserves candidate JSON // spelling; Derive additionally enforces the existing canonical claim domain and // returns only a recomputed transformation fragment, never a preparation. diff --git a/internal/retainedcolumns/frame.go b/internal/retainedcolumns/frame.go index 1c45845..7a0777e 100644 --- a/internal/retainedcolumns/frame.go +++ b/internal/retainedcolumns/frame.go @@ -72,12 +72,18 @@ func ParseFrame(raw []byte, profile Profile) (Frame, error) { if len(values) > 1000 { return Frame{}, refuse("input-over-bound") } + // Generated values are exact original record strings, bounded by the + // containing original snapshot. Asserted/CSV cells keep their old limit. + valueLimit := 16000 + if origin == "generated" { + valueLimit = 524288 + } for name, value := range values { if _, err = boundedString(name, 160, true); err != nil { return Frame{}, err } if value != nil { - if _, err = boundedString(value, 16000, false); err != nil { + if _, err = boundedString(value, valueLimit, false); err != nil { return Frame{}, err } } diff --git a/internal/retainedcolumns/generated_values_bounds_test.go b/internal/retainedcolumns/generated_values_bounds_test.go new file mode 100644 index 0000000..23d00c5 --- /dev/null +++ b/internal/retainedcolumns/generated_values_bounds_test.go @@ -0,0 +1,108 @@ +package retainedcolumns + +import ( + "bytes" + "encoding/json" + "fmt" + "strings" + "testing" +) + +func boundedOriginFrame(t *testing.T, origin, value string) []byte { + t.Helper() + var research any + if origin == "generated" { + research = map[string]any{"recordRecipeRevision": "original:1", "declaration": nil, "fields": map[string]any{}} + } + raw, e := json.Marshal(map[string]any{"contractVersion": "1", "origin": origin, "values": map[string]any{"X": value}, "research": research}) + if e != nil { + t.Fatal(e) + } + return raw +} + +// These are frame-only ceilings, independent of whether a complete original +// snapshot can contain the same cell together with required source metadata. +func TestGeneratedRawValueOriginAndUTF8Boundaries(t *testing.T) { + for _, profile := range []Profile{Base, Extended} { + for _, origin := range []string{"asserted", "generated"} { + limit := 16000 + if origin == "generated" { + limit = 524288 + } + for _, unit := range []string{"a", "é", "😀"} { + for _, delta := range []int{0, 1} { + t.Run(fmt.Sprintf("%s/%s/%d-byte-unit/%d", profile, origin, len(unit), delta), func(t *testing.T) { + value := strings.Repeat(unit, limit/len(unit)) + strings.Repeat("a", delta) + if len(value) != limit+delta { + t.Fatal("handwritten UTF8 byte threshold") + } + frame, e := ParseFrame(boundedOriginFrame(t, origin, value), profile) + if delta == 1 { + assertRefusal(t, e, "input-over-bound") + return + } + if e != nil { + t.Fatalf("exact %s raw-value byte boundary rejected: %v", origin, e) + } + if !frame.valid || frame.values["X"] != value { + t.Fatal("exact raw value changed") + } + }) + } + } + } + } + // JSON escape spelling does not change decoded UTF8 cell charging. + raw := boundedOriginFrame(t, "asserted", strings.Repeat("é", 8000)) + raw = bytes.ReplaceAll(raw, []byte("é"), []byte(`\u00e9`)) + if _, e := ParseFrame(raw, Base); e != nil { + t.Fatal("escaped exact asserted value", e) + } + raw = bytes.Replace(raw, []byte(`\u00e9"`), []byte(`\u00e9a"`), 1) + if _, e := ParseFrame(raw, Base); e == nil { + t.Fatal("escaped one-over asserted cell accepted") + } + // The old generated counterexample is valid without selecting its large cell. + list := `["` + strings.Repeat("x", 1000) + `"` + strings.Repeat(`,"`+strings.Repeat("x", 1000)+`"`, 15) + `]` + if len(list) != 16049 { + t.Fatal("handwritten sixteen-item list size", len(list)) + } + if _, e := ParseFrame(boundedOriginFrame(t, "generated", list), Base); e != nil { + t.Fatal("old-domain generated16049B raw value rejected", e) + } + if _, e := ParseFrame(boundedOriginFrame(t, "asserted", list), Base); e == nil { + t.Fatal("generated amendment enlarged asserted raw cells") + } +} + +func TestGeneratedRawValueIndependentAggregateAndCountBounds(t *testing.T) { + for _, profile := range []Profile{Base, Extended} { + limit := 2097152 + if profile == Extended { + limit = 4194304 + } + raw := boundedOriginFrame(t, "generated", strings.Repeat("x", 16049)) + exact := append(append([]byte(nil), raw...), bytes.Repeat([]byte(" "), limit-len(raw))...) + if _, e := ParseFrame(exact, profile); e != nil { + t.Fatal("exact whole frame refused", profile, e) + } + if _, e := ParseFrame(append(exact, ' '), profile); e == nil { + t.Fatal("whole frame ceiling bypassed by generated amendment", profile) + } + } + // Valid individual cells cannot bypass the independent1000-entry work bound. + frame := map[string]any{"contractVersion": "1", "origin": "generated", "research": map[string]any{"recordRecipeRevision": "r", "declaration": nil, "fields": map[string]any{}}} + values := map[string]any{} + for i := 0; i < 1000; i++ { + values[fmt.Sprint(i)] = "x" + } + frame["values"] = values + if _, e := ParseFrame(encodeTest(t, frame), Base); e != nil { + t.Fatal("exact generated count refused", e) + } + values["one-more"] = "x" + if _, e := ParseFrame(encodeTest(t, frame), Base); e == nil { + t.Fatal("generated raw allowance enlarged entry count") + } +} diff --git a/internal/runner/column_generated_values_bounds_test.go b/internal/runner/column_generated_values_bounds_test.go new file mode 100644 index 0000000..b0079f3 --- /dev/null +++ b/internal/runner/column_generated_values_bounds_test.go @@ -0,0 +1,84 @@ +package runner + +import ( + "bytes" + "encoding/json" + "strings" + "testing" +) + +// Source-derived old text-list domain:16 strings of1000 ASCII bytes. The full +// original map and typed values are retained even though Integer is selected. +func generatedListValueFixture(t *testing.T) producerFixture { + t.Helper() + f := selectedProducer(t) + list := `["` + strings.Repeat("x", 1000) + `"` + strings.Repeat(`,"`+strings.Repeat("x", 1000)+`"`, 15) + `]` + if len(list) != 16049 { + t.Fatal("handwritten original list size", len(list)) + } + f.snapshot = strings.Replace(f.snapshot, `"List":"A"`, `"List":`+string(encode(list)), 1) + f.snapshot = strings.Replace(f.snapshot, `"List":{"status":"supported","value":["A","B"]}`, `"List":{"status":"supported","value":`+list+`}`, 1) + f.frame = strings.Replace(f.frame, `"List":"A"`, `"List":`+string(encode(list)), 1) + f.frame = strings.Replace(f.frame, `"List":{"status":"supported","valueJson":"[\"A\",\"B\"]"}`, `"List":{"status":"supported","valueJson":`+string(encode(list))+`}`, 1) + f.input.Source.Mapping.Sources[0].Read.Copy.Facts[0].Conversion = json.RawMessage(`{"contractVersion":"1","column":"Integer","kind":"research-value"}`) + f.sign(t) + return f +} + +func TestColumnGeneratedRawValuesCompleteProjectionAndPreparation(t *testing.T) { + f := generatedListValueFixture(t) + code, plan, body := scopedEntry(t, f.input, []InputProfile{f.profile}, nil) + if code != 200 || plan.Input == nil { + t.Fatalf("complete original16049B generated cell rejected: %d %s", code, body) + } + if string(plan.Input.Facts) != `{"value":7}` { + t.Fatal("handwritten selected integer facts changed", string(plan.Input.Facts)) + } + raw := plan.Input.Source.Sources["desk"].RetainedResponseJSON + if raw != string(f.input.Source.Sources["desk"].Response) || !bytes.Contains([]byte(raw), f.carrier()) { + t.Fatal("unselected original cell or complete carrier changed") + } + fixture := producerPreparationFixture(*plan.Input, f.profile) + fixture.ConversionContract = selectedContract() + if report := VerifyPreparation(fixture); report.Result != ResultReading { + t.Fatal("offline original projection/preparation differs", report) + } + parsed, e := readColumnCarrier(f.carrier(), selectedContract()) + if e != nil { + t.Fatal(e) + } + if e = validateColumnProducerRelation(parsed); e != nil { + t.Fatal("original snapshot projection refused", e) + } + // A fully signed envelope cannot substitute an altered original raw cell. + bad := f + listValue, _ := columnSnapshotMember([]byte(bad.snapshot), "record", "values", "List") + bad.snapshot = strings.Replace(bad.snapshot, string(listValue), `"A"`, 1) + bad.sign(t) + if code, _, _ := scopedEntry(t, bad.input, []InputProfile{bad.profile}, nil); code < 400 { + t.Fatal("altered original raw projection accepted") + } + t.Logf("actual complete fixture snapshot=%d frame=%d carrier=%d; selected fact7, unselected raw List16049B preserved", len(f.snapshot), len(f.frame), len(f.carrier())) +} + +func TestColumnGeneratedRawValuesSnapshotAggregateUnchanged(t *testing.T) { + f := generatedListValueFixture(t) + // Whitespace is a complete-reader boundary probe, not a maximum-family or + // original-history claim. A524288B cell itself cannot fit this same snapshot. + f.snapshot += strings.Repeat(" ", 524288-len(f.snapshot)) + f.sign(t) + parsed, e := readColumnCarrier(f.carrier(), selectedContract()) + if e != nil || len(parsed.OriginalSnapshot) != 524288 { + t.Fatal("exact original snapshot refused", e) + } + if e = validateColumnProducerRelation(parsed); e != nil { + t.Fatal("exact snapshot projection changed", e) + } + f.snapshot += " " + f.sign(t) + if _, e = readColumnCarrier(f.carrier(), selectedContract()); e == nil { + t.Fatal("generated cell amendment enlarged complete snapshot") + } else if _, code := verificationOutcome(e); code != codeOverBound { + t.Fatal("wrong snapshot bound refusal", code, e) + } +} From db58c89a6ce8d1a072bd0a7e03bdbeea29dbc08e Mon Sep 17 00:00:00 2001 From: kikashy Date: Mon, 26 Oct 2026 22:25:21 -0400 Subject: [PATCH 04/11] Integrate published retained-column RC2 preparation contracts Bind the installed identity to Spec RC2, preserve original retained bytes, and support the selected Core 0.3 evaluator alongside existing Core 0.2. Align preparation ordering and refusal boundaries with the published contract while retaining full acquisition verification in public paths. Add byte-pinned role fixtures, scoped corpus coverage and paired signed Runtime lifecycle evidence. Published dependency pin and release gates remain separate integration work. Signed-off-by: kikashy --- README.md | 5 +- docs/design/retained-columns-draft.md | 31 +- internal/retainedcolumns/corpus_test.go | 9 +- internal/retainedcolumns/doc.go | 5 +- internal/retainedcolumns/reference_test.go | 8 +- internal/retainedcolumns/selected_rc2_test.go | 91 + .../retainedcolumns/testdata/rc2/COVERAGE.md | 43 + .../retainedcolumns/testdata/rc2/README.md | 16 + .../testdata/rc2/capabilities.json | 97 + .../retainedcolumns/testdata/rc2/cases.json | 18714 ++++++++++++++++ .../testdata/rc2/contract.schema.json | 1509 ++ .../testdata/rc2/examples.json | 929 + .../testdata/rc2/manifest.json | 22 + .../testdata/rc2/preparations.json | 867 + .../testdata/rc2/release-identity.json | 1 + .../testdata/rc2/release-inventory.json | 39 + internal/runner/column_carrier_v1.go | 10 +- internal/runner/column_carrier_v1_producer.go | 5 + internal/runner/column_frame_v1_case.go | 5 + internal/runner/column_rc2_caps_test.go | 145 + internal/runner/column_rc2_core_test.go | 42 + internal/runner/column_rc2_producer_test.go | 136 + internal/runner/column_rc2_test.go | 360 + internal/runner/column_read_v1.go | 25 +- internal/runner/column_role_v1.go | 28 +- .../runner/column_role_v1_capabilities.go | 10 +- .../runner/column_role_v1_lifecycle_test.go | 17 + internal/runner/mapping_v2.go | 16 +- internal/runner/release_tests.go | 2 +- internal/runner/runtime.go | 33 +- internal/runner/verify_preparation.go | 13 +- 31 files changed, 23190 insertions(+), 43 deletions(-) create mode 100644 internal/retainedcolumns/selected_rc2_test.go create mode 100644 internal/retainedcolumns/testdata/rc2/COVERAGE.md create mode 100644 internal/retainedcolumns/testdata/rc2/README.md create mode 100644 internal/retainedcolumns/testdata/rc2/capabilities.json create mode 100644 internal/retainedcolumns/testdata/rc2/cases.json create mode 100644 internal/retainedcolumns/testdata/rc2/contract.schema.json create mode 100644 internal/retainedcolumns/testdata/rc2/examples.json create mode 100644 internal/retainedcolumns/testdata/rc2/manifest.json create mode 100644 internal/retainedcolumns/testdata/rc2/preparations.json create mode 100644 internal/retainedcolumns/testdata/rc2/release-identity.json create mode 100644 internal/retainedcolumns/testdata/rc2/release-inventory.json create mode 100644 internal/runner/column_rc2_caps_test.go create mode 100644 internal/runner/column_rc2_core_test.go create mode 100644 internal/runner/column_rc2_producer_test.go create mode 100644 internal/runner/column_rc2_test.go diff --git a/README.md b/README.md index 7a390df..43ae9e1 100644 --- a/README.md +++ b/README.md @@ -141,7 +141,10 @@ validation output, sample inputs/output, and a digest-pinned copy of the Runtime executable. A job's only revision in this pilot is revision 1. Later edits to a pack cannot change an existing job. Create and review a new job for changed policy. The evaluator is Runtime's **experimental JPS 0.2.0-draft** contract, outputVersion 2; -this package does not expand Runtime's conformance claim or approve external action. +the exact selected retained-column RC2 path additionally admits Runtime's existing +Core 0.3.0 Base contract and binds responses and replay to the retained pack version. +Ordinary and manual paths retain 0.2.0-draft. This package does not expand Runtime's +conformance claim or approve external action. For manual inputs and version 1 file mappings, evidence is a caller-declared map of requirement IDs to `present`, `absent`, or `unknown`. It is not verified source acquisition. Omitted evidence is preserved as diff --git a/docs/design/retained-columns-draft.md b/docs/design/retained-columns-draft.md index abd54ce..dd9bcb5 100644 --- a/docs/design/retained-columns-draft.md +++ b/docs/design/retained-columns-draft.md @@ -1,4 +1,4 @@ -# Retained columns: intermediate Draft integration +# Retained columns: selected RC2 integration This is an experimental dependency slice for Agent #171 and Draft RFC0029. The pure conversion foundation retains its original `dd2cc944` corpus and focused @@ -7,7 +7,7 @@ amendment merged in Spec `be16a0f427c881cc7428ad0ceedb7ed4a8511d6c` (tree `00a7e3eeb8a7b3eea5ce84f0f7c97f345d193646`, schema `d402d26ed35f9cd8a3ab5f8a0a8288d222742d1742c00ebee47d81dc4766d725`, corpus `395381002de6f50793d4d484c48ec2fc8eb4ed34d55afcf91e1b47b14e79c10e`). -The Draft is not adopted. The earlier unselected slice advertised no public `retained-column/1` +Those historical fixtures were not an adoption claim. The earlier unselected slice advertised no public `retained-column/1` capability. The scoped experimental Base adapter is described below; Extended Runner remains unsupported. Old foundation corpus coverage is not a claim that it executed the amended producer probes. @@ -155,13 +155,26 @@ requirements; the future production original-history producer is still Desk-owne ## Scoped Base consumer and transport selection -The experimental immutable Draft candidate is Spec commit -`ade3914b0b81ef299e5b9a8d6147f37ff3f0976c`, version `Draft RFC0029`, schema -`sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f`, corpus -`sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2`. -It remains pending independent review and adoption. These constants cannot be -replaced by an HTTP request or host configuration. Extended Runner is unsupported; -Runtime document validation alone does not establish complete Runner support. +The selected installed contract is published Spec `v0.3.0-rc.2`, commit +`bcac15b7537ce21879201b5e5dfe795496225121`, version `0.3.0-rc.2`, schema +`sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557`, corpus +`sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863`. +Its maturity remains draft. The earlier sections describe preserved historical +foundation evidence; the selected corpus is separately byte-pinned. These constants +cannot be replaced by an HTTP request or host configuration. Extended Runner remains +unsupported. Runtime document validation alone does not establish complete Runner support. +Selected releases additionally admit Runtime's existing Core `0.3.0` Base evaluator, +while preserving selected and ordinary `0.2.0-draft`. Ordinary and manual admission +are unchanged. Evaluation and replay require the evaluator version from that same +retained release pack; mismatched or unknown reports refuse. + +Published synthetic preparation fixtures exercise preparation consistency with a +fixed test-only installation and the companion's receipt conditions. They do not +establish Gateway chain authenticity or complete signed export validity. Public +verification retains those full checks. Actual signed lifecycle tests separately +exercise both supported selected Core versions against an explicitly identified Runtime. +The synthetic source-input probes with a v2 root `snapshot` are outside Runner's +existing v2 grammar, which requires named sources; they do not extend that grammar. Authenticated `/v1/retained-column/1/inputs/next`, `/inputs/preview`, `/previews`, `/jobs/{job}/runs`, and `/runs/{run}/verification` adapt the corresponding existing diff --git a/internal/retainedcolumns/corpus_test.go b/internal/retainedcolumns/corpus_test.go index 0643ee1..179244c 100644 --- a/internal/retainedcolumns/corpus_test.go +++ b/internal/retainedcolumns/corpus_test.go @@ -210,8 +210,8 @@ func TestPinnedCompatibilityCorpus(t *testing.T) { t.Run(row.ID, func(t *testing.T) { assertCase(t, row) }) } } -func TestPinnedTypeBounds(t *testing.T) { - c := loadCorpus(t) +func TestPinnedTypeBounds(t *testing.T) { assertCorpusTypeBounds(t, loadCorpus(t)) } +func assertCorpusTypeBounds(t *testing.T, c corpus) { for _, b := range c.Boundary { t.Run(b.ID, func(t *testing.T) { value := any(strings.Repeat(b.Repeat, b.Count)) @@ -240,8 +240,9 @@ func TestPinnedTypeBounds(t *testing.T) { }) } } -func TestPinnedShortestRationals(t *testing.T) { - for _, c := range loadCorpus(t).Shortest { +func TestPinnedShortestRationals(t *testing.T) { assertCorpusShortest(t, loadCorpus(t)) } +func assertCorpusShortest(t *testing.T, data corpus) { + for _, c := range data.Shortest { t.Run(c.ID, func(t *testing.T) { bits, e := strconv.ParseUint(c.Binary64Hex, 16, 64) if e != nil { diff --git a/internal/retainedcolumns/doc.go b/internal/retainedcolumns/doc.go index 01dd8a2..09ad645 100644 --- a/internal/retainedcolumns/doc.go +++ b/internal/retainedcolumns/doc.go @@ -1,5 +1,6 @@ -// Package retainedcolumns is an internal experiment for Draft RFC 0029 at Spec -// dd2cc94461950563729d1bbf672d785afeb1b02c. It interprets already selected +// Package retainedcolumns implements retained conversion leaves. Historical +// foundation fixtures remain pinned to Spec dd2cc94461950563729d1bbf672d785afeb1b02c; +// the selected RC2 corpus is separately byte-pinned. It interprets already selected // conversion leaves and retained frames without acquiring or evaluating anything. // It does not validate a whole dialect or establish generated-input review, // source authenticity, capability negotiation, or preparation validity. diff --git a/internal/retainedcolumns/reference_test.go b/internal/retainedcolumns/reference_test.go index 68cefed..2f3fc17 100644 --- a/internal/retainedcolumns/reference_test.go +++ b/internal/retainedcolumns/reference_test.go @@ -79,6 +79,10 @@ func TestReferencePinnedDraftCases(t *testing.T) { if e != nil || digest(schema) != "sha256:b5c6d5fe2c4819e76de70070c4e35222e8f5fe19819166d054c0c2fc2359369b" { t.Fatal("experimental Draft reference schema changed") } + assertCorpusReferences(t, raw) +} + +func assertCorpusReferences(t *testing.T, raw []byte) { var corpus struct { References []struct { ID string @@ -87,7 +91,7 @@ func TestReferencePinnedDraftCases(t *testing.T) { WireJSON string } `json:"referenceCases"` } - if e = json.Unmarshal(raw, &corpus); e != nil { + if e := json.Unmarshal(raw, &corpus); e != nil { t.Fatal(e) } count := 0 @@ -104,7 +108,7 @@ func TestReferencePinnedDraftCases(t *testing.T) { if row.WireJSON != "" { wire = []byte(row.WireJSON) } - if e = json.Unmarshal(wire, &req); e != nil { + if e := json.Unmarshal(wire, &req); e != nil { t.Fatal(e) } action := req["lineage"] diff --git a/internal/retainedcolumns/selected_rc2_test.go b/internal/retainedcolumns/selected_rc2_test.go new file mode 100644 index 0000000..fa9eb4d --- /dev/null +++ b/internal/retainedcolumns/selected_rc2_test.go @@ -0,0 +1,91 @@ +package retainedcolumns + +import ( + "encoding/json" + "os" + "strings" + "testing" +) + +func TestSelectedRC2PublishedCorpus(t *testing.T) { + raw, e := os.ReadFile("testdata/rc2/cases.json") + if e != nil { + t.Fatal(e) + } + if digest(raw) != "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" { + t.Fatal("published selected corpus changed") + } + var c corpus + if e = json.Unmarshal(raw, &c); e != nil { + t.Fatal(e) + } + if len(c.Cases) != 72 || len(c.Boundary) != 7 || len(c.Shortest) != 7 { + t.Fatal("selected conversion inventory changed") + } + t.Run("conversions", func(t *testing.T) { + for _, row := range c.Cases { + t.Run(row.ID, func(t *testing.T) { assertCase(t, row) }) + } + }) + t.Run("type-bounds", func(t *testing.T) { assertCorpusTypeBounds(t, c) }) + t.Run("shortest", func(t *testing.T) { assertCorpusShortest(t, c) }) + t.Run("references", func(t *testing.T) { assertCorpusReferences(t, raw) }) + var bounds struct { + Rows []struct { + ID, Origin, Unit, Profile, Suffix string + Repeat, ListItems, ItemBytes, ExpectedBytes int + Expected struct { + Refusal string + ValueJSON *string + ClaimAdmissible bool + Issues []string + } + } `json:"rawValueBounds"` + } + if e = json.Unmarshal(raw, &bounds); e != nil { + t.Fatal(e) + } + if len(bounds.Rows) != 11 { + t.Fatal("selected origin bounds changed") + } + for _, row := range bounds.Rows { + t.Run(row.ID, func(t *testing.T) { + value := strings.Repeat(row.Unit, row.Repeat) + row.Suffix + if row.ListItems > 0 { + items := make([]string, row.ListItems) + for i := range items { + items[i] = strings.Repeat("x", row.ItemBytes) + } + value = string(encodeTest(t, items)) + } + if row.ExpectedBytes > 0 && len(value) != row.ExpectedBytes { + t.Fatal("handwritten raw-value recipe size") + } + var research any + if row.Origin == "generated" { + research = map[string]any{"recordRecipeRevision": "recipe:1", "declaration": nil, "fields": map[string]any{}} + } + frame := encodeTest(t, map[string]any{"contractVersion": "1", "origin": row.Origin, "values": map[string]any{"Selected": "ok", "Unselected": value}, "research": research}) + profile := Profile(row.Profile) + if profile == "" { + profile = Base + } + f, e := ParseFrame(frame, profile) + if row.Expected.Refusal != "" { + assertRefusal(t, e, row.Expected.Refusal) + return + } + if e != nil { + t.Fatal(e) + } + p, e := ParsePlan([]byte(`{"contractVersion":"1","column":"Selected","kind":"text"}`)) + if e != nil { + t.Fatal(e) + } + got, e := Preview(p, f) + if e != nil || got.ValueJSON == nil || row.Expected.ValueJSON == nil || *got.ValueJSON != *row.Expected.ValueJSON || got.ClaimAdmissible != row.Expected.ClaimAdmissible || len(got.Issues) != len(row.Expected.Issues) { + t.Fatalf("selected raw recipe differs: %+v %v", got, e) + } + }) + } +} diff --git a/internal/retainedcolumns/testdata/rc2/COVERAGE.md b/internal/retainedcolumns/testdata/rc2/COVERAGE.md new file mode 100644 index 0000000..7969985 --- /dev/null +++ b/internal/retainedcolumns/testdata/rc2/COVERAGE.md @@ -0,0 +1,43 @@ +# Selected RC2 owner coverage + +These bytes come from the exact published Spec archive identified in README.md. +The corresponding focused Go tests execute these owners: + +| Rows | Owner and scope | +| --- | --- | +| 72 conversions, 7 bounds, 7 shortest, 17 applicable reference fragments | ParsePlan, ParseFrame, Preview and Derive | +| 11 raw-value recipes | Exact literal suffix/list expansion, origin-specific UTF-8 byte and frame admission | +| 128 Base capability/selector rows | Closed capability decode, installed tuple, role minima and transport selector | +| 51 Base producer-consistency rows | Trusted tuple projection, carrier, complete original inventory, revisions and transformation | +| 27 preparations | Actual preparation consistency and exact output comparison | +| 28 preparation reader boundaries | Actual preparation reader, direct and sole-text custody, depth/numeric/malformed admission | + +The capability corpus has 74 Extended rows and producer consistency has one +Extended row outside Runner's Base support. Frame-only Extended tests establish +only the internal frame reader's independent bounds. + +The fixed synthetic installation exists only in `_test.go` code. Preparation +fixtures use a private reader checking the original signature, result commitment, +profile/request and freshness conditions of Dialect §5.2. Its last paragraph +assigns chain/caller/witness checks to Gateway; these preparation-only fixtures +are not full Gateway evidence. Public VerifyPreparation retains the full +acquisition reader, and a paired test proves it rejects the partial fixture. +Production HTTP rejects the synthetic installation before reading a body. + +Nine synthetic preparation exports and eleven export reader boundary rows lack +Runner's complete release/run/chain/sidecar context. They are not claimed as +successful VerifyInputs or replay witnesses. Actual signed lifecycle tests use +an independently identified Runtime and signed producer fixture, both selected +Core 0.2 and Core 0.3 packs, SQLite restart and exports 2/3/4/5 with replay. +That producer fixture does not implement the future Desk adapter/history owner. + +Eighteen source-input boundary rows have a separate enclosing owner. In +particular, the six `source-input-document-{depth,number,exponent}-{exact,one-over}` +rows place probes in a v2 root `snapshot`; Runner's existing v2 grammar refuses +that member and uses named sources. Those generic synthetic rows do not expand +Runner's grammar and are not represented as passing source-input conformance. +Valid named-source selected inputs remain covered by the actual lifecycle. +The other source-input rows are not counted in the preparation reader coverage. + +Historical Draft resources remain unchanged. This owner mapping neither replaces +complete artifact accounting nor establishes a published Runtime release gate. diff --git a/internal/retainedcolumns/testdata/rc2/README.md b/internal/retainedcolumns/testdata/rc2/README.md new file mode 100644 index 0000000..644ed34 --- /dev/null +++ b/internal/retainedcolumns/testdata/rc2/README.md @@ -0,0 +1,16 @@ +# Published retained-column/1 RC2 fixtures + +Imported byte-for-byte from the public v0.3.0-rc.2 artifact archive, source +bcac15b7537ce21879201b5e5dfe795496225121. The release inventory and generated +release identity bind the selected schema and complete corpus. Historical Draft +resources in the parent directory retain their original bytes and evidence. + +Schema SHA256: 0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557. +Corpus SHA256: 17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863. +Archive SHA256: 0762a27d68492bcc2313872b7ae566e8b3cd65f3a45e02d596cb686259f3cb61. + +The complete preparation examples use a fixed synthetic installation. Tests may +select that installation only in private test code; production never accepts it. +No fixture is rewritten or re-signed. Preparation-only export fixtures establish +preparation/boundary behavior, not a trusted release, chain, signature or replay. +See the test coverage report for the exact rows and owners exercised. diff --git a/internal/retainedcolumns/testdata/rc2/capabilities.json b/internal/retainedcolumns/testdata/rc2/capabilities.json new file mode 100644 index 0000000..294f365 --- /dev/null +++ b/internal/retainedcolumns/testdata/rc2/capabilities.json @@ -0,0 +1,97 @@ +{ + "contract": "retained-column/1", + "distribution": "v0.3.0-rc.2", + "maturity": "draft", + "kind": "contract-role-table", + "profiles": { + "base": { + "documentBytes": 1048576, + "frameBytes": 2097152, + "combinedBytes": 12582912, + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "extended": { + "documentBytes": 2097152, + "frameBytes": 4194304, + "combinedBytes": 25165824, + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "roles": { + "document-validation": [ + "documentBytes", + "frameBytes" + ], + "preview": [ + "documentBytes", + "combinedBytes", + "frameBytes", + "profilesBytes", + "requestBodyBytes", + "inputReplyBytes" + ], + "preparation": [ + "documentBytes", + "combinedBytes", + "frameBytes", + "preparationBytes", + "recordBytes", + "profilesBytes", + "requestBodyBytes", + "inputReplyBytes", + "releaseStoredBytes", + "runStoredBytes", + "exportBaseBytes", + "exportWireBytes" + ], + "preparation-verification": [ + "documentBytes", + "combinedBytes", + "frameBytes", + "preparationBytes", + "recordBytes", + "profilesBytes", + "requestBodyBytes", + "inputReplyBytes", + "releaseStoredBytes", + "runStoredBytes", + "exportBaseBytes", + "exportWireBytes" + ], + "producer-carrier": [ + "originalSnapshotBytes", + "carrierBytes", + "grantBytes", + "adapterStdoutBytes", + "responseBytes", + "profilesBytes" + ] + }, + "claim": "This table grants no product support; each installed owner independently declares exact pins/profile/role after its actual gates." +} diff --git a/internal/retainedcolumns/testdata/rc2/cases.json b/internal/retainedcolumns/testdata/rc2/cases.json new file mode 100644 index 0000000..038592a --- /dev/null +++ b/internal/retainedcolumns/testdata/rc2/cases.json @@ -0,0 +1,18714 @@ +{ + "status": "draft selected corpus candidate for v0.3.0-rc.2", + "cases": [ + { + "id": "text-preserve", + "kind": "text", + "inputJson": "\" A \"", + "preview": { + "valueJson": "\" A \"", + "issues": [] + }, + "preparation": "same-string" + }, + { + "id": "text-empty", + "kind": "text", + "inputJson": "\"\"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "text-whitespace", + "kind": "text", + "inputJson": "\"\\u00a0\\t\"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "text-missing", + "kind": "text", + "inputState": "missing", + "preview": { + "omitted": "missing", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "historical-column-null", + "kind": "text", + "inputJson": "null", + "preview": { + "omitted": "legacy-null", + "issues": [] + }, + "preparation": "unknown-fact", + "basis": "Desk string-map decode treats null as zero string; retained input/lineage must still distinguish null from missing" + }, + { + "id": "decimal-spelling", + "kind": "decimal", + "inputJson": "\"1.2300\"", + "preview": { + "valueJson": "\"1.2300\"", + "issues": [] + }, + "preparation": "same-string" + }, + { + "id": "decimal-negative-zero", + "kind": "decimal", + "inputJson": "\"-0\"", + "preview": { + "valueJson": "\"-0\"", + "issues": [] + }, + "preparation": "same-string" + }, + { + "id": "decimal-exponent-refusal", + "kind": "decimal", + "inputJson": "\"1e2\"", + "preview": { + "issues": [ + "decimal-encoding" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "boolean-true", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"YES\"", + "preview": { + "valueJson": "true", + "issues": [] + }, + "preparation": "true" + }, + { + "id": "boolean-false", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"NO\"", + "preview": { + "valueJson": "false", + "issues": [] + }, + "preparation": "false" + }, + { + "id": "boolean-blank", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"\"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "boolean-invalid", + "kind": "boolean", + "rule": { + "trueValue": "YES", + "falseValue": "NO" + }, + "inputJson": "\"yes\"", + "preview": { + "issues": [ + "boolean-spelling" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "number-integer", + "kind": "number", + "inputJson": "\"125\"", + "preview": { + "valueJson": "125", + "issues": [] + }, + "preparation": "integer-125" + }, + { + "id": "number-negative-zero", + "kind": "number", + "inputJson": "\"-0\"", + "preview": { + "valueJson": "-0", + "issues": [] + }, + "preparation": "literal-negative-zero" + }, + { + "id": "number-fraction-preview-only", + "kind": "number", + "inputJson": "\"1.25\"", + "preview": { + "valueJson": "1.25", + "issues": [] + }, + "preparation": "read-failed-no-evaluation", + "basis": "existing canon-domain refusal preserved" + }, + { + "id": "number-exponent-preview-only", + "kind": "number", + "inputJson": "\"1e3\"", + "preview": { + "valueJson": "1e3", + "issues": [] + }, + "preparation": "read-failed-no-evaluation", + "basis": "original literal retained; do not normalize to 1000" + }, + { + "id": "number-range-refusal", + "kind": "number", + "inputJson": "\"9007199254740992\"", + "preview": { + "issues": [ + "number-range" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "number-precision-refusal", + "kind": "number", + "inputJson": "\"1.0000000000000001\"", + "preview": { + "issues": [ + "number-precision" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "number-lexical-refusal", + "kind": "number", + "inputJson": "\"001\"", + "preview": { + "issues": [ + "number-encoding" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "research-empty-type-supported", + "kind": "research-value", + "type": "", + "status": "supported", + "inputJson": "\"x\"", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-empty-type-missing", + "kind": "research-value", + "type": "", + "status": "missing", + "inputJson": "\"x\"", + "preview": { + "omitted": "unavailable", + "issues": [] + } + }, + { + "id": "research-empty-type-entry-absent", + "kind": "research-value", + "type": "", + "fieldEntryAbsent": true, + "inputJson": "\"x\"", + "preview": { + "omitted": "unavailable", + "issues": [] + } + }, + { + "id": "research-unknown-type-supported", + "kind": "research-value", + "type": "future", + "status": "supported", + "inputJson": "\"x\"", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-unknown-type-missing", + "kind": "research-value", + "type": "future", + "status": "missing", + "inputJson": "\"x\"", + "preview": { + "omitted": "unavailable", + "issues": [] + } + }, + { + "id": "research-false", + "kind": "research-value", + "type": "boolean", + "status": "supported", + "inputJson": "false", + "preview": { + "valueJson": "false", + "issues": [] + }, + "preparation": "false" + }, + { + "id": "research-zero", + "kind": "research-value", + "type": "integer", + "status": "interpretation", + "inputJson": "0", + "preview": { + "valueJson": "0", + "issues": [] + }, + "preparation": "integer-zero" + }, + { + "id": "research-empty-text", + "kind": "research-value", + "type": "text", + "status": "supported", + "inputJson": "\"\"", + "preview": { + "valueJson": "\"\"", + "issues": [] + }, + "preparation": "empty-string" + }, + { + "id": "research-empty-list", + "kind": "research-value", + "type": "text-list", + "status": "supported", + "inputJson": "[]", + "preview": { + "valueJson": "[]", + "issues": [] + }, + "preparation": "empty-list" + }, + { + "id": "research-range", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":\"1.00\",\"max\":\"2.0\"}", + "preview": { + "valueJson": "{\"min\":\"1.00\",\"max\":\"2.0\"}", + "issues": [] + }, + "preparation": "same-typed-range" + }, + { + "id": "research-supported-null", + "kind": "research-value", + "type": "boolean", + "status": "supported", + "inputJson": "null", + "preview": { + "issues": [ + "research-type" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "research-missing-null", + "kind": "research-value", + "type": "boolean", + "status": "missing", + "inputJson": "null", + "preview": { + "omitted": "unavailable", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "research-stale", + "kind": "research-value", + "type": "text", + "status": "stale", + "inputJson": "\"old\"", + "preview": { + "omitted": "unavailable", + "issues": [] + }, + "preparation": "unknown-fact" + }, + { + "id": "research-original-unavailable", + "kind": "research-value", + "declaration": null, + "preview": { + "issues": [ + "research-declaration" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "research-legacy-string", + "kind": "research-value", + "type": "string", + "status": "supported", + "inputJson": "\"\"", + "preview": { + "valueJson": "\"\"", + "issues": [] + }, + "preparation": "empty-string" + }, + { + "id": "research-legacy-number", + "kind": "research-value", + "type": "number", + "status": "supported", + "inputJson": "9007199254740993", + "preview": { + "valueJson": "9007199254740993", + "issues": [] + }, + "preparation": "read-failed-no-evaluation", + "basis": "legacy Float64 validity is not modern safe-integer validity; original raw number never rounded" + }, + { + "id": "research-legacy-number-fraction", + "kind": "research-value", + "type": "number", + "status": "supported", + "inputJson": "1.25", + "preview": { + "valueJson": "1.25", + "issues": [] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "evidence-blank", + "kind": "evidence-availability", + "inputJson": "\" \"", + "preview": { + "omitted": "blank", + "issues": [] + }, + "preparation": "no-availability" + }, + { + "id": "evidence-present", + "kind": "evidence-availability", + "inputJson": "\"present\"", + "preview": { + "valueJson": "\"present\"", + "issues": [] + }, + "preparation": "present" + }, + { + "id": "evidence-invalid", + "kind": "evidence-availability", + "inputJson": "\"citation\"", + "preview": { + "issues": [ + "evidence-availability" + ] + }, + "preparation": "read-failed-no-evaluation" + }, + { + "id": "planned-research-zero-records", + "kind": "research-value", + "recordCount": 0, + "originalDeclaration": null, + "expected": "retain inspectable review proposal for existing/planned column; no type/execution readiness claim", + "status": "comparative acceptance case, must verify pinned actual tool path" + }, + { + "id": "imported-research-value-error", + "kind": "research-value", + "origin": "asserted", + "expected": "legacy research-context preview issue, no evaluation; do not substitute current requested type" + }, + { + "id": "number-tenth", + "kind": "number", + "inputJson": "\"0.1\"", + "preview": { + "valueJson": "0.1", + "issues": [] + }, + "claimAdmissible": false + }, + { + "id": "number-subnormal", + "kind": "number", + "inputJson": "\"5e-324\"", + "preview": { + "issues": [ + "number-exponent" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-zero-large-exponent", + "kind": "number", + "inputJson": "\"0e309\"", + "preview": { + "issues": [ + "number-exponent" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-range-before-exponent", + "kind": "number", + "inputJson": "\"1e309\"", + "preview": { + "issues": [ + "number-range" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-underflow-within-exponent", + "kind": "number", + "inputJson": "\"0.00000000000000001e-308\"", + "preview": { + "issues": [ + "number-precision" + ] + }, + "claimAdmissible": false + }, + { + "id": "number-extra-zeros", + "kind": "number", + "inputJson": "\"1.2500\"", + "preview": { + "valueJson": "1.2500", + "issues": [] + }, + "claimAdmissible": false + }, + { + "id": "number-max-safe", + "kind": "number", + "inputJson": "\"9007199254740991\"", + "preview": { + "valueJson": "9007199254740991", + "issues": [] + }, + "claimAdmissible": true + }, + { + "id": "decimal-leading-zero", + "kind": "decimal", + "inputJson": "\"01\"", + "preview": { + "issues": [ + "decimal-encoding" + ] + } + }, + { + "id": "text-zwsp-present", + "kind": "text", + "inputJson": "\"\\u200b\"", + "preview": { + "valueJson": "\"\\u200b\"", + "issues": [] + } + }, + { + "id": "research-decimal", + "kind": "research-value", + "type": "decimal", + "status": "supported", + "inputJson": "\"1.2300\"", + "preview": { + "valueJson": "\"1.2300\"", + "issues": [] + } + }, + { + "id": "research-range-integer", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":-0,\"max\":0}", + "preview": { + "valueJson": "{\"min\":-0,\"max\":0}", + "issues": [] + } + }, + { + "id": "research-range-reversed", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":\"2.0\",\"max\":\"1.00\"}", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-fraction-not-integer", + "kind": "research-value", + "type": "integer", + "status": "supported", + "inputJson": "1.0", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-declaration-mismatch", + "kind": "research-value", + "type": "boolean", + "status": "supported", + "inputJson": "false", + "revisionMismatch": true, + "preview": { + "issues": [ + "research-declaration" + ] + } + }, + { + "id": "research-metadata", + "kind": "research-value", + "column": "name", + "type": "text", + "status": "supported", + "inputJson": "\"x\"", + "preview": { + "issues": [ + "research-metadata" + ] + } + }, + { + "id": "research-field-absent", + "kind": "research-value", + "undeclared": true, + "type": "text", + "status": "supported", + "inputJson": "\"x\"", + "preview": { + "issues": [ + "research-field" + ] + } + }, + { + "id": "research-value-absent", + "kind": "research-value", + "type": "text", + "status": "supported", + "inputState": "missing", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "generated-text-unresolved", + "kind": "text", + "origin": "generated", + "status": "conflicting", + "inputJson": "\"display\"", + "preview": { + "omitted": "unavailable", + "issues": [] + } + }, + { + "id": "evidence-absent-present", + "kind": "evidence-availability", + "inputJson": "\"absent\"", + "preview": { + "valueJson": "\"absent\"", + "issues": [] + } + }, + { + "id": "evidence-no-trim", + "kind": "evidence-availability", + "inputJson": "\" present \"", + "preview": { + "issues": [ + "evidence-availability" + ] + } + }, + { + "id": "research-legacy-surrogate", + "kind": "research-value", + "type": "string", + "status": "supported", + "inputJson": "\"\\ud800\"", + "preview": { + "valueJson": "\"\\ud800\"", + "issues": [] + }, + "claimAdmissible": false + }, + { + "id": "research-modern-surrogate", + "kind": "research-value", + "type": "text", + "status": "supported", + "inputJson": "\"\\ud800\"", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-duplicate-range", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":1,\"min\":2,\"max\":3}", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-duplicate-case-insensitive", + "kind": "research-value", + "type": "range", + "status": "supported", + "inputJson": "{\"min\":1,\"MIN\":1,\"max\":2}", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "research-trailing-json", + "kind": "research-value", + "type": "string", + "status": "supported", + "inputJson": "\"ok\" true", + "preview": { + "issues": [ + "research-type" + ] + } + }, + { + "id": "imported-metadata-context-first", + "kind": "research-value", + "column": "name", + "origin": "asserted", + "preview": { + "issues": [ + "research-context" + ] + } + }, + { + "id": "generated-text-missing-entry-kept", + "kind": "text", + "origin": "generated", + "fieldEntryAbsent": true, + "inputJson": "\"display\"", + "preview": { + "valueJson": "\"display\"", + "issues": [] + } + }, + { + "id": "research-missing-entry-omitted", + "kind": "research-value", + "fieldEntryAbsent": true, + "type": "text", + "inputJson": "\"retained\"", + "preview": { + "omitted": "unavailable", + "issues": [] + } + }, + { + "id": "decimal-final-newline", + "kind": "decimal", + "inputJson": "\"1\\n\"", + "preview": { + "issues": [ + "decimal-encoding" + ] + } + }, + { + "id": "number-final-newline", + "kind": "number", + "inputJson": "\"1\\n\"", + "preview": { + "issues": [ + "number-encoding" + ] + } + }, + { + "id": "generated-blank-unresolved", + "kind": "text", + "origin": "generated", + "status": "conflicting", + "inputJson": "\" \"", + "preview": { + "omitted": "blank", + "issues": [] + } + } + ], + "boundaryCases": [ + { + "id": "decimal-at-128", + "kind": "decimal", + "repeat": "1", + "count": 128, + "expected": "value" + }, + { + "id": "decimal-over-128", + "kind": "decimal", + "repeat": "1", + "count": 129, + "expectedIssue": "decimal-encoding" + }, + { + "id": "number-over-128", + "kind": "number", + "repeat": "1", + "count": 129, + "expectedIssue": "number-encoding" + }, + { + "id": "text-at-8192", + "researchType": "text", + "repeat": "a", + "count": 8192, + "expected": "value" + }, + { + "id": "text-over-8192", + "researchType": "text", + "repeat": "a", + "count": 8193, + "expectedIssue": "research-type" + }, + { + "id": "list-at-64", + "researchType": "text-list", + "count": 64, + "expected": "value" + }, + { + "id": "list-over-64", + "researchType": "text-list", + "count": 65, + "expectedIssue": "research-type" + } + ], + "shortestCases": [ + { + "id": "shortest-zero", + "binary64Hex": "0000000000000000", + "expectedRational": "0" + }, + { + "id": "shortest-tenth", + "binary64Hex": "3fb999999999999a", + "expectedRational": "1/10" + }, + { + "id": "shortest-min-subnormal", + "binary64Hex": "0000000000000001", + "expectedRational": "5e-324" + }, + { + "id": "shortest-integer-distance-tie-even", + "binary64Hex": "43143ff3c1cb0959", + "expectedRational": "1424953923781206.2" + }, + { + "id": "shortest-one-even", + "binary64Hex": "3ff0000000000000", + "expectedRational": "1" + }, + { + "id": "shortest-next-one-odd", + "binary64Hex": "3ff0000000000001", + "expectedRational": "1.0000000000000002" + }, + { + "id": "shortest-next-one-even", + "binary64Hex": "3ff0000000000002", + "expectedRational": "1.0000000000000004" + } + ], + "interfaceCases": [ + { + "id": "carrier-negative-zero", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{\"value\":-0}", + "originalSnapshotSha256": "sha256:9c42950cfdae8b61c50c4abc09ce4eaf0ddf4b607f8324d8f1f07e8fd2c93b20", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "originalSnapshotJson": "{\"value\":-0}", + "originalSnapshotSha256": "sha256:9c42950cfdae8b61c50c4abc09ce4eaf0ddf4b607f8324d8f1f07e8fd2c93b20", + "originalSnapshotBytes": 12 + } + }, + { + "id": "carrier-positive-zero", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{\"value\":0}", + "originalSnapshotSha256": "sha256:23d7b286bd429460b92a2a1c21b6afc34110446c5034c17363fda363aa0a7c5d", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "originalSnapshotJson": "{\"value\":0}", + "originalSnapshotSha256": "sha256:23d7b286bd429460b92a2a1c21b6afc34110446c5034c17363fda363aa0a7c5d", + "originalSnapshotBytes": 11 + } + }, + { + "id": "carrier-exponent-escaped", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "originalSnapshotBytes": 33 + } + }, + { + "id": "carrier-integer-unicode", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{\"value\":1000,\"label\":\"\u00e9\"}", + "originalSnapshotSha256": "sha256:4b695b28cee6df187fe2b9aee32ba201c2b0f3e335ffb6f681b194a3b69ad123", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "originalSnapshotJson": "{\"value\":1000,\"label\":\"\u00e9\"}", + "originalSnapshotSha256": "sha256:4b695b28cee6df187fe2b9aee32ba201c2b0f3e335ffb6f681b194a3b69ad123", + "originalSnapshotBytes": 27 + } + }, + { + "id": "carrier-legacy-surrogate", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{\"legacy\":\"\\ud800\"}", + "originalSnapshotSha256": "sha256:b6a6140a9226b40b57decd7d8c5739d0b8973ee306c095185d4f6cfac52b0ab1", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "originalSnapshotJson": "{\"legacy\":\"\\ud800\"}", + "originalSnapshotSha256": "sha256:b6a6140a9226b40b57decd7d8c5739d0b8973ee306c095185d4f6cfac52b0ab1", + "originalSnapshotBytes": 19 + } + }, + { + "id": "carrier-digest", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "snapshot-digest" + } + }, + { + "id": "carrier-object-embedding", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": { + "value": 1000 + }, + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "carrier-missing-digest", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "carrier-unknown-member", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + }, + "snapshot": {} + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "carrier-version", + "request": { + "restore": { + "contractVersion": "2", + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "carrier-asserted-frame", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "retained": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "Eligible": "NO", + "Evidence": "absent", + "Historical": null + }, + "research": null + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "carrier-snapshot-one-over", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 32, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "carrier-duplicate-snapshot", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{\"a\":0,\"a\":1}", + "originalSnapshotSha256": "sha256:8bad01d70be2cb2a3ec527d5412ca6bf6f8d4e4023331f9ecafe5cb682e33b94", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "carrier-non-object", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "[]", + "originalSnapshotSha256": "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "carrier-complete-at", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 663 + } + }, + "expected": { + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "originalSnapshotBytes": 33 + } + }, + { + "id": "carrier-complete-over", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 662 + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-document-validation-base", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-over-document-validation-base-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048577, + "frameBytes": 2097152 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-document-validation-base-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048576, + "frameBytes": 2097153 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-document-validation-extended", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + }, + "sizes": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-over-document-validation-extended-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + }, + "sizes": { + "documentBytes": 2097153, + "frameBytes": 4194304 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-document-validation-extended-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + }, + "sizes": { + "documentBytes": 2097152, + "frameBytes": 4194305 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-preview-base", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-over-preview-base-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048577, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preview-base-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291457, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preview-base-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097153, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-preview-extended", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-over-preview-extended-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + "sizes": { + "documentBytes": 2097153, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preview-extended-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582913, + "frameBytes": 4194304, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preview-extended-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194305, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-preparation-base", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-over-preparation-base-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048577, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-base-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291457, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-base-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097153, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-base-preparationBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388609, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-base-recordBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388609, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-preparation-extended", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-over-preparation-extended-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097153, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-extended-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582913, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-extended-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194305, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-extended-preparationBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777217, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-extended-recordBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777217, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-preparation-verification-base", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-over-preparation-verification-base-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048577, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-verification-base-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291457, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-verification-base-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097153, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-verification-base-preparationBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388609, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-verification-base-recordBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388609, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-preparation-verification-extended", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-over-preparation-verification-extended-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097153, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-verification-extended-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582913, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-verification-extended-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194305, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-verification-extended-preparationBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777217, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-preparation-verification-extended-recordBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777217, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-producer-carrier-base", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-over-producer-carrier-base-originalSnapshotBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524289, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-producer-carrier-base-carrierBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145729, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-producer-carrier-base-grantBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145729, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-producer-carrier-base-adapterStdoutBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145729, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-producer-carrier-base-responseBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145729, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-producer-carrier-extended", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-over-producer-carrier-extended-originalSnapshotBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524289, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-producer-carrier-extended-carrierBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145729, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-producer-carrier-extended-grantBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145729, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-producer-carrier-extended-adapterStdoutBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145729, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-over-producer-carrier-extended-responseBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145729, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-absent", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-missing-role", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-unknown-role", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "execution", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-unknown-contract", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/2", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-unknown-profile", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "huge", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-unsupported-role", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-missing-limit", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-extra-limit", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-extra-member", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + }, + "semanticValidation": true + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-weak-limit", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291455, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "admission-duplicate-entry", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-identity-version", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-other", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-identity-revision", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-identity-schemaSha256", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-identity-corpusSha256", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "lineage-original-revision7", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + } + }, + "expected": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:9a36aa91e6097c7828dd0fa69cf1b2b1842ffcff01f61fd96267b1ad54933987", + "location": "research-value" + } + }, + "result": { + "state": "value", + "json": "-0" + }, + "researchIdentity": { + "recipeRevision": "recipe:7", + "fieldSha256": "sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81" + } + } + }, + { + "id": "original-revision-mismatch", + "request": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:8", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "expected": { + "issues": [ + "research-declaration" + ], + "claimAdmissible": false + } + }, + { + "id": "original-declaration-unavailable", + "request": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": null, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "expected": { + "issues": [ + "research-declaration" + ], + "claimAdmissible": false + } + }, + { + "id": "original-raw-absent", + "request": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "expected": { + "issues": [ + "research-type" + ], + "claimAdmissible": false + } + }, + { + "id": "original-raw-null", + "request": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "null" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "expected": { + "issues": [ + "research-type" + ], + "claimAdmissible": false + } + }, + { + "id": "original-raw-empty", + "request": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "expected": { + "issues": [ + "research-type" + ], + "claimAdmissible": false + } + }, + { + "id": "original-unavailable-before-raw", + "request": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "missing", + "valueJson": "bad" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "expected": { + "issues": [], + "omitted": "unavailable", + "claimAdmissible": false + } + }, + { + "id": "original-legacy-surrogate-preview", + "request": { + "rule": { + "contractVersion": "1", + "column": "B", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "expected": { + "issues": [], + "valueJson": "\"\\ud800\"", + "claimAdmissible": false + } + }, + { + "id": "lineage-legacy-surrogate-refused", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "B", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + } + }, + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "lineage-asserted-missing", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": {}, + "research": null + } + } + }, + "expected": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "missing" + }, + "result": { + "state": "omitted", + "reason": "missing" + } + } + }, + { + "id": "lineage-asserted-null", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": null + }, + "research": null + } + } + }, + "expected": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:f46ab73a50de36aec1c34e96116a0389177b729d474cf63fadbb5e7b6f92c331", + "location": "values" + } + }, + "result": { + "state": "omitted", + "reason": "legacy-null" + } + } + }, + { + "id": "lineage-asserted-empty", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "" + }, + "research": null + } + } + }, + "expected": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:46d099cd734f95d5cf8894bd73d76148dc23422546704d92682bb8e738ea6f29", + "location": "values" + } + }, + "result": { + "state": "omitted", + "reason": "blank" + } + } + }, + { + "id": "lineage-asserted-text", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + } + } + }, + "expected": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:bc2a3e40a1ea0942a11b12f0b4b141543e2fa434cd2c0fa6ef67d8dbb9783c47", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + }, + { + "id": "admission-different-known-profile", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-role-wrong-type", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": [], + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-limit-wrong-type", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": "6291456", + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-limit-zero", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 0, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-missing-size", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-negative-size", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": -1, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-missing-spec-pin", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0 + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "lineage-unavailable-raw-missing", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "missing" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + } + }, + "expected": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "missing" + }, + "result": { + "state": "omitted", + "reason": "unavailable" + }, + "researchIdentity": { + "recipeRevision": "recipe:7", + "fieldSha256": "sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81" + } + } + }, + { + "id": "lineage-unavailable-raw-null", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "missing", + "valueJson": "null" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + } + }, + "expected": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:3b9ac18e5679000430ac87f13bf16ea58752dc22640ced6d6ed9a6e684b6e608", + "location": "research-value" + } + }, + "result": { + "state": "omitted", + "reason": "unavailable" + }, + "researchIdentity": { + "recipeRevision": "recipe:7", + "fieldSha256": "sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81" + } + } + }, + { + "id": "lineage-unavailable-raw-empty", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "research-value" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "missing", + "valueJson": "" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + } + }, + "expected": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:c74c6c4edda614fe67733bd0c5683bd394e01eb9c2f33c20496f3f06c7097ee7", + "location": "research-value" + } + }, + "result": { + "state": "omitted", + "reason": "unavailable" + }, + "researchIdentity": { + "recipeRevision": "recipe:7", + "fieldSha256": "sha256:4d1437f1903fcd9600171a17dd483464d441b3946d809aaa69690a56a6a8bd81" + } + } + }, + { + "id": "carrier-generated-full-provenance", + "request": { + "restore": { + "contractVersion": "1", + "originalSnapshotJson": "{\"origin\":{\"source\":\"source:original\",\"recipeRevision\":\"recipe:7\",\"receipt\":\"receipt:original\"},\"values\":{\"A\":\"-0\",\"B\":\"legacy\"},\"acquisitions\":[{\"source\":\"sibling:1\",\"receipt\":\"receipt:sibling\"}],\"fields\":{\"A\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"B\":{\"status\":\"interpretation\",\"valueJson\":\"\\\"\\\\ud800\\\"\"}}}", + "originalSnapshotSha256": "sha256:db9ac0beecaec9714510fc3fa66677564b6dcf1c6fee754d43d343a07ff24f9b", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "originalSnapshotJson": "{\"origin\":{\"source\":\"source:original\",\"recipeRevision\":\"recipe:7\",\"receipt\":\"receipt:original\"},\"values\":{\"A\":\"-0\",\"B\":\"legacy\"},\"acquisitions\":[{\"source\":\"sibling:1\",\"receipt\":\"receipt:sibling\"}],\"fields\":{\"A\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"B\":{\"status\":\"interpretation\",\"valueJson\":\"\\\"\\\\ud800\\\"\"}}}", + "originalSnapshotSha256": "sha256:db9ac0beecaec9714510fc3fa66677564b6dcf1c6fee754d43d343a07ff24f9b", + "originalSnapshotBytes": 310 + } + }, + { + "id": "lineage-malformed-null", + "request": { + "lineage": null + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "lineage-malformed-array", + "request": { + "lineage": [] + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "lineage-malformed-empty", + "request": { + "lineage": "" + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-malformed-null", + "request": { + "admission": null + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-malformed-array", + "request": { + "admission": [] + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-malformed-empty", + "request": { + "admission": "" + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "restore-malformed-null", + "request": { + "restore": null, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "restore-malformed-array", + "request": { + "restore": [], + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "restore-malformed-empty", + "request": { + "restore": "", + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "admission-producer-grammar", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-producer-missing-grammar", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-producer-unknown-grammar", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + }, + "producerGrammar": "other/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-producer-missing-conversion-contracts", + "request": { + "admission": { + "capabilities": {}, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 3145728, + "profilesBytes": 0 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "admission-grammar-preparation-base", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-grammar-preparation-extended", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-grammar-preparation-verification-base", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 6291456, + "frameBytes": 2097152, + "preparationBytes": 8388608, + "recordBytes": 8388608, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "admission-grammar-preparation-verification-extended", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 12582912, + "frameBytes": 4194304, + "preparationBytes": 16777216, + "recordBytes": 16777216, + "profilesBytes": 0, + "requestBodyBytes": 0, + "inputReplyBytes": 0, + "releaseStoredBytes": 0, + "runStoredBytes": 0, + "exportBaseBytes": 0, + "exportWireBytes": 0 + } + } + }, + "expected": { + "admitted": true + } + } + ], + "producerCases": [ + { + "id": "producer-original-type-text", + "expectedPatch": [ + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-integer", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Integer" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "Integer" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "-0" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-decimal", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Decimal" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "Decimal" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"1.2300\"" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-boolean", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Boolean" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "Boolean" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "false" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-text-list", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "List" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "List" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "[]" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-range", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Range" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "Range" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "{\"min\":\"1.00\",\"max\":\"2.0\"}" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-string", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "String" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "String" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"\"" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-original-type-number", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Number" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "column" + ], + "value": "Number" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "-0" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-kind-text", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "text" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-kind-decimal", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Decimal" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "decimal" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Decimal" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"1.2300\"" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-kind-number", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Number" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "number" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Number" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "-0" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-kind-boolean", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Boolean" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "boolean" + }, + { + "path": [ + "generatedConsistency", + "rule", + "trueValue" + ], + "value": "true" + }, + { + "path": [ + "generatedConsistency", + "rule", + "falseValue" + ], + "value": "false" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Boolean" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "false" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-kind-evidence-availability", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "evidence-availability" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"present\"" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-omitted-unselected-declaration", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields" + ], + "value": [ + { + "name": "Text", + "fieldJson": "{\"type\":\"text\",\"name\":\"Text\",\"description\":\"A \\u0042 / kept\"}" + }, + { + "name": "Integer", + "fieldJson": "{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"}" + }, + { + "name": "Decimal", + "fieldJson": "{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"}" + }, + { + "name": "Boolean", + "fieldJson": "{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"}" + }, + { + "name": "List", + "fieldJson": "{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"}" + }, + { + "name": "Range", + "fieldJson": "{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"}" + }, + { + "name": "String", + "fieldJson": "{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"}" + }, + { + "name": "Number", + "fieldJson": "{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"}" + } + ] + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:6dc48a2dc5e7c7119c4377754526a6164390c0106557b36cc59aa461aff5f4bc" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-extra-declaration", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields" + ], + "value": [ + { + "name": "Text", + "fieldJson": "{\"type\":\"text\",\"name\":\"Text\",\"description\":\"A \\u0042 / kept\"}" + }, + { + "name": "Integer", + "fieldJson": "{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"}" + }, + { + "name": "Decimal", + "fieldJson": "{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"}" + }, + { + "name": "Boolean", + "fieldJson": "{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"}" + }, + { + "name": "List", + "fieldJson": "{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"}" + }, + { + "name": "Range", + "fieldJson": "{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"}" + }, + { + "name": "String", + "fieldJson": "{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"}" + }, + { + "name": "Number", + "fieldJson": "{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"}" + }, + { + "name": "Evidence", + "fieldJson": "{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}" + }, + { + "name": "Extra", + "fieldJson": "{\"name\":\"Extra\",\"type\":\"text\"}" + } + ] + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:680ffbb2a99ce0a0577e0faeed3c8a9b06da5ccd5c2d546469ffbb3299e209ac" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-reordered-declarations", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 0, + "name" + ], + "value": "Evidence" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 0, + "fieldJson" + ], + "value": "{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 1, + "name" + ], + "value": "Number" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 1, + "fieldJson" + ], + "value": "{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 2, + "name" + ], + "value": "String" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 2, + "fieldJson" + ], + "value": "{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 3, + "name" + ], + "value": "Range" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 3, + "fieldJson" + ], + "value": "{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 5, + "name" + ], + "value": "Boolean" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 5, + "fieldJson" + ], + "value": "{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 6, + "name" + ], + "value": "Decimal" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 6, + "fieldJson" + ], + "value": "{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 7, + "name" + ], + "value": "Integer" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 7, + "fieldJson" + ], + "value": "{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 8, + "name" + ], + "value": "Text" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 8, + "fieldJson" + ], + "value": "{\"type\":\"text\",\"name\":\"Text\",\"description\":\"A \\u0042 / kept\"}" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:c227d6757513533c9b93770f98ed22eed4bcbe63dbcb5d155d59ad9218530a79" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-unselected-description", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 7, + "fieldJson" + ], + "value": "{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Changed unselected\"}" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:3504a7050aaa6a156a66f166dcf75d365344818cd68d0f3ea137fc55d8328692" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-semantic-equal-escape-changed", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "fields", + 0, + "fieldJson" + ], + "value": "{\"type\":\"text\",\"name\":\"Text\",\"description\":\"A B / kept\"}" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:5d2be429514f3e61c69bb39001aaccaaaadbae29c939e39dd4bb135f646166e3" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-current-frame-revision", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "recordRecipeRevision" + ], + "value": "sha256:6ac1dde4e2cb90262060258a1cb1ee5ba2538f4822f427fb24110e9fbcbb69cf" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:fb457571371329a04b1fade5f1d7d7fc9061df62963bc088c1b774bcf70c9e49" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-current-declaration-revision", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "recipeRevision" + ], + "value": "sha256:6ac1dde4e2cb90262060258a1cb1ee5ba2538f4822f427fb24110e9fbcbb69cf" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:bb405f4e16e2f1540c86e2e60b40640f1cbb83adea9e9e3ed2fde0d8e43ffcf5" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-original-revision-missing", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:04042ad5b63806097cb0659c82e79e5df4d75d0afad863ff7529c1bba62ce98e" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:afe407f6b0cc167e8acece6172f8fa5bd285a2d28cc285bbc843007170dffa8e" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-record-original-revision-mismatch", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":8,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:b04dfc4d28d5ad95484a01425164f7f7edf655e86c02d74cf8bba75381959198" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:ca450043b392071ef63ae4f97b2dbf7bcad0b504532cf1ba46bcbf5c4440e3c8" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-run-id-invalid", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_not-a-supported-id\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_not-a-supported-id\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:d5f624385882c468d63959c5dc3cf48e12fc45d8a3f1f2d4d67c517cc12851dd" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:ed94ef25281680ed9024c61fd0be27f8b229121003abffce66c29fa03cf441a6" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-version-not-literal-integer", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7e0,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7e0,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:029d8697207f336d06f82ba36f0c2f00c2265b5b3aa0ba2de1d001313a839eea" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:fbbb8d37532788686ac488c4dcb4fcbf2b94bd134c16a7a729850d248bd7cdd6" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-original-fields-missing", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"notFields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:4d8102da1d96389e9bd6cc17ceca5042d6ae808242044f7ad84a27f599371a74" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:d7a3a3efdcf5199177c19903120e0efd136b4ac2b3b5e5e0282f2e9edb866bae" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-filtered-values-substitution", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Integer" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Decimal" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Boolean" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "List" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Range" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "String" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Number" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Evidence" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Text" + ], + "value": "filtered visible" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:dec0c2a30ea2608c883da6897605e7af94bf2384f29905d85faf4ce4869900e7" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-zero-spelling-changed", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Integer", + "valueJson" + ], + "value": "0" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:a6ec27e3321e8b5e4fd15e9400cc6f778b6c7990ac8da6cb53df1d6de18b07ec" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-status-changed", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Boolean", + "status" + ], + "value": "missing" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:79a9715441fadd67b75df40914d14dd5da81f9da691f87a90dd0fa47f058a489" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-typed-field-omitted", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Number" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:de2e06b3d161e7f255719d26618b510ef254bd1e9b96743aaf80b5a64063a06b" + } + ], + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "producer-wrong-trusted-source", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer", + "source" + ], + "value": "other-source" + } + ], + "expected": { + "refusal": "profile-mismatch" + } + }, + { + "id": "producer-asserted-trust", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer", + "class" + ], + "value": "asserted" + } + ], + "expected": { + "refusal": "profile-mismatch" + } + }, + { + "id": "producer-record-trust", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer", + "class" + ], + "value": "record" + } + ], + "expected": { + "refusal": "profile-mismatch" + } + }, + { + "id": "producer-old-adapter", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer", + "adapter", + "version" + ], + "value": "1" + } + ], + "expected": { + "refusal": "profile-mismatch" + } + }, + { + "id": "producer-wrong-profile-digest", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "sourceBinding", + "profileDigest" + ], + "value": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" + } + ], + "expected": { + "refusal": "profile-mismatch" + } + }, + { + "id": "producer-unknown-grammar", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer", + "retainedColumnProducer", + "grammar" + ], + "value": "other/1" + } + ], + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "producer-frame-origin-forged", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "origin" + ], + "value": "asserted" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:68cd89447354e38028c2e8ff1858a3ed6933a8b3237635ca495324d7913371fd" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-updated-frame-old-receipt", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\"changed\",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\"changed\",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:00dacd4cd2c331a555ff9e2be0539e3e72256fef65617a34b9446bc73a673f99" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Text" + ], + "value": "changed" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Text", + "valueJson" + ], + "value": "\"changed\"" + } + ], + "expected": { + "refusal": "acquisition-invalid" + } + }, + { + "id": "producer-duplicate-snapshot-key", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"cl\\u0061ss\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:4e9f48488441eca4b1f2dde38b0375e0e77776250716532d1a5c75b3beafd005" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:dcbe654b3137f922cb4fe820efdcc1633e280287e21d750e3fefa313f5e5874d" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-duplicate-nested-key", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"x\":1,\"\\u0078\":2}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:4b4cdd463cfb015c751ceec805c50405e3df6a4df6f36806084553ddb062b2bd" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:c867f92b9a9126be8e0959dbea823293b6a30030f0fe8699f34b9d0721703f75" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-duplicate-declaration-name", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:324b0b3ab4736cba4d1cbaa3ca96e10275a67da1e5ea734725979d96bf0f5cf4" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:3ce6a241f21d0c4aead23da0cfb4b9adedfed7e3b05650c51ecf261a3cec8c4e" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-unavailable-absent", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"missing\",\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:7a489b2c5ba033f1bd8dde3c3dfc6426c395645120a2dd6c305a7e051e3aa526" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Boolean", + "valueJson" + ], + "remove": true + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Boolean", + "status" + ], + "value": "missing" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:b401945245ba15164f6c5d43fd8b897325ebd85f4e282ab1e0889469a4c5445c" + }, + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Boolean" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:7a489b2c5ba033f1bd8dde3c3dfc6426c395645120a2dd6c305a7e051e3aa526" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:59453fa223eddd68728a4128c690aeafdeee1bff9971e53a54fafaa77856480a" + }, + { + "path": [ + "projection", + "fields", + "Boolean", + "valueJson" + ], + "remove": true + }, + { + "path": [ + "projection", + "fields", + "Boolean", + "status" + ], + "value": "missing" + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Boolean" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "remove": true + }, + { + "path": [ + "transformation", + "result", + "state" + ], + "value": "omitted" + }, + { + "path": [ + "transformation", + "result", + "reason" + ], + "value": "unavailable" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "missing" + } + } + ] + }, + { + "id": "producer-unavailable-null", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"missing\",\"value\":null,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:1a7e66b3a08cec8bdedf1d608a33ea416500b9c4c94a17c6c3ace0f60b8e47c5" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Boolean", + "status" + ], + "value": "missing" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "fields", + "Boolean", + "valueJson" + ], + "value": "null" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:fb649a9d0105e67c0a8d404fc3d295e70991b6b7363dbd6fcfefd374f736ebf5" + }, + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Boolean" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:1a7e66b3a08cec8bdedf1d608a33ea416500b9c4c94a17c6c3ace0f60b8e47c5" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:286b7fa4642d919bc9dc8f4683f72675975de3c0f0cfdc1b1b705a9af2b8fc74" + }, + { + "path": [ + "projection", + "fields", + "Boolean", + "status" + ], + "value": "missing" + }, + { + "path": [ + "projection", + "fields", + "Boolean", + "valueJson" + ], + "value": "null" + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Boolean" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "remove": true + }, + { + "path": [ + "transformation", + "result", + "state" + ], + "value": "omitted" + }, + { + "path": [ + "transformation", + "result", + "reason" + ], + "value": "unavailable" + }, + { + "path": [ + "transformation", + "researchIdentity", + "fieldSha256" + ], + "value": "sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:286b7fa4642d919bc9dc8f4683f72675975de3c0f0cfdc1b1b705a9af2b8fc74", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-availability-absent", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"absent\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:516048df9328b4027408bc01a2ba64dcd0dba859b9e15f78ee26a2cac8442699" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Evidence" + ], + "value": "absent" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:230689081da8fe78c98cd1e31bc4779e38ee64def2b6215dcc5692a050e16efb" + }, + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "evidence-availability" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:516048df9328b4027408bc01a2ba64dcd0dba859b9e15f78ee26a2cac8442699" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:e6cd75757aa8f19324b4b8cd26728bc936a091decfb1874218fed2515175e9d1" + }, + { + "path": [ + "projection", + "values", + "Evidence" + ], + "value": "absent" + }, + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"absent\"" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:e6cd75757aa8f19324b4b8cd26728bc936a091decfb1874218fed2515175e9d1", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-availability-unknown", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"unknown\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:e4866ac57ce1aabf403a9aef302f6d53d53add86853b4274d7ceb96c6b79e741" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "values", + "Evidence" + ], + "value": "unknown" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:a3e6dcbf9b0826353d6aba20167e76dd93a6bb86e770e99d0c3a287a6815912c" + }, + { + "path": [ + "generatedConsistency", + "rule", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "generatedConsistency", + "rule", + "kind" + ], + "value": "evidence-availability" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:e4866ac57ce1aabf403a9aef302f6d53d53add86853b4274d7ceb96c6b79e741" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:775394053b4489fb881c6b1a2ba96abdc6d587f34086478769a59e143d07ae4a" + }, + { + "path": [ + "projection", + "values", + "Evidence" + ], + "value": "unknown" + }, + { + "path": [ + "transformation", + "researchIdentity" + ], + "remove": true + }, + { + "path": [ + "transformation", + "column" + ], + "value": "Evidence" + }, + { + "path": [ + "transformation", + "result", + "json" + ], + "value": "\"unknown\"" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:775394053b4489fb881c6b1a2ba96abdc6d587f34086478769a59e143d07ae4a", + "location": "values" + } + } + } + ] + }, + { + "id": "producer-revision-boundary-1", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":1,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":1,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:2c0c1589d4e4d7245a483dc680570976793bd11391ed41a0d22c076897a72a00" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "recordRecipeRevision" + ], + "value": "sha256:2ad9735e6b3b81add9fa85447209c1104b85708c81a6694ea83d607e6bc15ca2" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "recipeRevision" + ], + "value": "sha256:2ad9735e6b3b81add9fa85447209c1104b85708c81a6694ea83d607e6bc15ca2" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:5a88b51911f607c70cc530c704ce668cc964180919765f6d909968c5d6f67183" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:2c0c1589d4e4d7245a483dc680570976793bd11391ed41a0d22c076897a72a00" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:a1e85c3dd9f3ea55d8afba10d4568c9c5e3a69ae2ab5308d73ea6b8b7db35810" + }, + { + "path": [ + "revisionIdentity" + ], + "value": "sha256:2ad9735e6b3b81add9fa85447209c1104b85708c81a6694ea83d607e6bc15ca2" + }, + { + "path": [ + "projection", + "recipeVersion" + ], + "value": 1 + }, + { + "path": [ + "projection", + "recordRecipeVersion" + ], + "value": 1 + }, + { + "path": [ + "transformation", + "researchIdentity", + "recipeRevision" + ], + "value": "sha256:2ad9735e6b3b81add9fa85447209c1104b85708c81a6694ea83d607e6bc15ca2" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:a1e85c3dd9f3ea55d8afba10d4568c9c5e3a69ae2ab5308d73ea6b8b7db35810", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-revision-boundary-9007199254740991", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":9007199254740991,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":9007199254740991,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:846acccd4ba99ed32bfbd72c86b76ea94cf9d430e2dea4ebe8c58a7b96276418" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "recordRecipeRevision" + ], + "value": "sha256:195f78bf3c5a40044ebe16d52f934a9edb9f5665ac93c6bec7525d939adcb18e" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "recipeRevision" + ], + "value": "sha256:195f78bf3c5a40044ebe16d52f934a9edb9f5665ac93c6bec7525d939adcb18e" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:0ba64b795fb9c175b5272b6abab9cf46486eaeac62aec7b6b51186c0b4dc9ca8" + } + ], + "expectedPatch": [ + { + "path": [ + "originalSnapshotSha256" + ], + "value": "sha256:846acccd4ba99ed32bfbd72c86b76ea94cf9d430e2dea4ebe8c58a7b96276418" + }, + { + "path": [ + "frameSha256" + ], + "value": "sha256:eabb4bad72c9859b47186ff9d39ef89ba7f0f3573bdc880a390ba22ea0c8e3fc" + }, + { + "path": [ + "revisionIdentity" + ], + "value": "sha256:195f78bf3c5a40044ebe16d52f934a9edb9f5665ac93c6bec7525d939adcb18e" + }, + { + "path": [ + "projection", + "recipeVersion" + ], + "value": 9007199254740991 + }, + { + "path": [ + "projection", + "recordRecipeVersion" + ], + "value": 9007199254740991 + }, + { + "path": [ + "transformation", + "researchIdentity", + "recipeRevision" + ], + "value": "sha256:195f78bf3c5a40044ebe16d52f934a9edb9f5665ac93c6bec7525d939adcb18e" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:eabb4bad72c9859b47186ff9d39ef89ba7f0f3573bdc880a390ba22ea0c8e3fc", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-escaped-frame-identity", + "expectedPatch": [ + { + "path": [ + "frameSha256" + ], + "value": "sha256:6e1ee80662772a061f8a00d1b32fef99259ce06a5973770ff3abd94836b0ca72" + }, + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:6e1ee80662772a061f8a00d1b32fef99259ce06a5973770ff3abd94836b0ca72", + "location": "research-value" + } + } + } + ], + "wireJson": "{\"generatedConsistency\":{\"carrier\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"version\\\":1,\\\"class\\\":\\\"generated\\\",\\\"preparationId\\\":\\\"prep_synthetic\\\",\\\"recipeVersion\\\":8,\\\"qualification\\\":null,\\\"prepared\\\":{\\\"ignored\\\":\\\"not raw input\\\"},\\\"record\\\":{\\\"id\\\":\\\"record_synthetic\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"sourceId\\\":\\\"source_synthetic\\\",\\\"row\\\":1,\\\"class\\\":\\\"generated\\\",\\\"status\\\":\\\"ready\\\",\\\"values\\\":{\\\"Text\\\":\\\" A \\\",\\\"Integer\\\":\\\"-0\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Boolean\\\":\\\"false\\\",\\\"List\\\":\\\"[]\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Number\\\":\\\"-0\\\",\\\"Evidence\\\":\\\"present\\\"},\\\"research\\\":{\\\"runId\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"entity\\\":{\\\"id\\\":\\\"entity_synthetic\\\",\\\"kind\\\":\\\"record\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"url\\\":\\\"https://example.test/\\\",\\\"fields\\\":{\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\" A \\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"1.2300\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":false,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":[],\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"},\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"present\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"}}}}},\\\"values\\\":{\\\"Text\\\":\\\"filtered visible\\\"},\\\"research\\\":{\\\"id\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"recipe\\\":{\\\"version\\\":1,\\\"target\\\":\\\"records\\\",\\\"fields\\\":[{ \\\"type\\\" : \\\"text\\\", \\\"name\\\" : \\\"Text\\\", \\\"description\\\" : \\\"A \\\\u0042 / kept\\\" },{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"},{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"},{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"},{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"},{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"},{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"},{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"},{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}],\\\"criteria\\\":[],\\\"ai\\\":{},\\\"limits\\\":{}},\\\"intent\\\":\\\"Opaque original intent\\\",\\\"createdAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"approvedLimits\\\":{},\\\"budgetApprovals\\\":[],\\\"workflowApproval\\\":null,\\\"modelResponses\\\":[],\\\"sources\\\":[]},\\\"reviews\\\":[],\\\"legacyOpaque\\\":{\\\"escaped\\\":\\\"\\\\ud800\\\"}}\",\"originalSnapshotSha256\":\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\",\"retained\":{\"contractVersion\":\"1\",\"origin\":\"generated\",\"values\":{\"\\u0054ext\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"recordRecipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\",\"declaration\":{\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\",\"fields\":[{\"name\":\"Text\",\"fieldJson\":\"{\\\"type\\\":\\\"text\\\",\\\"name\\\":\\\"Text\\\",\\\"description\\\":\\\"A \\\\u0042 / kept\\\"}\"},{\"name\":\"Integer\",\"fieldJson\":\"{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"}\"},{\"name\":\"Decimal\",\"fieldJson\":\"{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"}\"},{\"name\":\"Boolean\",\"fieldJson\":\"{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"}\"},{\"name\":\"List\",\"fieldJson\":\"{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"}\"},{\"name\":\"Range\",\"fieldJson\":\"{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"}\"},{\"name\":\"String\",\"fieldJson\":\"{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"}\"},{\"name\":\"Number\",\"fieldJson\":\"{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"}\"},{\"name\":\"Evidence\",\"fieldJson\":\"{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}\"}]},\"fields\":{\"Text\":{\"status\":\"supported\",\"valueJson\":\"\\\" A \\\"\"},\"Integer\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Decimal\":{\"status\":\"supported\",\"valueJson\":\"\\\"1.2300\\\"\"},\"Boolean\":{\"status\":\"supported\",\"valueJson\":\"false\"},\"List\":{\"status\":\"supported\",\"valueJson\":\"[]\"},\"Range\":{\"status\":\"supported\",\"valueJson\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\"},\"String\":{\"status\":\"supported\",\"valueJson\":\"\\\"\\\"\"},\"Number\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Evidence\":{\"status\":\"supported\",\"valueJson\":\"\\\"present\\\"\"}}}}},\"profile\":\"base\",\"limits\":{\"originalSnapshotBytes\":524288,\"carrierBytes\":3145728},\"trustedProducer\":{\"id\":\"reviewed-columns\",\"profileDigest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"class\":\"generated\",\"source\":\"desk-inputs\",\"authority\":\"synthetic-trusted-host\",\"shape\":\"mcp\",\"endpoint\":\"desk-local:reviewed-inputs\",\"adapter\":{\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\",\"digest\":\"sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\"},\"tools\":[\"read_reviewed_input\"],\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"}},\"sourceBinding\":{\"kind\":\"operation\",\"profile\":\"reviewed-columns\",\"profileDigest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"},\"receiptResultDigest\":\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\",\"rule\":{\"contractVersion\":\"1\",\"column\":\"Text\",\"kind\":\"research-value\"}}}" + }, + { + "id": "producer-null-carrier", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier" + ], + "value": null + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-null-trust", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "trustedProducer" + ], + "value": null + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-nonscalar-status", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotJson" + ], + "value": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":[],\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "originalSnapshotSha256" + ], + "value": "sha256:fca776bd6116127a8205e8be1bf08f873be6b942cace10426c1131eb75eb316d" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:93984f2cc75d67a2562c965876f4057a72e0c3f3452c65af8dd3ef4dd14fd9c5" + } + ], + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "producer-extended-small-consistency", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "profile" + ], + "value": "extended" + } + ], + "expectedPatch": [ + { + "path": [ + "transformation", + "input" + ], + "value": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + } + } + ] + }, + { + "id": "producer-current-both-frame-revisions", + "requestPatch": [ + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "recordRecipeRevision" + ], + "value": "sha256:6ac1dde4e2cb90262060258a1cb1ee5ba2538f4822f427fb24110e9fbcbb69cf" + }, + { + "path": [ + "generatedConsistency", + "carrier", + "retained", + "research", + "declaration", + "recipeRevision" + ], + "value": "sha256:6ac1dde4e2cb90262060258a1cb1ee5ba2538f4822f427fb24110e9fbcbb69cf" + }, + { + "path": [ + "generatedConsistency", + "receiptResultDigest" + ], + "value": "sha256:23f10df115410791decfad68a7c4ca87a88e5fab7573f98f75dae2635986ddac" + } + ], + "expected": { + "refusal": "read-failed" + } + } + ], + "referenceCases": [ + { + "id": "reference-exact-raw-frame", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + } + } + }, + "expected": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + }, + "wireJson": "{\"lineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null }}}" + }, + { + "id": "reference-resolves-retained-occurrence", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "consistent": true, + "acquisition": "not-verified" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"values\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-wrong-digest", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"location\":\"values\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-wrong-location", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "research-value" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"research-value\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-unknown-location", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "uri" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"uri\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-wrong-column", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "B", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"B\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"values\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-inline-copy", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "json": "\"\u00e9\\n\"" + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-unresolved", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "missing" + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"missing\"},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"}}}}" + }, + { + "id": "reference-changed-result", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"changed\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"values\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"changed\\\"\"}}}}" + }, + { + "id": "reference-extra-metadata", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + }, + "extra": "unsupported" + } + } + }, + "expected": { + "refusal": "read-failed" + }, + "wireJson": "{\"verifyLineage\":{\"rule\":{\"contractVersion\":\"1\",\"column\":\"A\",\"kind\":\"text\"},\"frame\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null },\"transformation\":{\"contractVersion\":\"1\",\"column\":\"A\",\"input\":{\"state\":\"present\",\"ref\":{\"frameSha256\":\"sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a\",\"location\":\"values\"}},\"result\":{\"state\":\"value\",\"json\":\"\\\"\\u00e9\\\\n\\\"\"},\"extra\":\"unsupported\"}}}" + }, + { + "id": "reference-compacted-frame-refused", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "reference-substituted-frame", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "changed" + }, + "research": null + }, + "transformation": { + "contractVersion": "1", + "column": "A", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0499b2a42e8fbc6a26dca2e2a63060ca977dde0f4c2b7fa77b6b6808f54f017a", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "\"\u00e9\\n\"" + } + } + } + }, + "expected": { + "refusal": "read-failed" + } + }, + { + "id": "source-response-to-sole-text", + "request": { + "retainSource": { + "source": { + "response": { + "result": { + "contractVersion": "1", + "originalSnapshotJson": "{\"n\":1e3,\"s\":\"\\u00e9\"}", + "originalSnapshotSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "\u00e9\n" + }, + "research": { + "recordRecipeRevision": "recipe:1", + "declaration": null, + "fields": {} + } + } + }, + "receipt": {}, + "salts": {} + } + } + } + }, + "expected": { + "retainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }" + }, + "wireJson": "{\"retainSource\":{\"source\":{\"response\":{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }}}}" + }, + { + "id": "source-sole-text", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }" + } + } + }, + "expected": { + "retainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }" + } + }, + { + "id": "case-object-to-sole-text", + "request": { + "retainCase": { + "source": { + "case": { + "origin": { + "originalValues": { + "A": "\t" + }, + "n": 1000.0 + }, + "retained": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "A": "\u00e9\n" + }, + "research": null + } + } + } + } + }, + "expected": { + "retainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }" + }, + "wireJson": "{\"retainCase\":{\"source\":{\"case\":{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }}}}" + }, + { + "id": "case-sole-text", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }" + } + } + }, + "expected": { + "retainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }" + } + }, + { + "id": "retainSource-dual", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }", + "response": {} + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-sibling", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }", + "snapshot": {} + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-null", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": null + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-empty", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-wrongcase", + "request": { + "retainSource": { + "source": { + "RetainedResponseJson": "{ \"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"n\\\":1e3,\\\"s\\\":\\\"\\\\u00e9\\\"}\",\"originalSnapshotSha256\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"retained\":{ \"contractVersion\":\"1\", \"origin\":\"generated\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":{\"recordRecipeRevision\":\"recipe:1\",\"declaration\":null,\"fields\":{}} }}, \"receipt\":{}, \"salts\":{} }" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-nonobject", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "[]" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainSource-duplicate", + "request": { + "retainSource": { + "source": { + "retainedResponseJson": "{\"a\":1,\"a\":2}" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-dual", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }", + "case": {} + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-sibling", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }", + "snapshot": {} + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-null", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": null + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-empty", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-wrongcase", + "request": { + "retainCase": { + "source": { + "RetainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-nonobject", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "[]" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "retainCase-duplicate", + "request": { + "retainCase": { + "source": { + "retainedCaseJson": "{\"a\":1,\"a\":2}" + } + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "reference-labelled-boolean-example", + "request": { + "lineage": { + "rule": { + "contractVersion": "1", + "column": "Eligible", + "kind": "boolean", + "trueValue": "YES", + "falseValue": "NO" + }, + "frame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "Eligible": "YES" + }, + "research": { + "recordRecipeRevision": "recipe:1", + "declaration": { + "recipeRevision": "recipe:1", + "fields": [ + { + "name": "Eligible", + "fieldJson": "{\"name\":\"Eligible\",\"type\":\"boolean\",\"description\":\"Retained original declaration.\"}" + } + ] + }, + "fields": { + "Eligible": { + "status": "supported", + "valueJson": "false" + } + } + } + } + } + }, + "expected": { + "contractVersion": "1", + "column": "Eligible", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:5e15070ee22fcb46096f162d845f4604a16523515a61fe089211339ec08529bf", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "true" + } + } + }, + { + "id": "reference-null-frame", + "request": { + "verifyLineage": { + "rule": { + "contractVersion": "1", + "column": "A", + "kind": "text" + }, + "frame": null, + "transformation": {} + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "reference-null-probe", + "request": { + "verifyLineage": null + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "reference-empty-probe", + "request": { + "verifyLineage": {} + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "reference-missing-transformation", + "request": { + "verifyLineage": { + "rule": {}, + "frame": {} + } + }, + "expected": { + "refusal": "input-malformed" + } + } + ], + "capCases": [ + { + "id": "caps-base-document-validation", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-over-base-document-validation-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048577, + "frameBytes": 2097152 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-document-validation-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048576, + "frameBytes": 2097153 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-base-preview", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-over-base-preview-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048577, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preview-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582913, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preview-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097153, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preview-profilesBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81921, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preview-requestBodyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777217, + "inputReplyBytes": 37748736 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preview-inputReplyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748737 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-base-preparation", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-over-base-preparation-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048577, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582913, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097153, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-preparationBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777217, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-recordBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437185, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-profilesBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81921, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-requestBodyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777217, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-inputReplyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748737, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-releaseStoredBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943041, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-runStoredBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943041, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-exportBaseBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497473, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-exportWireBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177537 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-base-preparation-verification", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-over-base-preparation-verification-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048577, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-verification-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582913, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-verification-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097153, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-verification-preparationBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777217, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-verification-recordBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437185, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-verification-profilesBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81921, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-verification-requestBodyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777217, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-verification-inputReplyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748737, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-verification-releaseStoredBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943041, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-verification-runStoredBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943041, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-verification-exportBaseBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497473, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-preparation-verification-exportWireBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177537 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-base-producer-carrier", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-over-base-producer-carrier-originalSnapshotBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524289, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-producer-carrier-carrierBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145729, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-producer-carrier-grantBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145729, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-producer-carrier-adapterStdoutBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145729, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-producer-carrier-responseBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242881, + "profilesBytes": 81920 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-base-producer-carrier-profilesBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81921 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-extended-document-validation", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + }, + "sizes": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-over-extended-document-validation-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + }, + "sizes": { + "documentBytes": 2097153, + "frameBytes": 4194304 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-document-validation-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + }, + "sizes": { + "documentBytes": 2097152, + "frameBytes": 4194305 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-extended-preview", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-over-extended-preview-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + "sizes": { + "documentBytes": 2097153, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preview-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165825, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preview-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194305, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preview-profilesBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163841, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preview-requestBodyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554433, + "inputReplyBytes": 75497472 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preview-inputReplyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497473 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-extended-preparation", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-over-extended-preparation-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097153, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165825, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194305, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-preparationBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554433, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-recordBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825793, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-profilesBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163841, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-requestBodyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554433, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-inputReplyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497473, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-releaseStoredBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886081, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-runStoredBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886081, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-exportBaseBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994945, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-exportWireBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160769 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-extended-preparation-verification", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-over-extended-preparation-verification-documentBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097153, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-verification-combinedBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165825, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-verification-frameBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194305, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-verification-preparationBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554433, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-verification-recordBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825793, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-verification-profilesBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163841, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-verification-requestBodyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554433, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-verification-inputReplyBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497473, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-verification-releaseStoredBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886081, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-verification-runStoredBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886081, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-verification-exportBaseBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994945, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-preparation-verification-exportWireBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160769 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-extended-producer-carrier", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-over-extended-producer-carrier-originalSnapshotBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524289, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-producer-carrier-carrierBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145729, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-producer-carrier-grantBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145729, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-producer-carrier-adapterStdoutBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145729, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-producer-carrier-responseBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242881, + "profilesBytes": 163840 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-over-extended-producer-carrier-profilesBytes", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163841 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "caps-untrusted-agreement-version", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "arbitrary-host-version", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "arbitrary-host-version", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "caps-untrusted-agreement-revision", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "ffffffffffffffffffffffffffffffffffffffff", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "ffffffffffffffffffffffffffffffffffffffff", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "caps-untrusted-agreement-schemaSha256", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "caps-untrusted-agreement-corpusSha256", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-all-roles", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preparation" + } + }, + "expected": { + "selected": true + } + }, + { + "id": "selection-extra", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ], + "extra": true + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "selection-profile", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "future", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-unknown-role", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "future" + ] + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-duplicate-role", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "preparation", + "preparation" + ] + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "selection-order", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "preparation", + "preview" + ] + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "selection-missing-required-role", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "preview" + ] + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-empty-roles", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [] + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "selection-limits-forbidden", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ], + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152, + "combinedBytes": 12582912, + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "input-malformed" + } + }, + { + "id": "selection-untrusted-version", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "other", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-untrusted-revision", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "ffffffffffffffffffffffffffffffffffffffff", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-untrusted-schemaSha256", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-untrusted-corpusSha256", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preparation" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "caps-reported-capacity-does-not-raise-profile", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048577, + "frameBytes": 2097152 + } + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048577, + "frameBytes": 2097152 + } + }, + "sizes": { + "documentBytes": 1048577, + "frameBytes": 2097152 + } + } + }, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "selection-extended-conditional", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preparation" + } + }, + "expected": { + "selected": true + } + }, + { + "id": "caps-base-preparation-generated-grammar", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-base-preparation-verification-generated-grammar", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-base-producer-carrier-generated-grammar", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-extended-preparation-generated-grammar", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-extended-preparation-verification-generated-grammar", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "caps-extended-producer-carrier-generated-grammar", + "request": { + "admission": { + "capabilities": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "required": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + "sizes": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + } + }, + "expected": { + "admitted": true + } + }, + { + "id": "selection-preparation-only", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "preparation" + ] + }, + "role": "preparation" + } + }, + "expected": { + "selected": true + } + }, + { + "id": "selection-profile-type-array-base", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": [ + "base" + ], + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preview" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-profile-type-array-extended", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": [ + "extended" + ], + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preview" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-profile-type-empty-array", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": [], + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preview" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-profile-type-object", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": {}, + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preview" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-profile-type-null", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": null, + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preview" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-profile-type-number", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": 0, + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preview" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + }, + { + "id": "selection-profile-type-boolean", + "request": { + "selection": { + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": true, + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "role": "preview" + } + }, + "expected": { + "refusal": "capability-unsupported" + } + } + ], + "inputs": { + "conformance/retained-column/1/examples.json": "sha256:113354682037e3b576be23d812ab86d280718a50ca1bf1a631e85ba91eea5cca", + "conformance/retained-column/1/preparations.json": "sha256:ff9450279cc65db4422f3644975b5b1128396e2e9a1f17effd4dcc732bb5317a", + "conformance/retained-column/1/capabilities.json": "sha256:fd8b969e5372cdf630fe12ec4034a2bf929d47ea56664abb0b3f510ad761f644", + "conformance/retained-column/1/manifest.json": "sha256:b78cdac121b4b936614c9e652af3c78bde8b84184fd0a04f84effdd2c3eaf2c8" + }, + "rawValueBounds": [ + { + "id": "asserted-raw-exact", + "origin": "asserted", + "unit": "x", + "repeat": 16000, + "expected": { + "issues": [], + "valueJson": "\"ok\"", + "claimAdmissible": true + } + }, + { + "id": "asserted-raw-one-over", + "origin": "asserted", + "unit": "x", + "repeat": 16001, + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "generated-raw-list-16049", + "origin": "generated", + "listItems": 16, + "itemBytes": 1000, + "expectedBytes": 16049, + "expected": { + "issues": [], + "valueJson": "\"ok\"", + "claimAdmissible": true + } + }, + { + "id": "generated-raw-independent-exact", + "origin": "generated", + "unit": "x", + "repeat": 524288, + "scope": "frame API only; not independently realizable inside the fixed snapshot", + "expected": { + "issues": [], + "valueJson": "\"ok\"", + "claimAdmissible": true + } + }, + { + "id": "generated-raw-independent-one-over", + "origin": "generated", + "unit": "x", + "repeat": 524289, + "scope": "frame API only", + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "asserted-utf8-exact", + "origin": "asserted", + "unit": "\u00e9", + "repeat": 8000, + "expected": { + "issues": [], + "valueJson": "\"ok\"", + "claimAdmissible": true + } + }, + { + "id": "asserted-utf8-one-over", + "origin": "asserted", + "unit": "\u00e9", + "repeat": 8000, + "suffix": "x", + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "generated-utf8-independent-exact", + "origin": "generated", + "unit": "\u00e9", + "repeat": 262144, + "scope": "frame API only", + "expected": { + "issues": [], + "valueJson": "\"ok\"", + "claimAdmissible": true + } + }, + { + "id": "generated-utf8-independent-one-over", + "origin": "generated", + "unit": "\u00e9", + "repeat": 262144, + "suffix": "x", + "scope": "frame API only", + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "asserted-extended-not-doubled", + "origin": "asserted", + "unit": "x", + "repeat": 16001, + "profile": "extended", + "expected": { + "refusal": "input-over-bound" + } + }, + { + "id": "generated-extended-not-doubled", + "origin": "generated", + "unit": "x", + "repeat": 524289, + "profile": "extended", + "scope": "frame API only; no Extended preparation claim", + "expected": { + "refusal": "input-over-bound" + } + } + ] +} diff --git a/internal/retainedcolumns/testdata/rc2/contract.schema.json b/internal/retainedcolumns/testdata/rc2/contract.schema.json new file mode 100644 index 0000000..90a6f78 --- /dev/null +++ b/internal/retainedcolumns/testdata/rc2/contract.schema.json @@ -0,0 +1,1509 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://judgmentpack.org/schema/retained-column/1/contract.schema.json", + "title": "Selected retained-column/1 contract fragments", + "description": "Structural projection of spec/retained-column.md. Scalar, duplicate, byte, embedded JSON, signature, custody and semantic checks are separately required.", + "$defs": { + "conversion": { + "oneOf": [ + { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "kind": { + "enum": [ + "text", + "decimal", + "number", + "research-value" + ] + } + }, + "required": [ + "contractVersion", + "column", + "kind" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "kind": { + "const": "boolean" + }, + "trueValue": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "falseValue": { + "type": "string", + "minLength": 1, + "maxLength": 160 + } + }, + "required": [ + "contractVersion", + "column", + "kind", + "trueValue", + "falseValue" + ], + "additionalProperties": false + } + ] + }, + "availability": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 + } + }, + "required": [ + "contractVersion", + "column" + ], + "additionalProperties": false + }, + "fact": { + "type": "object", + "properties": { + "target": { + "type": "string", + "pattern": "^(?:/(?:[^~]|~[01])*)*$", + "minLength": 1 + }, + "source": { + "type": "string", + "pattern": "^(?:/(?:[^~]|~[01])*)*$" + }, + "conversion": { + "$ref": "#/$defs/conversion" + } + }, + "required": [ + "target", + "source", + "conversion" + ], + "additionalProperties": false + }, + "evidence": { + "type": "object", + "properties": { + "requirement": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "source": { + "type": "string", + "pattern": "^(?:/(?:[^~]|~[01])*)*$" + }, + "availability": { + "$ref": "#/$defs/availability" + } + }, + "required": [ + "requirement", + "source", + "availability" + ], + "additionalProperties": false + }, + "declarationEntry": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "fieldJson": { + "type": "string", + "maxLength": 16384 + } + }, + "required": [ + "name", + "fieldJson" + ], + "additionalProperties": false + }, + "declaration": { + "type": "object", + "properties": { + "recipeRevision": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "fields": { + "type": "array", + "maxItems": 1000, + "items": { + "$ref": "#/$defs/declarationEntry" + } + } + }, + "required": [ + "recipeRevision", + "fields" + ], + "additionalProperties": false + }, + "field": { + "type": "object", + "properties": { + "status": { + "enum": [ + "supported", + "interpretation", + "missing", + "conflicting", + "inaccessible", + "stale" + ] + }, + "valueJson": { + "type": "string", + "maxLength": 4194304 + } + }, + "required": [ + "status" + ], + "additionalProperties": false + }, + "research": { + "type": "object", + "properties": { + "recordRecipeRevision": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "declaration": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/declaration" + } + ] + }, + "fields": { + "type": "object", + "maxProperties": 1000, + "propertyNames": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "additionalProperties": { + "$ref": "#/$defs/field" + } + } + }, + "required": [ + "recordRecipeRevision", + "declaration", + "fields" + ], + "additionalProperties": false + }, + "frame": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "origin": { + "enum": [ + "asserted", + "generated" + ] + }, + "values": { + "type": "object", + "maxProperties": 1000, + "propertyNames": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "additionalProperties": { + "type": [ + "string", + "null" + ], + "maxLength": 524288 + } + }, + "research": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/research" + } + ] + } + }, + "required": [ + "contractVersion", + "origin", + "values", + "research" + ], + "additionalProperties": false, + "allOf": [ + { + "if": { + "properties": { + "origin": { + "const": "asserted" + } + } + }, + "then": { + "properties": { + "research": { + "type": "null" + }, + "values": { + "additionalProperties": { + "maxLength": 16000 + } + } + } + }, + "else": { + "properties": { + "research": { + "$ref": "#/$defs/research" + } + } + } + } + ] + }, + "input": { + "oneOf": [ + { + "type": "object", + "properties": { + "state": { + "const": "missing" + } + }, + "required": [ + "state" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "state": { + "const": "present" + }, + "ref": { + "$ref": "#/$defs/inputReference" + } + }, + "required": [ + "state", + "ref" + ], + "additionalProperties": false + } + ] + }, + "result": { + "oneOf": [ + { + "type": "object", + "properties": { + "state": { + "const": "value" + }, + "json": { + "type": "string" + } + }, + "required": [ + "state", + "json" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "state": { + "const": "omitted" + }, + "reason": { + "enum": [ + "missing", + "blank", + "legacy-null", + "unavailable" + ] + } + }, + "required": [ + "state", + "reason" + ], + "additionalProperties": false + } + ] + }, + "researchIdentity": { + "type": "object", + "properties": { + "recipeRevision": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "fieldSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + } + }, + "required": [ + "recipeRevision", + "fieldSha256" + ], + "additionalProperties": false + }, + "columnTransformation": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "input": { + "$ref": "#/$defs/input" + }, + "result": { + "$ref": "#/$defs/result" + }, + "researchIdentity": { + "$ref": "#/$defs/researchIdentity" + } + }, + "required": [ + "contractVersion", + "column", + "input", + "result" + ], + "additionalProperties": false + }, + "generatedCarrier": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "originalSnapshotJson": { + "type": "string" + }, + "originalSnapshotSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "retained": { + "allOf": [ + { + "$ref": "#/$defs/frame" + }, + { + "properties": { + "origin": { + "const": "generated" + } + } + } + ] + } + }, + "required": [ + "contractVersion", + "originalSnapshotJson", + "originalSnapshotSha256", + "retained" + ], + "additionalProperties": false + }, + "specIdentity": { + "type": "object", + "properties": { + "version": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "revision": { + "type": "string", + "pattern": "^[0-9a-f]{40}$" + }, + "schemaSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "corpusSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + } + }, + "required": [ + "version", + "revision", + "schemaSha256", + "corpusSha256" + ], + "additionalProperties": false + }, + "conversionCapability": { + "oneOf": [ + { + "type": "object", + "properties": { + "contract": { + "const": "retained-column/1" + }, + "spec": { + "$ref": "#/$defs/specIdentity" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "role": { + "const": "document-validation" + }, + "limits": { + "type": "object", + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "documentBytes", + "frameBytes" + ], + "additionalProperties": false + } + }, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "contract": { + "const": "retained-column/1" + }, + "spec": { + "$ref": "#/$defs/specIdentity" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "role": { + "const": "preview" + }, + "limits": { + "type": "object", + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "combinedBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "profilesBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "requestBodyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "inputReplyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "documentBytes", + "combinedBytes", + "frameBytes", + "profilesBytes", + "requestBodyBytes", + "inputReplyBytes" + ], + "additionalProperties": false + } + }, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "contract": { + "const": "retained-column/1" + }, + "spec": { + "$ref": "#/$defs/specIdentity" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "role": { + "const": "preparation" + }, + "limits": { + "type": "object", + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "combinedBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "preparationBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "recordBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "profilesBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "requestBodyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "inputReplyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "releaseStoredBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "runStoredBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "exportBaseBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "exportWireBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "documentBytes", + "combinedBytes", + "frameBytes", + "preparationBytes", + "recordBytes", + "profilesBytes", + "requestBodyBytes", + "inputReplyBytes", + "releaseStoredBytes", + "runStoredBytes", + "exportBaseBytes", + "exportWireBytes" + ], + "additionalProperties": false + }, + "producerGrammar": { + "const": "desk-reviewed-input/1" + } + }, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "contract": { + "const": "retained-column/1" + }, + "spec": { + "$ref": "#/$defs/specIdentity" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "role": { + "const": "preparation-verification" + }, + "limits": { + "type": "object", + "properties": { + "documentBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "combinedBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "frameBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "preparationBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "recordBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "profilesBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "requestBodyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "inputReplyBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "releaseStoredBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "runStoredBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "exportBaseBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "exportWireBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "documentBytes", + "combinedBytes", + "frameBytes", + "preparationBytes", + "recordBytes", + "profilesBytes", + "requestBodyBytes", + "inputReplyBytes", + "releaseStoredBytes", + "runStoredBytes", + "exportBaseBytes", + "exportWireBytes" + ], + "additionalProperties": false + }, + "producerGrammar": { + "const": "desk-reviewed-input/1" + } + }, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "contract": { + "const": "retained-column/1" + }, + "spec": { + "$ref": "#/$defs/specIdentity" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "role": { + "const": "producer-carrier" + }, + "limits": { + "type": "object", + "properties": { + "originalSnapshotBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "carrierBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "grantBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "adapterStdoutBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "responseBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "profilesBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "originalSnapshotBytes", + "carrierBytes", + "grantBytes", + "adapterStdoutBytes", + "responseBytes", + "profilesBytes" + ], + "additionalProperties": false + }, + "producerGrammar": { + "const": "desk-reviewed-input/1" + } + }, + "required": [ + "contract", + "spec", + "profile", + "role", + "limits" + ], + "additionalProperties": false + } + ] + }, + "capabilities": { + "type": "object", + "properties": { + "conversionContracts": { + "type": "array", + "maxItems": 32, + "items": { + "$ref": "#/$defs/conversionCapability" + } + } + }, + "required": [ + "conversionContracts" + ], + "additionalProperties": false + }, + "retainedColumnProducer": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "grammar": { + "const": "desk-reviewed-input/1" + } + }, + "required": [ + "contractVersion", + "grammar" + ], + "additionalProperties": false + }, + "trustedProducerProjection": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$" + }, + "profileDigest": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "class": { + "const": "generated" + }, + "source": { + "const": "desk-inputs" + }, + "authority": { + "type": "string", + "minLength": 1, + "maxLength": 256 + }, + "shape": { + "const": "mcp" + }, + "endpoint": { + "const": "desk-local:reviewed-inputs" + }, + "adapter": { + "type": "object", + "properties": { + "name": { + "const": "jpack-desk/reviewed-input" + }, + "version": { + "const": "2" + }, + "digest": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + } + }, + "required": [ + "name", + "version", + "digest" + ], + "additionalProperties": false + }, + "tools": { + "type": "array", + "items": { + "const": "read_reviewed_input" + }, + "minItems": 1, + "maxItems": 1 + }, + "retainedColumnProducer": { + "$ref": "#/$defs/retainedColumnProducer" + } + }, + "required": [ + "id", + "profileDigest", + "class", + "source", + "authority", + "shape", + "endpoint", + "adapter", + "tools", + "retainedColumnProducer" + ], + "additionalProperties": false + }, + "producerSourceBinding": { + "type": "object", + "properties": { + "kind": { + "const": "operation" + }, + "profile": { + "type": "string", + "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$" + }, + "profileDigest": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + } + }, + "required": [ + "kind", + "profile", + "profileDigest" + ], + "additionalProperties": false + }, + "deskSnapshotProjection": { + "type": "object", + "properties": { + "grammar": { + "const": "desk-reviewed-input/1" + }, + "snapshotVersion": { + "const": 1 + }, + "snapshotClass": { + "const": "generated" + }, + "recordClass": { + "const": "generated" + }, + "runId": { + "type": "string", + "pattern": "^research_[a-f0-9]{32}$" + }, + "recordRunId": { + "type": "string", + "pattern": "^research_[a-f0-9]{32}$" + }, + "recipeVersion": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "recordRecipeVersion": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "values": { + "type": "object", + "propertyNames": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "maxProperties": 1000, + "additionalProperties": { + "type": "string", + "maxLength": 524288 + } + }, + "declarations": { + "type": "array", + "items": { + "$ref": "#/$defs/declarationEntry" + }, + "maxItems": 1000 + }, + "fields": { + "type": "object", + "propertyNames": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "maxProperties": 1000, + "additionalProperties": { + "$ref": "#/$defs/field" + } + } + }, + "required": [ + "grammar", + "snapshotVersion", + "snapshotClass", + "recordClass", + "runId", + "recordRunId", + "recipeVersion", + "recordRecipeVersion", + "values", + "declarations", + "fields" + ], + "additionalProperties": false + }, + "previewAvailability": { + "type": "object", + "properties": { + "contractVersion": { + "const": "1" + }, + "column": { + "type": "string", + "minLength": 1, + "maxLength": 160 + }, + "kind": { + "const": "evidence-availability" + } + }, + "required": [ + "contractVersion", + "column", + "kind" + ], + "additionalProperties": false + }, + "generatedConsistencyBody": { + "type": "object", + "properties": { + "carrier": { + "$ref": "#/$defs/generatedCarrier" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "limits": { + "type": "object", + "properties": { + "originalSnapshotBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + }, + "carrierBytes": { + "type": "integer", + "minimum": 1, + "maximum": 9007199254740991 + } + }, + "required": [ + "originalSnapshotBytes", + "carrierBytes" + ], + "additionalProperties": false + }, + "trustedProducer": { + "$ref": "#/$defs/trustedProducerProjection" + }, + "sourceBinding": { + "$ref": "#/$defs/producerSourceBinding" + }, + "receiptResultDigest": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "rule": { + "oneOf": [ + { + "$ref": "#/$defs/conversion" + }, + { + "$ref": "#/$defs/previewAvailability" + } + ] + } + }, + "required": [ + "carrier", + "profile", + "limits", + "trustedProducer", + "sourceBinding", + "receiptResultDigest", + "rule" + ], + "additionalProperties": false + }, + "generatedConsistencyRequest": { + "type": "object", + "properties": { + "generatedConsistency": { + "$ref": "#/$defs/generatedConsistencyBody" + } + }, + "required": [ + "generatedConsistency" + ], + "additionalProperties": false + }, + "generatedConsistencyResult": { + "type": "object", + "properties": { + "consistent": { + "const": true + }, + "acquisition": { + "const": "not-verified" + }, + "history": { + "const": "not-checked" + }, + "originalSnapshotSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "frameSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "revisionIdentity": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "projection": { + "$ref": "#/$defs/deskSnapshotProjection" + }, + "transformation": { + "$ref": "#/$defs/columnTransformation" + } + }, + "required": [ + "consistent", + "acquisition", + "history", + "originalSnapshotSha256", + "frameSha256", + "revisionIdentity", + "projection", + "transformation" + ], + "additionalProperties": false + }, + "inputReference": { + "type": "object", + "properties": { + "frameSha256": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "location": { + "enum": [ + "values", + "research-value" + ] + } + }, + "required": [ + "frameSha256", + "location" + ], + "additionalProperties": false + }, + "signedResponseFragment": { + "type": "object", + "description": "Envelope structure only; receipt/salts must separately satisfy the existing acquisition schema and verification. No signature validation is implied.", + "properties": { + "result": { + "$ref": "#/$defs/generatedCarrier" + }, + "receipt": { + "type": "object" + }, + "salts": { + "type": "object" + } + }, + "required": [ + "result", + "receipt", + "salts" + ], + "additionalProperties": false + }, + "preparationSource": { + "oneOf": [ + { + "type": "object", + "properties": { + "response": { + "$ref": "#/$defs/signedResponseFragment" + } + }, + "required": [ + "response" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "retainedResponseJson": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "retainedResponseJson" + ], + "additionalProperties": false + } + ] + }, + "assertedCaseCustody": { + "description": "Only the case custody slot; existing enclosing source mapping/sources/import siblings remain counted and unchanged. Embedded retainedCaseJson must parse as a duplicate-free UTF8 JSON object.", + "oneOf": [ + { + "type": "object", + "properties": { + "case": { + "type": "object" + } + }, + "required": [ + "case" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "retainedCaseJson": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "retainedCaseJson" + ], + "additionalProperties": false + } + ] + }, + "selection": { + "description": "Exact installed-package selector, carried before a larger body read and persisted for offline custody. No caller maxima or inferred support. Roles use the fixed canonical order; readers enforce ordering and installed identity.", + "type": "object", + "properties": { + "contract": { + "const": "retained-column/1" + }, + "spec": { + "$ref": "#/$defs/specIdentity" + }, + "profile": { + "enum": [ + "base", + "extended" + ] + }, + "roles": { + "type": "array", + "minItems": 1, + "maxItems": 5, + "uniqueItems": true, + "items": { + "enum": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + } + } + }, + "required": [ + "contract", + "spec", + "profile", + "roles" + ], + "additionalProperties": false + }, + "selectedPreparation": { + "type": "object", + "required": [ + "conversionContract", + "version", + "verifiedAt", + "mappingDigest", + "verification", + "cites", + "lineage", + "outcomes" + ], + "additionalProperties": false, + "properties": { + "conversionContract": { + "$ref": "#/$defs/selection" + }, + "version": { + "enum": [ + 2, + 3 + ] + }, + "verifiedAt": { + "type": "string", + "format": "date-time" + }, + "mappingDigest": { + "type": "string", + "pattern": "^sha256:[0-9a-f]{64}$" + }, + "verification": { + "type": "string" + }, + "cites": { + "type": "array" + }, + "lineage": { + "type": "array" + }, + "outcomes": { + "type": "array" + } + } + } + }, + "oneOf": [ + { + "$ref": "#/$defs/fact" + }, + { + "$ref": "#/$defs/evidence" + }, + { + "$ref": "#/$defs/frame" + }, + { + "$ref": "#/$defs/columnTransformation" + }, + { + "$ref": "#/$defs/generatedCarrier" + }, + { + "$ref": "#/$defs/capabilities" + }, + { + "$ref": "#/$defs/retainedColumnProducer" + }, + { + "$ref": "#/$defs/trustedProducerProjection" + }, + { + "$ref": "#/$defs/producerSourceBinding" + }, + { + "$ref": "#/$defs/deskSnapshotProjection" + }, + { + "$ref": "#/$defs/generatedConsistencyRequest" + }, + { + "$ref": "#/$defs/generatedConsistencyResult" + }, + { + "$ref": "#/$defs/preparationSource" + }, + { + "$ref": "#/$defs/assertedCaseCustody" + }, + { + "$ref": "#/$defs/selection" + }, + { + "$ref": "#/$defs/selectedPreparation" + } + ] +} diff --git a/internal/retainedcolumns/testdata/rc2/examples.json b/internal/retainedcolumns/testdata/rc2/examples.json new file mode 100644 index 0000000..eab4932 --- /dev/null +++ b/internal/retainedcolumns/testdata/rc2/examples.json @@ -0,0 +1,929 @@ +{ + "status": "Draft fragments, not accepted whole Dialect or preparation documents", + "documentFragment": { + "version": 2, + "provider": "", + "facts": null, + "evidence": null, + "case": { + "facts": [ + { + "target": "/eligible", + "source": "/retained", + "conversion": { + "contractVersion": "1", + "column": "Eligible", + "kind": "boolean", + "trueValue": "YES", + "falseValue": "NO" + } + } + ], + "evidence": [ + { + "requirement": "receipt", + "source": "/retained", + "availability": { + "contractVersion": "1", + "column": "Evidence" + } + } + ] + } + }, + "generatedFrame": { + "contractVersion": "1", + "origin": "generated", + "values": { + "Eligible": "YES" + }, + "research": { + "recordRecipeRevision": "recipe:1", + "declaration": { + "recipeRevision": "recipe:1", + "fields": [ + { + "name": "Eligible", + "fieldJson": "{\"name\":\"Eligible\",\"type\":\"boolean\",\"description\":\"Retained original declaration.\"}" + } + ] + }, + "fields": { + "Eligible": { + "status": "supported", + "valueJson": "false" + } + } + } + }, + "assertedFrame": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "Eligible": "NO", + "Evidence": "absent", + "Historical": null + }, + "research": null + }, + "lineageFragment": { + "contractVersion": "1", + "column": "Eligible", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:5e15070ee22fcb46096f162d845f4604a16523515a61fe089211339ec08529bf", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "true" + } + }, + "currentRecipeRevision": "recipe:8", + "generatedCarrier": { + "contractVersion": "1", + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "capabilitiesFragment": { + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "document-validation", + "limits": { + "documentBytes": 2097152, + "frameBytes": 4194304 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preview", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "preparation-verification", + "limits": { + "documentBytes": 2097152, + "combinedBytes": 25165824, + "frameBytes": 4194304, + "preparationBytes": 33554432, + "recordBytes": 17825792, + "profilesBytes": 163840, + "requestBodyBytes": 33554432, + "inputReplyBytes": 75497472, + "releaseStoredBytes": 83886080, + "runStoredBytes": 83886080, + "exportBaseBytes": 150994944, + "exportWireBytes": 176160768 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "extended", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 163840 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + }, + "capabilityIdentityNote": "Synthetic test pins only; no implementation advertises these capabilities. Preparation/record maxima and producer transport require real accounting before advertisement.", + "assertedAppendBefore": { + "origin": { + "originalValues": { + "Eligible": "NO", + "Evidence": "absent", + "Historical": null + }, + "source": "source:original", + "recipeRevision": "recipe:7", + "receipt": "receipt:original" + }, + "prepared": { + "Eligible": "NO", + "Evidence": "absent" + }, + "acquisitions": [ + { + "source": "sibling:1", + "receipt": "receipt:sibling" + } + ] + }, + "assertedAppendAfter": { + "origin": { + "originalValues": { + "Eligible": "NO", + "Evidence": "absent", + "Historical": null + }, + "source": "source:original", + "recipeRevision": "recipe:7", + "receipt": "receipt:original" + }, + "prepared": { + "Eligible": "NO", + "Evidence": "absent" + }, + "acquisitions": [ + { + "source": "sibling:1", + "receipt": "receipt:sibling" + } + ], + "retained": { + "contractVersion": "1", + "origin": "asserted", + "values": { + "Eligible": "NO", + "Evidence": "absent", + "Historical": null + }, + "research": null + } + }, + "publicationBindingExample": { + "publishedDocumentJson": "{\"version\":2,\"provider\":\"published\"}", + "boundDocumentJson": "{\"version\":2,\"provider\":\"bound\"}", + "publishedDocumentSha256": "sha256:747a7afb3de48dd7dea36b8c3dc8ce12acb58730736c07b5a7f23a417ecaa53f", + "boundDocumentSha256": "sha256:c3bbbe4c46c347372161ffc863175754f3be6b893f3c650a9949274c246e62e1" + }, + "identityDomains": { + "originalSnapshot": "SHA-256 of originalSnapshotJson UTF-8 bytes", + "rawCarrier": "SHA-256 of complete received carrier bytes, including spelling and whitespace", + "frame": "separate exact received retained frame byte commitment", + "canonicalResult": "existing canonical result digest over the new wrapper; never original snapshot identity", + "sourceRecipe": "original source and recipe commitments remain separate", + "publishedBound": "published and bound document identities remain distinct; count both retained copies" + }, + "generatedReplaceBefore": { + "resultJson": "{\"origin\":{\"source\":\"source:original\",\"recipeRevision\":\"recipe:7\",\"receipt\":\"receipt:original\"},\"values\":{\"A\":\"-0\",\"B\":\"legacy\"},\"acquisitions\":[{\"source\":\"sibling:1\",\"receipt\":\"receipt:sibling\"}],\"fields\":{\"A\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"B\":{\"status\":\"interpretation\",\"valueJson\":\"\\\"\\\\ud800\\\"\"}}}", + "source": "source:original", + "recipeRevision": "recipe:7", + "acquisitions": [ + { + "source": "sibling:1", + "receipt": "receipt:sibling" + } + ] + }, + "generatedReplaceAfter": { + "resultJson": "{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"origin\\\":{\\\"source\\\":\\\"source:original\\\",\\\"recipeRevision\\\":\\\"recipe:7\\\",\\\"receipt\\\":\\\"receipt:original\\\"},\\\"values\\\":{\\\"A\\\":\\\"-0\\\",\\\"B\\\":\\\"legacy\\\"},\\\"acquisitions\\\":[{\\\"source\\\":\\\"sibling:1\\\",\\\"receipt\\\":\\\"receipt:sibling\\\"}],\\\"fields\\\":{\\\"A\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"B\\\":{\\\"status\\\":\\\"interpretation\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\\ud800\\\\\\\"\\\"}}}\",\"originalSnapshotSha256\":\"sha256:db9ac0beecaec9714510fc3fa66677564b6dcf1c6fee754d43d343a07ff24f9b\",\"retained\":{\"contractVersion\":\"1\",\"origin\":\"generated\",\"values\":{\"A\":\"-0\",\"B\":\"legacy\"},\"research\":{\"recordRecipeRevision\":\"recipe:7\",\"declaration\":{\"recipeRevision\":\"recipe:7\",\"fields\":[{\"name\":\"A\",\"fieldJson\":\"{\\\"name\\\":\\\"A\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Original declaration.\\\"}\"},{\"name\":\"B\",\"fieldJson\":\"{\\\"name\\\":\\\"B\\\",\\\"type\\\":\\\"string\\\"}\"}]},\"fields\":{\"A\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"B\":{\"status\":\"interpretation\",\"valueJson\":\"\\\"\\\\ud800\\\"\"}}}}}", + "source": "source:original", + "recipeRevision": "recipe:7", + "acquisitions": [ + { + "source": "sibling:1", + "receipt": "receipt:sibling" + } + ] + }, + "producerConsistency": { + "request": { + "generatedConsistency": { + "carrier": { + "contractVersion": "1", + "originalSnapshotJson": "{\"version\":1,\"class\":\"generated\",\"preparationId\":\"prep_synthetic\",\"recipeVersion\":8,\"qualification\":null,\"prepared\":{\"ignored\":\"not raw input\"},\"record\":{\"id\":\"record_synthetic\",\"name\":\"Synthetic\",\"sourceId\":\"source_synthetic\",\"row\":1,\"class\":\"generated\",\"status\":\"ready\",\"values\":{\"Text\":\" A \",\"Integer\":\"-0\",\"Decimal\":\"1.2300\",\"Boolean\":\"false\",\"List\":\"[]\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Number\":\"-0\",\"Evidence\":\"present\"},\"research\":{\"runId\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"entity\":{\"id\":\"entity_synthetic\",\"kind\":\"record\",\"name\":\"Synthetic\",\"url\":\"https://example.test/\",\"fields\":{\"Text\":{\"status\":\"supported\",\"value\":\" A \",\"sources\":[],\"note\":\"opaque source note\"},\"Integer\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Decimal\":{\"status\":\"supported\",\"value\":\"1.2300\",\"sources\":[],\"note\":\"opaque source note\"},\"Boolean\":{\"status\":\"supported\",\"value\":false,\"sources\":[],\"note\":\"opaque source note\"},\"List\":{\"status\":\"supported\",\"value\":[],\"sources\":[],\"note\":\"opaque source note\"},\"Range\":{\"status\":\"supported\",\"value\":{\"min\":\"1.00\",\"max\":\"2.0\"},\"sources\":[],\"note\":\"opaque source note\"},\"String\":{\"status\":\"supported\",\"value\":\"\",\"sources\":[],\"note\":\"opaque source note\"},\"Number\":{\"status\":\"supported\",\"value\":-0,\"sources\":[],\"note\":\"opaque source note\"},\"Evidence\":{\"status\":\"supported\",\"value\":\"present\",\"sources\":[],\"note\":\"opaque source note\"}}}}},\"values\":{\"Text\":\"filtered visible\"},\"research\":{\"id\":\"research_11111111111111111111111111111111\",\"recipeVersion\":7,\"recipe\":{\"version\":1,\"target\":\"records\",\"fields\":[{ \"type\" : \"text\", \"name\" : \"Text\", \"description\" : \"A \\u0042 / kept\" },{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"},{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"},{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"},{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"},{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"},{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"},{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"},{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}],\"criteria\":[],\"ai\":{},\"limits\":{}},\"intent\":\"Opaque original intent\",\"createdAt\":\"2026-01-01T00:00:00Z\",\"approvedLimits\":{},\"budgetApprovals\":[],\"workflowApproval\":null,\"modelResponses\":[],\"sources\":[]},\"reviews\":[],\"legacyOpaque\":{\"escaped\":\"\\ud800\"}}", + "originalSnapshotSha256": "sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "Text": " A ", + "Integer": "-0", + "Decimal": "1.2300", + "Boolean": "false", + "List": "[]", + "Range": "{\"min\":\"1.00\",\"max\":\"2.0\"}", + "String": "", + "Number": "-0", + "Evidence": "present" + }, + "research": { + "recordRecipeRevision": "sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed", + "declaration": { + "recipeRevision": "sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed", + "fields": [ + { + "name": "Text", + "fieldJson": "{\"type\":\"text\",\"name\":\"Text\",\"description\":\"A \\u0042 / kept\"}" + }, + { + "name": "Integer", + "fieldJson": "{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"}" + }, + { + "name": "Decimal", + "fieldJson": "{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"}" + }, + { + "name": "Boolean", + "fieldJson": "{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"}" + }, + { + "name": "List", + "fieldJson": "{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"}" + }, + { + "name": "Range", + "fieldJson": "{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"}" + }, + { + "name": "String", + "fieldJson": "{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"}" + }, + { + "name": "Number", + "fieldJson": "{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"}" + }, + { + "name": "Evidence", + "fieldJson": "{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}" + } + ] + }, + "fields": { + "Text": { + "status": "supported", + "valueJson": "\" A \"" + }, + "Integer": { + "status": "supported", + "valueJson": "-0" + }, + "Decimal": { + "status": "supported", + "valueJson": "\"1.2300\"" + }, + "Boolean": { + "status": "supported", + "valueJson": "false" + }, + "List": { + "status": "supported", + "valueJson": "[]" + }, + "Range": { + "status": "supported", + "valueJson": "{\"min\":\"1.00\",\"max\":\"2.0\"}" + }, + "String": { + "status": "supported", + "valueJson": "\"\"" + }, + "Number": { + "status": "supported", + "valueJson": "-0" + }, + "Evidence": { + "status": "supported", + "valueJson": "\"present\"" + } + } + } + } + }, + "profile": "base", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728 + }, + "trustedProducer": { + "id": "reviewed-columns", + "profileDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "class": "generated", + "source": "desk-inputs", + "authority": "synthetic-trusted-host", + "shape": "mcp", + "endpoint": "desk-local:reviewed-inputs", + "adapter": { + "name": "jpack-desk/reviewed-input", + "version": "2", + "digest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + }, + "tools": [ + "read_reviewed_input" + ], + "retainedColumnProducer": { + "contractVersion": "1", + "grammar": "desk-reviewed-input/1" + } + }, + "sourceBinding": { + "kind": "operation", + "profile": "reviewed-columns", + "profileDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + }, + "receiptResultDigest": "sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4", + "rule": { + "contractVersion": "1", + "column": "Text", + "kind": "research-value" + } + } + }, + "expected": { + "consistent": true, + "acquisition": "not-verified", + "history": "not-checked", + "originalSnapshotSha256": "sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea", + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "revisionIdentity": "sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed", + "projection": { + "grammar": "desk-reviewed-input/1", + "snapshotVersion": 1, + "snapshotClass": "generated", + "recordClass": "generated", + "runId": "research_11111111111111111111111111111111", + "recordRunId": "research_11111111111111111111111111111111", + "recipeVersion": 7, + "recordRecipeVersion": 7, + "values": { + "Text": " A ", + "Integer": "-0", + "Decimal": "1.2300", + "Boolean": "false", + "List": "[]", + "Range": "{\"min\":\"1.00\",\"max\":\"2.0\"}", + "String": "", + "Number": "-0", + "Evidence": "present" + }, + "declarations": [ + { + "name": "Text", + "fieldJson": "{\"type\":\"text\",\"name\":\"Text\",\"description\":\"A \\u0042 / kept\"}" + }, + { + "name": "Integer", + "fieldJson": "{\"name\":\"Integer\",\"type\":\"integer\",\"description\":\"Original integer\"}" + }, + { + "name": "Decimal", + "fieldJson": "{\"name\":\"Decimal\",\"type\":\"decimal\",\"description\":\"Original decimal\"}" + }, + { + "name": "Boolean", + "fieldJson": "{\"name\":\"Boolean\",\"type\":\"boolean\",\"description\":\"Original boolean\"}" + }, + { + "name": "List", + "fieldJson": "{\"name\":\"List\",\"type\":\"text-list\",\"description\":\"Original list\"}" + }, + { + "name": "Range", + "fieldJson": "{\"name\":\"Range\",\"type\":\"range\",\"description\":\"Original range\"}" + }, + { + "name": "String", + "fieldJson": "{\"name\":\"String\",\"type\":\"string\",\"description\":\"Historical string\"}" + }, + { + "name": "Number", + "fieldJson": "{\"name\":\"Number\",\"type\":\"number\",\"description\":\"Historical number\"}" + }, + { + "name": "Evidence", + "fieldJson": "{\"name\":\"Evidence\",\"type\":\"text\",\"description\":\"Availability\"}" + } + ], + "fields": { + "Text": { + "status": "supported", + "valueJson": "\" A \"" + }, + "Integer": { + "status": "supported", + "valueJson": "-0" + }, + "Decimal": { + "status": "supported", + "valueJson": "\"1.2300\"" + }, + "Boolean": { + "status": "supported", + "valueJson": "false" + }, + "List": { + "status": "supported", + "valueJson": "[]" + }, + "Range": { + "status": "supported", + "valueJson": "{\"min\":\"1.00\",\"max\":\"2.0\"}" + }, + "String": { + "status": "supported", + "valueJson": "\"\"" + }, + "Number": { + "status": "supported", + "valueJson": "-0" + }, + "Evidence": { + "status": "supported", + "valueJson": "\"present\"" + } + } + }, + "transformation": { + "contractVersion": "1", + "column": "Text", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:228ee51e667ef31afbbba90d7a4e7025250cc20b1c7f2fbb0a414f1e00a5392c", + "location": "research-value" + } + }, + "result": { + "state": "value", + "json": "\" A \"" + }, + "researchIdentity": { + "recipeRevision": "sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed", + "fieldSha256": "sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83" + } + } + } + }, + "producerGrammarBinding": { + "id": "reviewed-columns", + "profileDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "class": "generated", + "source": "desk-inputs", + "authority": "synthetic-trusted-host", + "shape": "mcp", + "endpoint": "desk-local:reviewed-inputs", + "adapter": { + "name": "jpack-desk/reviewed-input", + "version": "2", + "digest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + }, + "tools": [ + "read_reviewed_input" + ], + "retainedColumnProducer": { + "contractVersion": "1", + "grammar": "desk-reviewed-input/1" + } + }, + "producerContextNote": "Synthetic independently supplied trust/digest inputs demonstrate consistency only; acquisition and original history are not verified by the prototype.", + "preparationSourceFragment": { + "response": { + "result": { + "contractVersion": "1", + "originalSnapshotJson": "{ \"value\":1e3,\"label\":\"\\u00e9\" }\n", + "originalSnapshotSha256": "sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87", + "retained": { + "contractVersion": "1", + "origin": "generated", + "values": { + "A": "-0", + "B": "legacy" + }, + "research": { + "recordRecipeRevision": "recipe:7", + "declaration": { + "recipeRevision": "recipe:7", + "fields": [ + { + "name": "A", + "fieldJson": "{\"name\":\"A\",\"type\":\"number\",\"description\":\"Original declaration.\"}" + }, + { + "name": "B", + "fieldJson": "{\"name\":\"B\",\"type\":\"string\"}" + } + ] + }, + "fields": { + "A": { + "status": "supported", + "valueJson": "-0" + }, + "B": { + "status": "interpretation", + "valueJson": "\"\\ud800\"" + } + } + } + } + }, + "receipt": {}, + "salts": {} + } + }, + "retainedSourceFragment": { + "retainedResponseJson": "{\"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{ \\\"value\\\":1e3,\\\"label\\\":\\\"\\\\u00e9\\\" }\\n\",\"originalSnapshotSha256\":\"sha256:2bcde75a108ddd8533fbd9736b09bf9117f5393612073bab4b022a04eb3ffd87\",\"retained\":{\"contractVersion\":\"1\",\"origin\":\"generated\",\"values\":{\"A\":\"-0\",\"B\":\"legacy\"},\"research\":{\"recordRecipeRevision\":\"recipe:7\",\"declaration\":{\"recipeRevision\":\"recipe:7\",\"fields\":[{\"name\":\"A\",\"fieldJson\":\"{\\\"name\\\":\\\"A\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Original declaration.\\\"}\"},{\"name\":\"B\",\"fieldJson\":\"{\\\"name\\\":\\\"B\\\",\\\"type\\\":\\\"string\\\"}\"}]},\"fields\":{\"A\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"B\":{\"status\":\"interpretation\",\"valueJson\":\"\\\"\\\\ud800\\\"\"}}}}},\"receipt\":{},\"salts\":{}}" + }, + "sourceRetentionNote": "Structure fragments only. Empty receipt/salts do not authenticate an acquisition. Existing signature/profile/request/freshness checks remain required.", + "assertedCaseCustodyFragment": { + "retainedCaseJson": "{ \"origin\":{\"originalValues\":{\"A\":\"\\t\"},\"n\":1e3}, \"retained\":{ \"contractVersion\":\"1\", \"origin\":\"asserted\", \"values\":{\"A\":\"\\u00e9\\n\"}, \"research\":null } }" + }, + "selectionFragment": { + "contract": "retained-column/1", + "spec": { + "version": "draft-rfc0029", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + } +} diff --git a/internal/retainedcolumns/testdata/rc2/manifest.json b/internal/retainedcolumns/testdata/rc2/manifest.json new file mode 100644 index 0000000..7908137 --- /dev/null +++ b/internal/retainedcolumns/testdata/rc2/manifest.json @@ -0,0 +1,22 @@ +{ + "contract": "retained-column/1", + "distribution": "v0.3.0-rc.2", + "maturity": "draft", + "publication": "release-candidate", + "corpus": "conformance/retained-column/1/cases.json", + "scope": "selected-leaf-support", + "groups": [ + "cases", + "boundaryCases", + "shortestCases", + "interfaceCases", + "producerCases", + "referenceCases", + "capCases", + "preparations", + "exports", + "rawValueBounds" + ], + "historicalDialectRecordings": "remain-staged", + "fixtureInstallation": "synthetic-independent-of-final-commit" +} diff --git a/internal/retainedcolumns/testdata/rc2/preparations.json b/internal/retainedcolumns/testdata/rc2/preparations.json new file mode 100644 index 0000000..08779f3 --- /dev/null +++ b/internal/retainedcolumns/testdata/rc2/preparations.json @@ -0,0 +1,867 @@ +{ + "maturity": "draft", + "distribution": "v0.3.0-rc.2", + "testInstallation": { + "version": "0.3.0-rc.2", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "selector": { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "0000000000000000000000000000000000000000", + "schemaSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111", + "corpusSha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "cases": [ + { + "id": "asserted-all-conversions-and-omissions", + "dialectJson": "{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}", + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}}", + "acquisitionsJson": "{}", + "profilesJson": "[]", + "preparationJson": "{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"}" + }, + { + "id": "asserted-sole-text-custody", + "dialectJson": "{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}", + "caseJson": "{\"retainedCaseJson\":\"{\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"asserted\\\",\\\"research\\\":null,\\\"values\\\":{\\\"Blank\\\":\\\"\\\\t \\\",\\\"Boolean\\\":\\\"NO\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"absent\\\",\\\"Null\\\":null,\\\"Number\\\":\\\"-0\\\",\\\"Text\\\":\\\" A \\\" }},\\\"provenance\\\":{\\\"opaque\\\":\\\"kept\\\"}}\"}", + "acquisitionsJson": "{}", + "profilesJson": "[]", + "preparationJson": "{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"retainedCaseJson\":\"{\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"asserted\\\",\\\"research\\\":null,\\\"values\\\":{\\\"Blank\\\":\\\"\\\\t \\\",\\\"Boolean\\\":\\\"NO\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"absent\\\",\\\"Null\\\":null,\\\"Number\\\":\\\"-0\\\",\\\"Text\\\":\\\" A \\\" }},\\\"provenance\\\":{\\\"opaque\\\":\\\"kept\\\"}}\",\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"}" + }, + { + "id": "generated-eight-types-response", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:d27cdfb72344bc82eec03fb69af6e5f0358fd4f7d31be2cd1f46b332b0152066\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"response\":{\"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"version\\\":1,\\\"class\\\":\\\"generated\\\",\\\"preparationId\\\":\\\"prep_synthetic\\\",\\\"recipeVersion\\\":8,\\\"qualification\\\":null,\\\"prepared\\\":{\\\"ignored\\\":\\\"not raw input\\\"},\\\"record\\\":{\\\"id\\\":\\\"record_synthetic\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"sourceId\\\":\\\"source_synthetic\\\",\\\"row\\\":1,\\\"class\\\":\\\"generated\\\",\\\"status\\\":\\\"ready\\\",\\\"values\\\":{\\\"Text\\\":\\\" A \\\",\\\"Integer\\\":\\\"-0\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Boolean\\\":\\\"false\\\",\\\"List\\\":\\\"[]\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Number\\\":\\\"-0\\\",\\\"Evidence\\\":\\\"present\\\"},\\\"research\\\":{\\\"runId\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"entity\\\":{\\\"id\\\":\\\"entity_synthetic\\\",\\\"kind\\\":\\\"record\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"url\\\":\\\"https://example.test/\\\",\\\"fields\\\":{\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\" A \\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"1.2300\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":false,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":[],\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"},\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"present\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"}}}}},\\\"values\\\":{\\\"Text\\\":\\\"filtered visible\\\"},\\\"research\\\":{\\\"id\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"recipe\\\":{\\\"version\\\":1,\\\"target\\\":\\\"records\\\",\\\"fields\\\":[{ \\\"type\\\" : \\\"text\\\", \\\"name\\\" : \\\"Text\\\", \\\"description\\\" : \\\"A \\\\u0042 / kept\\\" },{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"},{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"},{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"},{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"},{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"},{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"},{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"},{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}],\\\"criteria\\\":[],\\\"ai\\\":{},\\\"limits\\\":{}},\\\"intent\\\":\\\"Opaque original intent\\\",\\\"createdAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"approvedLimits\\\":{},\\\"budgetApprovals\\\":[],\\\"workflowApproval\\\":null,\\\"modelResponses\\\":[],\\\"sources\\\":[]},\\\"reviews\\\":[],\\\"legacyOpaque\\\":{\\\"escaped\\\":\\\"\\\\ud800\\\"}}\",\"originalSnapshotSha256\":\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\",\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"generated\",\"research\":{\"declaration\":{\"fields\":[{\"fieldJson\":\"{\\\"type\\\":\\\"text\\\",\\\"name\\\":\\\"Text\\\",\\\"description\\\":\\\"A \\\\u0042 / kept\\\"}\",\"name\":\"Text\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"}\",\"name\":\"Integer\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"}\",\"name\":\"Decimal\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"}\",\"name\":\"Boolean\"},{\"fieldJson\":\"{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"}\",\"name\":\"List\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"}\",\"name\":\"Range\"},{\"fieldJson\":\"{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"}\",\"name\":\"String\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"}\",\"name\":\"Number\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}\",\"name\":\"Evidence\"}],\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"fields\":{\"Boolean\":{\"status\":\"supported\",\"valueJson\":\"false\"},\"Decimal\":{\"status\":\"supported\",\"valueJson\":\"\\\"1.2300\\\"\"},\"Evidence\":{\"status\":\"supported\",\"valueJson\":\"\\\"present\\\"\"},\"Integer\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"List\":{\"status\":\"supported\",\"valueJson\":\"[]\"},\"Number\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Range\":{\"status\":\"supported\",\"valueJson\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\"},\"String\":{\"status\":\"supported\",\"valueJson\":\"\\\"\\\"\"},\"Text\":{\"status\":\"supported\",\"valueJson\":\"\\\" A \\\"\"}},\"recordRecipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"values\":{\"Boolean\":\"false\",\"Decimal\":\"1.2300\",\"Evidence\":\"present\",\"Integer\":\"-0\",\"List\":\"[]\",\"Number\":\"-0\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Text\":\" A \"}}},\"receipt\":{\"acquisition\":{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"endpoint\":\"desk-local:reviewed-inputs\",\"observedAt\":\"2026-01-01T00:00:00Z\",\"shape\":\"mcp\"},\"argumentsCommitment\":\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\",\"authority\":\"synthetic\",\"callIndex\":0,\"keyId\":\"10ba682c8ad13513971e8b56881aab8b\",\"kind\":\"acquisition\",\"receiptVersion\":\"3\",\"resultDigest\":\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\",\"servedAt\":\"2026-01-01T00:00:00Z\",\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\",\"source\":\"desk-inputs\"},\"salts\":{\"args\":\"0101010101010101010101010101010101010101010101010101010101010101\"}}}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:b5d9c2887a3522b740fd5dfee1ed06a77204545e55c42c98f47b896ca9621087\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:d27cdfb72344bc82eec03fb69af6e5f0358fd4f7d31be2cd1f46b332b0152066\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"sources\":{\"desk\":{\"response\":{\"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"version\\\":1,\\\"class\\\":\\\"generated\\\",\\\"preparationId\\\":\\\"prep_synthetic\\\",\\\"recipeVersion\\\":8,\\\"qualification\\\":null,\\\"prepared\\\":{\\\"ignored\\\":\\\"not raw input\\\"},\\\"record\\\":{\\\"id\\\":\\\"record_synthetic\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"sourceId\\\":\\\"source_synthetic\\\",\\\"row\\\":1,\\\"class\\\":\\\"generated\\\",\\\"status\\\":\\\"ready\\\",\\\"values\\\":{\\\"Text\\\":\\\" A \\\",\\\"Integer\\\":\\\"-0\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Boolean\\\":\\\"false\\\",\\\"List\\\":\\\"[]\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Number\\\":\\\"-0\\\",\\\"Evidence\\\":\\\"present\\\"},\\\"research\\\":{\\\"runId\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"entity\\\":{\\\"id\\\":\\\"entity_synthetic\\\",\\\"kind\\\":\\\"record\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"url\\\":\\\"https://example.test/\\\",\\\"fields\\\":{\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\" A \\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"1.2300\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":false,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":[],\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"},\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"present\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"}}}}},\\\"values\\\":{\\\"Text\\\":\\\"filtered visible\\\"},\\\"research\\\":{\\\"id\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"recipe\\\":{\\\"version\\\":1,\\\"target\\\":\\\"records\\\",\\\"fields\\\":[{ \\\"type\\\" : \\\"text\\\", \\\"name\\\" : \\\"Text\\\", \\\"description\\\" : \\\"A \\\\u0042 / kept\\\" },{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"},{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"},{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"},{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"},{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"},{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"},{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"},{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}],\\\"criteria\\\":[],\\\"ai\\\":{},\\\"limits\\\":{}},\\\"intent\\\":\\\"Opaque original intent\\\",\\\"createdAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"approvedLimits\\\":{},\\\"budgetApprovals\\\":[],\\\"workflowApproval\\\":null,\\\"modelResponses\\\":[],\\\"sources\\\":[]},\\\"reviews\\\":[],\\\"legacyOpaque\\\":{\\\"escaped\\\":\\\"\\\\ud800\\\"}}\",\"originalSnapshotSha256\":\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\",\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"generated\",\"research\":{\"declaration\":{\"fields\":[{\"fieldJson\":\"{\\\"type\\\":\\\"text\\\",\\\"name\\\":\\\"Text\\\",\\\"description\\\":\\\"A \\\\u0042 / kept\\\"}\",\"name\":\"Text\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"}\",\"name\":\"Integer\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"}\",\"name\":\"Decimal\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"}\",\"name\":\"Boolean\"},{\"fieldJson\":\"{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"}\",\"name\":\"List\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"}\",\"name\":\"Range\"},{\"fieldJson\":\"{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"}\",\"name\":\"String\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"}\",\"name\":\"Number\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}\",\"name\":\"Evidence\"}],\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"fields\":{\"Boolean\":{\"status\":\"supported\",\"valueJson\":\"false\"},\"Decimal\":{\"status\":\"supported\",\"valueJson\":\"\\\"1.2300\\\"\"},\"Evidence\":{\"status\":\"supported\",\"valueJson\":\"\\\"present\\\"\"},\"Integer\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"List\":{\"status\":\"supported\",\"valueJson\":\"[]\"},\"Number\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Range\":{\"status\":\"supported\",\"valueJson\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\"},\"String\":{\"status\":\"supported\",\"valueJson\":\"\\\"\\\"\"},\"Text\":{\"status\":\"supported\",\"valueJson\":\"\\\" A \\\"\"}},\"recordRecipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"values\":{\"Boolean\":\"false\",\"Decimal\":\"1.2300\",\"Evidence\":\"present\",\"Integer\":\"-0\",\"List\":\"[]\",\"Number\":\"-0\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Text\":\" A \"}}},\"receipt\":{\"acquisition\":{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"endpoint\":\"desk-local:reviewed-inputs\",\"observedAt\":\"2026-01-01T00:00:00Z\",\"shape\":\"mcp\"},\"argumentsCommitment\":\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\",\"authority\":\"synthetic\",\"callIndex\":0,\"keyId\":\"10ba682c8ad13513971e8b56881aab8b\",\"kind\":\"acquisition\",\"receiptVersion\":\"3\",\"resultDigest\":\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\",\"servedAt\":\"2026-01-01T00:00:00Z\",\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\",\"source\":\"desk-inputs\"},\"salts\":{\"args\":\"0101010101010101010101010101010101010101010101010101010101010101\"}}}},\"case\":{},\"mappingDigest\":\"sha256:b5d9c2887a3522b740fd5dfee1ed06a77204545e55c42c98f47b896ca9621087\"}" + }, + { + "id": "generated-eight-types-retainedResponseJson", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:d27cdfb72344bc82eec03fb69af6e5f0358fd4f7d31be2cd1f46b332b0152066\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:b5d9c2887a3522b740fd5dfee1ed06a77204545e55c42c98f47b896ca9621087\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:d27cdfb72344bc82eec03fb69af6e5f0358fd4f7d31be2cd1f46b332b0152066\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}},\"case\":{},\"mappingDigest\":\"sha256:b5d9c2887a3522b740fd5dfee1ed06a77204545e55c42c98f47b896ca9621087\"}" + }, + { + "id": "changed-exact-frame", + "dialectJson": "{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}", + "caseJson": "{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}}", + "acquisitionsJson": "{}", + "profilesJson": "[]", + "preparationJson": "{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "finding:preparation-differs" + }, + { + "id": "wrong-generated-origin", + "dialectJson": "{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}", + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"generated\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}}", + "acquisitionsJson": "{}", + "profilesJson": "[]", + "preparationJson": "{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "finding:read-failed" + }, + { + "id": "changed-result", + "dialectJson": "{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}", + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}}", + "acquisitionsJson": "{}", + "profilesJson": "[]", + "preparationJson": "{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"wrong\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "finding:preparation-differs" + }, + { + "id": "dual-case-custody", + "dialectJson": "{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}", + "caseJson": "{\"case\":{},\"retainedCaseJson\":\"{\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"asserted\\\",\\\"research\\\":null,\\\"values\\\":{\\\"Blank\\\":\\\"\\\\t \\\",\\\"Boolean\\\":\\\"NO\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"absent\\\",\\\"Null\\\":null,\\\"Number\\\":\\\"-0\\\",\\\"Text\\\":\\\" A \\\" }},\\\"provenance\\\":{\\\"opaque\\\":\\\"kept\\\"}}\"}", + "acquisitionsJson": "{}", + "profilesJson": "[]", + "preparationJson": "{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "refusal:input-malformed" + }, + { + "id": "tampered-signature", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:d27cdfb72344bc82eec03fb69af6e5f0358fd4f7d31be2cd1f46b332b0152066\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"response\":{\"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"version\\\":1,\\\"class\\\":\\\"generated\\\",\\\"preparationId\\\":\\\"prep_synthetic\\\",\\\"recipeVersion\\\":8,\\\"qualification\\\":null,\\\"prepared\\\":{\\\"ignored\\\":\\\"not raw input\\\"},\\\"record\\\":{\\\"id\\\":\\\"record_synthetic\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"sourceId\\\":\\\"source_synthetic\\\",\\\"row\\\":1,\\\"class\\\":\\\"generated\\\",\\\"status\\\":\\\"ready\\\",\\\"values\\\":{\\\"Text\\\":\\\" A \\\",\\\"Integer\\\":\\\"-0\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Boolean\\\":\\\"false\\\",\\\"List\\\":\\\"[]\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Number\\\":\\\"-0\\\",\\\"Evidence\\\":\\\"present\\\"},\\\"research\\\":{\\\"runId\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"entity\\\":{\\\"id\\\":\\\"entity_synthetic\\\",\\\"kind\\\":\\\"record\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"url\\\":\\\"https://example.test/\\\",\\\"fields\\\":{\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\" A \\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"1.2300\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":false,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":[],\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"},\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"present\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"}}}}},\\\"values\\\":{\\\"Text\\\":\\\"filtered visible\\\"},\\\"research\\\":{\\\"id\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"recipe\\\":{\\\"version\\\":1,\\\"target\\\":\\\"records\\\",\\\"fields\\\":[{ \\\"type\\\" : \\\"text\\\", \\\"name\\\" : \\\"Text\\\", \\\"description\\\" : \\\"A \\\\u0042 / kept\\\" },{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"},{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"},{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"},{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"},{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"},{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"},{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"},{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}],\\\"criteria\\\":[],\\\"ai\\\":{},\\\"limits\\\":{}},\\\"intent\\\":\\\"Opaque original intent\\\",\\\"createdAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"approvedLimits\\\":{},\\\"budgetApprovals\\\":[],\\\"workflowApproval\\\":null,\\\"modelResponses\\\":[],\\\"sources\\\":[]},\\\"reviews\\\":[],\\\"legacyOpaque\\\":{\\\"escaped\\\":\\\"\\\\ud800\\\"}}\",\"originalSnapshotSha256\":\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\",\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"generated\",\"research\":{\"declaration\":{\"fields\":[{\"fieldJson\":\"{\\\"type\\\":\\\"text\\\",\\\"name\\\":\\\"Text\\\",\\\"description\\\":\\\"A \\\\u0042 / kept\\\"}\",\"name\":\"Text\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"}\",\"name\":\"Integer\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"}\",\"name\":\"Decimal\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"}\",\"name\":\"Boolean\"},{\"fieldJson\":\"{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"}\",\"name\":\"List\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"}\",\"name\":\"Range\"},{\"fieldJson\":\"{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"}\",\"name\":\"String\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"}\",\"name\":\"Number\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}\",\"name\":\"Evidence\"}],\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"fields\":{\"Boolean\":{\"status\":\"supported\",\"valueJson\":\"false\"},\"Decimal\":{\"status\":\"supported\",\"valueJson\":\"\\\"1.2300\\\"\"},\"Evidence\":{\"status\":\"supported\",\"valueJson\":\"\\\"present\\\"\"},\"Integer\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"List\":{\"status\":\"supported\",\"valueJson\":\"[]\"},\"Number\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Range\":{\"status\":\"supported\",\"valueJson\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\"},\"String\":{\"status\":\"supported\",\"valueJson\":\"\\\"\\\"\"},\"Text\":{\"status\":\"supported\",\"valueJson\":\"\\\" A \\\"\"}},\"recordRecipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"values\":{\"Boolean\":\"false\",\"Decimal\":\"1.2300\",\"Evidence\":\"present\",\"Integer\":\"-0\",\"List\":\"[]\",\"Number\":\"-0\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Text\":\" A \"}}},\"receipt\":{\"acquisition\":{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"endpoint\":\"desk-local:reviewed-inputs\",\"observedAt\":\"2026-01-01T00:00:00Z\",\"shape\":\"mcp\"},\"argumentsCommitment\":\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\",\"authority\":\"synthetic\",\"callIndex\":0,\"keyId\":\"10ba682c8ad13513971e8b56881aab8b\",\"kind\":\"acquisition\",\"receiptVersion\":\"3\",\"resultDigest\":\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\",\"servedAt\":\"2026-01-01T00:00:00Z\",\"sessionId\":\"synthetic.retained-column\",\"signature\":\"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\"source\":\"desk-inputs\"},\"salts\":{\"args\":\"0101010101010101010101010101010101010101010101010101010101010101\"}}}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:b5d9c2887a3522b740fd5dfee1ed06a77204545e55c42c98f47b896ca9621087\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "finding:acquisition-invalid" + }, + { + "id": "wrong-profile-grammar", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:d27cdfb72344bc82eec03fb69af6e5f0358fd4f7d31be2cd1f46b332b0152066\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"response\":{\"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"version\\\":1,\\\"class\\\":\\\"generated\\\",\\\"preparationId\\\":\\\"prep_synthetic\\\",\\\"recipeVersion\\\":8,\\\"qualification\\\":null,\\\"prepared\\\":{\\\"ignored\\\":\\\"not raw input\\\"},\\\"record\\\":{\\\"id\\\":\\\"record_synthetic\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"sourceId\\\":\\\"source_synthetic\\\",\\\"row\\\":1,\\\"class\\\":\\\"generated\\\",\\\"status\\\":\\\"ready\\\",\\\"values\\\":{\\\"Text\\\":\\\" A \\\",\\\"Integer\\\":\\\"-0\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Boolean\\\":\\\"false\\\",\\\"List\\\":\\\"[]\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Number\\\":\\\"-0\\\",\\\"Evidence\\\":\\\"present\\\"},\\\"research\\\":{\\\"runId\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"entity\\\":{\\\"id\\\":\\\"entity_synthetic\\\",\\\"kind\\\":\\\"record\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"url\\\":\\\"https://example.test/\\\",\\\"fields\\\":{\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\" A \\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"1.2300\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":false,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":[],\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"},\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"present\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"}}}}},\\\"values\\\":{\\\"Text\\\":\\\"filtered visible\\\"},\\\"research\\\":{\\\"id\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"recipe\\\":{\\\"version\\\":1,\\\"target\\\":\\\"records\\\",\\\"fields\\\":[{ \\\"type\\\" : \\\"text\\\", \\\"name\\\" : \\\"Text\\\", \\\"description\\\" : \\\"A \\\\u0042 / kept\\\" },{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"},{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"},{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"},{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"},{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"},{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"},{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"},{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}],\\\"criteria\\\":[],\\\"ai\\\":{},\\\"limits\\\":{}},\\\"intent\\\":\\\"Opaque original intent\\\",\\\"createdAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"approvedLimits\\\":{},\\\"budgetApprovals\\\":[],\\\"workflowApproval\\\":null,\\\"modelResponses\\\":[],\\\"sources\\\":[]},\\\"reviews\\\":[],\\\"legacyOpaque\\\":{\\\"escaped\\\":\\\"\\\\ud800\\\"}}\",\"originalSnapshotSha256\":\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\",\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"generated\",\"research\":{\"declaration\":{\"fields\":[{\"fieldJson\":\"{\\\"type\\\":\\\"text\\\",\\\"name\\\":\\\"Text\\\",\\\"description\\\":\\\"A \\\\u0042 / kept\\\"}\",\"name\":\"Text\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"}\",\"name\":\"Integer\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"}\",\"name\":\"Decimal\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"}\",\"name\":\"Boolean\"},{\"fieldJson\":\"{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"}\",\"name\":\"List\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"}\",\"name\":\"Range\"},{\"fieldJson\":\"{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"}\",\"name\":\"String\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"}\",\"name\":\"Number\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}\",\"name\":\"Evidence\"}],\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"fields\":{\"Boolean\":{\"status\":\"supported\",\"valueJson\":\"false\"},\"Decimal\":{\"status\":\"supported\",\"valueJson\":\"\\\"1.2300\\\"\"},\"Evidence\":{\"status\":\"supported\",\"valueJson\":\"\\\"present\\\"\"},\"Integer\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"List\":{\"status\":\"supported\",\"valueJson\":\"[]\"},\"Number\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Range\":{\"status\":\"supported\",\"valueJson\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\"},\"String\":{\"status\":\"supported\",\"valueJson\":\"\\\"\\\"\"},\"Text\":{\"status\":\"supported\",\"valueJson\":\"\\\" A \\\"\"}},\"recordRecipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"values\":{\"Boolean\":\"false\",\"Decimal\":\"1.2300\",\"Evidence\":\"present\",\"Integer\":\"-0\",\"List\":\"[]\",\"Number\":\"-0\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Text\":\" A \"}}},\"receipt\":{\"acquisition\":{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"endpoint\":\"desk-local:reviewed-inputs\",\"observedAt\":\"2026-01-01T00:00:00Z\",\"shape\":\"mcp\"},\"argumentsCommitment\":\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\",\"authority\":\"synthetic\",\"callIndex\":0,\"keyId\":\"10ba682c8ad13513971e8b56881aab8b\",\"kind\":\"acquisition\",\"receiptVersion\":\"3\",\"resultDigest\":\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\",\"servedAt\":\"2026-01-01T00:00:00Z\",\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\",\"source\":\"desk-inputs\"},\"salts\":{\"args\":\"0101010101010101010101010101010101010101010101010101010101010101\"}}}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/2\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:b5d9c2887a3522b740fd5dfee1ed06a77204545e55c42c98f47b896ca9621087\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "refusal:capability-unsupported" + }, + { + "id": "asserted-integer3", + "dialectJson": "{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":3}", + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}}", + "acquisitionsJson": "{}", + "profilesJson": "[]", + "preparationJson": "{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:404c905bbeff3c2156708baae19f5ee71ff849e98a03cc0c13dc406124e65bba\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":3}", + "expected": "reading", + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":3},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:404c905bbeff3c2156708baae19f5ee71ff849e98a03cc0c13dc406124e65bba\"}" + }, + { + "id": "asserted-named2", + "dialectJson": "{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"formatVersion\":\"2.0.0\",\"id\":\"urn:synthetic:retained\",\"profile\":\"base\",\"version\":\"1.0.0\"}", + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}}", + "acquisitionsJson": "{}", + "profilesJson": "[]", + "preparationJson": "{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:772dbde98668a0368b62238ded8f7b484102e82e4a6dace39b37ebbe81ec4f15\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"formatVersion\":\"2.0.0\",\"id\":\"urn:synthetic:retained\",\"profile\":\"base\",\"version\":\"1.0.0\"},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:772dbde98668a0368b62238ded8f7b484102e82e4a6dace39b37ebbe81ec4f15\"}" + }, + { + "id": "asserted-named3", + "dialectJson": "{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"formatVersion\":\"3.0.0\",\"id\":\"urn:synthetic:retained\",\"profile\":\"base\",\"version\":\"1.0.0\"}", + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}}", + "acquisitionsJson": "{}", + "profilesJson": "[]", + "preparationJson": "{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:04e64264de48f5a523f7adaa48bf191400b90ab88b392f6e4f4abf38f5527747\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":3}", + "expected": "reading", + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"formatVersion\":\"3.0.0\",\"id\":\"urn:synthetic:retained\",\"profile\":\"base\",\"version\":\"1.0.0\"},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:04e64264de48f5a523f7adaa48bf191400b90ab88b392f6e4f4abf38f5527747\"}" + }, + { + "id": "fact-rejects-evidence-availability-kind", + "dialectJson": "{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"evidence-availability\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}", + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}}", + "acquisitionsJson": "{}", + "profilesJson": "[]", + "preparationJson": "{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "refusal:input-malformed" + }, + { + "id": "signed-carrier-omits-unselected-original-declaration", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:d27cdfb72344bc82eec03fb69af6e5f0358fd4f7d31be2cd1f46b332b0152066\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"response\":{\"receipt\":{\"acquisition\":{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"endpoint\":\"desk-local:reviewed-inputs\",\"observedAt\":\"2026-01-01T00:00:00Z\",\"shape\":\"mcp\"},\"argumentsCommitment\":\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\",\"authority\":\"synthetic\",\"callIndex\":0,\"keyId\":\"10ba682c8ad13513971e8b56881aab8b\",\"kind\":\"acquisition\",\"receiptVersion\":\"3\",\"resultDigest\":\"sha256:6dc48a2dc5e7c7119c4377754526a6164390c0106557b36cc59aa461aff5f4bc\",\"servedAt\":\"2026-01-01T00:00:00Z\",\"sessionId\":\"synthetic.retained-column\",\"signature\":\"737904cb767b5b9ae1a5bdfef7eb7f742174afd4f1c7bafe5a3be6980e87d12eeded37760a34d46ca4977ead92fd5ce12ce41d282c5b6229d92acd172c34eb04\",\"source\":\"desk-inputs\"},\"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"version\\\":1,\\\"class\\\":\\\"generated\\\",\\\"preparationId\\\":\\\"prep_synthetic\\\",\\\"recipeVersion\\\":8,\\\"qualification\\\":null,\\\"prepared\\\":{\\\"ignored\\\":\\\"not raw input\\\"},\\\"record\\\":{\\\"id\\\":\\\"record_synthetic\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"sourceId\\\":\\\"source_synthetic\\\",\\\"row\\\":1,\\\"class\\\":\\\"generated\\\",\\\"status\\\":\\\"ready\\\",\\\"values\\\":{\\\"Text\\\":\\\" A \\\",\\\"Integer\\\":\\\"-0\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Boolean\\\":\\\"false\\\",\\\"List\\\":\\\"[]\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Number\\\":\\\"-0\\\",\\\"Evidence\\\":\\\"present\\\"},\\\"research\\\":{\\\"runId\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"entity\\\":{\\\"id\\\":\\\"entity_synthetic\\\",\\\"kind\\\":\\\"record\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"url\\\":\\\"https://example.test/\\\",\\\"fields\\\":{\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\" A \\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"1.2300\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":false,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":[],\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"},\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"present\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"}}}}},\\\"values\\\":{\\\"Text\\\":\\\"filtered visible\\\"},\\\"research\\\":{\\\"id\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"recipe\\\":{\\\"version\\\":1,\\\"target\\\":\\\"records\\\",\\\"fields\\\":[{ \\\"type\\\" : \\\"text\\\", \\\"name\\\" : \\\"Text\\\", \\\"description\\\" : \\\"A \\\\u0042 / kept\\\" },{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"},{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"},{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"},{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"},{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"},{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"},{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"},{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}],\\\"criteria\\\":[],\\\"ai\\\":{},\\\"limits\\\":{}},\\\"intent\\\":\\\"Opaque original intent\\\",\\\"createdAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"approvedLimits\\\":{},\\\"budgetApprovals\\\":[],\\\"workflowApproval\\\":null,\\\"modelResponses\\\":[],\\\"sources\\\":[]},\\\"reviews\\\":[],\\\"legacyOpaque\\\":{\\\"escaped\\\":\\\"\\\\ud800\\\"}}\",\"originalSnapshotSha256\":\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\",\"retained\":{\"contractVersion\":\"1\",\"origin\":\"generated\",\"research\":{\"declaration\":{\"fields\":[{\"fieldJson\":\"{\\\"type\\\":\\\"text\\\",\\\"name\\\":\\\"Text\\\",\\\"description\\\":\\\"A \\\\u0042 / kept\\\"}\",\"name\":\"Text\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"}\",\"name\":\"Integer\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"}\",\"name\":\"Decimal\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"}\",\"name\":\"Boolean\"},{\"fieldJson\":\"{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"}\",\"name\":\"List\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"}\",\"name\":\"Range\"},{\"fieldJson\":\"{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"}\",\"name\":\"String\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"}\",\"name\":\"Number\"}],\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"fields\":{\"Boolean\":{\"status\":\"supported\",\"valueJson\":\"false\"},\"Decimal\":{\"status\":\"supported\",\"valueJson\":\"\\\"1.2300\\\"\"},\"Evidence\":{\"status\":\"supported\",\"valueJson\":\"\\\"present\\\"\"},\"Integer\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"List\":{\"status\":\"supported\",\"valueJson\":\"[]\"},\"Number\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Range\":{\"status\":\"supported\",\"valueJson\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\"},\"String\":{\"status\":\"supported\",\"valueJson\":\"\\\"\\\"\"},\"Text\":{\"status\":\"supported\",\"valueJson\":\"\\\" A \\\"\"}},\"recordRecipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"values\":{\"Boolean\":\"false\",\"Decimal\":\"1.2300\",\"Evidence\":\"present\",\"Integer\":\"-0\",\"List\":\"[]\",\"Number\":\"-0\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Text\":\" A \"}}},\"salts\":{\"args\":\"0101010101010101010101010101010101010101010101010101010101010101\"}}}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:b5d9c2887a3522b740fd5dfee1ed06a77204545e55c42c98f47b896ca9621087\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "finding:read-failed" + }, + { + "id": "producer-lower-responseBytes-below-cap", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:83e46429412bb4476b2078edba9aeeaab165801934ad5ba7bc78692c2377cc99\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":6066},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:ad52f685b521622fd7c40973bc6aeff111f619f6f5a79d6a9076c599820806a3\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:83e46429412bb4476b2078edba9aeeaab165801934ad5ba7bc78692c2377cc99\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:ad52f685b521622fd7c40973bc6aeff111f619f6f5a79d6a9076c599820806a3\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "responseBytes", + "reportedMaximum": 6066, + "measurement": "complete received artifact, UTF-8 bytes" + } + }, + { + "id": "producer-lower-responseBytes-exact", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:2bf3383951e085b2983618df0e95b3adb48f087543f1ee00aedfbd4be4654d86\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":5938},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:92cdfff43183a6068196d56ee75ce9155c8da82d03535245ea6227a06b3ca87c\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:2bf3383951e085b2983618df0e95b3adb48f087543f1ee00aedfbd4be4654d86\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:92cdfff43183a6068196d56ee75ce9155c8da82d03535245ea6227a06b3ca87c\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "responseBytes", + "reportedMaximum": 5938, + "measurement": "complete received artifact, UTF-8 bytes" + } + }, + { + "id": "producer-lower-responseBytes-one-over", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:bb3c2ddaf00e1f5c33b6a0346730c2b836a1c2c123f7f1eb1684cc825366da39\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":5937},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:683446a572cc40f58457cf05d1fe938ee27a45012a7e53507179684c9f5358d3\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "refusal:input-over-bound", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:bb3c2ddaf00e1f5c33b6a0346730c2b836a1c2c123f7f1eb1684cc825366da39\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:683446a572cc40f58457cf05d1fe938ee27a45012a7e53507179684c9f5358d3\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "responseBytes", + "reportedMaximum": 5937, + "measurement": "complete received artifact, UTF-8 bytes" + } + }, + { + "id": "producer-lower-carrierBytes-below-cap", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:cc90da23a2959aab127ecac9118f171c71b316b024fd532cb72c847dc058ca25\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":5161,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:cecb51ba827d9c8320fa5762f1b1d747308058d0e7c025d8fbaed69866d3e747\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:cc90da23a2959aab127ecac9118f171c71b316b024fd532cb72c847dc058ca25\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:cecb51ba827d9c8320fa5762f1b1d747308058d0e7c025d8fbaed69866d3e747\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "carrierBytes", + "reportedMaximum": 5161, + "measurement": "complete received artifact, UTF-8 bytes" + } + }, + { + "id": "producer-lower-carrierBytes-exact", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:b7391261e5bf1cc68433d1751d8aa7484b7b080b6dea7c32a9982a2bcd76a3f9\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":5033,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:c517f540f773c007d2d4c0207cb53f7f94ba2089b72e4e6df0f2355cd22c348f\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:b7391261e5bf1cc68433d1751d8aa7484b7b080b6dea7c32a9982a2bcd76a3f9\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:c517f540f773c007d2d4c0207cb53f7f94ba2089b72e4e6df0f2355cd22c348f\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "carrierBytes", + "reportedMaximum": 5033, + "measurement": "complete received artifact, UTF-8 bytes" + } + }, + { + "id": "producer-lower-carrierBytes-one-over", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:e385012bb1d2d00f5fe8f85c3e27a04e90c91c54281a9624c68dabbe0aec39fc\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":5032,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:2ef002133a5ecf173aa6306be634534fc6b43a9f7d9800f32bbc0d157c065a04\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "refusal:input-over-bound", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:e385012bb1d2d00f5fe8f85c3e27a04e90c91c54281a9624c68dabbe0aec39fc\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:2ef002133a5ecf173aa6306be634534fc6b43a9f7d9800f32bbc0d157c065a04\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "carrierBytes", + "reportedMaximum": 5032, + "measurement": "complete received artifact, UTF-8 bytes" + } + }, + { + "id": "producer-lower-originalSnapshotBytes-below-cap", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:6fda529fb01ab06df911253d39d90d2b2b7903457eef4e7477d242d1ca48b231\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":2605,\"profilesBytes\":81920,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:8dc196813e3e8f16e385122768a445a4030f7bfb4bb48190b5de219970ab939c\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:6fda529fb01ab06df911253d39d90d2b2b7903457eef4e7477d242d1ca48b231\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:8dc196813e3e8f16e385122768a445a4030f7bfb4bb48190b5de219970ab939c\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "originalSnapshotBytes", + "reportedMaximum": 2605, + "measurement": "complete received artifact, UTF-8 bytes" + } + }, + { + "id": "producer-lower-originalSnapshotBytes-exact", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:d3b8418f9f232c84d4998e5a5a7880b29909cab8177ff36dede7b078ee5cd9ce\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":2477,\"profilesBytes\":81920,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:69a4eaa44ff81bcdd22b8a8dfb4a7c09329dd690492191dec6ff950c57af4c3c\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:d3b8418f9f232c84d4998e5a5a7880b29909cab8177ff36dede7b078ee5cd9ce\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:69a4eaa44ff81bcdd22b8a8dfb4a7c09329dd690492191dec6ff950c57af4c3c\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "originalSnapshotBytes", + "reportedMaximum": 2477, + "measurement": "complete received artifact, UTF-8 bytes" + } + }, + { + "id": "producer-lower-originalSnapshotBytes-one-over", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:922d27745f2dc17cf2378af1fadd667f1613127492f7c252ea0ec9b59ae8fc43\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":2476,\"profilesBytes\":81920,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:0b47ce3c8549acfc7bf931e3dda4ad6f5b19e66654dd71d37e8efef8c90f1054\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "refusal:input-over-bound", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:922d27745f2dc17cf2378af1fadd667f1613127492f7c252ea0ec9b59ae8fc43\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:0b47ce3c8549acfc7bf931e3dda4ad6f5b19e66654dd71d37e8efef8c90f1054\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "originalSnapshotBytes", + "reportedMaximum": 2476, + "measurement": "complete received artifact, UTF-8 bytes" + } + }, + { + "id": "producer-lower-profilesBytes-exact", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:f59cbaf2f4b9acb250163a58679df9e26b5f4834c53798037b1b588615f465cc\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":1044,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:047a740dfffbb837094a8ef8405f595e2dfa7932ccbd9b2762f17a7e67b03fe1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "reading", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:f59cbaf2f4b9acb250163a58679df9e26b5f4834c53798037b1b588615f465cc\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:047a740dfffbb837094a8ef8405f595e2dfa7932ccbd9b2762f17a7e67b03fe1\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "profilesBytes", + "reportedMaximum": 1044, + "measurement": "complete received artifact, UTF-8 bytes" + } + }, + { + "id": "producer-lower-profilesBytes-one-over", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:202c7e4bc5d74d18c4031151b17cc69ee574a237b137b91dafb508c4cca9f00e\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":1043,\"responseBytes\":5242880},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:286c17df9ca177c2599f5b87c5b44152861ba898de405c013f2bf290fa532ccc\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "refusal:input-over-bound", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:202c7e4bc5d74d18c4031151b17cc69ee574a237b137b91dafb508c4cca9f00e\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:286c17df9ca177c2599f5b87c5b44152861ba898de405c013f2bf290fa532ccc\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "profilesBytes", + "reportedMaximum": 1043, + "measurement": "complete received artifact, UTF-8 bytes" + } + }, + { + "id": "producer-lower-responseBytes-response-whitespace-one-over", + "dialectJson": "{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:2bf3383951e085b2983618df0e95b3adb48f087543f1ee00aedfbd4be4654d86\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2}", + "caseJson": "{}", + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}} \"}}", + "profilesJson": "[{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"authority\":\"synthetic\",\"class\":\"generated\",\"conversionContracts\":[{\"contract\":\"retained-column/1\",\"limits\":{\"adapterStdoutBytes\":3145728,\"carrierBytes\":3145728,\"grantBytes\":3145728,\"originalSnapshotBytes\":524288,\"profilesBytes\":81920,\"responseBytes\":5938},\"producerGrammar\":\"desk-reviewed-input/1\",\"profile\":\"base\",\"role\":\"producer-carrier\",\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}}],\"endpoint\":\"desk-local:reviewed-inputs\",\"id\":\"reviewed\",\"publicKey\":\"d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737\",\"retainedColumnProducer\":{\"contractVersion\":\"1\",\"grammar\":\"desk-reviewed-input/1\"},\"shape\":\"mcp\",\"source\":\"desk-inputs\",\"tools\":[\"read_reviewed_input\"]}]", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:92cdfff43183a6068196d56ee75ce9155c8da82d03535245ea6227a06b3ca87c\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}", + "expected": "refusal:input-over-bound", + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:2bf3383951e085b2983618df0e95b3adb48f087543f1ee00aedfbd4be4654d86\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":2},\"mappingDigest\":\"sha256:92cdfff43183a6068196d56ee75ce9155c8da82d03535245ea6227a06b3ca87c\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "boundary": { + "limit": "responseBytes", + "reportedMaximum": 5938, + "measurement": "complete received artifact, UTF-8 bytes" + } + } + ], + "scope": "Handwritten complete preparation expectations and literal refusals; signed synthetic fixture is not an actual Desk history lookup or maximum envelope proof.", + "exports": [ + { + "id": "preparation-only-export-v2", + "wireJson": "{\"version\":2,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}}}}", + "expected": "reading", + "scope": "Synthetic preparation/boundary fixture; sidecar and chain authority are not verified by this reader." + }, + { + "id": "preparation-only-export-v3", + "wireJson": "{\"version\":3,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}},\"auditBytes\":\"eyJldmFsdWF0b3JTcGVjVmVyc2lvbiI6IjAuMy4wIiwicGFjayI6eyJzcGVjVmVyc2lvbiI6IjAuMy4wIn0sImlucHV0cyI6eyJldmlkZW5jZSI6eyJwcm9vZiI6ImFic2VudCJ9LCJmYWN0cyI6eyJib29sZWFuIjpmYWxzZSwiZGVjaW1hbCI6IjEuMjMwMCIsIm51bWJlciI6LTAsInRleHQiOiIgIEEgICJ9fSwiY2l0ZXMiOltdLCJiaW5kaW5nIjp7ImtpbmQiOiJqdWRnbWVudC1wYWNrLXJ1bm5lci9wcmVwYXJhdGlvbi8xIiwiZGlnZXN0Ijoic2hhMjU2OjJiMzAwNWRhYjEzZTFjMmVkZWJkNTcyZTFiNDRmM2M5MjVjYjAwOGZmYTBmY2YxOTllMWQ4YTE3ODJhNmY4OGEifX0=\"}}", + "expected": "reading", + "scope": "Synthetic preparation/boundary fixture; sidecar and chain authority are not verified by this reader." + }, + { + "id": "preparation-only-export-v4", + "wireJson": "{\"version\":4,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}},\"auditBytes\":\"eyJldmFsdWF0b3JTcGVjVmVyc2lvbiI6IjAuMy4wIiwicGFjayI6eyJzcGVjVmVyc2lvbiI6IjAuMy4wIn0sImlucHV0cyI6eyJldmlkZW5jZSI6eyJwcm9vZiI6ImFic2VudCJ9LCJmYWN0cyI6eyJib29sZWFuIjpmYWxzZSwiZGVjaW1hbCI6IjEuMjMwMCIsIm51bWJlciI6LTAsInRleHQiOiIgIEEgICJ9fSwiY2l0ZXMiOltdLCJiaW5kaW5nIjp7ImtpbmQiOiJqdWRnbWVudC1wYWNrLXJ1bm5lci9wcmVwYXJhdGlvbi8xIiwiZGlnZXN0Ijoic2hhMjU2OjJiMzAwNWRhYjEzZTFjMmVkZWJkNTcyZTFiNDRmM2M5MjVjYjAwOGZmYTBmY2YxOTllMWQ4YTE3ODJhNmY4OGEifX0=\"},\"chain\":{\"checkpoint\":{\"checkpointVersion\":\"1\",\"recordDigest\":\"sha256:f4bd2d8b79962801cb5bfb7cb6178a3ab0a2145b30f5dd92cb4e5b3adda4c898\",\"sequence\":1,\"trail\":\"00000000000000000000000000000000\"},\"entry\":\"c3ludGhldGljIGVudHJ5OiBubyBjaGFpbi1hdXRob3JpdHkgY2xhaW0=\"}}", + "expected": "reading", + "scope": "Synthetic preparation/boundary fixture; sidecar and chain authority are not verified by this reader." + }, + { + "id": "preparation-only-export-v5", + "wireJson": "{\"version\":5,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}},\"auditBytes\":\"eyJldmFsdWF0b3JTcGVjVmVyc2lvbiI6IjAuMy4wIiwicGFjayI6eyJzcGVjVmVyc2lvbiI6IjAuMy4wIn0sImlucHV0cyI6eyJldmlkZW5jZSI6eyJwcm9vZiI6ImFic2VudCJ9LCJmYWN0cyI6eyJib29sZWFuIjpmYWxzZSwiZGVjaW1hbCI6IjEuMjMwMCIsIm51bWJlciI6LTAsInRleHQiOiIgIEEgICJ9fSwiY2l0ZXMiOltdLCJiaW5kaW5nIjp7ImtpbmQiOiJqdWRnbWVudC1wYWNrLXJ1bm5lci9wcmVwYXJhdGlvbi8xIiwiZGlnZXN0Ijoic2hhMjU2OjJiMzAwNWRhYjEzZTFjMmVkZWJkNTcyZTFiNDRmM2M5MjVjYjAwOGZmYTBmY2YxOTllMWQ4YTE3ODJhNmY4OGEifX0=\",\"auditSignatures\":\"c3ludGhldGljIHNpZGVjYXI6IG5vIHNpZ25hdHVyZSBjbGFpbQ==\"},\"chain\":{\"checkpoint\":{\"checkpointVersion\":\"1\",\"recordDigest\":\"sha256:f4bd2d8b79962801cb5bfb7cb6178a3ab0a2145b30f5dd92cb4e5b3adda4c898\",\"sequence\":1,\"trail\":\"00000000000000000000000000000000\"},\"entry\":\"c3ludGhldGljIGVudHJ5OiBubyBjaGFpbi1hdXRob3JpdHkgY2xhaW0=\"}}", + "expected": "reading", + "scope": "Synthetic preparation/boundary fixture; sidecar and chain authority are not verified by this reader." + }, + { + "id": "export-refuses-missing-auditBytes", + "wireJson": "{\"version\":3,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}}}}", + "expected": "refusal:input-malformed", + "scope": "Synthetic preparation/boundary fixture; sidecar and chain authority are not verified by this reader." + }, + { + "id": "export-refuses-missing-chain", + "wireJson": "{\"version\":4,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}},\"auditBytes\":\"eyJldmFsdWF0b3JTcGVjVmVyc2lvbiI6IjAuMy4wIiwicGFjayI6eyJzcGVjVmVyc2lvbiI6IjAuMy4wIn0sImlucHV0cyI6eyJldmlkZW5jZSI6eyJwcm9vZiI6ImFic2VudCJ9LCJmYWN0cyI6eyJib29sZWFuIjpmYWxzZSwiZGVjaW1hbCI6IjEuMjMwMCIsIm51bWJlciI6LTAsInRleHQiOiIgIEEgICJ9fSwiY2l0ZXMiOltdLCJiaW5kaW5nIjp7ImtpbmQiOiJqdWRnbWVudC1wYWNrLXJ1bm5lci9wcmVwYXJhdGlvbi8xIiwiZGlnZXN0Ijoic2hhMjU2OjJiMzAwNWRhYjEzZTFjMmVkZWJkNTcyZTFiNDRmM2M5MjVjYjAwOGZmYTBmY2YxOTllMWQ4YTE3ODJhNmY4OGEifX0=\"}}", + "expected": "refusal:input-malformed", + "scope": "Synthetic preparation/boundary fixture; sidecar and chain authority are not verified by this reader." + }, + { + "id": "export-refuses-missing-auditSignatures", + "wireJson": "{\"version\":5,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}},\"auditBytes\":\"eyJldmFsdWF0b3JTcGVjVmVyc2lvbiI6IjAuMy4wIiwicGFjayI6eyJzcGVjVmVyc2lvbiI6IjAuMy4wIn0sImlucHV0cyI6eyJldmlkZW5jZSI6eyJwcm9vZiI6ImFic2VudCJ9LCJmYWN0cyI6eyJib29sZWFuIjpmYWxzZSwiZGVjaW1hbCI6IjEuMjMwMCIsIm51bWJlciI6LTAsInRleHQiOiIgIEEgICJ9fSwiY2l0ZXMiOltdLCJiaW5kaW5nIjp7ImtpbmQiOiJqdWRnbWVudC1wYWNrLXJ1bm5lci9wcmVwYXJhdGlvbi8xIiwiZGlnZXN0Ijoic2hhMjU2OjJiMzAwNWRhYjEzZTFjMmVkZWJkNTcyZTFiNDRmM2M5MjVjYjAwOGZmYTBmY2YxOTllMWQ4YTE3ODJhNmY4OGEifX0=\"},\"chain\":{\"checkpoint\":{\"checkpointVersion\":\"1\",\"recordDigest\":\"sha256:f4bd2d8b79962801cb5bfb7cb6178a3ab0a2145b30f5dd92cb4e5b3adda4c898\",\"sequence\":1,\"trail\":\"00000000000000000000000000000000\"},\"entry\":\"c3ludGhldGljIGVudHJ5OiBubyBjaGFpbi1hdXRob3JpdHkgY2xhaW0=\"}}", + "expected": "refusal:input-malformed", + "scope": "Synthetic preparation/boundary fixture; sidecar and chain authority are not verified by this reader." + }, + { + "id": "export-refuses-visible-audit-difference", + "wireJson": "{\"version\":3,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"},\"timestamp\":\"2026-01-02T00:00:00Z\"},\"auditBytes\":\"eyJldmFsdWF0b3JTcGVjVmVyc2lvbiI6IjAuMy4wIiwicGFjayI6eyJzcGVjVmVyc2lvbiI6IjAuMy4wIn0sImlucHV0cyI6eyJldmlkZW5jZSI6eyJwcm9vZiI6ImFic2VudCJ9LCJmYWN0cyI6eyJib29sZWFuIjpmYWxzZSwiZGVjaW1hbCI6IjEuMjMwMCIsIm51bWJlciI6LTAsInRleHQiOiIgIEEgICJ9fSwiY2l0ZXMiOltdLCJiaW5kaW5nIjp7ImtpbmQiOiJqdWRnbWVudC1wYWNrLXJ1bm5lci9wcmVwYXJhdGlvbi8xIiwiZGlnZXN0Ijoic2hhMjU2OjJiMzAwNWRhYjEzZTFjMmVkZWJkNTcyZTFiNDRmM2M5MjVjYjAwOGZmYTBmY2YxOTllMWQ4YTE3ODJhNmY4OGEifX0=\"}}", + "expected": "finding:record-inputs-differ", + "scope": "Synthetic preparation/boundary fixture; sidecar and chain authority are not verified by this reader." + }, + { + "id": "export-refuses-unsupported-recorded-Core-version", + "wireJson": "{\"version\":2,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"99.0.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}}}}", + "expected": "refusal:recording-version-unsupported", + "scope": "Synthetic preparation/boundary fixture; sidecar and chain authority are not verified by this reader." + } + ], + "readerBoundaryCases": [ + { + "id": "case-depth-exact-direct", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "reading", + "cli": false, + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"},\"opaque\":[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]}" + }, + { + "id": "case-depth-exact-retained", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "reading", + "cli": true, + "caseJson": "{\"retainedCaseJson\":\"{\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"asserted\\\",\\\"research\\\":null,\\\"values\\\":{\\\"Blank\\\":\\\"\\\\t \\\",\\\"Boolean\\\":\\\"NO\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"absent\\\",\\\"Null\\\":null,\\\"Number\\\":\\\"-0\\\",\\\"Text\\\":\\\" A \\\" }},\\\"provenance\\\":{\\\"opaque\\\":\\\"kept\\\"},\\\"opaque\\\":[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]}\"}" + }, + { + "id": "case-depth-one-over-direct", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": false, + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"},\"opaque\":[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]}" + }, + { + "id": "case-depth-one-over-retained", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": true, + "caseJson": "{\"retainedCaseJson\":\"{\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"asserted\\\",\\\"research\\\":null,\\\"values\\\":{\\\"Blank\\\":\\\"\\\\t \\\",\\\"Boolean\\\":\\\"NO\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"absent\\\",\\\"Null\\\":null,\\\"Number\\\":\\\"-0\\\",\\\"Text\\\":\\\" A \\\" }},\\\"provenance\\\":{\\\"opaque\\\":\\\"kept\\\"},\\\"opaque\\\":[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]}\"}" + }, + { + "id": "case-number-exact-direct", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "reading", + "cli": false, + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"},\"opaque\":11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111}" + }, + { + "id": "case-number-exact-retained", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "reading", + "cli": false, + "caseJson": "{\"retainedCaseJson\":\"{\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"asserted\\\",\\\"research\\\":null,\\\"values\\\":{\\\"Blank\\\":\\\"\\\\t \\\",\\\"Boolean\\\":\\\"NO\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"absent\\\",\\\"Null\\\":null,\\\"Number\\\":\\\"-0\\\",\\\"Text\\\":\\\" A \\\" }},\\\"provenance\\\":{\\\"opaque\\\":\\\"kept\\\"},\\\"opaque\\\":11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111}\"}" + }, + { + "id": "case-number-one-over-direct", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": false, + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"},\"opaque\":111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111}" + }, + { + "id": "case-number-one-over-retained", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": true, + "caseJson": "{\"retainedCaseJson\":\"{\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"asserted\\\",\\\"research\\\":null,\\\"values\\\":{\\\"Blank\\\":\\\"\\\\t \\\",\\\"Boolean\\\":\\\"NO\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"absent\\\",\\\"Null\\\":null,\\\"Number\\\":\\\"-0\\\",\\\"Text\\\":\\\" A \\\" }},\\\"provenance\\\":{\\\"opaque\\\":\\\"kept\\\"},\\\"opaque\\\":111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111}\"}" + }, + { + "id": "case-exponent-exact-direct", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "reading", + "cli": false, + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"},\"opaque\":1e308}" + }, + { + "id": "case-exponent-exact-retained", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "reading", + "cli": false, + "caseJson": "{\"retainedCaseJson\":\"{\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"asserted\\\",\\\"research\\\":null,\\\"values\\\":{\\\"Blank\\\":\\\"\\\\t \\\",\\\"Boolean\\\":\\\"NO\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"absent\\\",\\\"Null\\\":null,\\\"Number\\\":\\\"-0\\\",\\\"Text\\\":\\\" A \\\" }},\\\"provenance\\\":{\\\"opaque\\\":\\\"kept\\\"},\\\"opaque\\\":1e308}\"}" + }, + { + "id": "case-exponent-one-over-direct", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": false, + "caseJson": "{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"},\"opaque\":1e309}" + }, + { + "id": "case-exponent-one-over-retained", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": true, + "caseJson": "{\"retainedCaseJson\":\"{\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"asserted\\\",\\\"research\\\":null,\\\"values\\\":{\\\"Blank\\\":\\\"\\\\t \\\",\\\"Boolean\\\":\\\"NO\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"absent\\\",\\\"Null\\\":null,\\\"Number\\\":\\\"-0\\\",\\\"Text\\\":\\\" A \\\" }},\\\"provenance\\\":{\\\"opaque\\\":\\\"kept\\\"},\\\"opaque\\\":1e309}\"}" + }, + { + "id": "case-malformed-direct", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-malformed", + "cli": false, + "caseJson": "{" + }, + { + "id": "case-malformed-retained", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-malformed", + "cli": true, + "caseJson": "{\"retainedCaseJson\":\"{\"}" + }, + { + "id": "case-duplicate-direct", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-malformed", + "cli": false, + "caseJson": "{\"opaque\":1,\"opaque\":2}" + }, + { + "id": "case-duplicate-retained", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-malformed", + "cli": true, + "caseJson": "{\"retainedCaseJson\":\"{\\\"opaque\\\":1,\\\"opaque\\\":2}\"}" + }, + { + "id": "response-number-one-over-direct", + "baseCaseId": "generated-eight-types-retainedResponseJson", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": false, + "acquisitionsJson": "{\"desk\":{\"response\":{\"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"version\\\":1,\\\"class\\\":\\\"generated\\\",\\\"preparationId\\\":\\\"prep_synthetic\\\",\\\"recipeVersion\\\":8,\\\"qualification\\\":null,\\\"prepared\\\":{\\\"ignored\\\":\\\"not raw input\\\"},\\\"record\\\":{\\\"id\\\":\\\"record_synthetic\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"sourceId\\\":\\\"source_synthetic\\\",\\\"row\\\":1,\\\"class\\\":\\\"generated\\\",\\\"status\\\":\\\"ready\\\",\\\"values\\\":{\\\"Text\\\":\\\" A \\\",\\\"Integer\\\":\\\"-0\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Boolean\\\":\\\"false\\\",\\\"List\\\":\\\"[]\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Number\\\":\\\"-0\\\",\\\"Evidence\\\":\\\"present\\\"},\\\"research\\\":{\\\"runId\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"entity\\\":{\\\"id\\\":\\\"entity_synthetic\\\",\\\"kind\\\":\\\"record\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"url\\\":\\\"https://example.test/\\\",\\\"fields\\\":{\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\" A \\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"1.2300\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":false,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":[],\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"},\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"present\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"}}}}},\\\"values\\\":{\\\"Text\\\":\\\"filtered visible\\\"},\\\"research\\\":{\\\"id\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"recipe\\\":{\\\"version\\\":1,\\\"target\\\":\\\"records\\\",\\\"fields\\\":[{ \\\"type\\\" : \\\"text\\\", \\\"name\\\" : \\\"Text\\\", \\\"description\\\" : \\\"A \\\\u0042 / kept\\\" },{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"},{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"},{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"},{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"},{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"},{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"},{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"},{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}],\\\"criteria\\\":[],\\\"ai\\\":{},\\\"limits\\\":{}},\\\"intent\\\":\\\"Opaque original intent\\\",\\\"createdAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"approvedLimits\\\":{},\\\"budgetApprovals\\\":[],\\\"workflowApproval\\\":null,\\\"modelResponses\\\":[],\\\"sources\\\":[]},\\\"reviews\\\":[],\\\"legacyOpaque\\\":{\\\"escaped\\\":\\\"\\\\ud800\\\"}}\",\"originalSnapshotSha256\":\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\",\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"generated\",\"research\":{\"declaration\":{\"fields\":[{\"fieldJson\":\"{\\\"type\\\":\\\"text\\\",\\\"name\\\":\\\"Text\\\",\\\"description\\\":\\\"A \\\\u0042 / kept\\\"}\",\"name\":\"Text\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"}\",\"name\":\"Integer\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"}\",\"name\":\"Decimal\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"}\",\"name\":\"Boolean\"},{\"fieldJson\":\"{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"}\",\"name\":\"List\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"}\",\"name\":\"Range\"},{\"fieldJson\":\"{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"}\",\"name\":\"String\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"}\",\"name\":\"Number\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}\",\"name\":\"Evidence\"}],\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"fields\":{\"Boolean\":{\"status\":\"supported\",\"valueJson\":\"false\"},\"Decimal\":{\"status\":\"supported\",\"valueJson\":\"\\\"1.2300\\\"\"},\"Evidence\":{\"status\":\"supported\",\"valueJson\":\"\\\"present\\\"\"},\"Integer\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"List\":{\"status\":\"supported\",\"valueJson\":\"[]\"},\"Number\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Range\":{\"status\":\"supported\",\"valueJson\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\"},\"String\":{\"status\":\"supported\",\"valueJson\":\"\\\"\\\"\"},\"Text\":{\"status\":\"supported\",\"valueJson\":\"\\\" A \\\"\"}},\"recordRecipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"values\":{\"Boolean\":\"false\",\"Decimal\":\"1.2300\",\"Evidence\":\"present\",\"Integer\":\"-0\",\"List\":\"[]\",\"Number\":\"-0\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Text\":\" A \"}}},\"receipt\":{\"acquisition\":{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"endpoint\":\"desk-local:reviewed-inputs\",\"observedAt\":\"2026-01-01T00:00:00Z\",\"shape\":\"mcp\"},\"argumentsCommitment\":\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\",\"authority\":\"synthetic\",\"callIndex\":0,\"keyId\":\"10ba682c8ad13513971e8b56881aab8b\",\"kind\":\"acquisition\",\"receiptVersion\":\"3\",\"resultDigest\":\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\",\"servedAt\":\"2026-01-01T00:00:00Z\",\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\",\"source\":\"desk-inputs\"},\"salts\":{\"opaque\":111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,\"args\":\"0101010101010101010101010101010101010101010101010101010101010101\"}}}}" + }, + { + "id": "response-number-one-over-retained", + "baseCaseId": "generated-eight-types-retainedResponseJson", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": false, + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"opaque\\\":111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}" + }, + { + "id": "response-exponent-one-over-direct", + "baseCaseId": "generated-eight-types-retainedResponseJson", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": false, + "acquisitionsJson": "{\"desk\":{\"response\":{\"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"version\\\":1,\\\"class\\\":\\\"generated\\\",\\\"preparationId\\\":\\\"prep_synthetic\\\",\\\"recipeVersion\\\":8,\\\"qualification\\\":null,\\\"prepared\\\":{\\\"ignored\\\":\\\"not raw input\\\"},\\\"record\\\":{\\\"id\\\":\\\"record_synthetic\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"sourceId\\\":\\\"source_synthetic\\\",\\\"row\\\":1,\\\"class\\\":\\\"generated\\\",\\\"status\\\":\\\"ready\\\",\\\"values\\\":{\\\"Text\\\":\\\" A \\\",\\\"Integer\\\":\\\"-0\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Boolean\\\":\\\"false\\\",\\\"List\\\":\\\"[]\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Number\\\":\\\"-0\\\",\\\"Evidence\\\":\\\"present\\\"},\\\"research\\\":{\\\"runId\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"entity\\\":{\\\"id\\\":\\\"entity_synthetic\\\",\\\"kind\\\":\\\"record\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"url\\\":\\\"https://example.test/\\\",\\\"fields\\\":{\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\" A \\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"1.2300\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":false,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":[],\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"},\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"present\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"}}}}},\\\"values\\\":{\\\"Text\\\":\\\"filtered visible\\\"},\\\"research\\\":{\\\"id\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"recipe\\\":{\\\"version\\\":1,\\\"target\\\":\\\"records\\\",\\\"fields\\\":[{ \\\"type\\\" : \\\"text\\\", \\\"name\\\" : \\\"Text\\\", \\\"description\\\" : \\\"A \\\\u0042 / kept\\\" },{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"},{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"},{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"},{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"},{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"},{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"},{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"},{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}],\\\"criteria\\\":[],\\\"ai\\\":{},\\\"limits\\\":{}},\\\"intent\\\":\\\"Opaque original intent\\\",\\\"createdAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"approvedLimits\\\":{},\\\"budgetApprovals\\\":[],\\\"workflowApproval\\\":null,\\\"modelResponses\\\":[],\\\"sources\\\":[]},\\\"reviews\\\":[],\\\"legacyOpaque\\\":{\\\"escaped\\\":\\\"\\\\ud800\\\"}}\",\"originalSnapshotSha256\":\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\",\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"generated\",\"research\":{\"declaration\":{\"fields\":[{\"fieldJson\":\"{\\\"type\\\":\\\"text\\\",\\\"name\\\":\\\"Text\\\",\\\"description\\\":\\\"A \\\\u0042 / kept\\\"}\",\"name\":\"Text\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"}\",\"name\":\"Integer\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"}\",\"name\":\"Decimal\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"}\",\"name\":\"Boolean\"},{\"fieldJson\":\"{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"}\",\"name\":\"List\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"}\",\"name\":\"Range\"},{\"fieldJson\":\"{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"}\",\"name\":\"String\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"}\",\"name\":\"Number\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}\",\"name\":\"Evidence\"}],\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"fields\":{\"Boolean\":{\"status\":\"supported\",\"valueJson\":\"false\"},\"Decimal\":{\"status\":\"supported\",\"valueJson\":\"\\\"1.2300\\\"\"},\"Evidence\":{\"status\":\"supported\",\"valueJson\":\"\\\"present\\\"\"},\"Integer\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"List\":{\"status\":\"supported\",\"valueJson\":\"[]\"},\"Number\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Range\":{\"status\":\"supported\",\"valueJson\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\"},\"String\":{\"status\":\"supported\",\"valueJson\":\"\\\"\\\"\"},\"Text\":{\"status\":\"supported\",\"valueJson\":\"\\\" A \\\"\"}},\"recordRecipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"values\":{\"Boolean\":\"false\",\"Decimal\":\"1.2300\",\"Evidence\":\"present\",\"Integer\":\"-0\",\"List\":\"[]\",\"Number\":\"-0\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Text\":\" A \"}}},\"receipt\":{\"acquisition\":{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"endpoint\":\"desk-local:reviewed-inputs\",\"observedAt\":\"2026-01-01T00:00:00Z\",\"shape\":\"mcp\"},\"argumentsCommitment\":\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\",\"authority\":\"synthetic\",\"callIndex\":0,\"keyId\":\"10ba682c8ad13513971e8b56881aab8b\",\"kind\":\"acquisition\",\"receiptVersion\":\"3\",\"resultDigest\":\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\",\"servedAt\":\"2026-01-01T00:00:00Z\",\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\",\"source\":\"desk-inputs\"},\"salts\":{\"opaque\":1e309,\"args\":\"0101010101010101010101010101010101010101010101010101010101010101\"}}}}" + }, + { + "id": "response-exponent-one-over-retained", + "baseCaseId": "generated-eight-types-retainedResponseJson", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": false, + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"opaque\\\":1e309,\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}" + }, + { + "id": "response-depth-one-over-direct", + "baseCaseId": "generated-eight-types-retainedResponseJson", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": false, + "acquisitionsJson": "{\"desk\":{\"response\":{\"result\":{\"contractVersion\":\"1\",\"originalSnapshotJson\":\"{\\\"version\\\":1,\\\"class\\\":\\\"generated\\\",\\\"preparationId\\\":\\\"prep_synthetic\\\",\\\"recipeVersion\\\":8,\\\"qualification\\\":null,\\\"prepared\\\":{\\\"ignored\\\":\\\"not raw input\\\"},\\\"record\\\":{\\\"id\\\":\\\"record_synthetic\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"sourceId\\\":\\\"source_synthetic\\\",\\\"row\\\":1,\\\"class\\\":\\\"generated\\\",\\\"status\\\":\\\"ready\\\",\\\"values\\\":{\\\"Text\\\":\\\" A \\\",\\\"Integer\\\":\\\"-0\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Boolean\\\":\\\"false\\\",\\\"List\\\":\\\"[]\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Number\\\":\\\"-0\\\",\\\"Evidence\\\":\\\"present\\\"},\\\"research\\\":{\\\"runId\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"entity\\\":{\\\"id\\\":\\\"entity_synthetic\\\",\\\"kind\\\":\\\"record\\\",\\\"name\\\":\\\"Synthetic\\\",\\\"url\\\":\\\"https://example.test/\\\",\\\"fields\\\":{\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\" A \\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"1.2300\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":false,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":[],\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"},\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":-0,\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"value\\\":\\\"present\\\",\\\"sources\\\":[],\\\"note\\\":\\\"opaque source note\\\"}}}}},\\\"values\\\":{\\\"Text\\\":\\\"filtered visible\\\"},\\\"research\\\":{\\\"id\\\":\\\"research_11111111111111111111111111111111\\\",\\\"recipeVersion\\\":7,\\\"recipe\\\":{\\\"version\\\":1,\\\"target\\\":\\\"records\\\",\\\"fields\\\":[{ \\\"type\\\" : \\\"text\\\", \\\"name\\\" : \\\"Text\\\", \\\"description\\\" : \\\"A \\\\u0042 / kept\\\" },{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"},{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"},{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"},{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"},{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"},{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"},{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"},{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}],\\\"criteria\\\":[],\\\"ai\\\":{},\\\"limits\\\":{}},\\\"intent\\\":\\\"Opaque original intent\\\",\\\"createdAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"approvedLimits\\\":{},\\\"budgetApprovals\\\":[],\\\"workflowApproval\\\":null,\\\"modelResponses\\\":[],\\\"sources\\\":[]},\\\"reviews\\\":[],\\\"legacyOpaque\\\":{\\\"escaped\\\":\\\"\\\\ud800\\\"}}\",\"originalSnapshotSha256\":\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\",\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"generated\",\"research\":{\"declaration\":{\"fields\":[{\"fieldJson\":\"{\\\"type\\\":\\\"text\\\",\\\"name\\\":\\\"Text\\\",\\\"description\\\":\\\"A \\\\u0042 / kept\\\"}\",\"name\":\"Text\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Integer\\\",\\\"type\\\":\\\"integer\\\",\\\"description\\\":\\\"Original integer\\\"}\",\"name\":\"Integer\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Decimal\\\",\\\"type\\\":\\\"decimal\\\",\\\"description\\\":\\\"Original decimal\\\"}\",\"name\":\"Decimal\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Boolean\\\",\\\"type\\\":\\\"boolean\\\",\\\"description\\\":\\\"Original boolean\\\"}\",\"name\":\"Boolean\"},{\"fieldJson\":\"{\\\"name\\\":\\\"List\\\",\\\"type\\\":\\\"text-list\\\",\\\"description\\\":\\\"Original list\\\"}\",\"name\":\"List\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Range\\\",\\\"type\\\":\\\"range\\\",\\\"description\\\":\\\"Original range\\\"}\",\"name\":\"Range\"},{\"fieldJson\":\"{\\\"name\\\":\\\"String\\\",\\\"type\\\":\\\"string\\\",\\\"description\\\":\\\"Historical string\\\"}\",\"name\":\"String\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Number\\\",\\\"type\\\":\\\"number\\\",\\\"description\\\":\\\"Historical number\\\"}\",\"name\":\"Number\"},{\"fieldJson\":\"{\\\"name\\\":\\\"Evidence\\\",\\\"type\\\":\\\"text\\\",\\\"description\\\":\\\"Availability\\\"}\",\"name\":\"Evidence\"}],\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"fields\":{\"Boolean\":{\"status\":\"supported\",\"valueJson\":\"false\"},\"Decimal\":{\"status\":\"supported\",\"valueJson\":\"\\\"1.2300\\\"\"},\"Evidence\":{\"status\":\"supported\",\"valueJson\":\"\\\"present\\\"\"},\"Integer\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"List\":{\"status\":\"supported\",\"valueJson\":\"[]\"},\"Number\":{\"status\":\"supported\",\"valueJson\":\"-0\"},\"Range\":{\"status\":\"supported\",\"valueJson\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\"},\"String\":{\"status\":\"supported\",\"valueJson\":\"\\\"\\\"\"},\"Text\":{\"status\":\"supported\",\"valueJson\":\"\\\" A \\\"\"}},\"recordRecipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"values\":{\"Boolean\":\"false\",\"Decimal\":\"1.2300\",\"Evidence\":\"present\",\"Integer\":\"-0\",\"List\":\"[]\",\"Number\":\"-0\",\"Range\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"String\":\"\",\"Text\":\" A \"}}},\"receipt\":{\"acquisition\":{\"adapter\":{\"digest\":\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"name\":\"jpack-desk/reviewed-input\",\"version\":\"2\"},\"endpoint\":\"desk-local:reviewed-inputs\",\"observedAt\":\"2026-01-01T00:00:00Z\",\"shape\":\"mcp\"},\"argumentsCommitment\":\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\",\"authority\":\"synthetic\",\"callIndex\":0,\"keyId\":\"10ba682c8ad13513971e8b56881aab8b\",\"kind\":\"acquisition\",\"receiptVersion\":\"3\",\"resultDigest\":\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\",\"servedAt\":\"2026-01-01T00:00:00Z\",\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\",\"source\":\"desk-inputs\"},\"salts\":{\"opaque\":[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]],\"args\":\"0101010101010101010101010101010101010101010101010101010101010101\"}}}}" + }, + { + "id": "response-depth-one-over-retained", + "baseCaseId": "generated-eight-types-retainedResponseJson", + "entrypoint": "verify", + "expected": "refusal:input-over-bound", + "cli": false, + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"opaque\\\":[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]],\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}" + }, + { + "id": "response-malformed-direct", + "baseCaseId": "generated-eight-types-retainedResponseJson", + "entrypoint": "verify", + "expected": "refusal:input-malformed", + "cli": false, + "acquisitionsJson": "{\"desk\":{\"response\":{}}" + }, + { + "id": "response-malformed-retained", + "baseCaseId": "generated-eight-types-retainedResponseJson", + "entrypoint": "verify", + "expected": "refusal:input-malformed", + "cli": true, + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\"}}" + }, + { + "id": "response-duplicate-direct", + "baseCaseId": "generated-eight-types-retainedResponseJson", + "entrypoint": "verify", + "expected": "refusal:input-malformed", + "cli": false, + "acquisitionsJson": "{\"desk\":{\"response\":{\"result\":{},\"result\":{}}}}" + }, + { + "id": "response-duplicate-retained", + "baseCaseId": "generated-eight-types-retainedResponseJson", + "entrypoint": "verify", + "expected": "refusal:input-malformed", + "cli": true, + "acquisitionsJson": "{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{},\\\"result\\\":{}}\"}}" + }, + { + "id": "selector-invalid-utf8-verify", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-malformed", + "cli": true, + "selectorHex": "ff" + }, + { + "id": "selector-malformed-json-verify", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "verify", + "expected": "refusal:input-malformed", + "cli": false, + "selectorHex": "7b" + }, + { + "id": "selector-invalid-utf8-source-input", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-malformed", + "cli": true, + "selectorHex": "ff" + }, + { + "id": "selector-malformed-json-source-input", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-malformed", + "cli": false, + "selectorHex": "7b" + }, + { + "id": "selector-invalid-utf8-export", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "export", + "expected": "refusal:input-malformed", + "cli": true, + "selectorHex": "ff" + }, + { + "id": "selector-malformed-json-export", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "export", + "expected": "refusal:input-malformed", + "cli": false, + "selectorHex": "7b" + }, + { + "id": "source-input-malformed", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-malformed", + "cli": true, + "sourceInputJson": "{" + }, + { + "id": "source-input-duplicate", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-malformed", + "cli": false, + "sourceInputJson": "{\"x\":1,\"x\":2}" + }, + { + "id": "source-input-invalid-utf8", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-malformed", + "cli": false, + "artifactHex": "ff" + }, + { + "id": "export-malformed", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "export", + "expected": "refusal:input-malformed", + "cli": true, + "wireJson": "{" + }, + { + "id": "export-duplicate", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "export", + "expected": "refusal:input-malformed", + "cli": false, + "wireJson": "{\"x\":1,\"x\":2}" + }, + { + "id": "export-invalid-utf8", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "export", + "expected": "refusal:input-malformed", + "cli": false, + "artifactHex": "ff" + }, + { + "id": "source-import-dialect-array", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-malformed", + "cli": true, + "sourceInputJson": "{\"case\":{\"provenance\":{\"opaque\":\"kept\"},\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}}},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"import\":{\"binding\":{},\"dialect\":[]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"sources\":{}}" + }, + { + "id": "source-import-dialect-null", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-malformed", + "cli": false, + "sourceInputJson": "{\"case\":{\"provenance\":{\"opaque\":\"kept\"},\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}}},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"import\":{\"binding\":{},\"dialect\":null},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"sources\":{}}" + }, + { + "id": "source-import-dialect-string", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-malformed", + "cli": false, + "sourceInputJson": "{\"case\":{\"provenance\":{\"opaque\":\"kept\"},\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}}},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"import\":{\"binding\":{},\"dialect\":\"bad\"},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"sources\":{}}" + }, + { + "id": "source-import-binding-array", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-malformed", + "cli": false, + "sourceInputJson": "{\"case\":{\"provenance\":{\"opaque\":\"kept\"},\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}}},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"import\":{\"binding\":[],\"dialect\":{}},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"sources\":{}}" + }, + { + "id": "source-import-invalid-binding", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-malformed", + "cli": false, + "sourceInputJson": "{\"case\":{\"provenance\":{\"opaque\":\"kept\"},\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}}},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"import\":{\"binding\":{\"sources\":{}},\"dialect\":{\"case\":{\"evidence\":[],\"facts\":[]},\"version\":2}},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"sources\":{}}" + }, + { + "id": "source-import-invalid-sources", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-malformed", + "cli": false, + "sourceInputJson": "{\"case\":{\"provenance\":{\"opaque\":\"kept\"},\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \"}}},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"import\":{\"binding\":{},\"dialect\":{\"case\":{\"evidence\":[],\"facts\":[]},\"sources\":[[]],\"version\":2}},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"sources\":{}}" + }, + { + "id": "source-import-valid-unbound", + "baseCaseId": "generated-eight-types-retainedResponseJson", + "entrypoint": "source-input", + "expected": "reading", + "cli": true, + "sourceInputJson": "{\"case\":{},\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"import\":{\"binding\":{\"dialect\":\"sha256:595db7e4f2e518869a7856299aa1bf9d7e052475e9f6bf188f470b481f245564\",\"sources\":{\"desk\":{\"profile\":\"reviewed\",\"profileDigest\":\"sha256:d27cdfb72344bc82eec03fb69af6e5f0358fd4f7d31be2cd1f46b332b0152066\"}}},\"dialect\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"operation\":\"read_reviewed_input\",\"platform\":\"desk\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}},\"record\":\"jpack-desk/reviewed-input\",\"shape\":\"mcp\"}],\"version\":3}},\"mapping\":{\"admits\":{\"evidence\":{\"proof\":[\"generated\"]},\"facts\":{\"/boolean\":[\"generated\"],\"/decimal\":[\"generated\"],\"/integer\":[\"generated\"],\"/list\":[\"generated\"],\"/number\":[\"generated\"],\"/range\":[\"generated\"],\"/string\":[\"generated\"],\"/text\":[\"generated\"]}},\"case\":{\"evidence\":[],\"facts\":[]},\"profile\":\"base\",\"sources\":[{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"kind\":\"operation\",\"maxAge\":300,\"name\":\"desk\",\"profile\":\"reviewed\",\"profileDigest\":\"sha256:d27cdfb72344bc82eec03fb69af6e5f0358fd4f7d31be2cd1f46b332b0152066\",\"read\":{\"copy\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/integer\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"List\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/list\"},{\"conversion\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/range\"},{\"conversion\":{\"column\":\"String\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/string\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"research-value\"},\"source\":\"/retained\",\"target\":\"/number\"}]}}}],\"version\":3},\"mappingDigest\":\"sha256:7b7f4e89503164ed51ee1e1a9dfba5c74a44e1ab3a6077cd36caf4afbd67d522\",\"sources\":{\"desk\":{\"retainedResponseJson\":\"{\\\"result\\\":{\\\"contractVersion\\\":\\\"1\\\",\\\"originalSnapshotJson\\\":\\\"{\\\\\\\"version\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"preparationId\\\\\\\":\\\\\\\"prep_synthetic\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":8,\\\\\\\"qualification\\\\\\\":null,\\\\\\\"prepared\\\\\\\":{\\\\\\\"ignored\\\\\\\":\\\\\\\"not raw input\\\\\\\"},\\\\\\\"record\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"record_synthetic\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"sourceId\\\\\\\":\\\\\\\"source_synthetic\\\\\\\",\\\\\\\"row\\\\\\\":1,\\\\\\\"class\\\\\\\":\\\\\\\"generated\\\\\\\",\\\\\\\"status\\\\\\\":\\\\\\\"ready\\\\\\\",\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"Integer\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Decimal\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"Boolean\\\\\\\":\\\\\\\"false\\\\\\\",\\\\\\\"List\\\\\\\":\\\\\\\"[]\\\\\\\",\\\\\\\"Range\\\\\\\":\\\\\\\"{\\\\\\\\\\\\\\\"min\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"1.00\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"max\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"2.0\\\\\\\\\\\\\\\"}\\\\\\\",\\\\\\\"String\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"Number\\\\\\\":\\\\\\\"-0\\\\\\\",\\\\\\\"Evidence\\\\\\\":\\\\\\\"present\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"runId\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"entity\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"entity_synthetic\\\\\\\",\\\\\\\"kind\\\\\\\":\\\\\\\"record\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Synthetic\\\\\\\",\\\\\\\"url\\\\\\\":\\\\\\\"https://example.test/\\\\\\\",\\\\\\\"fields\\\\\\\":{\\\\\\\"Text\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\" A \\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Integer\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Decimal\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"1.2300\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Boolean\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":false,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"List\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":[],\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Range\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"},\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"String\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Number\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":-0,\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"},\\\\\\\"Evidence\\\\\\\":{\\\\\\\"status\\\\\\\":\\\\\\\"supported\\\\\\\",\\\\\\\"value\\\\\\\":\\\\\\\"present\\\\\\\",\\\\\\\"sources\\\\\\\":[],\\\\\\\"note\\\\\\\":\\\\\\\"opaque source note\\\\\\\"}}}}},\\\\\\\"values\\\\\\\":{\\\\\\\"Text\\\\\\\":\\\\\\\"filtered visible\\\\\\\"},\\\\\\\"research\\\\\\\":{\\\\\\\"id\\\\\\\":\\\\\\\"research_11111111111111111111111111111111\\\\\\\",\\\\\\\"recipeVersion\\\\\\\":7,\\\\\\\"recipe\\\\\\\":{\\\\\\\"version\\\\\\\":1,\\\\\\\"target\\\\\\\":\\\\\\\"records\\\\\\\",\\\\\\\"fields\\\\\\\":[{ \\\\\\\"type\\\\\\\" : \\\\\\\"text\\\\\\\", \\\\\\\"name\\\\\\\" : \\\\\\\"Text\\\\\\\", \\\\\\\"description\\\\\\\" : \\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\" },{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"},{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}],\\\\\\\"criteria\\\\\\\":[],\\\\\\\"ai\\\\\\\":{},\\\\\\\"limits\\\\\\\":{}},\\\\\\\"intent\\\\\\\":\\\\\\\"Opaque original intent\\\\\\\",\\\\\\\"createdAt\\\\\\\":\\\\\\\"2026-01-01T00:00:00Z\\\\\\\",\\\\\\\"approvedLimits\\\\\\\":{},\\\\\\\"budgetApprovals\\\\\\\":[],\\\\\\\"workflowApproval\\\\\\\":null,\\\\\\\"modelResponses\\\\\\\":[],\\\\\\\"sources\\\\\\\":[]},\\\\\\\"reviews\\\\\\\":[],\\\\\\\"legacyOpaque\\\\\\\":{\\\\\\\"escaped\\\\\\\":\\\\\\\"\\\\\\\\ud800\\\\\\\"}}\\\",\\\"originalSnapshotSha256\\\":\\\"sha256:059b04e2781eea91f1d1f529fdbd5f6da1d1e731acab7309615b99a7ec52f4ea\\\",\\\"retained\\\":{ \\\"contractVersion\\\":\\\"1\\\",\\\"origin\\\":\\\"generated\\\",\\\"research\\\":{\\\"declaration\\\":{\\\"fields\\\":[{\\\"fieldJson\\\":\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"A \\\\\\\\u0042 / kept\\\\\\\"}\\\",\\\"name\\\":\\\"Text\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Integer\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"integer\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original integer\\\\\\\"}\\\",\\\"name\\\":\\\"Integer\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Decimal\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"decimal\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original decimal\\\\\\\"}\\\",\\\"name\\\":\\\"Decimal\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Boolean\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"boolean\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original boolean\\\\\\\"}\\\",\\\"name\\\":\\\"Boolean\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"List\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text-list\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original list\\\\\\\"}\\\",\\\"name\\\":\\\"List\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Range\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"range\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Original range\\\\\\\"}\\\",\\\"name\\\":\\\"Range\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"String\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical string\\\\\\\"}\\\",\\\"name\\\":\\\"String\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Number\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"number\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Historical number\\\\\\\"}\\\",\\\"name\\\":\\\"Number\\\"},{\\\"fieldJson\\\":\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"Evidence\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"text\\\\\\\",\\\\\\\"description\\\\\\\":\\\\\\\"Availability\\\\\\\"}\\\",\\\"name\\\":\\\"Evidence\\\"}],\\\"recipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"fields\\\":{\\\"Boolean\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"false\\\"},\\\"Decimal\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"1.2300\\\\\\\"\\\"},\\\"Evidence\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"present\\\\\\\"\\\"},\\\"Integer\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"List\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"[]\\\"},\\\"Number\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"-0\\\"},\\\"Range\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\"},\\\"String\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\"\\\\\\\"\\\"},\\\"Text\\\":{\\\"status\\\":\\\"supported\\\",\\\"valueJson\\\":\\\"\\\\\\\" A \\\\\\\"\\\"}},\\\"recordRecipeRevision\\\":\\\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\\\"},\\\"values\\\":{\\\"Boolean\\\":\\\"false\\\",\\\"Decimal\\\":\\\"1.2300\\\",\\\"Evidence\\\":\\\"present\\\",\\\"Integer\\\":\\\"-0\\\",\\\"List\\\":\\\"[]\\\",\\\"Number\\\":\\\"-0\\\",\\\"Range\\\":\\\"{\\\\\\\"min\\\\\\\":\\\\\\\"1.00\\\\\\\",\\\\\\\"max\\\\\\\":\\\\\\\"2.0\\\\\\\"}\\\",\\\"String\\\":\\\"\\\",\\\"Text\\\":\\\" A \\\"}}},\\\"receipt\\\":{\\\"acquisition\\\":{\\\"adapter\\\":{\\\"digest\\\":\\\"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\",\\\"name\\\":\\\"jpack-desk/reviewed-input\\\",\\\"version\\\":\\\"2\\\"},\\\"endpoint\\\":\\\"desk-local:reviewed-inputs\\\",\\\"observedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"shape\\\":\\\"mcp\\\"},\\\"argumentsCommitment\\\":\\\"sha256:4fa01cc6d6576c3c8e54716e4fd29714009aa301732189209e2531bc07aab4b5\\\",\\\"authority\\\":\\\"synthetic\\\",\\\"callIndex\\\":0,\\\"keyId\\\":\\\"10ba682c8ad13513971e8b56881aab8b\\\",\\\"kind\\\":\\\"acquisition\\\",\\\"receiptVersion\\\":\\\"3\\\",\\\"resultDigest\\\":\\\"sha256:4e8a6ba130e89f25231ce9b54c6062a1bf6e773762b7d41929839319d11f43c4\\\",\\\"servedAt\\\":\\\"2026-01-01T00:00:00Z\\\",\\\"sessionId\\\":\\\"synthetic.retained-column\\\",\\\"signature\\\":\\\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\\\",\\\"source\\\":\\\"desk-inputs\\\"},\\\"salts\\\":{\\\"args\\\":\\\"0101010101010101010101010101010101010101010101010101010101010101\\\"}}\"}}}", + "preparationJson": "{\"cites\":[{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"}],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:6bbd6a1d2d192a87512cb5e5477aca6a6e30f90580ff2e8022172abf26b748f7\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:1e96f41174e008b55a85766badc3a1b474145b5dae98709713c83285b99d898c\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Integer\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:eb500d8bd1a106b052e2963f12263e75b1cf0e4d593a7d1a6fd3651c1715db8a\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/integer\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"List\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:b83dd6a3e1df1b8605aff28ae3bb6e3bbd9a5a072adf6421cb5fda9f997cc023\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"[]\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/list\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:78fc205fa9a01e82bb0442bffd41f6c3e8ccd611d655d490c252f4c8c2a99898\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Range\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:d463e0f77bf2c28fa7c6c2fcd70c2aab4ce341e99486f1a25eca6642166d0a46\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"{\\\"min\\\":\\\"1.00\\\",\\\"max\\\":\\\"2.0\\\"}\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/range\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"String\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:60e84d0fe0de00c95ffed8b8a36d4dc798118c29efed18dac23449f47ca8be39\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\"\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/string\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"research-value\"},\"state\":\"present\"},\"researchIdentity\":{\"fieldSha256\":\"sha256:c34b7a41cb849c1f3d4155283acaf77f9906b742229a12ae0e6157487205af83\",\"recipeRevision\":\"sha256:2fffc39ce48e5ecf531123cbcf65ff4dac679c044a25c681ecd44bc2fb28daed\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"generated\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a02eb7bb30d12667cb29af079fa28330661529cba5abe58c009820db5071d66c\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"present\\\"\",\"state\":\"value\"}},\"generatedInfluence\":true,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:1ac1c0366e48026cc284a1e746714a9457a4a6e84840dd5e24567c75afc83497\",\"reason\":\"copied\",\"receipt\":{\"callIndex\":0,\"sessionId\":\"synthetic.retained-column\",\"signature\":\"c2c56ed13020deebc517e0d8a0727abf820bb153736dd7d7d854e4893268226ed437624dbc4b0cf70c6f06ae43c110fcff95a12a6ba789e629b358792e06e207\"},\"source\":\"desk\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:7b7f4e89503164ed51ee1e1a9dfba5c74a44e1ab3a6077cd36caf4afbd67d522\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[],\"evidenceAvailability\":{},\"facts\":{},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"},{\"arguments\":{\"arguments\":{\"grant\":\"synthetic-fixture\"},\"tool\":\"read_reviewed_input\"},\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"present\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"integer\":-0,\"list\":[],\"number\":-0,\"range\":{\"max\":\"2.0\",\"min\":\"1.00\"},\"string\":\"\",\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"desk\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":3}" + }, + { + "id": "source-input-document-depth-exact", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "reading", + "cli": false, + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"snapshot\":[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]}" + }, + { + "id": "source-input-document-depth-one-over", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-over-bound", + "cli": false, + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"snapshot\":[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]}" + }, + { + "id": "source-input-document-number-exact", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "reading", + "cli": false, + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"snapshot\":11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111}" + }, + { + "id": "source-input-document-number-one-over", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-over-bound", + "cli": false, + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"snapshot\":111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111}" + }, + { + "id": "source-input-document-exponent-exact", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "reading", + "cli": false, + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"snapshot\":1e308}" + }, + { + "id": "source-input-document-exponent-one-over", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "source-input", + "expected": "refusal:input-over-bound", + "cli": false, + "sourceInputJson": "{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"snapshot\":1e309}" + }, + { + "id": "export-document-depth-exact", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "export", + "expected": "reading", + "cli": false, + "wireJson": "{\"version\":2,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"opaque\":[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]],\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}}}}" + }, + { + "id": "export-document-depth-one-over", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "export", + "expected": "refusal:input-over-bound", + "cli": false, + "wireJson": "{\"version\":2,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"opaque\":[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]],\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}}}}" + }, + { + "id": "export-document-number-exact", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "export", + "expected": "reading", + "cli": false, + "wireJson": "{\"version\":2,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"opaque\":11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}}}}" + }, + { + "id": "export-document-number-one-over", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "export", + "expected": "refusal:input-over-bound", + "cli": false, + "wireJson": "{\"version\":2,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"opaque\":111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}}}}" + }, + { + "id": "export-document-exponent-exact", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "export", + "expected": "reading", + "cli": false, + "wireJson": "{\"version\":2,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"opaque\":1e308,\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}}}}" + }, + { + "id": "export-document-exponent-one-over", + "baseCaseId": "asserted-all-conversions-and-omissions", + "entrypoint": "export", + "expected": "refusal:input-over-bound", + "cli": false, + "wireJson": "{\"version\":2,\"releaseDigest\":\"sha256:0000000000000000000000000000000000000000000000000000000000000000\",\"release\":{\"opaque\":1e309,\"pack\":\"{\\n \\\"specVersion\\\": \\\"0.3.0\\\",\\n \\\"id\\\": \\\"https://example.com/judgment-packs/expense-approval\\\",\\n \\\"version\\\": \\\"0.1.0\\\",\\n \\\"title\\\": \\\"Expense approval\\\",\\n \\\"description\\\": \\\"Research example for deciding whether an employee expense may be automatically approved.\\\",\\n \\\"decision\\\": {\\n \\\"intent\\\": \\\"Determine whether an employee expense may be automatically approved, rejected, or sent to a human reviewer.\\\",\\n \\\"question\\\": \\\"What approval path should this expense follow?\\\"\\n },\\n \\\"applicability\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/type\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": \\\"employee-expense\\\"\\n },\\n \\\"evidenceRequirements\\\": [\\n {\\n \\\"id\\\": \\\"receipt\\\",\\n \\\"description\\\": \\\"An itemized receipt for the expense.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"document\\\"\\n },\\n {\\n \\\"id\\\": \\\"cost-center\\\",\\n \\\"description\\\": \\\"A valid cost-center identifier.\\\",\\n \\\"required\\\": true,\\n \\\"kind\\\": \\\"fact\\\"\\n }\\n ],\\n \\\"sources\\\": [\\n {\\n \\\"id\\\": \\\"expense-policy\\\",\\n \\\"title\\\": \\\"Example expense policy\\\",\\n \\\"publisher\\\": \\\"Example Corporation\\\",\\n \\\"publishedAt\\\": \\\"2026-01-15\\\",\\n \\\"locator\\\": {\\n \\\"kind\\\": \\\"uri\\\",\\n \\\"value\\\": \\\"https://example.com/policies/expenses\\\"\\n },\\n \\\"citation\\\": {\\n \\\"location\\\": \\\"Section 4 \\u2014 approval thresholds\\\",\\n \\\"excerpt\\\": \\\"Expenses above 5000 require finance review. Prohibited categories must be rejected.\\\"\\n },\\n \\\"rights\\\": \\\"Example content; not an operational policy.\\\"\\n }\\n ],\\n \\\"outcomes\\\": [\\n {\\n \\\"id\\\": \\\"approve\\\",\\n \\\"label\\\": \\\"Approve\\\",\\n \\\"description\\\": \\\"The evidence and declared rules support automatic approval.\\\"\\n },\\n {\\n \\\"id\\\": \\\"manual-review\\\",\\n \\\"label\\\": \\\"Manual review\\\",\\n \\\"description\\\": \\\"An accountable finance reviewer must decide.\\\"\\n },\\n {\\n \\\"id\\\": \\\"reject\\\",\\n \\\"label\\\": \\\"Reject\\\",\\n \\\"description\\\": \\\"The expense falls in a prohibited category.\\\"\\n }\\n ],\\n \\\"rules\\\": [\\n {\\n \\\"id\\\": \\\"prohibited-category\\\",\\n \\\"description\\\": \\\"Reject expenses in a prohibited category.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n },\\n \\\"outcome\\\": \\\"reject\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy prohibits these categories.\\\"\\n },\\n {\\n \\\"id\\\": \\\"large-expense\\\",\\n \\\"description\\\": \\\"Send expenses above the declared threshold to finance review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"greater-than\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"The example policy requires finance review above 5000.\\\"\\n },\\n {\\n \\\"id\\\": \\\"ordinary-expense\\\",\\n \\\"description\\\": \\\"Approve a supported ordinary expense at or below the threshold.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"all\\\",\\n \\\"conditions\\\": [\\n {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/amount\\\",\\n \\\"operator\\\": \\\"less-than-or-equal\\\",\\n \\\"value\\\": \\\"5000\\\"\\n },\\n {\\n \\\"op\\\": \\\"not\\\",\\n \\\"condition\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/category\\\",\\n \\\"operator\\\": \\\"in\\\",\\n \\\"value\\\": [\\\"personal\\\", \\\"cash-equivalent\\\"]\\n }\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"receipt\\\"\\n },\\n {\\n \\\"op\\\": \\\"evidence-present\\\",\\n \\\"evidenceRequirement\\\": \\\"cost-center\\\"\\n }\\n ]\\n },\\n \\\"outcome\\\": \\\"approve\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\",\\n \\\"evidenceRequirementRefs\\\": [\\\"receipt\\\", \\\"cost-center\\\"],\\n \\\"sourceRefs\\\": [\\\"expense-policy\\\"],\\n \\\"rationale\\\": \\\"Ordinary supported expenses may follow the automatic path.\\\"\\n }\\n ],\\n \\\"exceptions\\\": [\\n {\\n \\\"id\\\": \\\"active-investigation\\\",\\n \\\"description\\\": \\\"An expense connected to an active investigation requires human review.\\\",\\n \\\"when\\\": {\\n \\\"op\\\": \\\"fact\\\",\\n \\\"path\\\": \\\"/expense/activeInvestigation\\\",\\n \\\"operator\\\": \\\"equals\\\",\\n \\\"value\\\": true\\n },\\n \\\"effect\\\": \\\"force-outcome\\\",\\n \\\"outcome\\\": \\\"manual-review\\\",\\n \\\"onUnknown\\\": \\\"escalate\\\"\\n }\\n ],\\n \\\"fallbackOutcome\\\": \\\"manual-review\\\",\\n \\\"escalation\\\": {\\n \\\"triggers\\\": [\\n \\\"not-applicable\\\",\\n \\\"missing-required-evidence\\\",\\n \\\"unknown\\\",\\n \\\"conflict\\\",\\n \\\"no-match\\\"\\n ],\\n \\\"target\\\": {\\n \\\"kind\\\": \\\"human-role\\\",\\n \\\"name\\\": \\\"Finance reviewer\\\"\\n },\\n \\\"message\\\": \\\"Review the expense, cited policy, missing evidence, and conflicting rules.\\\"\\n },\\n \\\"metadata\\\": {\\n \\\"authors\\\": [\\\"Judgment Pack Specification contributors\\\"],\\n \\\"createdAt\\\": \\\"2026-07-22T00:00:00Z\\\",\\n \\\"license\\\": \\\"Apache-2.0\\\"\\n }\\n}\\n\",\"sample\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"inputMapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2}},\"run\":{\"input\":{\"source\":{\"conversionContract\":{\"contract\":\"retained-column/1\",\"spec\":{\"version\":\"0.3.0-rc.2\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\"},\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"]},\"mapping\":{\"case\":{\"evidence\":[{\"availability\":{\"column\":\"Evidence\",\"contractVersion\":\"1\"},\"requirement\":\"proof\",\"source\":\"/retained\"}],\"facts\":[{\"conversion\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/text\"},{\"conversion\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"kind\":\"decimal\"},\"source\":\"/retained\",\"target\":\"/decimal\"},{\"conversion\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"kind\":\"number\"},\"source\":\"/retained\",\"target\":\"/number\"},{\"conversion\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"falseValue\":\"NO\",\"kind\":\"boolean\",\"trueValue\":\"YES\"},\"source\":\"/retained\",\"target\":\"/boolean\"},{\"conversion\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/blank\"},{\"conversion\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/null\"},{\"conversion\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"kind\":\"text\"},\"source\":\"/retained\",\"target\":\"/missing\"}]},\"profile\":\"base\",\"version\":2},\"sources\":{},\"case\":{\"retained\":{ \"contractVersion\":\"1\",\"origin\":\"asserted\",\"research\":null,\"values\":{\"Blank\":\"\\t \",\"Boolean\":\"NO\",\"Decimal\":\"1.2300\",\"Evidence\":\"absent\",\"Null\":null,\"Number\":\"-0\",\"Text\":\" A \" }},\"provenance\":{\"opaque\":\"kept\"}},\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\"},\"preparation\":{\"cites\":[],\"conversionContract\":{\"contract\":\"retained-column/1\",\"profile\":\"base\",\"roles\":[\"document-validation\",\"preview\",\"preparation\",\"preparation-verification\",\"producer-carrier\"],\"spec\":{\"corpusSha256\":\"sha256:2222222222222222222222222222222222222222222222222222222222222222\",\"revision\":\"0000000000000000000000000000000000000000\",\"schemaSha256\":\"sha256:1111111111111111111111111111111111111111111111111111111111111111\",\"version\":\"0.3.0-rc.2\"}},\"lineage\":[{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Blank\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"blank\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/blank\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Boolean\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"false\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/boolean\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Decimal\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"1.2300\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/decimal\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Missing\",\"contractVersion\":\"1\",\"input\":{\"state\":\"missing\"},\"result\":{\"reason\":\"missing\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/missing\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Null\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"reason\":\"legacy-null\",\"state\":\"omitted\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":false,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/null\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Number\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"-0\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/number\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Text\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\" A \\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"fact\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"/text\"},{\"basis\":[\"/retained\"],\"candidateFrom\":[\"/retained\"],\"class\":\"asserted\",\"columnTransformation\":{\"column\":\"Evidence\",\"contractVersion\":\"1\",\"input\":{\"ref\":{\"frameSha256\":\"sha256:a42eddcac693b1dd1ecb713ef3c15c86e32ec3d2a70140e43dc8ea97d116a9c8\",\"location\":\"values\"},\"state\":\"present\"},\"result\":{\"json\":\"\\\"absent\\\"\",\"state\":\"value\"}},\"generatedInfluence\":false,\"kind\":\"evidence\",\"present\":true,\"readDigest\":\"sha256:d490576053506ac4ef118b05853679c5e33d3b7ee68013df7a6b7bf7af38c1c0\",\"reason\":\"copied\",\"source\":\"case\",\"status\":\"resolved\",\"target\":\"proof\"}],\"mappingDigest\":\"sha256:a3351f9632d587f4a6ca7454fdcf69d953bc27c401f5417fa67dcaf8e79b3bd1\",\"outcomes\":[{\"claim\":{\"acquisitionStatus\":\"resolved\",\"basis\":[\"/retained\"],\"evidenceAvailability\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"},\"reason\":\"copied\"},\"name\":\"case\",\"parameters\":{\"runAt\":\"2026-01-01T00:00:00Z\"},\"reason\":\"copied\",\"status\":\"resolved\"}],\"verification\":\"verified acquisitions; session sealing and input truth are not established\",\"verifiedAt\":\"2026-01-01T00:00:00Z\",\"version\":2}},\"result\":{\"evaluatorSpecVersion\":\"0.3.0\"},\"audit\":{\"evaluatorSpecVersion\":\"0.3.0\",\"pack\":{\"specVersion\":\"0.3.0\"},\"inputs\":{\"evidence\":{\"proof\":\"absent\"},\"facts\":{\"boolean\":false,\"decimal\":\"1.2300\",\"number\":-0,\"text\":\" A \"}},\"cites\":[],\"binding\":{\"kind\":\"judgment-pack-runner/preparation/1\",\"digest\":\"sha256:2b3005dab13e1c2edebd572e1b44f3c925cb008ffa0fcf199e1d8a1782a6f88a\"}}}}" + } + ] +} diff --git a/internal/retainedcolumns/testdata/rc2/release-identity.json b/internal/retainedcolumns/testdata/rc2/release-identity.json new file mode 100644 index 0000000..2a3a32a --- /dev/null +++ b/internal/retainedcolumns/testdata/rc2/release-identity.json @@ -0,0 +1 @@ +{"distribution":"release-candidate","maturity":"draft","releaseVersion":"0.3.0-rc.2","sourceCommit":"bcac15b7537ce21879201b5e5dfe795496225121","specVersion":"0.3.0","tag":"v0.3.0-rc.2"} diff --git a/internal/retainedcolumns/testdata/rc2/release-inventory.json b/internal/retainedcolumns/testdata/rc2/release-inventory.json new file mode 100644 index 0000000..d261821 --- /dev/null +++ b/internal/retainedcolumns/testdata/rc2/release-inventory.json @@ -0,0 +1,39 @@ +{ + "contract": "retained-column/1", + "distribution": "v0.3.0-rc.2", + "maturity": "draft", + "schema": "schema/retained-column/1/contract.schema.json", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpus": "conformance/retained-column/1/cases.json", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863", + "files": { + "conformance/retained-column/1/README.md": "sha256:dc4ee78be4339ccf56f8bda34d8ae175fb07605cfb77d003e55c781ebd16308c", + "conformance/retained-column/1/capabilities.json": "sha256:fd8b969e5372cdf630fe12ec4034a2bf929d47ea56664abb0b3f510ad761f644", + "conformance/retained-column/1/cases.json": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863", + "conformance/retained-column/1/examples.json": "sha256:113354682037e3b576be23d812ab86d280718a50ca1bf1a631e85ba91eea5cca", + "conformance/retained-column/1/manifest.json": "sha256:b78cdac121b4b936614c9e652af3c78bde8b84184fd0a04f84effdd2c3eaf2c8", + "conformance/retained-column/1/preparations.json": "sha256:ff9450279cc65db4422f3644975b5b1128396e2e9a1f17effd4dcc732bb5317a", + "schema/retained-column/1/contract.schema.json": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "spec/dialect.md": "sha256:a10d6fc0f50b1cf450b2bd9156175529bed2a7d926d24567b47677076066cb5a", + "spec/judgment-pack-core.md": "sha256:0ceb66c15ce6b8268e02f319720eb40766c616423cfa08caaeea56ae8ba3d2ef", + "spec/retained-column.md": "sha256:f17747d5daeba6953cef335900569c5b1cf1052b7f982c0146b6322687375b7d", + "tools/_retained_column.py": "sha256:65c91f1363769ecfdfbebb5b42ade4258aaaf7b61620b23ee68b4000fee96233", + "tools/check_retained_column.py": "sha256:946709a979f9dd9fc1aa10ab4500d77128c053ad3e46f653537f83c29becad18", + "tools/dialect-verify-ts/src/bounds.ts": "sha256:c90d6c5db69206d4361409e502bb54a5e81505e4ac5842b987b44e60fbdb53c1", + "tools/dialect-verify-ts/src/ed25519.ts": "sha256:4f5c9c8eb015ba7a690e8998fdcb5440b7282bbd6deb04c53ddd7bbd2dd6174a", + "tools/dialect-verify-ts/src/endpoint.ts": "sha256:50e0d5d5b3d6c0c12a54e9b07e5daf2a499c84499e6890bfe85127ca6d6c7616", + "tools/dialect-verify-ts/src/forms.ts": "sha256:bc4f81670ea5c8710072ee3ec7f5fe8951f2155c430da3e00755b39777054326", + "tools/dialect-verify-ts/src/json.ts": "sha256:724e1408cd54032dded8f5677665a7a31a25b9111ad3695f401ce64207d61a6e", + "tools/dialect-verify-ts/src/main.ts": "sha256:ef1e5f28c2608d51f719adc74bad03266ce5f2fb5526673e878229dc260b99be", + "tools/dialect-verify-ts/src/prepare.ts": "sha256:e185b78a8f4d51cac63557f6973ef8b4af99660c3cef15b1509156acc8bbf027", + "tools/dialect-verify-ts/src/retained-engine.mjs": "sha256:4ab0e7bcae864552a987a53fcec97f834e280c4dbf8b3ae37b6ae950739a9825", + "tools/dialect-verify-ts/src/retained.ts": "sha256:5ae44bc9782168cdae87467a0eb9f4229382f46058ac64ef6369b1236fbe905d", + "tools/dialect-verify-ts/src/schema.ts": "sha256:938ad0ffefc378a7b1cc3bc7777063f4ef2929fbf8b90132ca5eb76537981dd3", + "tools/dialect-verify-ts/src/time.ts": "sha256:54afe326be3d163d325ea64ccaf907e83530a38250824d1877cc1b4726c92ca7", + "tools/dialect-verify-ts/src/vector.ts": "sha256:289b68479edf607df1480e46b0e6a6ee04091feb5dd56ddee696fbb2a337a1cb", + "tools/dialect-verify-ts/src/verify.ts": "sha256:5ae002b07b0f9d3755c9d00bc828420e27b9927948402d8e4b266540c4f5cc1b", + "tools/dialect_verify.py": "sha256:fe3b773ce30ad8c395fe85500714a12d6cc4262ccc6bca05c44f7b3b40a60b60", + "tools/retained_column.py": "sha256:0598c3b31a0a4115eb4efdf2e8fccc6b75c558dfe7d09180b3acf2241e937447" + }, + "claim": "selected-leaf-support" +} diff --git a/internal/runner/column_carrier_v1.go b/internal/runner/column_carrier_v1.go index f31d6f6..e3bbbe1 100644 --- a/internal/runner/column_carrier_v1.go +++ b/internal/runner/column_carrier_v1.go @@ -180,7 +180,15 @@ type retainedAcquisitionResult struct{ Canonical, Raw json.RawMessage } // The signature domain remains the canonical result. Raw preserves the received // carrier/frame spelling separately, never pretending that a signature pins raw // serialization. Existing verifyAcquisition callers keep their old contract. +type acquisitionReader func(raw, args []byte, p InputProfile, public ed25519.PublicKey, at time.Time, maxAge int, selection ...*ConversionContract) (json.RawMessage, *Citation, error) + func verifyRetainedAcquisition(raw, args []byte, p InputProfile, public ed25519.PublicKey, at time.Time, maxAge int, selection ...*ConversionContract) (retainedAcquisitionResult, *Citation, error) { + return verifyRetainedAcquisitionUsing(verifyAcquisition, raw, args, p, public, at, maxAge, selection...) +} + +// Private dependency seam for role-specific preparation consistency tests. +// Every public/production caller retains the full acquisition reader above. +func verifyRetainedAcquisitionUsing(read acquisitionReader, raw, args []byte, p InputProfile, public ed25519.PublicKey, at time.Time, maxAge int, selection ...*ConversionContract) (retainedAcquisitionResult, *Citation, error) { if e := selectedConversion(selection).validate("producer-carrier"); e != nil { return retainedAcquisitionResult{}, nil, e } @@ -206,7 +214,7 @@ func verifyRetainedAcquisition(raw, args []byte, p InputProfile, public ed25519. if e == nil && len(envelope["result"]) > artifactLimit(selectedConversion(selection), MaxBody, columnCarrierLimit) { return retainedAcquisitionResult{}, nil, withCode(codeOverBound, errors.New("retained-column carrier exceeds selected limit")) } - canonical, cite, e := verifyAcquisition(raw, args, p, public, at, maxAge, selectedConversion(selection)) + canonical, cite, e := read(raw, args, p, public, at, maxAge, selectedConversion(selection)) if e != nil { return retainedAcquisitionResult{}, nil, e } diff --git a/internal/runner/column_carrier_v1_producer.go b/internal/runner/column_carrier_v1_producer.go index dea9659..a70b496 100644 --- a/internal/runner/column_carrier_v1_producer.go +++ b/internal/runner/column_carrier_v1_producer.go @@ -281,6 +281,11 @@ func columnRetainedResponse(value SourceValue, selection ...*ConversionContract) if len(raw) > responseLimit(selectedConversion(selection)) { return nil, withCode(codeOverBound, errors.New("complete retained response exceeds base limit")) } + if selectedConversion(selection) != nil { + if e := measureBytes(raw, maxDocumentDepth); e != nil { + return nil, e + } + } _, canonErr := proofCanon(raw) if selectedConversion(selection) != nil { _, canonErr = scopedJSON(raw, columnResponseLimit) diff --git a/internal/runner/column_frame_v1_case.go b/internal/runner/column_frame_v1_case.go index 53bb717..7a811e2 100644 --- a/internal/runner/column_frame_v1_case.go +++ b/internal/runner/column_frame_v1_case.go @@ -30,6 +30,11 @@ func columnCaseBytes(c *SourceInput) (json.RawMessage, error) { if len(raw) > artifactLimit(c.ConversionContract, MaxBody, 2*MaxBody+256) { return nil, withCode(codeOverBound, errors.New("case custody exceeds selected case limit")) } + if c.ConversionContract != nil { + if e := measureBytes(raw, maxValueDepth); e != nil { + return nil, e + } + } v, e := readInputJSON(raw) if e != nil { return nil, withCode(codeMalformed, errors.New("case custody is not strict UTF8 object JSON")) diff --git a/internal/runner/column_rc2_caps_test.go b/internal/runner/column_rc2_caps_test.go new file mode 100644 index 0000000..16d15d6 --- /dev/null +++ b/internal/runner/column_rc2_caps_test.go @@ -0,0 +1,145 @@ +package runner + +import ( + "encoding/base64" + "encoding/json" + "testing" +) + +// Declaration/minimum/selector cases exercise the real private admission owners, +// not producer effects or measurement of invented artifact bytes. Extended rows +// belong to separately supporting owners; Runner advertises Base only. +func TestRC2PublishedBaseCapabilityCorpus(t *testing.T) { + var data struct { + Caps, Interface []struct { + ID string + Request map[string]json.RawMessage + Expected struct { + Refusal string + Admitted, Selected bool + } + } + } + // Published JSON group names differ from the intentionally small Go adapter. + var groups map[string]json.RawMessage + if e := json.Unmarshal(rc2Read(t, "cases.json"), &groups); e != nil { + t.Fatal(e) + } + if e := json.Unmarshal(groups["capCases"], &data.Caps); e != nil { + t.Fatal(e) + } + if e := json.Unmarshal(groups["interfaceCases"], &data.Interface); e != nil { + t.Fatal(e) + } + saved := installedConversionSpec + fixture := rc2SyntheticInstallation() + fixture.Version = "draft-rfc0029" + installedConversionSpec = fixture + t.Cleanup(func() { installedConversionSpec = saved }) + checked, extended := 0, 0 + for _, row := range append(data.Caps, data.Interface...) { + if a := row.Request["admission"]; a != nil { + if _, e := exactMembers(a); e != nil { + checked++ + t.Run(row.ID, func(t *testing.T) { rc2ExpectedRefusal(t, row.Expected.Refusal, conversionFailure(codeMalformed)) }) + continue + } + var request struct { + Capabilities json.RawMessage + Required json.RawMessage + Sizes map[string]int + } + if e := json.Unmarshal(a, &request); e != nil { + t.Fatal(e) + } + var identity struct { + Profile string + Role, ProducerGrammar string + Limits map[string]int + } + if e := json.Unmarshal(request.Required, &identity); e != nil { + t.Fatal(e) + } + if identity.Profile == "extended" { + extended++ + continue + } + checked++ + t.Run(row.ID, func(t *testing.T) { + var capRoot map[string]json.RawMessage + var cs []ConversionCapability + e := strictJSON(request.Capabilities, &capRoot) + if e == nil { + if raw, exists := capRoot["conversionContracts"]; !exists { + e = conversionFailure("capability-unsupported") + } else { + e = strictJSON(raw, &cs) + } + } + var required ConversionCapability + if e == nil { + e = strictJSON(request.Required, &required) + } + if e == nil { + var limits map[string]int + limits, e = conversionCapabilityLimits(cs, identity.Role, identity.ProducerGrammar != "") + if e == nil { + for k, n := range limits { + v, ok := request.Sizes[k] + if !ok || v < 0 { + e = conversionFailure(codeMalformed) + break + } + if n > identity.Limits[k] { + limits[k] = identity.Limits[k] + } + if err := conversionArtifactBound(limits, k, v); err != nil { + e = err + break + } + } + } + } + rc2ExpectedRefusal(t, row.Expected.Refusal, e) + }) + } else if a := row.Request["selection"]; a != nil { + var request struct { + Selector json.RawMessage + Role string + } + if e := json.Unmarshal(a, &request); e != nil { + t.Fatal(e) + } + var header struct{ Profile any } + json.Unmarshal(request.Selector, &header) + if header.Profile == "extended" { + extended++ + continue + } + checked++ + t.Run(row.ID, func(t *testing.T) { + _, e := ParseConversionSelector(base64.RawURLEncoding.EncodeToString(request.Selector), request.Role) + rc2ExpectedRefusal(t, row.Expected.Refusal, e) + }) + } + } + if checked == 0 || extended == 0 { + t.Fatal("published capability applicability inventory empty") + } + t.Logf("actual Base declaration/minimum/selection rows=%d; Extended role rows outside Runner support=%d", checked, extended) +} +func rc2ExpectedRefusal(t *testing.T, want string, e error) { + t.Helper() + if want == "" { + if e != nil { + t.Fatal("published positive refused", e) + } + return + } + if e == nil { + t.Fatal("published refusal admitted", want) + } + if _, got := verificationOutcome(e); got != want { + t.Fatalf("published refusal differs: got%s want%s: %v", got, want, e) + } +} diff --git a/internal/runner/column_rc2_core_test.go b/internal/runner/column_rc2_core_test.go new file mode 100644 index 0000000..cac0ff3 --- /dev/null +++ b/internal/runner/column_rc2_core_test.go @@ -0,0 +1,42 @@ +package runner + +import ( + "strings" + "testing" +) + +func TestRC2EvaluatorContractIsExactAndScoped(t *testing.T) { + selected := selectedContract() + if !supportedEvaluatorSpec("0.2.0-draft", nil) || !supportedEvaluatorSpec("0.2.0-draft", selected) || !supportedEvaluatorSpec("0.3.0", selected) { + t.Fatal("supported ordinary or selected evaluator removed") + } + if supportedEvaluatorSpec("0.3.0", nil) || supportedEvaluatorSpec("0.4.0", selected) || supportedEvaluatorSpec("0.3.0-rc.2", selected) { + t.Fatal("selected evaluator admission enlarged ordinary or unknown Core") + } + bad := *selected + bad.Spec.Revision = strings.Repeat("0", 40) + if supportedEvaluatorSpec("0.3.0", &bad) { + t.Fatal("uninstalled selector admitted Core0.3") + } + r := Release{Pack: `{"specVersion":"0.3.0"}`, PackID: "pack", PackVersion: "1", Sample: Input{Source: &SourceInput{ConversionContract: selected}}} + if expectedEvaluatorSpec(r) != "0.3.0" { + t.Fatal("release pack evaluator not retained") + } + if !evaluatorSpecMatches(r, "0.3.0") || evaluatorSpecMatches(r, "0.2.0-draft") || evaluatorSpecMatches(r, "0.4.0") { + t.Fatal("Runtime evaluation evaluator binding lost") + } + matrix := `{"cases":[{"id":"one"}]}` + report := `{"outputVersion":"2","command":"packs test","status":"passed","experimental":true,"evaluatorSpecVersion":"0.3.0","summary":{"total":1,"passed":1,"mismatched":0},"packs":[{"id":"target","packId":"pack","packVersion":"1","status":"passed","summary":{"total":1,"passed":1,"mismatched":0},"rows":[{"id":"one","status":"passed"}]}]}` + if status, e := checkedReport(r, matrix, []byte(report)); e != nil || status != "passed" { + t.Fatalf("matching selected report refused: %s %v", status, e) + } + for _, version := range []string{"0.2.0-draft", "0.4.0"} { + if _, e := checkedReport(r, matrix, []byte(strings.Replace(report, `"evaluatorSpecVersion":"0.3.0"`, `"evaluatorSpecVersion":"`+version+`"`, 1))); e == nil { + t.Fatal("mismatched evaluator report accepted", version) + } + } + r.Sample.Source.ConversionContract = &bad + if expectedEvaluatorSpec(r) != "" { + t.Fatal("release tuple mismatch supplied expected evaluator") + } +} diff --git a/internal/runner/column_rc2_producer_test.go b/internal/runner/column_rc2_producer_test.go new file mode 100644 index 0000000..cb88c08 --- /dev/null +++ b/internal/runner/column_rc2_producer_test.go @@ -0,0 +1,136 @@ +package runner + +import ( + "bytes" + "encoding/json" + "errors" + "os/exec" + "testing" + + "github.com/Judgment-Pack/judgment-pack-runner/internal/retainedcolumns" +) + +func TestRC2PublishedProducerConsistencyCorpus(t *testing.T) { + // Expand ONLY the published handwritten literal patches, exactly as the + // publisher's fixture driver does. No interpreter is asked for expectations; + // no signed/preparation fixture is modified or re-signed. + script := `import json,copy,sys,pathlib +p=pathlib.Path(sys.argv[1]);examples=json.loads((p/'examples.json').read_text());data=json.loads((p/'cases.json').read_text());out=[] +for row in data['producerCases']: + c=copy.deepcopy(examples['producerConsistency']) + for member in ('request','expected'): + if member in row:c[member]=copy.deepcopy(row[member]) + for edit in row.get(member+'Patch',[]): + parent=c[member] + for token in edit['path'][:-1]:parent=parent[token] + key=edit['path'][-1] + if edit.get('remove'):del parent[key] + else:parent[key]=copy.deepcopy(edit['value']) + out.append({'id':row['id'],'requestJson':row.get('wireJson') or json.dumps(c['request'],ensure_ascii=True,separators=(',',':')),'expected':c['expected']}) +print(json.dumps(out))` + raw, e := exec.Command("python3", "-c", script, rc2FixtureDirectory).Output() + if e != nil { + t.Fatal("literal producer fixture expansion", e) + } + var rows []struct { + ID, RequestJSON string + Expected struct { + Consistent bool + Refusal, OriginalSnapshotSHA256, FrameSHA256 string + Transformation json.RawMessage + } + } + if e = json.Unmarshal(raw, &rows); e != nil || len(rows) != 52 { + t.Fatal("published producer inventory", e) + } + checked, extended := 0, 0 + for _, row := range rows { + var request struct{ GeneratedConsistency json.RawMessage } + if e = json.Unmarshal([]byte(row.RequestJSON), &request); e != nil { + t.Fatal(e) + } + var header struct{ Profile string } + json.Unmarshal(request.GeneratedConsistency, &header) + if header.Profile == "extended" { + extended++ + continue + } + checked++ + t.Run(row.ID, func(t *testing.T) { + c, tr, e := rc2ProducerConsistency(request.GeneratedConsistency) + rc2ExpectedRefusal(t, row.Expected.Refusal, e) + if e == nil { + if !row.Expected.Consistent || c.OriginalSnapshotSHA256 != row.Expected.OriginalSnapshotSHA256 || digest(c.RawFrame) != row.Expected.FrameSHA256 || !sameJSON(encode(tr), row.Expected.Transformation) { + t.Fatalf("published original-inventory/reference result differs: frame%s want%s transformation%s", digest(c.RawFrame), row.Expected.FrameSHA256, encode(tr)) + } + } + }) + } + t.Logf("actual producer tuple/inventory/frame/reference checks=%d; Extended consistency outside Runner=%d; acquisition/history are NOT established", checked, extended) +} + +// This is the corpus's explicit prevalidated trust projection, not profile +// registration or a receipt verifier. Actual production entry tests separately +// require the complete trusted profile, request, signature and freshness. +func rc2ProducerConsistency(raw []byte) (retainedColumnCarrier, *retainedcolumns.Transformation, error) { + fail := func(code string) (retainedColumnCarrier, *retainedcolumns.Transformation, error) { + return retainedColumnCarrier{}, nil, withCode(code, errors.New("published producer consistency refusal")) + } + var b struct { + Carrier, TrustedProducer, SourceBinding, Rule json.RawMessage + Profile, ReceiptResultDigest string + Limits map[string]int + } + if strictJSON(raw, &b) != nil || b.Profile != "base" { + return fail(codeMalformed) + } + var trusted map[string]json.RawMessage + if exact, err := exactMembers(b.TrustedProducer); err != nil || len(exact) != 10 { + return fail(codeMalformed) + } else { + trusted = exact + } + var profileDigest string + json.Unmarshal(trusted["profileDigest"], &profileDigest) + delete(trusted, "profileDigest") + var p InputProfile + if strictJSON(encode(trusted), &p) != nil { + return fail(codeMalformed) + } + if e := columnProducerProfile(p); e != nil { + return retainedColumnCarrier{}, nil, e + } + var binding struct{ Kind, Profile, ProfileDigest string } + if strictJSON(b.SourceBinding, &binding) != nil { + return fail(codeMalformed) + } + if binding.Kind != "operation" || binding.Profile != p.ID || binding.ProfileDigest != profileDigest { + return fail(codeMismatch) + } + c, e := readColumnCarrierLimits(b.Carrier, b.Limits, selectedContract()) + if e != nil { + return c, nil, e + } + canonical, e := scopedJSON(b.Carrier, columnCarrierLimit) + if e != nil || digest(canonical) != b.ReceiptResultDigest { + return fail(codeInvalid) + } + if e = validateColumnProducerRelation(c); e != nil { + return c, nil, e + } + rule := b.Rule + var members map[string]json.RawMessage + if json.Unmarshal(rule, &members) != nil { + return fail(codeMalformed) + } + if bytes.Equal(members["kind"], []byte(`"evidence-availability"`)) { + delete(members, "kind") + rule = encode(members) + } + plan, e := retainedcolumns.ParsePlan(rule) + if e != nil { + return c, nil, columnError(e) + } + tr, e := retainedcolumns.Derive(plan, c.Frame) + return c, tr, columnError(e) +} diff --git a/internal/runner/column_rc2_test.go b/internal/runner/column_rc2_test.go new file mode 100644 index 0000000..47e635f --- /dev/null +++ b/internal/runner/column_rc2_test.go @@ -0,0 +1,360 @@ +package runner + +import ( + "crypto/ed25519" + "encoding/base64" + "encoding/hex" + "encoding/json" + "errors" + "github.com/Judgment-Pack/judgment-pack-runner/internal/retainedcolumns" + "net/http/httptest" + "os" + "path/filepath" + "strings" + "testing" + "time" +) + +const rc2FixtureDirectory = "../retainedcolumns/testdata/rc2" + +// This fixed installation exists only in a _test.go file. No request, flag, +// environment variable or host configuration can change production expected pins. +func rc2SyntheticInstallation() ConversionSpec { + return ConversionSpec{Version: "0.3.0-rc.2", Revision: strings.Repeat("0", 40), SchemaSHA256: "sha256:" + strings.Repeat("1", 64), CorpusSHA256: "sha256:" + strings.Repeat("2", 64)} +} +func rc2Read(t *testing.T, name string) []byte { + t.Helper() + b, e := os.ReadFile(filepath.Join(rc2FixtureDirectory, name)) + if e != nil { + t.Fatal(e) + } + return b +} +func TestRC2InstalledIdentityAndSyntheticRefusal(t *testing.T) { + var identity struct{ ReleaseVersion, SourceCommit string } + if e := json.Unmarshal(rc2Read(t, "release-identity.json"), &identity); e != nil { + t.Fatal(e) + } + var inventory struct { + Schema, Corpus, SchemaSHA256, CorpusSHA256 string + Files map[string]string + } + if e := json.Unmarshal(rc2Read(t, "release-inventory.json"), &inventory); e != nil { + t.Fatal(e) + } + want := ConversionSpec{Version: identity.ReleaseVersion, Revision: identity.SourceCommit, SchemaSHA256: inventory.SchemaSHA256, CorpusSHA256: inventory.CorpusSHA256} + if installedConversionSpec != want { + t.Fatalf("compiled support differs from published installation: %+v", installedConversionSpec) + } + for _, p := range []string{"contract.schema.json", "cases.json", "examples.json", "capabilities.json", "preparations.json", "manifest.json"} { + source := "conformance/retained-column/1/" + p + if p == "contract.schema.json" { + source = inventory.Schema + } + if digest(rc2Read(t, p)) != inventory.Files[source] { + t.Fatalf("published fixture changed: %s", p) + } + } + for _, pin := range []ConversionSpec{rc2SyntheticInstallation(), {Version: "Draft RFC0029", Revision: "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", SchemaSHA256: "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", CorpusSHA256: "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2"}} { + c := selectedContract() + c.Spec = pin + body := &unreadBody{} + req := httptest.NewRequest("POST", "/v1/retained-column/1/inputs/next", body) + req.Header.Set("Authorization", "Bearer rc2") + req.Header.Set("JPack-Conversion-Contract", selectedHeader(c)) + w := httptest.NewRecorder() + (&Service{}).Handler("rc2").ServeHTTP(w, req) + if w.Code != 422 || body.reads != 0 || !strings.Contains(w.Body.String(), "capability-unsupported") { + t.Fatalf("noninstalled tuple reached public body owner: %d reads%d %s", w.Code, body.reads, w.Body.String()) + } + } +} + +type rc2PreparationRow struct{ ID, DialectJSON, CaseJSON, AcquisitionsJSON, ProfilesJSON, PreparationJSON, SourceInputJSON, Expected string } +type rc2PreparationCorpus struct { + TestInstallation ConversionSpec + Selector *ConversionContract + Cases []rc2PreparationRow +} + +func rc2Fixture(t *testing.T, row rc2PreparationRow, c *ConversionContract) (PreparationFixture, error) { + t.Helper() + f := PreparationFixture{ConversionContract: c, Dialect: []byte(row.DialectJSON), Case: []byte(row.CaseJSON), Sources: []byte(row.AcquisitionsJSON), Profiles: []byte(row.ProfilesJSON), Preparation: []byte(row.PreparationJSON)} + var members map[string]json.RawMessage + if e := json.Unmarshal(f.Case, &members); e == nil && members["retainedCaseJson"] != nil { + // Adapt the published case-custody fragment through the actual enclosing + // SourceInput decoder, preserving its exact inner text and union guards. + raw := `{"mapping":` + row.DialectJSON + `,"conversionContract":` + string(encode(c)) + `,` + strings.TrimSpace(row.CaseJSON)[1:] + var source SourceInput + if e := strictJSON([]byte(raw), &source); e != nil { + return f, e + } + b, e := columnCaseBytes(&source) + if e != nil { + return f, e + } + f.Case = b + } + return f, nil +} +func TestRC2PublishedPreparationCorpus(t *testing.T) { + var corpus rc2PreparationCorpus + if e := json.Unmarshal(rc2Read(t, "preparations.json"), &corpus); e != nil { + t.Fatal(e) + } + if corpus.TestInstallation != rc2SyntheticInstallation() || len(corpus.Cases) != 27 { + t.Fatal("fixed synthetic installation or case inventory changed") + } + // Sequential test-only substitution, restored before any other top-level + // test runs. It grants no caller-controlled or production installation path. + saved := installedConversionSpec + installedConversionSpec = rc2SyntheticInstallation() + t.Cleanup(func() { installedConversionSpec = saved }) + for _, row := range corpus.Cases { + t.Run(row.ID, func(t *testing.T) { + f, e := rc2Fixture(t, row, corpus.Selector) + var got string + if e != nil { + result, code := verificationOutcome(e) + got = result + ":" + code + } else { + report := verifyPreparationUsing(f, rc2PreparationAcquisition) + got = report.Result + if report.Code != "" { + got += ":" + report.Code + } + if got != row.Expected { + t.Fatalf("published preparation owner: got%s want%s reason%s", got, row.Expected, report.Reason) + } + } + if got != row.Expected { + t.Fatalf("published custody owner: got%s want%s", got, row.Expected) + } + }) + } +} + +// These immutable fixtures target Dialect §5.2 preparation consistency, whose +// chain/caller/witness fields belong to the Gateway verifier (§5.2 last paragraph). +// Independently check its five receipt conditions on the ORIGINAL bytes. The +// production VerifyPreparation entry keeps verifyAcquisition, including the full +// Gateway envelope checks; this reader exists only in test code. +func rc2PreparationAcquisition(raw, args []byte, p InputProfile, public ed25519.PublicKey, at time.Time, maxAge int, selection ...*ConversionContract) (json.RawMessage, *Citation, error) { + fail := func() (json.RawMessage, *Citation, error) { + return nil, nil, withCode(codeInvalid, errors.New("published preparation-only receipt failed")) + } + var envelope struct { + Result, Receipt json.RawMessage + Salts struct{ Args string } + } + if strictJSON(raw, &envelope) != nil { + return fail() + } + result, e := scopedJSON(envelope.Result, columnCarrierLimit) + if e != nil { + return fail() + } + value, e := readInputJSON(envelope.Receipt) + if e != nil { + return fail() + } + receipt, ok := value.(map[string]any) + if !ok { + return fail() + } + str := func(k string) string { s, _ := receipt[k].(string); return s } + if str("receiptVersion") != "3" || str("kind") != "acquisition" || str("keyId") != keyID(p.PublicKey) || str("source") != p.Source || str("authority") != p.Authority || !validHex(str("signature"), 64) { + return fail() + } + session, ok := receipt["sessionId"].(string) + if !ok { + return fail() + } + idx, ok := receipt["callIndex"].(json.Number) + if !ok { + return fail() + } + index, e := idx.Int64() + if e != nil || index < 0 { + return fail() + } + acquisition, ok := receipt["acquisition"].(map[string]any) + if !ok { + return fail() + } + if _, present := acquisition["pageItems"]; present { + return fail() + } + endpoint := any(nil) + if p.Endpoint != nil { + endpoint = *p.Endpoint + } + if acquisition["endpoint"] != endpoint || acquisition["shape"] != p.Shape || !sameJSON(encode(acquisition["adapter"]), encode(p.Adapter)) { + return fail() + } + signature, _ := hex.DecodeString(str("signature")) + resultDigest, argsCommitment, served := str("resultDigest"), str("argumentsCommitment"), str("servedAt") + delete(receipt, "signature") + unsigned, e := proofCanon(encode(receipt)) + if e != nil || !ed25519.Verify(public, append([]byte("judgment-pack-gateway/receipt/3:"), unsigned...), signature) || digest(result) != resultDigest || !validHex(envelope.Salts.Args, 32) { + return fail() + } + salt, _ := hex.DecodeString(envelope.Salts.Args) + canonicalArgs, e := proofCanon(args) + if e != nil || digest(append(append(salt, []byte("args:")...), canonicalArgs...)) != argsCommitment { + return fail() + } + observed, _ := acquisition["observedAt"].(string) + if e := acquisitionTimes(observed, served, at, maxAge); e != nil { + return nil, nil, e + } + return result, &Citation{SessionID: session, CallIndex: int(index), Signature: hex.EncodeToString(signature)}, nil +} + +func TestRC2ConvertedBasisIsDistinct(t *testing.T) { + input := columnCase(t, "text", `"yes"`) + fact := input.Source.Mapping.Case.Facts[0] + fact.Target = "/second" + input.Source.Mapping.Case.Facts = append(input.Source.Mapping.Case.Facts, fact) + // The existing fixture also maps evidence from this same frame. + prepared, e := normalizeV2(input, nil, time.Now()) + if e != nil { + t.Fatal(e) + } + for _, line := range prepared.Preparation.Lineage { + if len(line.Basis) != 1 || line.Basis[0] != "/retained" { + t.Fatalf("shared converted basis is not distinct: %v", line.Basis) + } + } + if report := VerifyPreparation(columnFixture(prepared)); report.Result != ResultReading { + t.Fatal(report) + } +} + +func TestRC2SelectedCaseContextPrecedesFrameReader(t *testing.T) { + input := columnCase(t, "text", `"yes"`) + input.Source.ConversionContract = selectedContract() + raw := []byte(`{"contractVersion":"1","origin":"generated","values":{"X":"yes"},"research":null}`) + if _, e := retainedcolumns.ParseFrame(raw, "base"); e == nil { + t.Fatal("standalone malformed generated frame admitted") + } + input.Source.Case = json.RawMessage(`{"retained":` + string(raw) + `}`) + if _, e := normalizeV2(input, nil, time.Now()); e == nil { + t.Fatal("generated case admitted") + } else if _, code := verificationOutcome(e); code != codeReadFailed { + t.Fatalf("selected generated case refusal order: %s %v", code, e) + } + if status, plan, body := scopedEntry(t, input, nil, nil); status < 400 || plan.Input != nil || !strings.Contains(body, "case retained frame must be asserted") { + t.Fatalf("public selected generated case admitted/wrong guard: %d %s", status, body) + } + // Outer duplicate admission remains earlier than source-context refusal. + input.Source.Case = json.RawMessage(`{"retained":{"contractVersion":"1","origin":"generated","origin":"asserted","values":{"X":"yes"},"research":null}}`) + if _, e := normalizeV2(input, nil, time.Now()); e == nil { + t.Fatal("duplicate outer case admitted") + } else if _, code := verificationOutcome(e); code != codeMalformed { + t.Fatal("duplicate guard order changed", code, e) + } +} + +func TestRC2ProductionAcquisitionRemainsFull(t *testing.T) { + var corpus rc2PreparationCorpus + if e := json.Unmarshal(rc2Read(t, "preparations.json"), &corpus); e != nil { + t.Fatal(e) + } + saved := installedConversionSpec + installedConversionSpec = rc2SyntheticInstallation() + t.Cleanup(func() { installedConversionSpec = saved }) + row := corpus.Cases[2] + if row.ID != "generated-eight-types-response" { + t.Fatal("fixed fixture changed") + } + f, e := rc2Fixture(t, row, corpus.Selector) + if e != nil { + t.Fatal(e) + } + if report := VerifyPreparation(f); report.Code != codeInvalid { + t.Fatalf("public owner lost full Gateway authenticity checks: %+v", report) + } + if report := verifyPreparationUsing(f, rc2PreparationAcquisition); report.Result != ResultReading { + t.Fatalf("role-specific consistency fixture failed: %+v", report) + } +} + +// Only the published preparation reader entry is adapted here. SourceInput and +// complete-export rows have distinct enclosing owners; this is not full-chain +// verification of the publisher's preparation-only synthetic exports. +func TestRC2PublishedPreparationReaderBoundaries(t *testing.T) { + var corpus struct { + Selector *ConversionContract + Cases []rc2PreparationRow + ReaderBoundaryCases []map[string]json.RawMessage + } + if e := json.Unmarshal(rc2Read(t, "preparations.json"), &corpus); e != nil { + t.Fatal(e) + } + saved := installedConversionSpec + installedConversionSpec = rc2SyntheticInstallation() + t.Cleanup(func() { installedConversionSpec = saved }) + checked, excluded := 0, 0 + for _, b := range corpus.ReaderBoundaryCases { + str := func(k string) string { var s string; json.Unmarshal(b[k], &s); return s } + if str("entrypoint") != "verify" { + excluded++ + continue + } + checked++ + t.Run(str("id"), func(t *testing.T) { + var row rc2PreparationRow + for _, base := range corpus.Cases { + if base.ID == str("baseCaseId") { + row = base + } + } + // Patch the literal named input only, preserving every fixture byte string. + for _, k := range []string{"dialectJson", "caseJson", "acquisitionsJson", "profilesJson", "preparationJson"} { + if v := b[k]; v != nil { + switch k { + case "dialectJson": + json.Unmarshal(v, &row.DialectJSON) + case "caseJson": + json.Unmarshal(v, &row.CaseJSON) + case "acquisitionsJson": + json.Unmarshal(v, &row.AcquisitionsJSON) + case "profilesJson": + json.Unmarshal(v, &row.ProfilesJSON) + case "preparationJson": + json.Unmarshal(v, &row.PreparationJSON) + } + } + } + c := corpus.Selector + var e error + if h := str("selectorHex"); h != "" { + var bytes []byte + bytes, e = hex.DecodeString(h) + if e == nil { + c, e = ParseConversionSelector(base64.RawURLEncoding.EncodeToString(bytes), "preparation-verification") + } + } + var f PreparationFixture + if e == nil { + f, e = rc2Fixture(t, row, c) + } + got := "" + if e != nil { + result, code := verificationOutcome(e) + got = result + ":" + code + } else { + r := verifyPreparationUsing(f, rc2PreparationAcquisition) + got = r.Result + if r.Code != "" { + got += ":" + r.Code + } + } + if got != str("expected") { + t.Fatalf("published preparation boundary got%s want%s (%v)", got, str("expected"), e) + } + }) + } + t.Logf("preparation reader boundaries=%d; distinct SourceInput/full-export owners excluded=%d", checked, excluded) +} diff --git a/internal/runner/column_read_v1.go b/internal/runner/column_read_v1.go index 71d49a7..8a81235 100644 --- a/internal/runner/column_read_v1.go +++ b/internal/runner/column_read_v1.go @@ -151,7 +151,7 @@ func rawPointer(raw []byte, pointer string) (json.RawMessage, bool) { } return value, true } -func deriveCaseColumn(raw []byte, source string, leaf json.RawMessage, availability bool, frames map[string]retainedcolumns.Frame) (*retainedcolumns.Transformation, error) { +func deriveCaseColumn(raw []byte, source string, leaf json.RawMessage, availability bool, frames map[string]retainedcolumns.Frame, selection ...*ConversionContract) (*retainedcolumns.Transformation, error) { p, e := columnPlan(leaf, availability) if e != nil { return nil, e @@ -162,6 +162,18 @@ func deriveCaseColumn(raw []byte, source string, leaf json.RawMessage, availabil if !ok { return nil, withCode(codeReadFailed, errors.New("retained frame is missing")) } + if selectedConversion(selection) != nil { + // CASE context cannot confer generated authority. Reject that known + // origin before the standalone generated-frame structural reader; + // exactMembers still rejects duplicate outer members here. + members, err := exactMembers(frameRaw) + if err == nil { + var origin string + if json.Unmarshal(members["origin"], &origin) == nil && origin == "generated" { + return nil, withCode(codeReadFailed, errors.New("case retained frame must be asserted; generated frames require verified producer provenance")) + } + } + } frame, e = retainedcolumns.ParseFrame(frameRaw, retainedcolumns.Base) if e != nil { return nil, columnError(e) @@ -182,7 +194,7 @@ func applyColumnCase(read SourceRead, raw []byte, artifact any, params map[strin } mapFrames := map[string]retainedcolumns.Frame{} return applyColumnCopy(read, artifact, func(source string, leaf json.RawMessage, availability bool) (*retainedcolumns.Transformation, error) { - return deriveCaseColumn(raw, source, leaf, availability, mapFrames) + return deriveCaseColumn(raw, source, leaf, availability, mapFrames, selectedConversion(selection)) }, selectedConversion(selection)) } func applyColumnCopy(read SourceRead, artifact any, derive func(string, json.RawMessage, bool) (*retainedcolumns.Transformation, error), selection ...*ConversionContract) (derivedClaim, map[string]*retainedcolumns.Transformation, error) { @@ -247,6 +259,15 @@ func applyColumnCopy(read SourceRead, artifact any, derive func(string, json.Raw } } sort.Strings(c.Basis) + // Dialect §6.2 basis is a set, even when several converted targets + // select the same retained frame. Ordinary copyClaim remains unchanged. + unique := c.Basis[:0] + for _, pointer := range c.Basis { + if len(unique) == 0 || unique[len(unique)-1] != pointer { + unique = append(unique, pointer) + } + } + c.Basis = unique c.Facts = encode(facts) _, e = proofCanon(encode(c)) if selectedConversion(selection) != nil { diff --git a/internal/runner/column_role_v1.go b/internal/runner/column_role_v1.go index 3d6b640..ddf1b89 100644 --- a/internal/runner/column_role_v1.go +++ b/internal/runner/column_role_v1.go @@ -29,9 +29,10 @@ type ConversionContract struct { Roles []string `json:"roles"` } -// Experimental immutable Draft candidate, pending independent review/adoption. +// Published RC2 selected-leaf contract, at draft maturity. The immutable +// release inventory is independently checked against this package identity. // The compiled identity is never taken from caller or host configuration. -var installedConversionSpec = ConversionSpec{Version: "Draft RFC0029", Revision: "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c", SchemaSHA256: "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f", CorpusSHA256: "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2"} +var installedConversionSpec = ConversionSpec{Version: "0.3.0-rc.2", Revision: "bcac15b7537ce21879201b5e5dfe795496225121", SchemaSHA256: "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", CorpusSHA256: "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863"} var conversionRoles = [...]string{"document-validation", "preview", "preparation", "preparation-verification", "producer-carrier"} @@ -61,9 +62,6 @@ func conversionFailure(code string) error { func (c *ConversionContract) UnmarshalJSON(raw []byte) error { type plain ConversionContract var v plain - if strictJSON(raw, &v) != nil { - return conversionFailure(codeMalformed) - } m, e := exactMembers(raw) if e != nil || len(m) != 4 { return conversionFailure(codeMalformed) @@ -85,6 +83,9 @@ func (c *ConversionContract) UnmarshalJSON(raw []byte) error { if e := conversionIdentityForm(m); e != nil { return e } + if strictJSON(raw, &v) != nil { + return conversionFailure(codeMalformed) + } if len(bytes.TrimSpace(m["roles"])) == 0 || bytes.TrimSpace(m["roles"])[0] != '[' { return conversionFailure(codeMalformed) } @@ -265,7 +266,10 @@ func ParseConversionSelector(encoded string, roles ...string) (*ConversionContra return nil, conversionFailure(codeMalformed) } var c ConversionContract - if strictJSON(raw, &c) != nil { + if e = strictJSON(raw, &c); e != nil { + if _, code := verificationOutcome(e); code == "capability-unsupported" { + return nil, e + } return nil, conversionFailure(codeMalformed) } if e = c.validate(roles...); e != nil { @@ -300,11 +304,13 @@ func selectedReplyWriter(w http.ResponseWriter, r *http.Request) http.ResponseWr } func conversionIdentityForm(m map[string]json.RawMessage) error { - for _, k := range []string{"contract", "profile"} { - v := bytes.TrimSpace(m[k]) - if len(v) == 0 || v[0] != '"' { - return conversionFailure(codeMalformed) - } + var profile string + if json.Unmarshal(m["profile"], &profile) != nil || profile != "base" { + return conversionFailure("capability-unsupported") + } + v := bytes.TrimSpace(m["contract"]) + if len(v) == 0 || v[0] != '"' { + return conversionFailure(codeMalformed) } spec, e := exactMembers(m["spec"]) if e != nil { diff --git a/internal/runner/column_role_v1_capabilities.go b/internal/runner/column_role_v1_capabilities.go index 19a633a..a986c45 100644 --- a/internal/runner/column_role_v1_capabilities.go +++ b/internal/runner/column_role_v1_capabilities.go @@ -36,9 +36,6 @@ func conversionRoleLimits(role string) map[string]int { func (c *ConversionCapability) UnmarshalJSON(raw []byte) error { type plain ConversionCapability var p plain - if strictJSON(raw, &p) != nil { - return conversionFailure(codeMalformed) - } m, e := exactMembers(raw) if e != nil || len(m) < 5 || len(m) > 6 { return conversionFailure(codeMalformed) @@ -72,9 +69,12 @@ func (c *ConversionCapability) UnmarshalJSON(raw []byte) error { for _, k := range []string{"role"} { v := bytes.TrimSpace(m[k]) if len(v) == 0 || v[0] != '"' { - return conversionFailure(codeMalformed) + return conversionFailure("capability-unsupported") } } + if strictJSON(raw, &p) != nil { + return conversionFailure(codeMalformed) + } if v, ok := m["producerGrammar"]; ok { if p.Role != "preparation" && p.Role != "preparation-verification" && p.Role != "producer-carrier" { return conversionFailure(codeMalformed) @@ -199,7 +199,7 @@ func producerResponseLimit(c *ConversionContract, limits map[string]int) int { return n } -// ConversionCapabilities is the experimental installed package's declaration. +// ConversionCapabilities declares this package's exact selected RC2 roles. // Producer support belongs to each independently approved producer profile. func ConversionCapabilities(roles ...string) []ConversionCapability { out := []ConversionCapability{} diff --git a/internal/runner/column_role_v1_lifecycle_test.go b/internal/runner/column_role_v1_lifecycle_test.go index cba1a8e..bb9698e 100644 --- a/internal/runner/column_role_v1_lifecycle_test.go +++ b/internal/runner/column_role_v1_lifecycle_test.go @@ -18,7 +18,16 @@ import ( // The Gateway below is a signed producer fixture, not a live Desk producer. // Runtime execution, SQLite custody, source-worker transport and exports are real. func TestColumnRoleRealRuntimeFirstSaveSignedExports(t *testing.T) { + columnRoleRealRuntimeFirstSaveSignedExports(t, "0.2.0-draft") +} +func TestRC2Core030RealRuntimeFirstSaveSignedExports(t *testing.T) { + columnRoleRealRuntimeFirstSaveSignedExports(t, "0.3.0") +} +func columnRoleRealRuntimeFirstSaveSignedExports(t *testing.T, core string) { cfg := testConfig(t) + if bin := os.Getenv("JPACK_RETAINED_TEST_BIN"); bin != "" { + cfg.Runtime = bin + } cfg.SigningKey = signingKey(t) cfg.disableAutomation = true cfg.disableDispatcher = true @@ -92,6 +101,14 @@ func TestColumnRoleRealRuntimeFirstSaveSignedExports(t *testing.T) { if e != nil { t.Fatal(e) } + if core == "0.3.0" { + var document map[string]any + if json.Unmarshal(pack, &document) != nil || document["specVersion"] != "0.2.0-draft" { + t.Fatal("handwritten legacy pack identity") + } + document["specVersion"] = "0.3.0" + pack = encode(document) + } body := encode(PreviewRequest{Pack: string(pack), Input: producer.input}) body = bytes.Replace(body, encode(rawCase), rawCase, 1) sampleResponse := producer.input.Source.Sources["desk"].Response diff --git a/internal/runner/mapping_v2.go b/internal/runner/mapping_v2.go index 71720cf..0418cf1 100644 --- a/internal/runner/mapping_v2.go +++ b/internal/runner/mapping_v2.go @@ -179,7 +179,11 @@ func prepareV2(i Input, profiles []InputProfile, at time.Time, planning bool, ju } // offline changes only finding precedence; acquisition and derivation stay shared. -func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool, judged *[]judgedFreshness, offline bool) (Input, error) { +func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool, judged *[]judgedFreshness, offline bool, readers ...acquisitionReader) (Input, error) { + readAcquisition := acquisitionReader(verifyAcquisition) + if len(readers) > 0 { + readAcquisition = readers[0] + } // An installation's profiles are held to Runner's admission; the // verifier's were held to spec/dialect.md §5.1 alone when it read them // (verifierProfiles), and only their keys are taken here. @@ -357,6 +361,14 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool if err != nil { return err } + if c.ConversionContract != nil && read.Copy != nil && hasColumnCopy(*read.Copy) { + // Selected Dialect §9.3 order is independent of authoring order. + // Clone: checked document/read identity must not be reordered. + ft = append([]FactMapping(nil), ft...) + et = append([]EvidenceMapping(nil), et...) + sort.Slice(ft, func(i, j int) bool { return ft[i].Target < ft[j].Target }) + sort.Slice(et, func(i, j int) bool { return et[i].Requirement < et[j].Requirement }) + } fv, err := readInputJSON(claim.Facts) if err != nil { return err @@ -591,7 +603,7 @@ func prepareV2Mode(i Input, profiles []InputProfile, at time.Time, planning bool if err != nil { return fail(err) } - verified, citation, err := verifyRetainedAcquisition(raw, args, profile, profileKeys[profile.ID], at, source.MaxAge, c.ConversionContract) + verified, citation, err := verifyRetainedAcquisitionUsing(readAcquisition, raw, args, profile, profileKeys[profile.ID], at, source.MaxAge, c.ConversionContract) if err != nil { return fail(err) } diff --git a/internal/runner/release_tests.go b/internal/runner/release_tests.go index 815f544..be0594c 100644 --- a/internal/runner/release_tests.go +++ b/internal/runner/release_tests.go @@ -72,7 +72,7 @@ func checkedReport(r Release, matrix string, out []byte) (string, error) { ids[c.ID] = true } var report testReport - if json.Unmarshal(out, &report) != nil || report.OutputVersion != "2" || report.Command != "packs test" || !report.Experimental || report.Spec != "0.2.0-draft" || len(report.Packs) != 1 { + if json.Unmarshal(out, &report) != nil || report.OutputVersion != "2" || report.Command != "packs test" || !report.Experimental || !evaluatorSpecMatches(r, report.Spec) || len(report.Packs) != 1 { return "error", invalid } p := report.Packs[0] diff --git a/internal/runner/runtime.go b/internal/runner/runtime.go index 697e1f1..8a64718 100644 --- a/internal/runner/runtime.go +++ b/internal/runner/runtime.go @@ -230,7 +230,7 @@ func (s *Service) preview(ctx context.Context, req PreviewRequest) (Release, err Title string `json:"title"` SpecVersion string `json:"specVersion"` } - if json.Unmarshal([]byte(req.Pack), &doc) != nil || doc.SpecVersion != "0.2.0-draft" { + if json.Unmarshal([]byte(req.Pack), &doc) != nil || !supportedEvaluatorSpec(doc.SpecVersion, inputConversion(req.Input)) { return Release{}, bad("invalid_pack", "This runner supports the Runtime's experimental 0.2.0-draft evaluator contract.") } r := Release{SchemaVersion: "1", ID: id("release_"), Pack: req.Pack, PackDigest: digest([]byte(req.Pack)), PackID: doc.ID, PackVersion: doc.Version, Title: doc.Title, RuntimeDigest: s.runtimeDigest, CreatedAt: now(), Sample: req.Input, Tests: "not-run"} @@ -359,6 +359,32 @@ func evaluateWith(ctx context.Context, bin string, r Release, input Input, dir s return evaluateWithInvoker(ctx, bin, r, input, dir, rehearsal, signing, invokeWith) } +// A selected leaf adds the existing Core0.3 Base evaluator; it does not change +// ordinary pack admission or replace historical selected Core0.2 releases. +func supportedEvaluatorSpec(version string, selection *ConversionContract) bool { + if version == "0.2.0-draft" { + return true + } + return version == "0.3.0" && selection != nil && selection.validate("document-validation", "preview", "preparation") == nil +} +func expectedEvaluatorSpec(r Release) string { + if inputConversion(r.Sample) == nil { + return "0.2.0-draft" + } + var pack struct { + SpecVersion string `json:"specVersion"` + } + if json.Unmarshal([]byte(r.Pack), &pack) != nil || !supportedEvaluatorSpec(pack.SpecVersion, inputConversion(r.Sample)) { + return "" + } + return pack.SpecVersion +} + +func evaluatorSpecMatches(r Release, spec string) bool { + expected := expectedEvaluatorSpec(r) + return expected != "" && spec == expected +} + func evaluateWithInvoker(ctx context.Context, bin string, r Release, input Input, dir string, rehearsal bool, signing signingInputs, invoke runtimeInvoker, starters ...func(*exec.Cmd) error) (json.RawMessage, json.RawMessage, []byte, *RunBinding, error) { limits, admissionErr := runtimeConversionLimits(ctx, bin, filepath.Dir(dir), inputConversion(input), starters...) if admissionErr != nil { @@ -367,6 +393,9 @@ func evaluateWithInvoker(ctx context.Context, bin string, r Release, input Input if e := runtimeConversionInput(limits, input, r.Pack); e != nil { return nil, nil, nil, nil, e } + if expectedEvaluatorSpec(r) == "" { + return nil, nil, nil, nil, errors.New("unsupported retained release evaluator contract") + } // The directory is exclusively created per invocation and never reused. if err := os.Mkdir(dir, 0700); err != nil { return nil, nil, nil, nil, err @@ -429,7 +458,7 @@ func evaluateWithInvoker(ctx context.Context, bin string, r Release, input Input Rehearsal bool `json:"rehearsal"` Disposition json.RawMessage `json:"disposition"` } - if json.Unmarshal(out, &result) != nil || result.OutputVersion != "2" || result.Status != "evaluated" || result.PackID != r.PackID || result.PackVersion != r.PackVersion || result.Spec != "0.2.0-draft" || result.Rehearsal != rehearsal || len(result.Disposition) == 0 { + if json.Unmarshal(out, &result) != nil || result.OutputVersion != "2" || result.Status != "evaluated" || result.PackID != r.PackID || result.PackVersion != r.PackVersion || !evaluatorSpecMatches(r, result.Spec) || result.Rehearsal != rehearsal || len(result.Disposition) == 0 { return nil, nil, nil, nil, errors.New("unsupported or mismatched Runtime response") } if rehearsal { diff --git a/internal/runner/verify_preparation.go b/internal/runner/verify_preparation.go index de16907..6acb36c 100644 --- a/internal/runner/verify_preparation.go +++ b/internal/runner/verify_preparation.go @@ -229,6 +229,12 @@ func (r PreparationReport) ExitStatus() int { // VerifyPreparation reads a fixture as spec/dialect.md §11 reads one, through // Runner's own preparation, at the instant the given preparation names. func VerifyPreparation(f PreparationFixture) PreparationReport { + return verifyPreparationUsing(f, verifyAcquisition) +} + +// Public verification always uses the full acquisition reader; the private +// dependency permits exact preparation-only corpus tests with prevalidated inputs. +func verifyPreparationUsing(f PreparationFixture, readAcquisition acquisitionReader) PreparationReport { stop := func(code, reason string) PreparationReport { result := ResultFinding if refusalCodes[code] { @@ -318,6 +324,11 @@ func VerifyPreparation(f PreparationFixture) PreparationReport { // installation's profiles are not §5.1's. profiles, err := verifierProfiles(read["the profiles"], f.Profiles) if err != nil { + if f.ConversionContract != nil { + if _, code := verificationOutcome(err); code == "capability-unsupported" { + return stop(code, "the profiles: "+err.Error()) + } + } return stop(codeMalformed, "the profiles: "+err.Error()) } source := &SourceInput{Case: f.Case, ConversionContract: f.ConversionContract} @@ -379,7 +390,7 @@ func VerifyPreparation(f PreparationFixture) PreparationReport { // The recomputation, at the given preparation's instant (§11's // findings 1 to 4), and the canonical comparison (finding 5). var judged []judgedFreshness - prepared, err := prepareV2Mode(Input{Source: source}, profiles, at, false, &judged, true) + prepared, err := prepareV2Mode(Input{Source: source}, profiles, at, false, &judged, true, readAcquisition) if err != nil { return failed(err) } From 2612497357955f0de08fc731b801caee1e62c92a Mon Sep 17 00:00:00 2001 From: kikashy Date: Mon, 26 Oct 2026 22:30:22 -0400 Subject: [PATCH 05/11] Refuse incomplete checklist success with pinned Devkit correction Carry the reviewed Devkit #57 exit-status correction from immutable source 2f7f84922ee9131962d935b322889d289defb56f without a kit upgrade. Completed check results and all-completed exit behavior remain unchanged. Signed-off-by: kikashy --- scripts/dev/check.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scripts/dev/check.sh b/scripts/dev/check.sh index 4a1aacc..f975e2f 100755 --- a/scripts/dev/check.sh +++ b/scripts/dev/check.sh @@ -1,7 +1,8 @@ #!/usr/bin/env bash # from judgment-pack-devkit v0.11.0 (templates/check.sh) +# source patch: Judgment-Pack/judgment-pack-devkit@2f7f84922ee9131962d935b322889d289defb56f (unreleased commit; #57) # scripts/dev/check.sh [--setup] [--only a,b | --changed [BASE]] [--skip a,b] [--all] [--manifest FILE] -# Runs the checks of dev.json in order and prints one summary block; exit status = failures. +# Runs dev.json checks in order; exit counts failures, or is nonzero for infrastructure-unrun checks. # --changed runs only the checks jpdev.json maps the paths changed since the merge base of BASE # (default: the default branch) and HEAD to, with changed_checks.py vendored beside this script; # the whole list runs when a changed path is unmapped, when jpdev.json, the manifest, this script @@ -158,5 +159,8 @@ for n, s, head, extra in rows: print('\n'.join(['%-8s %-24s %s' % (s, n, head)] totals = tuple(sum(1 for r in rows if r[1] == k) for k in ('PASS', 'FAIL', 'SKIP', 'NOT RUN')) if infrastructure: print('== %d passed, %d failed, %d skipped, %d not run; infrastructure failure ==' % totals) else: print('== %d passed, %d failed, %d skipped, %d not run ==' % totals) -sys.exit(min(failed, 255)) +# Preserve completed-check statuses/counts. Infrastructure is nonzero only when +# it prevented a selected step from running, not when all selected steps finished. +exit_status = failed or (1 if infrastructure and totals[3] else 0) +sys.exit(min(exit_status, 255)) PY From 9538d8ea09177fc8d50cc7a3fa7fa20a7e93195d Mon Sep 17 00:00:00 2001 From: kikashy Date: Mon, 26 Oct 2026 23:16:08 -0400 Subject: [PATCH 06/11] Pin published Runtime companion for retained-column release Keep historical companion pins unchanged, require both selected Core lifecycles, bind CI evidence to their inputs and document the scoped release. Signed-off-by: kikashy --- .github/ci-evidence.json | 10 ++++-- docs/releases/v0.26.0-alpha.1.md | 57 ++++++++++++++++++++++++++++++++ internal/runner/runtime.go | 6 +++- scripts/checks/build-pinned.sh | 6 ++++ scripts/checks/chain-tests.sh | 7 ++-- scripts/checks/unit-tests.sh | 1 + 6 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 docs/releases/v0.26.0-alpha.1.md diff --git a/.github/ci-evidence.json b/.github/ci-evidence.json index be30755..be094c7 100644 --- a/.github/ci-evidence.json +++ b/.github/ci-evidence.json @@ -5,7 +5,8 @@ "inputs: the module pins; the script that pins the Runtime, earlier Runtime, old Runner and Gateway commits", "the integration tests run against; the scripts that fail when a named real-companion test does not run and", "pass; the toolchain check and the workflow naming the release toolchain; the runner whose summary is read;", - "the Release contents scripts and the packer's configuration." + "the Release contents scripts and the packer's configuration.", + "The selected retained-column Runtime has its own exact commit/release pin in build-pinned.sh; selected lifecycle and installed Spec identities below are part of this evidence." ], "schema": 2, "repository": "Judgment-Pack/judgment-pack-runner", @@ -25,7 +26,12 @@ "tools/third_party_notices.py", "tools/release_archives.py", "tools/test_release_archives.py", - ".goreleaser.yml" + ".goreleaser.yml", + "internal/runner/column_role_v1.go", + "internal/runner/column_role_v1_lifecycle_test.go", + "internal/runner/column_rc2_core_test.go", + "internal/retainedcolumns/testdata/rc2/release-identity.json", + "internal/retainedcolumns/testdata/rc2/release-inventory.json" ], "fresh_at_release": [ "tag syntax, tag names the commit, commit on main", diff --git a/docs/releases/v0.26.0-alpha.1.md b/docs/releases/v0.26.0-alpha.1.md new file mode 100644 index 0000000..1637f2c --- /dev/null +++ b/docs/releases/v0.26.0-alpha.1.md @@ -0,0 +1,57 @@ +# v0.26.0-alpha.1 + +Runner v0.26.0-alpha.1 adds the explicitly selected `retained-column/1` +Base consumer for Agent v0.11. It uses the published Spec `v0.3.0-rc.2` +contract at `bcac15b7537ce21879201b5e5dfe795496225121`. The Spec's maturity +remains draft. This prerelease does not change ordinary Runner input routes +or claim Extended Runner support. + +## Selected retained columns + +Authenticated retained-column routes require an exact installed contract selector +before reading the request body. The selector remains bound through preparation, +release/run persistence, restart and offline verification. It cannot install a +new trusted profile, producer, expected Spec identity or signing authority. + +All five conversions and eight research types retain their original raw values, +complete original declaration inventory and provenance. Base limits apply to +complete artifacts; lower trusted capability limits remain effective. Existing +independent depth, numeric, count and binding-document bounds remain in force. +Converted basis pointers are distinct and sorted; selected lineage follows the +contract's fact-then-evidence order. Generated frames in CASE context refuse. + +The selected route additionally admits Runtime's existing Core `0.3.0` Base +evaluator. Selected and ordinary `0.2.0-draft` remain supported. Evaluation and +replay must report the evaluator version from the same retained release pack; +unknown or mismatched reports refuse. Manual and workflow paths are unchanged. +See [the contract and transport details](../design/retained-columns-draft.md). + +## Operator and producer scope + +Use an explicitly compatible Runtime and separately approved producer profile +for selected generated inputs. Ordinary inputs keep their existing configuration. +The usual upgrade backup and workspace care in +[State and backups](../../README.md#state-and-backups) still applies. + +The selected consumer checks original snapshot/frame consistency, the exact +producer tuple, signature, request commitment and freshness. The future Desk +adapter must independently implement original-history inventory validation and +its grant/stdout bounds. Runner's signed test producer and preparation-only +synthetic corpus do not establish that Desk cutover or producer compliance. + +## Validation and publication gates + +Selected interoperability uses published Runtime +[`v0.39.0-alpha.2`](https://github.com/Judgment-Pack/judgment-pack-runtime/releases/tag/v0.39.0-alpha.2), +commit `57c854abb9ace8a91013a75ab688bd70d063797c`. CI pins this companion +separately from historical ordinary and earlier Runtimes, and requires both +selected Core 0.2 and Core 0.3 lifecycle tests to run and pass. These tests cover +SQLite first-save/restart, signed preparation binding, exports 2/3/4/5 and offline replay. +Published synthetic fixtures cover their applicable conversion, capability, +producer-consistency and preparation owners; partial synthetic exports do not +establish full release/chain/sidecar authenticity. + +Release qualification requires the stable Runner checklist, exact-head CI and +independent review. Tag-time evidence, archive smoke, checksums, attestations and +publication verification follow [the release procedure](../releasing.md). +No Windows archive is released. diff --git a/internal/runner/runtime.go b/internal/runner/runtime.go index 8a64718..8f2b82d 100644 --- a/internal/runner/runtime.go +++ b/internal/runner/runtime.go @@ -231,7 +231,11 @@ func (s *Service) preview(ctx context.Context, req PreviewRequest) (Release, err SpecVersion string `json:"specVersion"` } if json.Unmarshal([]byte(req.Pack), &doc) != nil || !supportedEvaluatorSpec(doc.SpecVersion, inputConversion(req.Input)) { - return Release{}, bad("invalid_pack", "This runner supports the Runtime's experimental 0.2.0-draft evaluator contract.") + message := "This runner supports the Runtime's experimental 0.2.0-draft evaluator contract." + if inputConversion(req.Input) != nil { + message = "This retained-column selection supports the Runtime's experimental 0.2.0-draft and Core 0.3.0 Base evaluator contracts." + } + return Release{}, bad("invalid_pack", message) } r := Release{SchemaVersion: "1", ID: id("release_"), Pack: req.Pack, PackDigest: digest([]byte(req.Pack)), PackID: doc.ID, PackVersion: doc.Version, Title: doc.Title, RuntimeDigest: s.runtimeDigest, CreatedAt: now(), Sample: req.Input, Tests: "not-run"} if req.Input.Source != nil { diff --git a/scripts/checks/build-pinned.sh b/scripts/checks/build-pinned.sh index d661640..3f41a55 100755 --- a/scripts/checks/build-pinned.sh +++ b/scripts/checks/build-pinned.sh @@ -40,6 +40,12 @@ fetch_pin judgment-pack-runtime 09206e743cdf410d7b5ee970f1c9d09ca7c015ca "$root/ # moves the version with it. (cd "$root/.ci/runtime" && go build -trimpath -ldflags "-X github.com/Judgment-Pack/judgment-pack-runtime/internal/result.CLIVersion=0.33.0-dev.09206e7" -o "$bin/jpack" ./cmd/jpack) +# Dedicated retained-column companion: published v0.39.0-alpha.2. Its exact +# Spec RC2/Base report and both selected Core lifecycles are required separately +# from the historical ordinary and earlier Runtime contracts above/below. +fetch_pin judgment-pack-runtime 57c854abb9ace8a91013a75ab688bd70d063797c "$root/.ci/runtime-retained" +(cd "$root/.ci/runtime-retained" && go build -trimpath -ldflags "-X github.com/Judgment-Pack/judgment-pack-runtime/internal/result.CLIVersion=0.39.0-alpha.2" -o "$bin/jpack-retained" ./cmd/jpack) + # Test-only old companion: its current-store refusal is part of the # explicit manual-store preparation contract, not a release dependency. fetch_pin judgment-pack-runner 1cc6b29885b344716a970cd21fefeaca0a4edaeb "$root/.ci/runner-old" diff --git a/scripts/checks/chain-tests.sh b/scripts/checks/chain-tests.sh index 859697e..d3e90e7 100755 --- a/scripts/checks/chain-tests.sh +++ b/scripts/checks/chain-tests.sh @@ -1,18 +1,21 @@ #!/usr/bin/env bash # CI step: Chain, signature, binding and ownership tests run under the pinned Runtimes +# Selected Core0.2/Core0.3 use the separate retained-column companion; the +# ordinary and earlier Runtime pins remain unchanged. Both lifecycle tests must pass. # A skipped test passes `go test`; these must run (#35, #54, #55). set -e root=$(git rev-parse --show-toplevel) bin=$root/.ci/bin out="$(JPACK_TEST_BIN="$bin/jpack" \ + JPACK_RETAINED_TEST_BIN="$bin/jpack-retained" \ JPACK_EARLIER_TEST_BIN="$bin/jpack-earlier" \ JPACK_GATEWAY_TEST_BIN="$bin/gateway" \ JPACK_MCP_ADAPTER_TEST_BIN="$bin/adapter-mcp" \ go test -count=1 -v \ - -run '^(TestTheRuntimesVerifierReadsTheChainOfRuns|TestASignedRunKeepsItsSignature|TestVerifyRunChecksARunTheRuntimeSigned|TestASeedReplacedAfterStartSignsNothing|TestAnEarlierRuntimeSigningWithAReplacedSeedIsNamed|TestAnOperationalEvaluationBindsItsPreparation|TestABindingTheRuntimeRefusesFailsTheRun|TestARecordWithoutTheBindingPassedFailsTheRun|TestARuntimeWithoutTheBindingIsGivenNone|TestVerifyRunHoldsTheRecordsBindingToThePreparation|TestVerifyRunReportsARecordTheRuntimeDidNotBind|TestARuntimeThatDoesNotSayItsReleaseEvaluatesNothing|TestNamedDialectRealRuntimeReleaseRunOfflineAndRestart|TestARunWhoseReceiptSessionIsNoTokenIsEvaluatedExportedAndVerified|TestExecutorOwnedServiceRealRuntimeJobsAndChecks|TestExecutorOwnedRealRuntimeSurvivesOwnerDeath)$' \ + -run '^(TestTheRuntimesVerifierReadsTheChainOfRuns|TestASignedRunKeepsItsSignature|TestVerifyRunChecksARunTheRuntimeSigned|TestASeedReplacedAfterStartSignsNothing|TestAnEarlierRuntimeSigningWithAReplacedSeedIsNamed|TestAnOperationalEvaluationBindsItsPreparation|TestABindingTheRuntimeRefusesFailsTheRun|TestARecordWithoutTheBindingPassedFailsTheRun|TestARuntimeWithoutTheBindingIsGivenNone|TestVerifyRunHoldsTheRecordsBindingToThePreparation|TestVerifyRunReportsARecordTheRuntimeDidNotBind|TestARuntimeThatDoesNotSayItsReleaseEvaluatesNothing|TestNamedDialectRealRuntimeReleaseRunOfflineAndRestart|TestARunWhoseReceiptSessionIsNoTokenIsEvaluatedExportedAndVerified|TestExecutorOwnedServiceRealRuntimeJobsAndChecks|TestExecutorOwnedRealRuntimeSurvivesOwnerDeath|TestColumnRoleRealRuntimeFirstSaveSignedExports|TestRC2Core030RealRuntimeFirstSaveSignedExports)$' \ ./internal/runner ./cmd/jpack-runner)" || { printf '%s\n' "$out"; exit 1; } printf '%s\n' "$out" -for name in TestTheRuntimesVerifierReadsTheChainOfRuns TestASignedRunKeepsItsSignature TestVerifyRunChecksARunTheRuntimeSigned TestASeedReplacedAfterStartSignsNothing TestAnEarlierRuntimeSigningWithAReplacedSeedIsNamed TestAnOperationalEvaluationBindsItsPreparation TestABindingTheRuntimeRefusesFailsTheRun TestARecordWithoutTheBindingPassedFailsTheRun TestARuntimeWithoutTheBindingIsGivenNone TestVerifyRunHoldsTheRecordsBindingToThePreparation TestVerifyRunReportsARecordTheRuntimeDidNotBind TestARuntimeThatDoesNotSayItsReleaseEvaluatesNothing TestNamedDialectRealRuntimeReleaseRunOfflineAndRestart TestNamedDialectRealRuntimeReleaseRunOfflineAndRestart/2 TestNamedDialectRealRuntimeReleaseRunOfflineAndRestart/3 TestARunWhoseReceiptSessionIsNoTokenIsEvaluatedExportedAndVerified TestExecutorOwnedServiceRealRuntimeJobsAndChecks; do +for name in TestTheRuntimesVerifierReadsTheChainOfRuns TestASignedRunKeepsItsSignature TestVerifyRunChecksARunTheRuntimeSigned TestASeedReplacedAfterStartSignsNothing TestAnEarlierRuntimeSigningWithAReplacedSeedIsNamed TestAnOperationalEvaluationBindsItsPreparation TestABindingTheRuntimeRefusesFailsTheRun TestARecordWithoutTheBindingPassedFailsTheRun TestARuntimeWithoutTheBindingIsGivenNone TestVerifyRunHoldsTheRecordsBindingToThePreparation TestVerifyRunReportsARecordTheRuntimeDidNotBind TestARuntimeThatDoesNotSayItsReleaseEvaluatesNothing TestNamedDialectRealRuntimeReleaseRunOfflineAndRestart TestNamedDialectRealRuntimeReleaseRunOfflineAndRestart/2 TestNamedDialectRealRuntimeReleaseRunOfflineAndRestart/3 TestARunWhoseReceiptSessionIsNoTokenIsEvaluatedExportedAndVerified TestExecutorOwnedServiceRealRuntimeJobsAndChecks TestColumnRoleRealRuntimeFirstSaveSignedExports TestRC2Core030RealRuntimeFirstSaveSignedExports; do printf '%s\n' "$out" | grep -q -- "^[[:space:]]*--- PASS: $name " || { echo "$name did not run and pass"; exit 1; } done # The exact real-Runtime lifetime observer uses Linux /proc and an diff --git a/scripts/checks/unit-tests.sh b/scripts/checks/unit-tests.sh index 2c53e1d..e8120ff 100755 --- a/scripts/checks/unit-tests.sh +++ b/scripts/checks/unit-tests.sh @@ -4,6 +4,7 @@ set -e root=$(git rev-parse --show-toplevel) bin=$root/.ci/bin JPACK_TEST_BIN="$bin/jpack" \ +JPACK_RETAINED_TEST_BIN="$bin/jpack-retained" \ JPACK_EARLIER_TEST_BIN="$bin/jpack-earlier" \ JPACK_GATEWAY_TEST_BIN="$bin/gateway" \ JPACK_MCP_ADAPTER_TEST_BIN="$bin/adapter-mcp" \ From 4c7b2b3809186faa1d13bc7b2ece2f01225cf09c Mon Sep 17 00:00:00 2001 From: kikashy Date: Mon, 26 Oct 2026 23:25:32 -0400 Subject: [PATCH 07/11] Exercise aggregate retained input limit with valid individual fixture Keep the case at its individual limit so online and offline checks reach the aggregate refusal. Assert that exact owner and preserve production limits. Signed-off-by: kikashy --- internal/runner/column_read_v1_test.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/internal/runner/column_read_v1_test.go b/internal/runner/column_read_v1_test.go index 451704c..74bd958 100644 --- a/internal/runner/column_read_v1_test.go +++ b/internal/runner/column_read_v1_test.go @@ -157,11 +157,18 @@ func TestColumnBaseLimitsAndUnsupportedProfile(t *testing.T) { t.Fatalf("different offline profile refusal: %+v", r) } i.Source.Mapping.Profile = "base" - i.Source.Case = json.RawMessage(`{"pad":"` + strings.Repeat("a", MaxBody) + `"}`) + // Keep the case within its independent custody limit. The complete + // dialect/case/acquisitions must exceed the aggregate instead of failing + // while the fixture helper materializes an individually oversized case. + i.Source.Case = json.RawMessage(`{"pad":"` + strings.Repeat("a", MaxBody-len(`{"pad":""}`)) + `"}`) + f = columnFixture(i) + if len(f.Case) != MaxBody || len(f.Dialect)+len(f.Case)+len(f.Sources) <= MaxBody { + t.Fatal("aggregate fixture does not isolate the complete-artifact limit") + } if _, e := nextInput(i, nil, time.Unix(0, 0)); e == nil || !strings.Contains(e.Error(), "complete dialect, case and acquisitions") { t.Fatalf("complete-artifact bound bypassed: %v", e) } - if r := VerifyPreparation(columnFixture(i)); r.Code != codeOverBound { + if r := VerifyPreparation(f); r.Code != codeOverBound || !strings.Contains(r.Reason, "together over") { t.Fatalf("offline complete-artifact bound bypassed: %+v", r) } } From 49671bf511122eb2d54d71e2b2c0424e1dcbbfab Mon Sep 17 00:00:00 2001 From: kikashy Date: Mon, 26 Oct 2026 23:53:26 -0400 Subject: [PATCH 08/11] Preserve selected refusal codes and partition complete unit coverage Match the published RC2 unsupported-profile refusal in HTTP and CLI. Keep historical vectors and add an explicitly repinned RC2 fixture. Run complementary unit groups with unchanged race, timeout and companion requirements so cumulative boundary work fits each package invocation. Signed-off-by: kikashy --- internal/runner/column_role_v1.go | 3 + internal/runner/column_role_v1_test.go | 8 +- scripts/checks/unit-tests.sh | 23 +- tools/test_ci_evidence.py | 61 +++ vectors/retained-column-selection-rc2.json | 581 +++++++++++++++++++++ 5 files changed, 668 insertions(+), 8 deletions(-) create mode 100644 vectors/retained-column-selection-rc2.json diff --git a/internal/runner/column_role_v1.go b/internal/runner/column_role_v1.go index ddf1b89..b31aff5 100644 --- a/internal/runner/column_role_v1.go +++ b/internal/runner/column_role_v1.go @@ -193,6 +193,9 @@ func conversionRequest(r *http.Request) (*http.Request, error) { } var c ConversionContract if e = strictJSON(raw, &c); e != nil { + if _, code := verificationOutcome(e); code == "capability-unsupported" { + return nil, e + } return nil, conversionFailure(codeMalformed) } path := "/v1/" + strings.TrimPrefix(r.URL.Path, prefix) diff --git a/internal/runner/column_role_v1_test.go b/internal/runner/column_role_v1_test.go index 2f10d51..d0519ec 100644 --- a/internal/runner/column_role_v1_test.go +++ b/internal/runner/column_role_v1_test.go @@ -243,7 +243,7 @@ func TestColumnRoleSelectedSourceExpiryClearsCustody(t *testing.T) { } func TestColumnRoleHandwrittenSelectionVectors(t *testing.T) { - raw, e := os.ReadFile("../../vectors/retained-column-selection.json") + raw, e := os.ReadFile("../../vectors/retained-column-selection-rc2.json") if e != nil { t.Fatal(e) } @@ -327,6 +327,12 @@ func TestColumnRoleHandwrittenSelectionVectors(t *testing.T) { m, _ := exactMembers(encode(f.Selection)) m[n.Member] = n.Value header := base64.RawURLEncoding.EncodeToString(encode(m)) + // The CLI's exported selector owner and authenticated HTTP owner + // must preserve the same closed-selector refusal before artifacts. + selected, e := ParseConversionSelector(header, "document-validation", "preview", "preparation") + if _, code := verificationOutcome(e); e == nil || selected != nil || code != n.Code { + t.Fatalf("CLI selector refusal differs: got=%s expected=%s error=%v", code, n.Code, e) + } body := &unreadBody{} req := httptest.NewRequest("POST", "/v1/retained-column/1/inputs/next", body) req.Header.Set("Authorization", "Bearer vector") diff --git a/scripts/checks/unit-tests.sh b/scripts/checks/unit-tests.sh index e8120ff..c59334d 100755 --- a/scripts/checks/unit-tests.sh +++ b/scripts/checks/unit-tests.sh @@ -3,13 +3,22 @@ set -e root=$(git rev-parse --show-toplevel) bin=$root/.ci/bin -JPACK_TEST_BIN="$bin/jpack" \ -JPACK_RETAINED_TEST_BIN="$bin/jpack-retained" \ -JPACK_EARLIER_TEST_BIN="$bin/jpack-earlier" \ -JPACK_GATEWAY_TEST_BIN="$bin/gateway" \ -JPACK_MCP_ADAPTER_TEST_BIN="$bin/adapter-mcp" \ -JPACK_OLD_RUNNER_TEST_BIN="$bin/jpack-runner-old" \ -go test -race ./... +# The selected artifact-boundary family adds substantial byte-scanning work. +# Complementary invocations retain every test, examples and fuzz seed corpus, +# race instrumentation and the default per-package timeout. No cases are skipped +# across the pair; new names naturally belong to exactly one side. +retained='^(TestColumn|TestRC2)' +run_unit() { + JPACK_TEST_BIN="$bin/jpack" \ + JPACK_RETAINED_TEST_BIN="$bin/jpack-retained" \ + JPACK_EARLIER_TEST_BIN="$bin/jpack-earlier" \ + JPACK_GATEWAY_TEST_BIN="$bin/gateway" \ + JPACK_MCP_ADAPTER_TEST_BIN="$bin/adapter-mcp" \ + JPACK_OLD_RUNNER_TEST_BIN="$bin/jpack-runner-old" \ + go test -race "$@" ./... +} +run_unit -run "$retained" +run_unit -skip "$retained" # The store contract's conformance suite runs against every kind # (docs/design/store-interface.md): a kind whose cases do not run and pass # fails this step, as a skipped test would otherwise pass. diff --git a/tools/test_ci_evidence.py b/tools/test_ci_evidence.py index a43f540..7988de8 100644 --- a/tools/test_ci_evidence.py +++ b/tools/test_ci_evidence.py @@ -14,6 +14,8 @@ reader: a workflow rewritten in another shape fails here until the reading follows it. """ import hashlib +import os +import tempfile import json from pathlib import Path import re @@ -116,6 +118,35 @@ def go_versions(text): return re.findall(r"^ *go-version: *['\"]?([0-9][0-9.x]*)['\"]? *$", text, re.M) + +def unit_partition_trace(script): + """Execute only shell wiring: the fake Go records selections, never builds.""" + with tempfile.TemporaryDirectory(prefix='runner-unit-selection-') as temporary: + directory = Path(temporary) + trace = directory / 'trace.jsonl' + fake = directory / 'go' + fake.write_text('#!' + sys.executable + '\n' + r''' +import json, os, sys +from pathlib import Path +args = sys.argv[1:] +with Path(os.environ['UNIT_SELECTION_TRACE']).open('a') as output: + output.write(json.dumps({'args': args, 'env': {key: os.environ.get(key) for key in ( + 'JPACK_TEST_BIN', 'JPACK_RETAINED_TEST_BIN', 'JPACK_EARLIER_TEST_BIN', + 'JPACK_GATEWAY_TEST_BIN', 'JPACK_MCP_ADAPTER_TEST_BIN', 'JPACK_OLD_RUNNER_TEST_BIN')}}) + '\n') +if '^TestStoreKindsConform$' in args: + print('--- PASS: TestStoreKindsConform/sqlite (0.00s)') + print('--- PASS: TestStoreKindsConform/memory (0.00s)') +''', encoding='utf-8') + fake.chmod(0o700) + env = dict(os.environ, PATH=str(directory) + os.pathsep + os.environ['PATH'], + UNIT_SELECTION_TRACE=str(trace)) + process = subprocess.run(['bash', str(script)], cwd=ROOT, env=env, + stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) + if process.returncode: + raise AssertionError(process.stdout) + return [json.loads(line) for line in trace.read_text().splitlines()] + + class Jobs(unittest.TestCase): def test_every_job_and_leg_of_ci_is_required_by_its_display_name(self): workflow = config()['workflows']['ci'] @@ -203,6 +234,36 @@ def test_the_pins_and_the_must_run_tests_are_in_every_runner_leg(self): for spec in runner: self.assertIn(name, spec['checks']) + def test_unit_selections_are_complementary_and_keep_pinned_environments(self): + calls = unit_partition_trace(ROOT / 'scripts/checks/unit-tests.sh') + main = [call for call in calls if '^TestStoreKindsConform$' not in call['args']] + # Handwritten representatives include observed real test names and future + # names; ordinary invocation also retains examples and fuzz seed corpus. + names = {'TestColumnRoleHandwrittenSelectionVectors', 'TestRC2Core030RealRuntimeFirstSaveSignedExports', + 'TestTheRuntimesVerifierReadsTheChainOfRuns', 'TestFutureOrdinary', + 'TestColumnFuture', 'ExampleFuture', 'FuzzFuture'} + groups = [] + for call in main: + args = call['args'] + self.assertIn('-race', args) + self.assertIn('./...', args) + self.assertFalse(any(arg.startswith('-timeout') for arg in args)) + matches = set(names) + if '-run' in args: + matches &= {name for name in names if re.search(args[args.index('-run') + 1], name)} + if '-skip' in args: + matches -= {name for name in names if re.search(args[args.index('-skip') + 1], name)} + groups.append(matches) + for key, binary in {'JPACK_TEST_BIN': 'jpack', 'JPACK_RETAINED_TEST_BIN': 'jpack-retained', + 'JPACK_EARLIER_TEST_BIN': 'jpack-earlier', 'JPACK_GATEWAY_TEST_BIN': 'gateway', + 'JPACK_MCP_ADAPTER_TEST_BIN': 'adapter-mcp', 'JPACK_OLD_RUNNER_TEST_BIN': 'jpack-runner-old'}.items(): + self.assertEqual(call['env'][key], str(ROOT / '.ci/bin' / binary), key) + self.assertEqual(set().union(*groups), names, 'unit partitions omit cases') + self.assertEqual(len(groups), 2) + self.assertFalse(groups[0] & groups[1], 'unit partitions repeat cases') + self.assertIn('ExampleFuture', groups[1]) + self.assertIn('FuzzFuture', groups[1]) + def test_every_input_is_a_tracked_file(self): inputs = config()['inputs'] self.assertTrue(inputs) diff --git a/vectors/retained-column-selection-rc2.json b/vectors/retained-column-selection-rc2.json new file mode 100644 index 0000000..03d66c6 --- /dev/null +++ b/vectors/retained-column-selection-rc2.json @@ -0,0 +1,581 @@ +{ + "status": "handwritten-test-only", + "selection": { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "bcac15b7537ce21879201b5e5dfe795496225121", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "capabilities": [ + { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "bcac15b7537ce21879201b5e5dfe795496225121", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" + }, + "profile": "base", + "role": "document-validation", + "limits": { + "documentBytes": 1048576, + "frameBytes": 2097152 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "bcac15b7537ce21879201b5e5dfe795496225121", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" + }, + "profile": "base", + "role": "preview", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736 + } + }, + { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "bcac15b7537ce21879201b5e5dfe795496225121", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" + }, + "profile": "base", + "role": "preparation", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "bcac15b7537ce21879201b5e5dfe795496225121", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" + }, + "profile": "base", + "role": "preparation-verification", + "limits": { + "documentBytes": 1048576, + "combinedBytes": 12582912, + "frameBytes": 2097152, + "preparationBytes": 16777216, + "recordBytes": 9437184, + "profilesBytes": 81920, + "requestBodyBytes": 16777216, + "inputReplyBytes": 37748736, + "releaseStoredBytes": 41943040, + "runStoredBytes": 41943040, + "exportBaseBytes": 75497472, + "exportWireBytes": 90177536 + }, + "producerGrammar": "desk-reviewed-input/1" + }, + { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "bcac15b7537ce21879201b5e5dfe795496225121", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ], + "negativeSelections": [ + { + "name": "null-profile", + "member": "profile", + "value": null, + "code": "capability-unsupported" + }, + { + "name": "boolean-profile", + "member": "profile", + "value": false, + "code": "capability-unsupported" + }, + { + "name": "numeric-profile", + "member": "profile", + "value": 0, + "code": "capability-unsupported" + }, + { + "name": "array-profile", + "member": "profile", + "value": [], + "code": "capability-unsupported" + }, + { + "name": "object-profile", + "member": "profile", + "value": {}, + "code": "capability-unsupported" + }, + { + "name": "extended-profile", + "member": "profile", + "value": "extended", + "code": "capability-unsupported" + }, + { + "name": "null-role", + "member": "roles", + "value": [ + null + ], + "code": "input-malformed" + }, + { + "name": "unknown-role", + "member": "roles", + "value": [ + "unknown" + ], + "code": "capability-unsupported" + }, + { + "name": "repeated-role", + "member": "roles", + "value": [ + "preview", + "preview" + ], + "code": "input-malformed" + }, + { + "name": "reversed-role", + "member": "roles", + "value": [ + "preparation", + "preview" + ], + "code": "input-malformed" + }, + { + "name": "empty-role-list", + "member": "roles", + "value": [], + "code": "input-malformed" + }, + { + "name": "missing-operation-role", + "member": "roles", + "value": [ + "document-validation", + "preview" + ], + "code": "capability-unsupported" + } + ], + "conversions": [ + { + "contractVersion": "1", + "column": "X", + "kind": "text" + }, + { + "contractVersion": "1", + "column": "X", + "kind": "decimal" + }, + { + "contractVersion": "1", + "column": "X", + "kind": "number" + }, + { + "contractVersion": "1", + "column": "X", + "kind": "research-value" + }, + { + "contractVersion": "1", + "column": "X", + "kind": "boolean", + "trueValue": "YES", + "falseValue": "NO" + } + ], + "availability": { + "contractVersion": "1", + "column": "X" + }, + "lineages": [ + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "location": "values" + } + }, + "result": { + "state": "value", + "json": "-0" + } + }, + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "missing" + }, + "result": { + "state": "omitted", + "reason": "missing" + } + }, + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "present", + "ref": { + "frameSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "location": "research-value" + } + }, + "result": { + "state": "value", + "json": "-0" + }, + "researchIdentity": { + "recipeRevision": "original-7", + "fieldSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "missing" + }, + "result": { + "state": "omitted", + "reason": "blank" + } + }, + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "missing" + }, + "result": { + "state": "omitted", + "reason": "legacy-null" + } + }, + { + "contractVersion": "1", + "column": "X", + "input": { + "state": "missing" + }, + "result": { + "state": "omitted", + "reason": "unavailable" + } + } + ], + "sourceInputs": [ + { + "conversionContract": { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "bcac15b7537ce21879201b5e5dfe795496225121", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "retainedCaseJson": "{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"values\":{\"X\":\"-0\"},\"research\":null}}", + "mapping": { + "version": 2, + "profile": "base", + "case": { + "facts": [ + { + "target": "/value", + "source": "/retained", + "conversion": { + "contractVersion": "1", + "column": "X", + "kind": "number" + } + } + ], + "evidence": [ + { + "requirement": "receipt", + "source": "/retained", + "availability": { + "contractVersion": "1", + "column": "X" + } + } + ] + }, + "provider": "", + "facts": null, + "evidence": null + } + }, + { + "conversionContract": { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "bcac15b7537ce21879201b5e5dfe795496225121", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "retainedCaseJson": "{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"values\":{\"X\":\"-0\"},\"research\":null}}", + "mapping": { + "formatVersion": "2.0.0", + "id": "urn:example:retained", + "version": "1.0.0", + "profile": "base", + "case": { + "facts": [ + { + "target": "/value", + "source": "/retained", + "conversion": { + "contractVersion": "1", + "column": "X", + "kind": "number" + } + } + ], + "evidence": [ + { + "requirement": "receipt", + "source": "/retained", + "availability": { + "contractVersion": "1", + "column": "X" + } + } + ] + } + } + }, + { + "conversionContract": { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "bcac15b7537ce21879201b5e5dfe795496225121", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + }, + "retainedCaseJson": "{\"retained\":{\"contractVersion\":\"1\",\"origin\":\"asserted\",\"values\":{\"X\":\"-0\"},\"research\":null}}", + "mapping": { + "formatVersion": "3.0.0", + "id": "urn:example:retained", + "version": "1.0.0", + "profile": "base", + "case": { + "facts": [ + { + "target": "/value", + "source": "/retained", + "conversion": { + "contractVersion": "1", + "column": "X", + "kind": "number" + } + } + ], + "evidence": [ + { + "requirement": "receipt", + "source": "/retained", + "availability": { + "contractVersion": "1", + "column": "X" + } + } + ] + } + } + } + ], + "preparations": [ + { + "version": 2, + "verifiedAt": "2026-10-26T00:00:00Z", + "mappingDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000", + "verification": "handwritten test only", + "cites": [], + "lineage": [], + "outcomes": [], + "conversionContract": { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "bcac15b7537ce21879201b5e5dfe795496225121", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" + }, + "profile": "base", + "roles": [ + "document-validation", + "preview", + "preparation", + "preparation-verification", + "producer-carrier" + ] + } + } + ], + "profiles": [ + { + "id": "fixture", + "publicKey": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a", + "class": "generated", + "source": "desk-inputs", + "authority": "fixture:test", + "shape": "mcp", + "adapter": { + "name": "jpack-desk/reviewed-input", + "version": "2", + "digest": "sha256:0000000000000000000000000000000000000000000000000000000000000000" + }, + "endpoint": "desk-local:reviewed-inputs", + "tools": [ + "read_reviewed_input" + ], + "retainedColumnProducer": { + "contractVersion": "1", + "grammar": "desk-reviewed-input/1" + }, + "conversionContracts": [ + { + "contract": "retained-column/1", + "spec": { + "version": "0.3.0-rc.2", + "revision": "bcac15b7537ce21879201b5e5dfe795496225121", + "schemaSha256": "sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557", + "corpusSha256": "sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863" + }, + "profile": "base", + "role": "producer-carrier", + "limits": { + "originalSnapshotBytes": 524288, + "carrierBytes": 3145728, + "grantBytes": 3145728, + "adapterStdoutBytes": 3145728, + "responseBytes": 5242880, + "profilesBytes": 81920 + }, + "producerGrammar": "desk-reviewed-input/1" + } + ] + } + ], + "sourceValues": [ + { + "retainedResponseJson": "{\"result\":{},\"receipt\":{},\"salts\":{}}" + } + ], + "copyMappings": [ + { + "facts": [ + { + "target": "/value", + "source": "/retained", + "conversion": { + "contractVersion": "1", + "column": "X", + "kind": "number" + } + } + ], + "evidence": [ + { + "requirement": "receipt", + "source": "/retained", + "availability": { + "contractVersion": "1", + "column": "X" + } + } + ] + } + ] +} From d1054cdfbc68350d09f85aea95cc90abe16632eb Mon Sep 17 00:00:00 2001 From: kikashy Date: Tue, 27 Oct 2026 00:24:24 -0400 Subject: [PATCH 09/11] Preserve ordinary preparation findings and version selected discovery Inspect only the reserved conversion selector before canonical recomputation. Version the expanded verifier interface and report capability description, with unchanged ordinary reports, bounds and exit statuses. Signed-off-by: kikashy --- cmd/jpack-runner/verify_preparation.go | 9 ++-- cmd/jpack-runner/verify_preparation_test.go | 38 ++++++++------ docs/MAPPING-V2.md | 21 +++++++- docs/releases/v0.26.0-alpha.1.md | 6 +++ .../column_preparation_selection_test.go | 50 +++++++++++++++++++ internal/runner/verify_preparation.go | 29 ++++++++--- internal/runner/verify_preparation_test.go | 6 +-- 7 files changed, 128 insertions(+), 31 deletions(-) create mode 100644 internal/runner/column_preparation_selection_test.go diff --git a/cmd/jpack-runner/verify_preparation.go b/cmd/jpack-runner/verify_preparation.go index e1c49db..f45cf15 100644 --- a/cmd/jpack-runner/verify_preparation.go +++ b/cmd/jpack-runner/verify_preparation.go @@ -27,8 +27,8 @@ const preparationInputCap = 8<<20 + 1 // characters. var sha256Form = regexp.MustCompile(`^sha256:[0-9a-f]{64}$`) -const verifyPreparationUsage = `Usage: jpack-runner verify-preparation --dialect FILE [--binding FILE] --case FILE --profiles FILE [--sources FILE] --preparation FILE --preparation-digest sha256:HEX - jpack-runner verify-preparation --unbound FILE --binding FILE --case FILE --profiles FILE [--sources FILE] --preparation FILE --preparation-digest sha256:HEX +const verifyPreparationUsage = `Usage: jpack-runner verify-preparation [--conversion-contract BASE64URL] --dialect FILE [--binding FILE] --case FILE --profiles FILE [--sources FILE] --preparation FILE --preparation-digest sha256:HEX + jpack-runner verify-preparation [--conversion-contract BASE64URL] --unbound FILE --binding FILE --case FILE --profiles FILE [--sources FILE] --preparation FILE --preparation-digest sha256:HEX jpack-runner verify-preparation --capabilities Verifies one preparation offline, as a preparation verifier of the specification's @@ -46,7 +46,10 @@ It writes one report on standard output, one line, and the reason on standard er and exits 0 for a reading, 1 for a refusal and 2 for a finding; 3, writing no report and saying why on standard error, when it could not run: an argument it does not take, a file it cannot open, a preparation its digest does not name, or -h. --capabilities -prints what it reads, as one JSON object, and exits 0. +prints interface and report capability version 2, including exact installed +retained-column support, as one JSON object, and exits 0. It takes no other flag. +Selected verification requires --conversion-contract explicitly; discovery does +not select an artifact, enlarge ordinary bounds or install any trusted identity. A reading establishes that the preparation recomputes from these inputs. Its binding is not-checked: no record is given, so nothing here commits the preparation or its diff --git a/cmd/jpack-runner/verify_preparation_test.go b/cmd/jpack-runner/verify_preparation_test.go index 6292bd5..bb47f7b 100644 --- a/cmd/jpack-runner/verify_preparation_test.go +++ b/cmd/jpack-runner/verify_preparation_test.go @@ -213,9 +213,16 @@ func TestVerifyPreparationCapabilities(t *testing.T) { t.Fatalf("%d %s %s", status, stdout, stderr) } report := reportOf(t, stdout) - if string(report["command"]) != `"verify-preparation"` || string(report["version"]) != "1" || string(report["dialectVersions"]) != "[2,3]" || string(report["sourceKinds"]) != `["operation","research"]` { + if string(report["command"]) != `"verify-preparation"` || string(report["version"]) != "2" || string(report["dialectVersions"]) != "[2,3]" || string(report["sourceKinds"]) != `["operation","research"]` { t.Fatal(stdout) } + var description struct { + Version int + Refusals []string + } + if err := json.Unmarshal(report["report"], &description); err != nil || description.Version != 2 || !strings.Contains(string(report["report"]), `"capability-unsupported"`) || !strings.Contains(string(report["report"]), `"profile-unsupported"`) || len(report["conversionContracts"]) == 0 { + t.Fatalf("selected version-2 discovery differs: %s", stdout) + } } // The expected preparation's digest is a precondition, as a file the command @@ -251,20 +258,21 @@ func TestVerifyPreparationCouldNotRun(t *testing.T) { } rest := []string{"--case", dir + "case.json", "--profiles", dir + "profiles.json", "--sources", dir + "sources.json", "--preparation", dir + "preparation.json", "--preparation-digest", string(sum)} for name, args := range map[string][]string{ - "nothing": nil, - "help": {"-h"}, - "a flag it does not take": append([]string{"--dialect", dir + "mapping.json", "--record", dir + "run.json"}, rest...), - "an argument": append([]string{"--dialect", dir + "mapping.json", "extra"}, rest...), - "both --dialect and --unbound": append([]string{"--dialect", dir + "mapping.json", "--unbound", dir + "unbound.json", "--binding", dir + "binding.json"}, rest...), - "--unbound without --binding": append([]string{"--unbound", dir + "unbound.json"}, rest...), - "no dialect": rest, - "no expected digest": append([]string{"--dialect", dir + "mapping.json"}, rest[:len(rest)-2]...), - "a digest of another form": append(append([]string{"--dialect", dir + "mapping.json"}, rest[:len(rest)-1]...), strings.ToUpper(string(sum))), - "a digest that does not name it": append(append([]string{"--dialect", dir + "mapping.json"}, rest[:len(rest)-1]...), "sha256:"+strings.Repeat("0", 64)), - "a file that is not there": append([]string{"--dialect", dir + "absent.json"}, rest...), - "a directory": append([]string{"--dialect", dir}, rest...), - "a flag naming no file": append([]string{"--dialect", dir + "mapping.json", "--binding", ""}, rest...), - "--capabilities with another flag": {"--capabilities", "--dialect", dir + "mapping.json"}, + "nothing": nil, + "help": {"-h"}, + "a flag it does not take": append([]string{"--dialect", dir + "mapping.json", "--record", dir + "run.json"}, rest...), + "an argument": append([]string{"--dialect", dir + "mapping.json", "extra"}, rest...), + "both --dialect and --unbound": append([]string{"--dialect", dir + "mapping.json", "--unbound", dir + "unbound.json", "--binding", dir + "binding.json"}, rest...), + "--unbound without --binding": append([]string{"--unbound", dir + "unbound.json"}, rest...), + "no dialect": rest, + "no expected digest": append([]string{"--dialect", dir + "mapping.json"}, rest[:len(rest)-2]...), + "a digest of another form": append(append([]string{"--dialect", dir + "mapping.json"}, rest[:len(rest)-1]...), strings.ToUpper(string(sum))), + "a digest that does not name it": append(append([]string{"--dialect", dir + "mapping.json"}, rest[:len(rest)-1]...), "sha256:"+strings.Repeat("0", 64)), + "a file that is not there": append([]string{"--dialect", dir + "absent.json"}, rest...), + "a directory": append([]string{"--dialect", dir}, rest...), + "a flag naming no file": append([]string{"--dialect", dir + "mapping.json", "--binding", ""}, rest...), + "--capabilities with another flag": {"--capabilities", "--dialect", dir + "mapping.json"}, + "--capabilities with conversion selection": {"--capabilities", "--conversion-contract", "not-an-admitted-selector"}, } { t.Run(name, func(t *testing.T) { status, stdout, stderr := runVerifyPreparation(args...) diff --git a/docs/MAPPING-V2.md b/docs/MAPPING-V2.md index f348964..a868f89 100644 --- a/docs/MAPPING-V2.md +++ b/docs/MAPPING-V2.md @@ -1911,7 +1911,9 @@ It writes §11's report on standard output, one line in that canonical form, and why on standard error, and exits 0 for a reading, 1 for a refusal and 2 for a finding; 3, with no report, when it could not run: an argument it does not take, a file it cannot open, a preparation its digest does not name, `-h`. Its -refusals are §11's and no other. A refusal is exactly +ordinary refusals are §11's. Explicit retained-column selection additionally +names unsupported selection/profile refusals in its version-2 capability +description below. A refusal's JSON form is exactly `{"refusal":"input-malformed","result":"refusal"}` and a finding `{"finding":"acquisition-invalid","result":"finding"}`. A reading is exactly `result`, `digest`, `binding`, `facts`, `evidence`, `targetsByClass`, and @@ -1929,13 +1931,28 @@ does, for a run's export. `jpack-runner verify-preparation --capabilities` prints, alone, one closed object for a caller to check before it calls: the command's version -(`"version":1`), the release it was built from (`runner`), the dialect versions +(`"version":2`), the release it was built from (`runner`), the dialect versions (`[2,3]`) and named formats (`"2.0.0"`, `"3.0.0"`), the source kinds and shapes it reads, the instant it recomputes at, its report's form, results, binding, refusal and finding codes and exit statuses, its preconditions (`"preconditions":["preparation-digest"]`, each `couldNotRun` when it fails), and the bounds it holds the documents to. +Interface version 2 adds the explicit `--conversion-contract BASE64URL` flag and +`conversionContracts`, the exact installed retained-column Base declaration. +`--capabilities` still takes no other flag, including a conversion selector. +Discovery describes support; it neither selects an artifact nor changes the +ordinary bounds. Selected verification uses the explicit selector before files +are opened, as [the selected contract](design/retained-columns-draft.md) describes. + +The nested report capability description is also version 2: its declared refusal +vocabulary additionally names `capability-unsupported` and `profile-unsupported` +for the retained-column extension. This does not add members to the actual §11 +reading, refusal or finding JSON and does not change exit statuses. Ordinary +preparations retain canonical recomputation: unrelated extra preparation members +are a `preparation-differs` finding, while a missing, altered or malformed retained +conversion selector refuses instead of silently changing explicit context. + **What a reading establishes, and what it does not** (§13, §14). A reading establishes that the preparation, byte for byte in the canonical form, recomputes from the files given at the instant it names: that the derivations diff --git a/docs/releases/v0.26.0-alpha.1.md b/docs/releases/v0.26.0-alpha.1.md index 1637f2c..b39ef66 100644 --- a/docs/releases/v0.26.0-alpha.1.md +++ b/docs/releases/v0.26.0-alpha.1.md @@ -26,6 +26,12 @@ replay must report the evaluator version from the same retained release pack; unknown or mismatched reports refuse. Manual and workflow paths are unchanged. See [the contract and transport details](../design/retained-columns-draft.md). +Offline `verify-preparation --capabilities` now declares interface version 2 and +report capability version 2 for the explicit selected contract and its additional +selection/profile refusal codes. Discovery remains a sole-flag operation. Ordinary +verification bounds, report members, exit statuses and canonical findings remain +unchanged; selected verification requires an exact `--conversion-contract`. + ## Operator and producer scope Use an explicitly compatible Runtime and separately approved producer profile diff --git a/internal/runner/column_preparation_selection_test.go b/internal/runner/column_preparation_selection_test.go new file mode 100644 index 0000000..c283826 --- /dev/null +++ b/internal/runner/column_preparation_selection_test.go @@ -0,0 +1,50 @@ +package runner + +import ( + "encoding/json" + "strings" + "testing" + "time" +) + +func TestColumnPreparationSelectionMustMatchExplicitContext(t *testing.T) { + input := columnCase(t, "text", `"A"`) + input.Source.ConversionContract = selectedContract() + prepared, e := normalizeV2(input, nil, time.Now()) + if e != nil { + t.Fatal(e) + } + fixture := columnFixture(prepared) + fixture.ConversionContract = selectedContract() + if report := VerifyPreparation(fixture); report.Result != ResultReading { + t.Fatal(report) + } + for _, name := range []string{"missing-explicit-selection", "missing-retained-selection", "different-retained-pin", "aliased-retained-selection", "null-retained-selection"} { + t.Run(name, func(t *testing.T) { + changed := fixture + var preparation map[string]json.RawMessage + if e := json.Unmarshal(fixture.Preparation, &preparation); e != nil { + t.Fatal(e) + } + switch name { + case "missing-explicit-selection": + changed.ConversionContract = nil + case "missing-retained-selection": + delete(preparation, "conversionContract") + case "different-retained-pin": + other := *selectedContract() + other.Spec.Revision = strings.Repeat("0", 40) + preparation["conversionContract"] = encode(other) + case "aliased-retained-selection": + preparation["ConversionContract"] = preparation["conversionContract"] + delete(preparation, "conversionContract") + case "null-retained-selection": + preparation["conversionContract"] = json.RawMessage(`null`) + } + changed.Preparation = encode(preparation) + if report := VerifyPreparation(changed); report.Result != ResultRefusal || report.Code != codeMalformed || report.Reason != "preparation conversion selection differs" { + t.Fatalf("explicit/retained selection guard lost: %+v", report) + } + }) + } +} diff --git a/internal/runner/verify_preparation.go b/internal/runner/verify_preparation.go index 6acb36c..a0e530f 100644 --- a/internal/runner/verify_preparation.go +++ b/internal/runner/verify_preparation.go @@ -33,6 +33,7 @@ import ( "encoding/json" "errors" "fmt" + "strings" ) // The codes of spec/dialect.md §11 that only the preparation verifier names @@ -61,8 +62,9 @@ const ( ResultFinding = "finding" ) -// refusalCodes are the codes §11 gives a refusal; every other code is a -// finding's. +// refusalCodes includes ordinary §11 refusals and the explicitly selected +// retained-column extension's unsupported selection/profile refusals. Every +// other code is a finding's. var refusalCodes = map[string]bool{"capability-unsupported": true, "profile-unsupported": true, codeOverBound: true, codeMalformed: true, "version-unread": true, codeKindUnread: true} // verifiedKinds are the source kinds the verifier reads: those the vectors @@ -336,8 +338,17 @@ func verifyPreparationUsing(f PreparationFixture, readAcquisition acquisitionRea return stop(codeMalformed, fmt.Sprintf("the acquisitions are not one object of acquisitions by source: %v", err)) } given, _ := read["the preparation"].(map[string]any) - var selectedPreparation Preparation - if strictJSON(f.Preparation, &selectedPreparation) != nil || !sameConversion(selectedPreparation.ConversionContract, f.ConversionContract) { + // Inspect only the reserved selector here. Ordinary preparation members + // retain their historical canonical recomputation/finding semantics. + var retainedSelection *ConversionContract + for name, value := range given { + if strings.EqualFold(name, "conversionContract") { + if name != "conversionContract" || value == nil || strictJSON(encode(value), &retainedSelection) != nil { + return stop(codeMalformed, "preparation conversion selection differs") + } + } + } + if !sameConversion(retainedSelection, f.ConversionContract) { return stop(codeMalformed, "preparation conversion selection differs") } if err := columnReferenceForms(given); err != nil { @@ -419,7 +430,7 @@ func verifyPreparationUsing(f PreparationFixture, readAcquisition acquisitionRea // PreparationVerifierVersion is the version of verify-preparation's // interface: its flags, its report and its capabilities. It changes when any // of them does. -const PreparationVerifierVersion = 1 +const PreparationVerifierVersion = 2 // PreparationVerifierCapabilities is what verify-preparation --capabilities // prints, so that a caller can check what the command reads before it calls @@ -443,11 +454,13 @@ func PreparationVerifierCapabilities(release string) []byte { "shapes": shapes, "instant": freshnessAgainst, "report": map[string]any{ - "form": "spec/dialect.md §11", - "version": 1, + "form": "spec/dialect.md §11", + // The declared refusal vocabulary extends in interface 2, even + // though the actual §11 report members and exit statuses do not. + "version": 2, "results": []string{ResultReading, ResultRefusal, ResultFinding}, "binding": []string{BindingNotChecked}, - "refusals": []string{codeOverBound, codeMalformed, codeKindUnread}, + "refusals": []string{codeOverBound, codeMalformed, codeKindUnread, "capability-unsupported", "profile-unsupported"}, "findings": []string{codeMismatch, codeParameter, codeReadFailed, codeMissing, codeUnexpected, codeInvalid, codeStale, codeSessions, codeCalculation, codeAdmission, codeDiffers}, "exitStatus": map[string]int{ResultReading: 0, ResultRefusal: 1, ResultFinding: 2, "couldNotRun": 3}, // Checked before a reading; one that fails is couldNotRun. diff --git a/internal/runner/verify_preparation_test.go b/internal/runner/verify_preparation_test.go index a69f746..004196b 100644 --- a/internal/runner/verify_preparation_test.go +++ b/internal/runner/verify_preparation_test.go @@ -425,9 +425,9 @@ func TestAPreparationReportIsWrittenInTheCanonicalForm(t *testing.T) { // PreparationVerifierVersion with it. func TestThePreparationVerifiersCapabilities(t *testing.T) { want := `{"bounds":{"bindingBytes":65536,"clauses":64,"conditions":64,"dialectBytes":131072,"documentDepth":64,"envelopeBytes":2097152,"evidenceTargets":128,"exponent":308,"factTargets":256,"numberCharacters":128,"parameters":64,"preparationBytes":8388608,"profilesBytes":65536,"retainedResponses":64,"sources":16,"unwrap":4,"unwrappedBytes":200000,"valueDepth":32},` + - `"command":"verify-preparation","dialectVersions":[2,3],"formatVersions":["2.0.0","3.0.0"],"instant":"preparation.verifiedAt",` + - `"report":{"binding":["not-checked"],"exitStatus":{"couldNotRun":3,"finding":2,"reading":0,"refusal":1},"findings":["profile-mismatch","parameter-invalid","read-failed","acquisition-missing","acquisition-unexpected","acquisition-invalid","acquisition-stale","acquisition-sessions","calculation-invalid","admission-refused","preparation-differs"],"form":"spec/dialect.md §11","preconditions":["preparation-digest"],"refusals":["input-over-bound","input-malformed","kind-unread"],"results":["reading","refusal","finding"],"version":1},` + - `"runner":"v0.0.0-test","shapes":["airbyte","http","mcp"],"sourceKinds":["operation","research"],"version":1}` + `"command":"verify-preparation","conversionContracts":[{"contract":"retained-column/1","limits":{"combinedBytes":12582912,"documentBytes":1048576,"exportBaseBytes":75497472,"exportWireBytes":90177536,"frameBytes":2097152,"inputReplyBytes":37748736,"preparationBytes":16777216,"profilesBytes":81920,"recordBytes":9437184,"releaseStoredBytes":41943040,"requestBodyBytes":16777216,"runStoredBytes":41943040},"producerGrammar":"desk-reviewed-input/1","profile":"base","role":"preparation-verification","spec":{"corpusSha256":"sha256:17b16ff7a9b74fe4cc81eb6f6129a6aabdd9834621d9e756aa2d4c1a3f245863","revision":"bcac15b7537ce21879201b5e5dfe795496225121","schemaSha256":"sha256:0cb49f238c78391cb163a65474cc9af962df2bb1024a55c5310c2b784b2f0557","version":"0.3.0-rc.2"}}],"dialectVersions":[2,3],"formatVersions":["2.0.0","3.0.0"],"instant":"preparation.verifiedAt",` + + `"report":{"binding":["not-checked"],"exitStatus":{"couldNotRun":3,"finding":2,"reading":0,"refusal":1},"findings":["profile-mismatch","parameter-invalid","read-failed","acquisition-missing","acquisition-unexpected","acquisition-invalid","acquisition-stale","acquisition-sessions","calculation-invalid","admission-refused","preparation-differs"],"form":"spec/dialect.md §11","preconditions":["preparation-digest"],"refusals":["input-over-bound","input-malformed","kind-unread","capability-unsupported","profile-unsupported"],"results":["reading","refusal","finding"],"version":2},` + + `"runner":"v0.0.0-test","shapes":["airbyte","http","mcp"],"sourceKinds":["operation","research"],"version":2}` if got := string(PreparationVerifierCapabilities("v0.0.0-test")); got != want { t.Fatalf("the capabilities are\n%s\nnot\n%s", got, want) } From a3fb17d5ac31ae9d780ba2d7210c6ddbc073ab11 Mon Sep 17 00:00:00 2001 From: kikashy Date: Tue, 27 Oct 2026 10:29:49 -0400 Subject: [PATCH 10/11] Preserve retained replay limits and bound offline exports Carry verified preparation limits through retained replay admission and independently bound parsed records, release bytes and run bytes during offline verification. Keep the existing signature and custody checks. Partition the unit workload into exhaustive disjoint groups while keeping race instrumentation, companion pins, time limits and both store-kind conformance assertions. Verify selection and failure propagation with focused controls. Signed-off-by: kikashy --- docs/design/retained-columns-draft.md | 8 +- internal/runner/audit_bytes.go | 18 +- .../runner/column_offline_limits_v1_test.go | 253 ++++++++++++++++++ internal/runner/mapping_v2_export.go | 7 +- scripts/checks/unit-tests.sh | 16 +- tools/test_ci_evidence.py | 115 ++++++-- 6 files changed, 383 insertions(+), 34 deletions(-) create mode 100644 internal/runner/column_offline_limits_v1_test.go diff --git a/docs/design/retained-columns-draft.md b/docs/design/retained-columns-draft.md index dd9bcb5..a14cfe0 100644 --- a/docs/design/retained-columns-draft.md +++ b/docs/design/retained-columns-draft.md @@ -235,7 +235,13 @@ the same bounded header encoding, checked before larger files are opened. The AP `VerifyInputs` accepts an explicit optional selector and PreparationFixture carries it separately. They never infer selection from retained bodies. Offline readers revalidate source/preparation/release identities and complete size limits against -their own installed manifest. Existing invocations retain ordinary admission. +their own installed manifest. Every selected export version, including version 2, +independently bounds its parsed audit token and its complete release/run owner +encodings; the export base/wire allowance does not replace those limits. Versions +3–5 additionally bound the exact original record bytes, chain and signature +sidecars. Disposition replay retains the complete verified input through Runtime +admission, including the exact Runtime's lower document/frame maxima, before any +evaluation. Existing invocations retain ordinary admission. Lower positive owner reports are valid. Runner takes the minimum of its Base diff --git a/internal/runner/audit_bytes.go b/internal/runner/audit_bytes.go index 35dcd20..437f68c 100644 --- a/internal/runner/audit_bytes.go +++ b/internal/runner/audit_bytes.go @@ -109,8 +109,22 @@ func exportWithinLimits(raw []byte, b VerificationBundle) error { if !sameConversion(c, inputConversion(b.Release.Sample)) { return conversionFailure("capability-unsupported") } - if c != nil && len(raw) > ColumnExportWireLimit { - return errors.New("verification bundle exceeds selected wire limit") + if c != nil { + if len(raw) > ColumnExportWireLimit { + return errors.New("verification bundle exceeds selected wire limit") + } + // The enclosing export budget does not replace its artifact budgets. + // Measure the parsed record token even in v2, which has no AuditBytes; + // release/run use the same complete owner encodings as durable storage. + if len(b.Run.Audit) > columnRecordLimit { + return errors.New("the parsed audit record exceeds selected record limit") + } + if len(encode(b.Release)) > columnStoredLimit { + return errors.New("retained release exceeds selected storage limit") + } + if len(runText(b.Run)) > columnStoredLimit { + return errors.New("retained run exceeds selected storage limit") + } } size := len(raw) if len(b.Run.AuditSignatures) > 0 { diff --git a/internal/runner/column_offline_limits_v1_test.go b/internal/runner/column_offline_limits_v1_test.go new file mode 100644 index 0000000..ce3bc9e --- /dev/null +++ b/internal/runner/column_offline_limits_v1_test.go @@ -0,0 +1,253 @@ +package runner + +import ( + "bytes" + "context" + "crypto/ed25519" + "encoding/hex" + "encoding/json" + "fmt" + "os" + "path/filepath" + "strings" + "testing" + "time" +) + +// These handwritten records exercise offline artifact admission, not an assertion +// that a published Runtime emitted a maximum record or arbitrary review metadata. +func columnOfflineBundle(t *testing.T, input Input, profiles []InputProfile, at time.Time) VerificationBundle { + t.Helper() + prepared, err := normalizeV2(input, profiles, at) + if err != nil { + t.Fatal(err) + } + pack := `{"specVersion":"0.2.0-draft"}` + r := Release{ID: "offline-limits-release", Pack: pack, PackDigest: digest([]byte(pack)), PackID: "limits", PackVersion: "1", InputMapping: &prepared.Source.Mapping, InputProfiles: profiles, Sample: prepared} + disposition := json.RawMessage(`{"kind":"unresolved","reasons":["unknown"]}`) + audit := encode(map[string]any{ + "recordVersion": "1", "kind": "evaluation", "trail": "00112233445566778899aabbccddeeff", "sequence": 1, "previous": digest(nil), + "pack": map[string]any{"digest": r.PackDigest}, "inputs": map[string]any{"facts": prepared.Facts, "evidenceSupplied": len(prepared.Evidence) > 0, "evidence": prepared.Evidence}, + "disposition": disposition, "cites": prepared.Preparation.Cites, "binding": json.RawMessage(bindingDocument(preparationDigest(prepared.Preparation))), "padding": "", + }) + return VerificationBundle{Version: 2, Release: r, ReleaseDigest: releaseDigest(r), Run: Run{ID: "offline-limits-run", ReleaseID: r.ID, State: "completed", Input: prepared, Result: encode(map[string]any{"disposition": disposition}), Audit: audit}} +} + +func columnOfflineVersion(t *testing.T, b VerificationBundle, version int) VerificationBundle { + t.Helper() + b.Version = version + b.Run.AuditBytes, b.Run.AuditSignatures, b.Chain = nil, nil, nil + if version >= 3 { + // Compact original bytes can represent the same record as a parsed token + // with optional JSON escapes. This keeps the two record bounds independent. + var compact bytes.Buffer + if err := json.Compact(&compact, b.Run.Audit); err != nil { + t.Fatal(err) + } + var audit map[string]json.RawMessage + if err := json.Unmarshal(compact.Bytes(), &audit); err != nil { + t.Fatal(err) + } + var padding string + if err := json.Unmarshal(audit["padding"], &padding); err != nil { + t.Fatal(err) + } + audit["padding"] = encode(padding) + b.Run.AuditBytes = encode(audit) + } + return columnOfflineEvidence(t, b) +} + +func columnOfflineEvidence(t *testing.T, b VerificationBundle) VerificationBundle { + t.Helper() + version := b.Version + if version >= 4 { + entry := encode(ChainEntry{EntryVersion: "1", Trail: "00112233445566778899aabbccddeeff", Sequence: 1, Previous: digest(nil), Kind: "run", Run: b.Run.ID, AuditDigest: digest(b.Run.AuditBytes)}) + cp, err := checkpointOf(entry) + if err != nil { + t.Fatal(err) + } + b.Chain = &RunChainExport{Entry: entry, Checkpoint: cp} + } + if version == 5 { + seed, _ := hex.DecodeString(vectorSeed1) + key := ed25519.NewKeyFromSeed(seed) + line := sidecarLine{keyID: vectorKeyID1, trail: "00112233445566778899aabbccddeeff", at: 1, value: digest(b.Run.AuditBytes)} + sig := ed25519.Sign(key, line.signedBytes()) + b.Run.AuditSignatures = []byte(fmt.Sprintf(`{"keyId":%q,"kind":"record-signature","record":%q,"sequence":1,"sidecarVersion":"1","signature":%q,"trail":%q}`+"\n", line.keyID, line.value, hex.EncodeToString(sig), line.trail)) + } + b.ReleaseDigest = releaseDigest(b.Release) + return b +} + +func TestColumnRoleOfflineIndependentArtifactLimits(t *testing.T) { + input := columnCase(t, "text", `"A"`) + input.Source.ConversionContract = selectedContract() + base := columnOfflineBundle(t, input, nil, time.Now()) + for _, artifact := range []string{"parsed-record", "original-record", "release", "run"} { + t.Run(artifact, func(t *testing.T) { + for version := 2; version <= 5; version++ { + if artifact == "original-record" && version == 2 { + continue + } // v2 has no original bytes + t.Run(fmt.Sprintf("v%d", version), func(t *testing.T) { + b := base + var over VerificationBundle + want := "" + switch artifact { + case "parsed-record": + // Repeated optional escapes grow only the parsed token, not the exact + // compact record in v3+. A one-byte change completes the boundary pair. + room := 9437184 - len(base.Run.Audit) + padding := strings.Repeat(`\u0061`, room/6) + strings.Repeat("a", room%6) + b.Run.Audit = bytes.Replace(base.Run.Audit, []byte(`"padding":""`), []byte(`"padding":"`+padding+`"`), 1) + b = columnOfflineVersion(t, b, version) + over = b + over.Run.Audit = bytes.Replace(b.Run.Audit, []byte(`"padding":"`), []byte(`"padding":"a`), 1) + // The changed character is also kept in the compact original, chain + // and signature, so the only violated budget is the parsed record. + over = columnOfflineVersion(t, over, version) + if len(b.Run.Audit) != 9437184 || len(over.Run.Audit) != 9437185 || version >= 3 && len(over.Run.AuditBytes) >= 9437184 { + t.Fatal("parsed-record boundary setup") + } + want = "parsed audit record exceeds selected record limit" + case "original-record": + b = columnOfflineVersion(t, b, version) + b.Run.AuditBytes = paddedJSON(b.Run.AuditBytes, 9437184) + b = columnOfflineEvidence(t, b) + over = b + over.Run.AuditBytes = append(append([]byte(nil), b.Run.AuditBytes...), ' ') + over = columnOfflineEvidence(t, over) + if len(b.Run.AuditBytes) != 9437184 || len(over.Run.AuditBytes) != 9437185 || len(over.Run.Audit) >= 9437184 { + t.Fatal("original-record boundary setup") + } + want = "audit record's bytes exceed 8 MiB" + case "release": + b = columnOfflineVersion(t, b, version) + b.Release.Preview = json.RawMessage(`""`) + b.Release.Preview = json.RawMessage(`"` + strings.Repeat("a", 41943040-len(encode(b.Release))) + `"`) + over = b + over.Release.Preview = append(append(json.RawMessage(nil), b.Release.Preview[:len(b.Release.Preview)-1]...), 'a', '"') + if len(encode(b.Release)) != 41943040 || len(encode(over.Release)) != 41943041 { + t.Fatal("release boundary setup") + } + want = "retained release exceeds selected storage limit" + case "run": + b = columnOfflineVersion(t, b, version) + b.Run.Problem = "x" // retain the otherwise omitted member in the size equation + b.Run.Problem = strings.Repeat("a", 41943040-len(runText(b.Run))+1) + over = b + over.Run.Problem += "a" + if len(runText(b.Run)) != 41943040 || len(runText(over.Run)) != 41943041 { + t.Fatal("run boundary setup") + } + want = "retained run exceeds selected storage limit" + } + b.ReleaseDigest, over.ReleaseDigest = releaseDigest(b.Release), releaseDigest(over.Release) + raw := encode(b) + if len(raw) >= 75497472 { + t.Fatal("exact artifact exceeds independent export base") + } + v, err := VerifyInputs(raw, nil, b.ReleaseDigest, selectedContract()) + if err != nil || !v.Checked() { + t.Fatalf("exact %s v%d refused: %v", artifact, version, err) + } + if version == 5 && v.CheckSignature(mustKey(t, vectorKey1)).Status != SignatureSigned { + t.Fatal("exact artifact lost its signature") + } + if _, err := VerifyInputs(encode(over), nil, over.ReleaseDigest, selectedContract()); err == nil || !strings.Contains(err.Error(), want) { + t.Fatalf("one-over %s v%d escaped independent guard: %v", artifact, version, err) + } + }) + } + }) + } +} + +func TestColumnRoleReplayNegotiatedLimits(t *testing.T) { + at := time.Now().UTC().Truncate(time.Second) + for _, origin := range []string{"asserted", "generated"} { + t.Run(origin, func(t *testing.T) { + input := columnCase(t, "text", `"A"`) + input.Source.ConversionContract = selectedContract() + var profiles []InputProfile + if origin == "generated" { + f := selectedProducer(t) + input, profiles, at = f.input, []InputProfile{f.profile}, f.at + } + b := columnOfflineBundle(t, input, profiles, at) + // A valid document larger than the mapping independently exercises pack + // admission, while the first document case is limited by the mapping. + for _, packDominates := range []bool{false, true} { + if packDominates { + b.Release.Pack = `{"specVersion":"0.2.0-draft","note":"` + strings.Repeat("a", 8192) + `"}` + b.Release.PackDigest = digest([]byte(b.Release.Pack)) + b.Run.Audit = bytes.ReplaceAll(b.Run.Audit, []byte(digest([]byte(`{"specVersion":"0.2.0-draft"}`))), []byte(b.Release.PackDigest)) + } + frameRaw, _ := rawPointer(mustColumnCaseBytes(b.Run.Input.Source), "/retained") + if origin == "generated" { + source := b.Run.Input.Source.Sources["desk"] + raw := source.Response + if source.RetainedResponseJSON != "" { + raw = []byte(source.RetainedResponseJSON) + } + parts, err := exactMembers(raw) + if err != nil { + t.Fatal(err) + } + frameRaw, _ = rawPointer(parts["result"], "/retained") + } + if len(frameRaw) == 0 { + t.Fatal("missing frame boundary") + } + docSize := max(len(b.Release.Pack), len(encode(b.Run.Input.Source.Mapping))) + dir := t.TempDir() + reportPath, calls, outputPath := filepath.Join(dir, "contract.json"), filepath.Join(dir, "calls"), filepath.Join(dir, "output.json") + result := []byte(`{"outputVersion":"2","status":"evaluated","packId":"limits","packVersion":"1","evaluatorSpecVersion":"0.2.0-draft","rehearsal":true,"disposition":{"kind":"unresolved","reasons":["unknown"]}}`) + if err := os.WriteFile(outputPath, result, 0600); err != nil { + t.Fatal(err) + } + script := "#!/bin/sh\nif [ \"$1\" = dialect ]; then exec /bin/cat '" + reportPath + "'; fi\n/bin/echo evaluation >> '" + calls + "'\nexec /bin/cat '" + outputPath + "'\n" + runtime := filepath.Join(dir, "runtime") + if err := os.WriteFile(runtime, []byte(script), 0700); err != nil { + t.Fatal(err) + } + b.Release.RuntimeDigest = digest([]byte(script)) + b.ReleaseDigest = releaseDigest(b.Release) + for _, tc := range []struct { + name string + doc, frame int + unsupported bool + want string + }{ + {"exact", docSize, len(frameRaw), false, ""}, + {"document-one-over", docSize - 1, len(frameRaw), false, "documentBytes"}, + {"frame-one-over", docSize, len(frameRaw) - 1, false, "frameBytes"}, + {"unknown-tuple", docSize, len(frameRaw), true, "support the exact retained-column selection"}, + } { + t.Run(fmt.Sprintf("pack-%t/%s", packDominates, tc.name), func(t *testing.T) { + capability := ConversionCapabilities("document-validation")[0] + capability.Limits["documentBytes"], capability.Limits["frameBytes"] = tc.doc, tc.frame + if tc.unsupported { + capability.Spec.Revision = strings.Repeat("0", 40) + } + report := encode(map[string]any{"capabilities": map[string]any{"conversionContracts": []ConversionCapability{capability}}}) + if err := os.WriteFile(reportPath, report, 0600); err != nil { + t.Fatal(err) + } + before, _ := os.ReadFile(calls) + err := VerifyDisposition(context.Background(), encode(b), profiles, b.ReleaseDigest, runtime, selectedContract()) + after, _ := os.ReadFile(calls) + if tc.want == "" { + if err != nil || string(after) != string(before)+"evaluation\n" { + t.Fatalf("exact negotiated artifacts refused/evaluation missing: %v", err) + } + } else if err == nil || !strings.Contains(err.Error(), tc.want) || !bytes.Equal(before, after) { + t.Fatalf("negotiated replay %s bypassed before-effect refusal: %v calls %q -> %q", tc.name, err, before, after) + } + }) + } + } + }) + } +} diff --git a/internal/runner/mapping_v2_export.go b/internal/runner/mapping_v2_export.go index 948eb5b..55146dd 100644 --- a/internal/runner/mapping_v2_export.go +++ b/internal/runner/mapping_v2_export.go @@ -195,11 +195,10 @@ func (v VerifiedRun) Disposition(ctx context.Context, runtime string) error { if hash != b.Release.RuntimeDigest { return errors.New("this executable is not the Runtime the release froze") } - if e := runtimeConversionAdmission(ctx, bin, dir, inputConversion(prepared)); e != nil { - return e - } work := filepath.Join(dir, "evaluation") - out, _, _, _, e := evaluateWith(ctx, bin, b.Release, Input{Facts: prepared.Facts, Evidence: prepared.Evidence}, work, true, signingInputs{}) + // Keep the verified selection and its documents/frames through the common + // evaluation admission: the exact Runtime may report lower positive limits. + out, _, _, _, e := evaluateWith(ctx, bin, b.Release, prepared, work, true, signingInputs{}) if e != nil { return e } diff --git a/scripts/checks/unit-tests.sh b/scripts/checks/unit-tests.sh index c59334d..094e535 100755 --- a/scripts/checks/unit-tests.sh +++ b/scripts/checks/unit-tests.sh @@ -3,10 +3,11 @@ set -e root=$(git rev-parse --show-toplevel) bin=$root/.ci/bin -# The selected artifact-boundary family adds substantial byte-scanning work. -# Complementary invocations retain every test, examples and fuzz seed corpus, -# race instrumentation and the default per-package timeout. No cases are skipped -# across the pair; new names naturally belong to exactly one side. +# Keep cumulative per-package work below Go's default timeout in each invocation. +# The retained artifact-boundary work and ordinary workflow work have independent +# budgets; the other ordinary tests are divided by name. These selections are +# disjoint and exhaustive, including future names, examples and fuzz seed corpus. +# Every invocation keeps race instrumentation and the default package timeout. retained='^(TestColumn|TestRC2)' run_unit() { JPACK_TEST_BIN="$bin/jpack" \ @@ -17,8 +18,11 @@ run_unit() { JPACK_OLD_RUNNER_TEST_BIN="$bin/jpack-runner-old" \ go test -race "$@" ./... } -run_unit -run "$retained" -run_unit -skip "$retained" +run_unit -run '^TestColumnRole' +run_unit -run "$retained" -skip '^TestColumnRole' +run_unit -run '^TestWorkflow' +run_unit -run '^Test[A-M]' -skip "$retained" +run_unit -skip '^(TestColumn|TestRC2|TestWorkflow|Test[A-M])' # The store contract's conformance suite runs against every kind # (docs/design/store-interface.md): a kind whose cases do not run and pass # fails this step, as a skipped test would otherwise pass. diff --git a/tools/test_ci_evidence.py b/tools/test_ci_evidence.py index 7988de8..b13b5c6 100644 --- a/tools/test_ci_evidence.py +++ b/tools/test_ci_evidence.py @@ -119,11 +119,14 @@ def go_versions(text): -def unit_partition_trace(script): +def unit_partition_trace(script, *, script_text=None, fail_call=None, conformance='sqlite,memory'): """Execute only shell wiring: the fake Go records selections, never builds.""" with tempfile.TemporaryDirectory(prefix='runner-unit-selection-') as temporary: directory = Path(temporary) trace = directory / 'trace.jsonl' + if script_text is not None: + script = directory / 'unit-tests.sh' + script.write_text(script_text, encoding='utf-8') fake = directory / 'go' fake.write_text('#!' + sys.executable + '\n' + r''' import json, os, sys @@ -133,18 +136,24 @@ def unit_partition_trace(script): output.write(json.dumps({'args': args, 'env': {key: os.environ.get(key) for key in ( 'JPACK_TEST_BIN', 'JPACK_RETAINED_TEST_BIN', 'JPACK_EARLIER_TEST_BIN', 'JPACK_GATEWAY_TEST_BIN', 'JPACK_MCP_ADAPTER_TEST_BIN', 'JPACK_OLD_RUNNER_TEST_BIN')}}) + '\n') +number = len(Path(os.environ['UNIT_SELECTION_TRACE']).read_text().splitlines()) +if str(number) == os.environ.get('UNIT_SELECTION_FAIL_CALL'): + print('fake Go failure at call %d' % number) + sys.exit(7) if '^TestStoreKindsConform$' in args: - print('--- PASS: TestStoreKindsConform/sqlite (0.00s)') - print('--- PASS: TestStoreKindsConform/memory (0.00s)') + for kind in os.environ['UNIT_SELECTION_CONFORMANCE'].split(','): + if kind: + print('--- PASS: TestStoreKindsConform/%s (0.00s)' % kind) ''', encoding='utf-8') fake.chmod(0o700) env = dict(os.environ, PATH=str(directory) + os.pathsep + os.environ['PATH'], - UNIT_SELECTION_TRACE=str(trace)) + UNIT_SELECTION_TRACE=str(trace), + UNIT_SELECTION_FAIL_CALL=str(fail_call), + UNIT_SELECTION_CONFORMANCE=conformance) process = subprocess.run(['bash', str(script)], cwd=ROOT, env=env, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, text=True) - if process.returncode: - raise AssertionError(process.stdout) - return [json.loads(line) for line in trace.read_text().splitlines()] + calls = [json.loads(line) for line in trace.read_text().splitlines()] + return process, calls class Jobs(unittest.TestCase): @@ -234,20 +243,34 @@ def test_the_pins_and_the_must_run_tests_are_in_every_runner_leg(self): for spec in runner: self.assertIn(name, spec['checks']) - def test_unit_selections_are_complementary_and_keep_pinned_environments(self): - calls = unit_partition_trace(ROOT / 'scripts/checks/unit-tests.sh') + def assert_unit_partition_calls(self, calls): main = [call for call in calls if '^TestStoreKindsConform$' not in call['args']] - # Handwritten representatives include observed real test names and future - # names; ordinary invocation also retains examples and fuzz seed corpus. - names = {'TestColumnRoleHandwrittenSelectionVectors', 'TestRC2Core030RealRuntimeFirstSaveSignedExports', - 'TestTheRuntimesVerifierReadsTheChainOfRuns', 'TestFutureOrdinary', - 'TestColumnFuture', 'ExampleFuture', 'FuzzFuture'} + # Check every current top-level case and handwritten representatives of + # future families, alphabet boundaries, examples and fuzz seed corpus. + sources = subprocess.check_output( + ['git', 'ls-files', '-z', '--cached', '--others', '--exclude-standard', '--', '*_test.go'], + cwd=ROOT, text=True).split('\0') + names = {name for source in sources if source + for name in re.findall(r'^func ((?:Test|Example|Fuzz)\w*)\(', + (ROOT / source).read_text(encoding='utf-8'), re.M) + if name != 'TestMain'} + names.update({'TestColumnRoleFuture', 'TestColumnFuture', 'TestRC2Future', + 'TestWorkflowFuture', 'TestAFuture', 'TestMFuture', 'TestNFuture', + 'TestZFuture', 'TestFutureOrdinary', 'TestΩFuture', + 'ExampleFuture', 'ExampleColumn', 'FuzzFuture', 'FuzzRC2'}) groups = [] for call in main: args = call['args'] - self.assertIn('-race', args) - self.assertIn('./...', args) - self.assertFalse(any(arg.startswith('-timeout') for arg in args)) + self.assertEqual(args[:2], ['test', '-race'], 'unit partition lost race instrumentation') + self.assertEqual(args[-1], './...') + self.assertFalse(any(arg.startswith(('-timeout', '-count', '-fuzz')) for arg in args), + 'unit partitions changed default timeout, cache or fuzz execution') + options = args[2:-1] + self.assertEqual(len(options) % 2, 0, 'unit partition has an unexpected option') + self.assertTrue(all(option in ('-run', '-skip') for option in options[::2]), + 'unit partition has an unexpected option') + self.assertEqual(len(options[::2]), len(set(options[::2])), + 'unit partition repeats an option') matches = set(names) if '-run' in args: matches &= {name for name in names if re.search(args[args.index('-run') + 1], name)} @@ -259,10 +282,60 @@ def test_unit_selections_are_complementary_and_keep_pinned_environments(self): 'JPACK_MCP_ADAPTER_TEST_BIN': 'adapter-mcp', 'JPACK_OLD_RUNNER_TEST_BIN': 'jpack-runner-old'}.items(): self.assertEqual(call['env'][key], str(ROOT / '.ci/bin' / binary), key) self.assertEqual(set().union(*groups), names, 'unit partitions omit cases') - self.assertEqual(len(groups), 2) - self.assertFalse(groups[0] & groups[1], 'unit partitions repeat cases') - self.assertIn('ExampleFuture', groups[1]) - self.assertIn('FuzzFuture', groups[1]) + for index, group in enumerate(groups): + for other in groups[index + 1:]: + self.assertFalse(group & other, 'unit partitions repeat cases') + self.assertEqual(len(groups), 5) + for name in ('ExampleFuture', 'ExampleColumn', 'FuzzFuture', 'FuzzRC2'): + self.assertIn(name, groups[-1]) + conformance = [call for call in calls if '^TestStoreKindsConform$' in call['args']] + self.assertEqual(len(conformance), 1) + self.assertEqual(conformance[0]['args'], + ['test', '-race', '-count=1', '-v', '-run', + '^TestStoreKindsConform$', './internal/runner']) + + def test_unit_selections_are_complementary_and_keep_pinned_environments(self): + process, calls = unit_partition_trace(ROOT / 'scripts/checks/unit-tests.sh') + self.assertEqual(process.returncode, 0, process.stdout) + self.assert_unit_partition_calls(calls) + unit = [row for row in json.loads(read('dev.json'))['checks'] if row['name'] == 'unit-tests'] + self.assertEqual(len(unit), 1) + self.assertEqual(unit[0]['timeout'], 3000) + + def test_unit_selection_controls_catch_omission_overlap_and_changed_execution(self): + script = read('scripts/checks/unit-tests.sh') + mutations = [ + ("run_unit -run '^TestWorkflow'", ': # omitted workflow partition', 'unit partitions omit cases'), + ("'^(TestColumn|TestRC2|TestWorkflow|Test[A-M])'", + "'^(TestColumn|TestRC2|Test[A-M])'", 'unit partitions repeat cases'), + ('go test -race "$@"', 'go test "$@"', 'unit partition lost race instrumentation'), + ('go test -race "$@"', 'go test -race -timeout=700s "$@"', 'unit partitions changed default timeout'), + ('JPACK_TEST_BIN="$bin/jpack"', 'JPACK_TEST_BIN="$bin/wrong"', 'JPACK_TEST_BIN'), + ] + for before, after, message in mutations: + with self.subTest(safeguard=message): + self.assertEqual(script.count(before), 1, before) + process, calls = unit_partition_trace(ROOT / 'scripts/checks/unit-tests.sh', + script_text=script.replace(before, after)) + self.assertEqual(process.returncode, 0, process.stdout) + with self.assertRaisesRegex(AssertionError, message): + self.assert_unit_partition_calls(calls) + + def test_unit_script_propagates_each_partition_and_conformance_failure(self): + for failed in range(1, 7): + with self.subTest(call=failed): + process, calls = unit_partition_trace(ROOT / 'scripts/checks/unit-tests.sh', fail_call=failed) + self.assertNotEqual(process.returncode, 0) + self.assertEqual(len(calls), failed, 'script continued after Go failed') + self.assertIn('fake Go failure at call %d' % failed, process.stdout) + + def test_unit_script_requires_both_actual_store_conformance_kinds(self): + for kinds, missing in [('sqlite', 'memory'), ('memory', 'sqlite'), ('', 'sqlite')]: + with self.subTest(kinds=kinds): + process, calls = unit_partition_trace(ROOT / 'scripts/checks/unit-tests.sh', conformance=kinds) + self.assertNotEqual(process.returncode, 0) + self.assertEqual(len(calls), 6) + self.assertIn('TestStoreKindsConform/%s did not run and pass' % missing, process.stdout) def test_every_input_is_a_tracked_file(self): inputs = config()['inputs'] From b68436932be8316ab86a3ad4301e8ef8b93be25d Mon Sep 17 00:00:00 2001 From: kikashy Date: Tue, 27 Oct 2026 11:53:40 -0400 Subject: [PATCH 11/11] Split retained-column checks within the package time limit Partition independent offline artifact cases and remaining column-role tests into disjoint groups while preserving race checks, companion pins and limits. Exercise exact selection and failure propagation in the CI evidence tests. Signed-off-by: kikashy --- scripts/checks/unit-tests.sh | 12 +++++++- tools/test_ci_evidence.py | 59 +++++++++++++++++++++++++++++------- 2 files changed, 59 insertions(+), 12 deletions(-) diff --git a/scripts/checks/unit-tests.sh b/scripts/checks/unit-tests.sh index 094e535..7a279a4 100755 --- a/scripts/checks/unit-tests.sh +++ b/scripts/checks/unit-tests.sh @@ -18,7 +18,17 @@ run_unit() { JPACK_OLD_RUNNER_TEST_BIN="$bin/jpack-runner-old" \ go test -race "$@" ./... } -run_unit -run '^TestColumnRole' +# The offline release/run cases each traverse four 40 MiB artifacts. Give them +# separate budgets; the exact complement retains record cases and future children. +# Large export/wire fixtures also run apart from the remaining ColumnRole work. +offline='^TestColumnRoleOfflineIndependentArtifactLimits$' +large_roles='^TestColumnRole(OfflineIndependentArtifactLimits|StoredAndExportBoundaries|LiteralSeparatorWireCustody)$' +run_unit -run "$offline/^release$" +run_unit -run "$offline/^run$" +run_unit -run "$offline" -skip "$offline/^(release|run)$" +run_unit -run '^TestColumnRoleStoredAndExportBoundaries$' +run_unit -run '^TestColumnRoleLiteralSeparatorWireCustody$' +run_unit -run '^TestColumnRole' -skip "$large_roles" run_unit -run "$retained" -skip '^TestColumnRole' run_unit -run '^TestWorkflow' run_unit -run '^Test[A-M]' -skip "$retained" diff --git a/tools/test_ci_evidence.py b/tools/test_ci_evidence.py index b13b5c6..5280526 100644 --- a/tools/test_ci_evidence.py +++ b/tools/test_ci_evidence.py @@ -258,6 +258,24 @@ def assert_unit_partition_calls(self, calls): 'TestWorkflowFuture', 'TestAFuture', 'TestMFuture', 'TestNFuture', 'TestZFuture', 'TestFutureOrdinary', 'TestΩFuture', 'ExampleFuture', 'ExampleColumn', 'FuzzFuture', 'FuzzRC2'}) + # Go matches slash-separated run/skip expressions component by component. + # Represent the split parent's leaves so sibling/future subtests must still + # run exactly once, including versions below the selected artifact level. + offline = 'TestColumnRoleOfflineIndependentArtifactLimits' + names.remove(offline) + names.update(offline + '/' + artifact + '/' + version + for artifact in ('parsed-record', 'original-record', 'release', 'run', 'future') + for version in ('v2', 'v5', 'future')) + names.update({offline + 'Future', offline + '/releaseFuture/v5', + offline + '/runFuture/v5', 'TestColumnRoleStoredAndExportBoundariesFuture', + 'TestColumnRoleLiteralSeparatorWireCustodyFuture'}) + + def selected(pattern, name): + expressions, components = pattern.split('/'), name.split('/') + return len(expressions) <= len(components) and all( + re.search(expression, component) + for expression, component in zip(expressions, components)) + groups = [] for call in main: args = call['args'] @@ -273,9 +291,9 @@ def assert_unit_partition_calls(self, calls): 'unit partition repeats an option') matches = set(names) if '-run' in args: - matches &= {name for name in names if re.search(args[args.index('-run') + 1], name)} + matches &= {name for name in names if selected(args[args.index('-run') + 1], name)} if '-skip' in args: - matches -= {name for name in names if re.search(args[args.index('-skip') + 1], name)} + matches -= {name for name in names if selected(args[args.index('-skip') + 1], name)} groups.append(matches) for key, binary in {'JPACK_TEST_BIN': 'jpack', 'JPACK_RETAINED_TEST_BIN': 'jpack-retained', 'JPACK_EARLIER_TEST_BIN': 'jpack-earlier', 'JPACK_GATEWAY_TEST_BIN': 'gateway', @@ -285,14 +303,15 @@ def assert_unit_partition_calls(self, calls): for index, group in enumerate(groups): for other in groups[index + 1:]: self.assertFalse(group & other, 'unit partitions repeat cases') - self.assertEqual(len(groups), 5) + self.assertEqual(len(groups), 10) for name in ('ExampleFuture', 'ExampleColumn', 'FuzzFuture', 'FuzzRC2'): self.assertIn(name, groups[-1]) conformance = [call for call in calls if '^TestStoreKindsConform$' in call['args']] self.assertEqual(len(conformance), 1) self.assertEqual(conformance[0]['args'], ['test', '-race', '-count=1', '-v', '-run', - '^TestStoreKindsConform$', './internal/runner']) + '^TestStoreKindsConform$', './internal/runner'], + 'store conformance invocation changed') def test_unit_selections_are_complementary_and_keep_pinned_environments(self): process, calls = unit_partition_trace(ROOT / 'scripts/checks/unit-tests.sh') @@ -305,11 +324,17 @@ def test_unit_selections_are_complementary_and_keep_pinned_environments(self): def test_unit_selection_controls_catch_omission_overlap_and_changed_execution(self): script = read('scripts/checks/unit-tests.sh') mutations = [ + ('run_unit -run "$offline/^release$"', ': # omitted release partition', + 'unit partitions omit cases'), + (' -skip "$offline/^(release|run)$"', '', 'unit partitions repeat cases'), + (' -skip "$large_roles"', '', 'unit partitions repeat cases'), + ('"$offline/^release$"', '"$offline/^release"', 'unit partitions repeat cases'), ("run_unit -run '^TestWorkflow'", ': # omitted workflow partition', 'unit partitions omit cases'), ("'^(TestColumn|TestRC2|TestWorkflow|Test[A-M])'", "'^(TestColumn|TestRC2|Test[A-M])'", 'unit partitions repeat cases'), ('go test -race "$@"', 'go test "$@"', 'unit partition lost race instrumentation'), ('go test -race "$@"', 'go test -race -timeout=700s "$@"', 'unit partitions changed default timeout'), + ('-race -count=1 -v', '-race -v', 'store conformance invocation changed'), ('JPACK_TEST_BIN="$bin/jpack"', 'JPACK_TEST_BIN="$bin/wrong"', 'JPACK_TEST_BIN'), ] for before, after, message in mutations: @@ -322,20 +347,32 @@ def test_unit_selection_controls_catch_omission_overlap_and_changed_execution(se self.assert_unit_partition_calls(calls) def test_unit_script_propagates_each_partition_and_conformance_failure(self): - for failed in range(1, 7): + for failed in range(1, 12): with self.subTest(call=failed): process, calls = unit_partition_trace(ROOT / 'scripts/checks/unit-tests.sh', fail_call=failed) self.assertNotEqual(process.returncode, 0) self.assertEqual(len(calls), failed, 'script continued after Go failed') self.assertIn('fake Go failure at call %d' % failed, process.stdout) - def test_unit_script_requires_both_actual_store_conformance_kinds(self): + def assert_unit_store_conformance_required(self, *, script_text=None): for kinds, missing in [('sqlite', 'memory'), ('memory', 'sqlite'), ('', 'sqlite')]: - with self.subTest(kinds=kinds): - process, calls = unit_partition_trace(ROOT / 'scripts/checks/unit-tests.sh', conformance=kinds) - self.assertNotEqual(process.returncode, 0) - self.assertEqual(len(calls), 6) - self.assertIn('TestStoreKindsConform/%s did not run and pass' % missing, process.stdout) + process, calls = unit_partition_trace(ROOT / 'scripts/checks/unit-tests.sh', + script_text=script_text, conformance=kinds) + self.assertNotEqual(process.returncode, 0, 'script accepted missing store conformance') + self.assertEqual(len(calls), 11) + self.assertIn('TestStoreKindsConform/%s did not run and pass' % missing, process.stdout) + + def test_unit_script_requires_both_actual_store_conformance_kinds(self): + self.assert_unit_store_conformance_required() + + def test_unit_store_controls_catch_removed_kind_assertion(self): + script = read('scripts/checks/unit-tests.sh') + before = 'for kind in sqlite memory; do' + self.assertEqual(script.count(before), 1) + for after in ('for kind in sqlite; do', 'for kind in memory; do'): + with self.subTest(mutation=after): + with self.assertRaisesRegex(AssertionError, 'script accepted missing store conformance'): + self.assert_unit_store_conformance_required(script_text=script.replace(before, after)) def test_every_input_is_a_tracked_file(self): inputs = config()['inputs']