diff --git a/docs/dialect-retained-column-draft.md b/docs/dialect-retained-column-draft.md new file mode 100644 index 0000000..45199f0 --- /dev/null +++ b/docs/dialect-retained-column-draft.md @@ -0,0 +1,77 @@ +# Experimental retained-column Draft reader + +Runtime has an explicit experimental entry for RFC 0029 at Spec revision +`ade3914b0b81ef299e5b9a8d6147f37ff3f0976c`. This is a Draft experiment, with no +normative adoption, preparation verification, source authenticity or execution claim. +The existing dialect operations retain their default contract and limits. + +Select exactly +`--draft-contract retained-column/1@ade3914b0b81ef299e5b9a8d6147f37ff3f0976c` +and `--draft-profile base` or `--draft-profile extended` on `dialect contract`, +`canonicalize`, `digest`, `validate` or `check`. Both flags are required for the +experiment. Unsupported selection refuses before opening input files. A document +must declare the selected profile; omission means base. Extended requires explicit +`"profile":"extended"` in a validated document. No selection is inferred from leaves, +carrier versions or caller-supplied specification hashes. + +`dialect validate --retained-frame` with both selection flags checks a +standalone retained frame. Otherwise validate checks the entire dialect document, +including the five converted-copy kinds, evidence availability, ordinary target +ownership, source ordering and internal references. `dialect check --pack +` adds the existing pack validation and bounded declared inventory walk. +Coverage reports keep `valueTypesChecked:false` and `executionChecked:false`. +No conversion is executed and no record value is asserted true by these tools. + +Canonicalize and digest check encoding only: bounded JSON, canonical numeric domain, +carrier version and identity spelling. Their success does not validate conversion +leaves, document structure or profile compatibility. Rules, spellings and source +pointers remain in canonical bytes and affect the digest. Retained-frame validation +reports a digest of its exact supplied frame bytes; it does not canonicalize opaque +retained strings or establish original declaration provenance. + +For standalone frame reports, `document` retains the complete exact original JSON +text and `digest` identifies those bytes. Parse that text to recover every value, +status, ordered declaration, absent/null distinction and original escape spelling. +The unpublished `frameSummary` contains only contract version, origin and value, +declaration and field counts. The full typed inspection remains available to +internal Go callers; its duplicate raw strings are not repeated on the wire. +Both MCP report forms contain the same complete report. This keeps the Base frame +response bounded without reducing accepted input or changing ordinary reports. + +The selected contract response reports only role `document-validation` in +`capabilities.conversionContracts`, with fixed trusted identity: + +- Version label: `Draft RFC0029`. +- Revision: `ade3914b0b81ef299e5b9a8d6147f37ff3f0976c`. +- Schema: `sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f`. +- Corpus: `sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2`. + +| Profile | Document UTF-8 bytes | Standalone frame UTF-8 bytes | +| --- | ---: | ---: | +| base | 1048576 | 2097152 | +| extended | 2097152 | 4194304 | + +Parser depth, nodes, string budgets and fixed declaration/frame limits remain +independently bounded. A standalone frame limit grants no combined acquisition, +producer, transport, preparation or signed record capacity. Init, schema and reference +remain on the ordinary contract; the experiment advertises no support for those +operations, generated acquisition, preview or preparation roles. + +MCP uses existing `get_dialect_contract`, `dialect_canonicalize`, `dialect_digest`, +`dialect_validate` and `dialect_check` tools. Supply exact `draftContract` and +`draftProfile` strings. `retainedFrame:true` is legal only on selected +`dialect_validate`; the `document` argument then contains exact frame JSON text. +Unknown/extra/null selectors and duplicate arguments refuse. Tool schemas retain +conditional legacy and selected document/frame limits. + +The unchanged MCP stdio envelope permits a JSON-RPC line below 16777216 bytes, +including delimiter, field names and JSON string escaping. Decoded artifact limits +are separate: a valid extended frame of about 3 MiB of literal `<` text can exceed +that envelope when encoded with HTML escaping. Such a frame is accepted through +the CLI and refused by the MCP transport before dispatch. Not every 4 MiB frame or +maximum-size pack/document pair fits every JSON-RPC serialization. No transport +ceiling is raised by the Draft capability. + +Released artifacts, including Runtime 0.39.0-alpha.1, gain no support from this +experiment. Accepted immutable upstream contracts, reviewed source/artifacts and +actual Runner/Agent interoperability remain release prerequisites. diff --git a/internal/cli/dialect.go b/internal/cli/dialect.go index 246a91f..dcc8339 100644 --- a/internal/cli/dialect.go +++ b/internal/cli/dialect.go @@ -23,6 +23,8 @@ func (a *App) dialectOperation(operation string) *cobra.Command { versionText := "2" formatVersion, artifactID, artifactVersion := "", "", "" packPath := "" + draftContract, draftProfile := "", "" + retainedFrame := false use := operation args := cobra.NoArgs if operation == "canonicalize" || operation == "digest" || operation == "validate" || operation == "check" { @@ -35,6 +37,9 @@ func (a *App) dialectOperation(operation string) *cobra.Command { if err := validateFormat(format); err != nil { return a.operational(command, format, result.ExitInvocation, "JPS-INVOCATION-FORMAT", err.Error()) } + if cmd.Flags().Changed("draft-contract") || cmd.Flags().Changed("draft-profile") || cmd.Flags().Changed("retained-frame") { + return a.runRetainedColumnDraft(command, operation, args, format, packPath, draftContract, draftProfile, retainedFrame) + } if operation == "check" && (packPath == "" || (packPath == "-" && args[0] == "-")) { return a.operational(command, format, result.ExitInvocation, "JPS-DIALECT-PACK-ARGUMENT", "Check requires --pack; only one operand can read standard input.") } @@ -145,9 +150,93 @@ func (a *App) dialectOperation(operation string) *cobra.Command { if operation == "check" { c.Flags().StringVar(&packPath, "pack", "", "pack file or - for standard input; required") } + if operation == "contract" || operation == "canonicalize" || operation == "digest" || operation == "validate" || operation == "check" { + c.Flags().StringVar(&draftContract, "draft-contract", "", "explicit experimental selector: "+dialect.RetainedColumnDraftSelector) + c.Flags().StringVar(&draftProfile, "draft-profile", "", "explicit experimental profile: base or extended; requires --draft-contract") + if operation == "validate" { + c.Flags().BoolVar(&retainedFrame, "retained-frame", false, "validate a standalone retained frame; requires both Draft selection flags") + } + } return c } +// Resolve the trusted experimental selection before opening either artifact. +func (a *App) runRetainedColumnDraft(command, operation string, args []string, format, packPath, selector, profile string, retainedFrame bool) error { + selected, selection, code := dialect.SelectRetainedColumnDraft(command, selector, profile) + var output any = selected + report := selected.Report + if code == result.ExitSuccess { + if operation == "check" && (packPath == "" || (packPath == "-" && args[0] == "-")) { + return a.operational(command, format, result.ExitInvocation, "JPS-DIALECT-PACK-ARGUMENT", "Check requires --pack; only one operand can read standard input.") + } + if operation == "contract" { + selected, code = dialect.ContractRetainedColumnDraft(command, selection) + output, report = selected, selected.Report + } else { + bound := selected.Limits.DocumentBytes + if retainedFrame { + bound = selected.Limits.FrameBytes + } + data, err := a.readInput(args[0], int64(bound), "dialect") + if errors.Is(err, fssecure.ErrTooLarge) { + data = make([]byte, bound+1) + } else if err != nil { + return a.operational(command, format, result.ExitIO, "JPS-DIALECT-READ", "The dialect input could not be read as a bounded local regular file or standard input.") + } + switch operation { + case "check": + pack, err := a.readInput(packPath, dialect.MaxPackBytes, "pack") + if errors.Is(err, fssecure.ErrTooLarge) { + pack = make([]byte, dialect.MaxPackBytes+1) + } else if err != nil { + return a.operational(command, format, result.ExitIO, "JPS-DIALECT-PACK-READ", "The pack input could not be read as a bounded local regular file or standard input.") + } + selected, code = dialect.CheckRetainedColumnDraft(command, data, pack, a.engine, selection) + output, report = selected, selected.Report + case "validate": + if retainedFrame { + frame, frameCode := dialect.ValidateRetainedColumnDraftFrame(command, data, selection) + code, output, report = frameCode, frame, frame.Report + } else { + selected, code = dialect.ValidateRetainedColumnDraft(command, data, selection) + output, report = selected, selected.Report + } + default: + selected, code = dialect.EncodeRetainedColumnDraft(command, data, selection) + output, report = selected, selected.Report + } + } + } + var err error + switch { + case format == "json": + err = a.writeJSON(output) + case report.Compatibility != nil: + err = renderDialectCompatibility(a.out, report.Compatibility) + case code != result.ExitSuccess: + for _, diagnostic := range report.Diagnostics { + if _, err = fmt.Fprintln(a.errOut, diagnostic.Code+": "+display.Sanitize(diagnostic.Message)); err != nil { + break + } + } + case operation == "contract": + _, err = fmt.Fprintf(a.out, "Experimental Draft %s · %s\nProfile: %s; role: document-validation\nOperations: contract, canonicalize, digest, validate (document or retained frame), check\nDocument limit: %d UTF-8 bytes; frame limit: %d UTF-8 bytes\nCanonicalize and digest check encoding only. Pack checks cover declared inventory.\n", selected.Contract, selected.Spec.Revision, selected.Profile, selected.Limits.DocumentBytes, selected.Limits.FrameBytes) + case operation == "validate": + _, err = fmt.Fprintln(a.out, "Experimental Draft checks passed: "+report.ValidationScope+".") + case operation == "digest": + _, err = fmt.Fprintln(a.out, report.Digest) + default: + _, err = fmt.Fprint(a.out, report.Document) + } + if err != nil { + return &handledExit{code: result.ExitIO} + } + if code != result.ExitSuccess { + return &handledExit{code: code} + } + return nil +} + func renderDialectCompatibility(out io.Writer, c *dialect.Compatibility) error { if _, err := fmt.Fprintf(out, "Declared mapping coverage: %s\nPack: %s · %s\n", c.Status, display.Sanitize(c.Pack.ID), display.Sanitize(c.Pack.Version)); err != nil { return err diff --git a/internal/cli/dialect_retained_column_test.go b/internal/cli/dialect_retained_column_test.go new file mode 100644 index 0000000..f369462 --- /dev/null +++ b/internal/cli/dialect_retained_column_test.go @@ -0,0 +1,147 @@ +package cli + +import ( + "encoding/json" + "os" + "path/filepath" + "reflect" + "strings" + "testing" + + "github.com/Judgment-Pack/judgment-pack-runtime/internal/dialect" + "github.com/Judgment-Pack/judgment-pack-runtime/internal/validation" +) + +func retainedEntryDocument(kind, profile string) string { + conversion := `{"contractVersion":"1","column":"Column","kind":"` + kind + `"}` + if kind == "boolean" { + conversion = `{"contractVersion":"1","column":"Column","kind":"boolean","trueValue":"YES","falseValue":"NO"}` + } + extra := "" + if profile == "extended" { + extra = `,"profile":"extended"` + } + return `{"version":3` + extra + `,"case":{"facts":[{"target":"/expense","source":"/retained","conversion":` + conversion + `}],"evidence":[{"requirement":"receipt","source":"/retained","availability":{"contractVersion":"1","column":"Receipt"}},{"requirement":"cost-center","source":"/retained","availability":{"contractVersion":"1","column":"Cost center"}}]}}` +} + +func TestRetainedColumnEntryCLIAndMCP(t *testing.T) { + engine, err := validation.NewEngine() + if err != nil { + t.Fatal(err) + } + pack, err := os.ReadFile("../artifacts/jps/0.2.0-draft/cases/valid/minimal-expense-approval.json") + if err != nil { + t.Fatal(err) + } + packFile := filepath.Join(t.TempDir(), "pack.json") + if err = os.WriteFile(packFile, pack, 0600); err != nil { + t.Fatal(err) + } + for _, profile := range []string{"base", "extended"} { + for _, kind := range []string{"text", "decimal", "number", "boolean", "research-value"} { + raw := retainedEntryDocument(kind, profile) + for _, operation := range []string{"check", "validate", "canonicalize", "digest"} { + t.Run(profile+"/"+kind+"/"+operation, func(t *testing.T) { + argv := []string{"dialect", operation, "-", "--draft-contract", dialect.RetainedColumnDraftSelector, "--draft-profile", profile, "--format", "json"} + args := map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": profile, "document": raw} + if operation == "check" { + argv = append(argv, "--pack", packFile) + args["pack"] = string(pack) + } + code, out, stderr := runTest(t, argv, raw) + var cliReport map[string]any + if code != 0 || stderr != "" || json.Unmarshal([]byte(out), &cliReport) != nil { + t.Fatal("actual CLI failed", code, out, stderr) + } + mcpReport, isError := dialectMCPResult(t, engine, "dialect_"+operation, args) + delete(cliReport, "command") + delete(mcpReport, "command") + if isError || !reflect.DeepEqual(cliReport, mcpReport) { + t.Fatal("actual CLI/MCP Draft mismatch", cliReport, mcpReport) + } + if cliReport["maturity"] != "experimental-draft" || cliReport["specRevision"] != dialect.RetainedColumnDraftRevision || cliReport["fullDocumentConformance"] != false { + t.Fatal("wrong Draft identity/scope", cliReport) + } + if operation == "check" { + coverage := cliReport["compatibility"].(map[string]any) + if coverage["status"] != "complete" || coverage["executionChecked"] != false || coverage["valueTypesChecked"] != false || len(coverage["evidence"].([]any)) != 2 { + t.Fatal("converted targets bypassed real inventory", coverage) + } + } + }) + } + } + code, out, stderr := runTest(t, []string{"dialect", "contract", "--draft-contract", dialect.RetainedColumnDraftSelector, "--draft-profile", profile, "--format", "json"}, "") + var cliReport map[string]any + if code != 0 || stderr != "" || json.Unmarshal([]byte(out), &cliReport) != nil { + t.Fatal(code, out, stderr) + } + mcpReport, isError := dialectMCPResult(t, engine, "get_dialect_contract", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": profile}) + delete(cliReport, "command") + delete(mcpReport, "command") + if isError || !reflect.DeepEqual(cliReport, mcpReport) { + t.Fatal("contract transport mismatch", cliReport, mcpReport) + } + } +} + +func TestRetainedColumnEntryCLISelectionBeforeFileRead(t *testing.T) { + missing := filepath.Join(t.TempDir(), "missing.json") + for _, flags := range [][]string{ + {"--draft-contract", dialect.RetainedColumnDraftSelector}, + {"--draft-profile", "base"}, {"--retained-frame"}, + {"--draft-contract", dialect.RetainedColumnDraftSelector + "foreign", "--draft-profile", "base"}, + {"--draft-contract", dialect.RetainedColumnDraftSelector, "--draft-profile", "future"}, + } { + argv := append([]string{"dialect", "validate", missing, "--format", "json"}, flags...) + code, out, stderr := runTest(t, argv, "") + var r map[string]any + if code == 0 || code == 4 || stderr != "" || json.Unmarshal([]byte(out), &r) != nil || r["status"] != "refused" || strings.Contains(out, "JPS-DIALECT-READ") { + t.Fatal("selection did not precede opening nonexistent input", code, out, stderr) + } + } + raw := retainedEntryDocument("text", "base") + code, out, _ := runTest(t, []string{"dialect", "validate", "-", "--format", "json"}, raw) + if code == 0 || strings.Contains(out, "conversionContracts") || strings.Contains(out, `"maturity":"experimental-draft"`) { + t.Fatal("Draft auto-enabled", code, out) + } +} + +func TestRetainedColumnEntryCLIFrameAndByteBoundaries(t *testing.T) { + for _, profile := range []string{"base", "extended"} { + raw := retainedEntryDocument("text", profile) + bound := dialect.RetainedColumnDraftDocumentBytes + if profile == "extended" { + bound = dialect.RetainedColumnDraftExtendedDocumentBytes + } + argv := []string{"dialect", "validate", "-", "--format", "json", "--draft-contract", dialect.RetainedColumnDraftSelector, "--draft-profile", profile} + for _, extra := range []int{0, 1} { + padded := raw + strings.Repeat(" ", bound-len(raw)+extra) + code, out, stderr := runTest(t, argv, padded) + if stderr != "" || (code == 0) != (extra == 0) || extra == 1 && !strings.Contains(out, "input-over-bound") { + t.Fatal("CLI selected byte boundary", profile, extra, code, out, stderr) + } + } + frame := `{"contractVersion":"1","origin":"asserted","values":{"Column":"-0"},"research":null}` + frameArgs := append(append([]string{}, argv...), "--retained-frame") + code, out, stderr := runTest(t, frameArgs, frame) + if code != 0 || stderr != "" || !strings.Contains(out, `"status":"retained-frame-valid"`) { + t.Fatal("CLI actual frame entry failed", code, out, stderr) + } + engine, _ := validation.NewEngine() + mcpReport, isError := dialectMCPResult(t, engine, "dialect_validate", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": profile, "retainedFrame": true, "document": frame}) + var cliReport map[string]any + json.Unmarshal([]byte(out), &cliReport) + delete(cliReport, "command") + delete(mcpReport, "command") + if isError || !reflect.DeepEqual(cliReport, mcpReport) { + t.Fatal("frame transport mismatch", cliReport, mcpReport) + } + } + // A decoded frame may fit CLI yet exceed MCP's envelope with HTML escaping. + frame := `{"contractVersion":"1","origin":"generated","values":{},"research":{"recordRecipeRevision":"r","declaration":null,"fields":{"Column":{"status":"supported","valueJson":"` + strings.Repeat("<", 3*1024*1024) + `"}}}}` + code, out, stderr := runTest(t, []string{"dialect", "validate", "-", "--retained-frame", "--draft-contract", dialect.RetainedColumnDraftSelector, "--draft-profile", "extended", "--format", "json"}, frame) + if len(frame) >= dialect.RetainedColumnDraftExtendedFrameBytes || code != 0 || stderr != "" || !strings.Contains(out, `"status":"retained-frame-valid"`) { + t.Fatal("CLI should admit decoded large opaque frame", code, stderr) + } +} diff --git a/internal/cli/dialect_retained_transport_test.go b/internal/cli/dialect_retained_transport_test.go new file mode 100644 index 0000000..d0ff92b --- /dev/null +++ b/internal/cli/dialect_retained_transport_test.go @@ -0,0 +1,404 @@ +package cli + +import ( + "bufio" + "bytes" + "crypto/sha256" + "encoding/json" + "fmt" + "os" + "os/exec" + "path/filepath" + "reflect" + "strings" + "testing" + + "github.com/Judgment-Pack/judgment-pack-runtime/internal/dialect" +) + +// These are handwritten structural families, not expected reports captured from +// Runtime. The old document is filled through an existing operation argument; +// projection preserves every declaration and changes only the copy leaves. +func retainedTransportJSON(t *testing.T, value any, html bool) string { + t.Helper() + var b bytes.Buffer + e := json.NewEncoder(&b) + e.SetEscapeHTML(html) + if err := e.Encode(value); err != nil { + t.Fatal(err) + } + return strings.TrimSuffix(b.String(), "\n") +} +func retainedTransportDocument(t *testing.T) (string, string) { + t.Helper() + facts, evidence, sources := []any{}, []any{}, []any{} + params := map[string]any{} + for i := 0; i < 63; i++ { + params[fmt.Sprintf("p%02d", i)] = map[string]any{"pointer": "/original", "type": "string"} + } + for i := 0; i < 256; i++ { + target := fmt.Sprintf("/f%03d", i) + if i == 0 { + target = "/expense" + } + facts = append(facts, map[string]any{"target": target, "source": "/retained"}) + } + for i := 0; i < 128; i++ { + name := fmt.Sprintf("e%03d", i) + if i == 0 { + name = "receipt" + } + if i == 1 { + name = "cost-center" + } + evidence = append(evidence, map[string]any{"requirement": name, "source": "/retained"}) + } + for i := 0; i < 16; i++ { + sources = append(sources, map[string]any{"name": fmt.Sprintf("source%02d", i), "kind": "operation", "profile": "original-profile", "profileDigest": "sha256:" + strings.Repeat("a", 64), "maxAge": 86400, "arguments": map[string]any{"provenance": ""}, "read": map[string]any{"copy": map[string]any{"facts": []any{}, "evidence": []any{}}}}) + } + d := map[string]any{"version": "1.0.0", "formatVersion": "3.0.0", "id": strings.Repeat("i", 1024), "case": map[string]any{"parameters": params, "facts": facts, "evidence": evidence}, "sources": sources} + metadata := sources[0].(map[string]any)["arguments"].(map[string]any) + metadata["provenance"] = strings.Repeat("x", dialect.MaxDocumentBytes-len(retainedTransportJSON(t, d, true))) + old := retainedTransportJSON(t, d, true) + if len(old) != dialect.MaxDocumentBytes { + t.Fatal("old complete document budget", len(old)) + } + for _, f := range facts { + f.(map[string]any)["conversion"] = map[string]any{"contractVersion": "1", "column": strings.Repeat("\x01", 160), "kind": "boolean", "trueValue": strings.Repeat("\x02", 160), "falseValue": strings.Repeat("\x03", 160)} + } + for _, e := range evidence { + e.(map[string]any)["availability"] = map[string]any{"contractVersion": "1", "column": strings.Repeat("\x01", 160)} + } + projected := retainedTransportJSON(t, d, true) + if len(projected) > 1026688 || len(projected) < 900000 { + t.Fatal("projected structural family outside proved growth", len(projected)) + } + return old, projected +} + +// Use the actual binary when supplied by the integration coordinator; ordinary +// repository tests exercise the same public command entry directly. +func retainedTransportCLI(t *testing.T, argv []string, input string) (int, string, string) { + t.Helper() + binary := os.Getenv("JPS_RETAINED_TEST_BINARY") + if binary == "" { + return runTest(t, argv, input) + } + if !filepath.IsAbs(binary) { + t.Fatal("candidate binary must be an absolute path") + } + cmd := exec.Command(binary, argv...) + cmd.Stdin = strings.NewReader(input) + var out, errout bytes.Buffer + cmd.Stdout = &out + cmd.Stderr = &errout + code := 0 + if err := cmd.Run(); err != nil { + if exit, ok := err.(*exec.ExitError); ok { + code = exit.ExitCode() + } else { + t.Fatal(err) + } + } + return code, out.String(), errout.String() +} +func retainedTransportCall(t *testing.T, operation, document, pack string, frame bool) (map[string]any, int, int) { + t.Helper() + args := map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": "base", "document": document} + if pack != "" { + args["pack"] = pack + } + if frame { + args["retainedFrame"] = true + } + request := retainedTransportJSON(t, map[string]any{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": map[string]any{"name": "dialect_" + operation, "arguments": args}}, true) + "\n" + if len(request) > 16*1024*1024 { + t.Fatal("Base complete escaped request exceeded stdio envelope", len(request)) + } + code, out, stderr := retainedTransportCLI(t, []string{"mcp"}, request) + if code != 0 || stderr != "" { + t.Fatal("actual MCP entry failed", code, stderr) + } + t.Logf("complete serialized MCP request=%d response=%d", len(request), len(out)) + // Consume the complete output through a bounded line reader, just as a stdio + // client must. Both structuredContent and the second, quoted report are real. + scanner := bufio.NewScanner(strings.NewReader(out)) + scanner.Buffer(make([]byte, 65536), 16*1024*1024) + if !scanner.Scan() { + t.Fatal("complete MCP response was not consumable", len(out), scanner.Err()) + } + var response struct { + Result struct { + Structured map[string]any `json:"structuredContent"` + Content []struct{ Type, Text string } `json:"content"` + IsError bool `json:"isError"` + } `json:"result"` + } + if err := json.Unmarshal(scanner.Bytes(), &response); err != nil { + t.Fatal(err) + } + if scanner.Scan() || scanner.Err() != nil { + t.Fatal("extra or oversized response", scanner.Err()) + } + if len(response.Result.Content) != 1 || response.Result.Content[0].Type != "text" { + t.Fatal("missing report representation") + } + var text map[string]any + if json.Unmarshal([]byte(response.Result.Content[0].Text), &text) != nil || !reflect.DeepEqual(text, response.Result.Structured) { + t.Fatal("structured and text report differ") + } + if response.Result.IsError != (response.Result.Structured["status"] == "refused") { + t.Fatal("wrong refusal status") + } + return response.Result.Structured, len(request), len(out) +} +func retainedTransportAssert(t *testing.T, operation, raw, pack string, frame bool, want string) { + t.Helper() + argv := []string{"dialect", operation, "-", "--format", "json", "--draft-contract", dialect.RetainedColumnDraftSelector, "--draft-profile", "base"} + if pack != "" { + file := writeFixture(t, []byte(pack)) + argv = append(argv, "--pack", file) + } + if frame { + argv = append(argv, "--retained-frame") + } + code, out, stderr := retainedTransportCLI(t, argv, raw) + var cli map[string]any + if stderr != "" || json.Unmarshal([]byte(out), &cli) != nil || cli["status"] != want || (code == 0) != (want != "refused") { + t.Fatal("CLI complete artifact boundary", code, len(raw), first(out, 500), stderr) + } + mcp, requestBytes, responseBytes := retainedTransportCall(t, operation, raw, pack, frame) + delete(cli, "command") + delete(mcp, "command") + if !reflect.DeepEqual(cli, mcp) { + t.Fatal("serialized CLI and MCP reports differ", len(raw)) + } + if frame && want != "refused" { + if mcp["document"] != raw || mcp["digest"] != fmt.Sprintf("sha256:%x", sha256.Sum256([]byte(raw))) { + t.Fatal("retained frame bytes or independent digest changed") + } + var original map[string]any + if json.Unmarshal([]byte(raw), &original) != nil { + t.Fatal("handwritten frame is not JSON") + } + var reconstructed map[string]any + if json.Unmarshal([]byte(mcp["document"].(string)), &reconstructed) != nil || !reflect.DeepEqual(original, reconstructed) { + t.Fatal("complete frame values/statuses/declarations/escapes cannot be reconstructed") + } + if _, duplicate := mcp["frame"]; duplicate { + t.Fatal("redundant complete frame was emitted on the wire") + } + summary := map[string]any{"contractVersion": original["contractVersion"], "origin": original["origin"], "valueCount": float64(len(original["values"].(map[string]any))), "declarationCount": float64(0), "fieldCount": float64(0)} + if research, ok := original["research"].(map[string]any); ok { + summary["fieldCount"] = float64(len(research["fields"].(map[string]any))) + if declaration, ok := research["declaration"].(map[string]any); ok { + summary["declarationCount"] = float64(len(declaration["fields"].([]any))) + } + } + if !reflect.DeepEqual(mcp["frameSummary"], summary) { + t.Fatal("frame summary differs from the complete original data") + } + } + if want == "refused" { + diagnostics := mcp["diagnostics"].([]any) + code := diagnostics[0].(map[string]any)["code"] + if code != "input-over-bound" && code != "JPS-DIALECT-PACK-BYTE-LIMIT" { + t.Fatal("wrong one-over refusal", code) + } + } + t.Logf("%s frame=%v artifact=%d pack=%d escapedRequest=%d cliReport=%d dualMCPResponse=%d status=%s", operation, frame, len(raw), len(pack), requestBytes, len(out), responseBytes, want) +} +func TestRetainedColumnTransportBaseDocumentAndPack(t *testing.T) { + old, projected := retainedTransportDocument(t) + code, out, stderr := retainedTransportCLI(t, []string{"dialect", "validate", "-", "--format", "json"}, old) + if code != 0 || stderr != "" || !strings.Contains(out, `"status":"document-valid"`) { + t.Fatal("source family was not admitted before projection", code, first(out, 500), stderr) + } + b, err := os.ReadFile("../artifacts/jps/0.2.0-draft/cases/valid/minimal-expense-approval.json") + if err != nil { + t.Fatal(err) + } + var p map[string]any + if json.Unmarshal(b, &p) != nil { + t.Fatal("pack fixture") + } + requirements := []any{} + for i := 0; i < 128; i++ { + name := fmt.Sprintf("e%03d", i) + if i == 0 { + name = "receipt" + } + if i == 1 { + name = "cost-center" + } + requirements = append(requirements, map[string]any{"id": name, "description": "Original requirement", "required": true, "kind": "fact"}) + } + p["evidenceRequirements"] = requirements + p["description"] = "" + // Literal HTML is legal pack metadata. Go quoting the complete pack expands + // almost all of its 1MiB bytes sixfold in the actual JSON-RPC request. + p["description"] = strings.Repeat("<", (1<<20)-len(retainedTransportJSON(t, p, false))) + pack := retainedTransportJSON(t, p, false) + if len(pack) != 1<<20 { + t.Fatal("pack boundary fixture", len(pack)) + } + exact := projected + strings.Repeat(" ", dialect.RetainedColumnDraftDocumentBytes-len(projected)) + for _, tc := range []struct{ name, raw, pack, want string }{{"projected-family", projected, pack, "review-required"}, {"both-exact", exact, pack, "review-required"}, {"document-over", exact + " ", pack, "refused"}, {"desk-pack-size-is-not-runtime-limit", exact, pack + " ", "review-required"}, {"runtime-pack-over", exact, strings.Repeat(" ", int(dialect.MaxPackBytes)+1), "refused"}} { + t.Run(tc.name, func(t *testing.T) { retainedTransportAssert(t, "check", tc.raw, tc.pack, false, tc.want) }) + } +} +func TestRetainedColumnTransportBaseFrames(t *testing.T) { + // Asserted: all 100 old CSV columns, 160-byte names, maximal coupled old + // values-object budget. The complete original case still fits 2MiB with a + // 4096-byte reserve for its mapping, provenance and fixed wrapper. + values := map[string]any{} + for i := 0; i < 100; i++ { + values[fmt.Sprintf("C%03d", i)+strings.Repeat("n", 156)] = strings.Repeat("\x01", 3450) + } + asserted := map[string]any{"contractVersion": "1", "origin": "asserted", "values": values, "research": nil} + raw := retainedTransportJSON(t, asserted, true) + key := "C000" + strings.Repeat("n", 156) + values[key] = values[key].(string) + strings.Repeat("a", dialect.RetainedColumnDraftFrameBytes-4096-len(raw)) + raw = retainedTransportJSON(t, asserted, true) + if len(raw) != dialect.RetainedColumnDraftFrameBytes-4096 || len(values[key].(string)) > 16000 { + t.Fatal("asserted old-domain witness", len(raw)) + } + // Generated: all 30 original declarations, all eight original value types, + // absent/blank distinctions and complete opaque field/declaration text. + declarations := []any{} + originalFields := []any{} + originalTyped := map[string]any{} + fields := map[string]any{} + generatedValues := map[string]any{"Blank": "", "AbsentTyped": "opaque"} + types := []string{"text", "integer", "decimal", "boolean", "text-list", "range", "string", "number"} + tokens := []string{`"<\\\"\u2028>"`, `-0`, `"-0.00"`, `false`, `["a","<"]`, `{"min":"-0.00","max":"2.00"}`, `"legacy"`, `-0`} + for i := 0; i < 30; i++ { + name := fmt.Sprintf("Field%02d", i) + field := map[string]any{"name": name, "description": strings.Repeat("<", 1000), "type": types[i%8]} + originalFields = append(originalFields, field) + originalTyped[name] = map[string]any{"status": "supported", "value": json.RawMessage(tokens[i%8]), "sources": []any{}} + declarations = append(declarations, map[string]any{"name": name, "fieldJson": retainedTransportJSON(t, field, true)}) + fields[name] = map[string]any{"status": "supported", "valueJson": tokens[i%8]} + generatedValues[name] = strings.Repeat("\x01", 900) + } + fields["AbsentTyped"] = map[string]any{"status": "missing"} + generated := map[string]any{"contractVersion": "1", "origin": "generated", "values": generatedValues, "research": map[string]any{"recordRecipeRevision": "1", "declaration": map[string]any{"recipeRevision": "1", "fields": declarations}, "fields": fields}} + generatedRaw := retainedTransportJSON(t, generated, true) + // Source-derived snapshot shape from Desk's reviewed-input handoff: keep + // record.values AND the available values, the typed entity, full recipe, + // preparation/qualification, reviews, model attempts and source provenance. + // Those duplicate values count against the SAME 512KiB old limit. + provenance := map[string]any{"id": "source1", "kind": "page", "url": "https://example.com/original", "at": "2026-01-01T00:00:00Z", "digest": "sha256:" + strings.Repeat("a", 64), "proofDigest": "sha256:" + strings.Repeat("b", 64), "verification": "verified"} + availableValues := map[string]any{} + for k, v := range generatedValues { + if v != "" { + availableValues[k] = v + } + } + snapshotObject := map[string]any{"version": 1, "class": "generated", "preparationId": "preparation1", "record": map[string]any{"id": "record1", "values": generatedValues, "research": map[string]any{"entity": map[string]any{"fields": originalTyped}}}, "recipeVersion": 1, "qualification": map[string]any{"mapping": map[string]any{"case": map[string]any{"facts": []any{}, "evidence": []any{}}}}, "prepared": map[string]any{}, "values": availableValues, "research": map[string]any{"id": "research1", "recipeVersion": 1, "recipe": map[string]any{"fields": originalFields}, "intent": "Preserve original inventory", "createdAt": "2026-01-01T00:00:00Z", "approvedLimits": map[string]any{"records": 1, "modelCalls": 1}, "budgetApprovals": []any{}, "workflowApproval": map[string]any{"decision": "approved"}, "modelResponses": []any{map[string]any{"id": "attempt1", "requestDigest": "sha256:" + strings.Repeat("c", 64), "resultDigest": "sha256:" + strings.Repeat("d", 64), "finishedAt": "2026-01-01T00:00:00Z"}}, "sources": []any{provenance}}, "reviews": []any{map[string]any{"review": map[string]any{"decision": "accepted", "recordId": "record1", "recipeVersion": 1}}}} + snapshot := retainedTransportJSON(t, snapshotObject, true) + if len(snapshot) > 524288 { + t.Fatal("generated family exceeds old snapshot budget", len(snapshot)) + } + // Unfiltered opaque origin metadata is retained at source rather than dropped + // to manufacture space. This exact source budget is independent of Runtime's + // frame check and does not claim a new producer/authenticity implementation. + provenance["query"] = strings.Repeat("p", 524288-len(snapshot)-len(`,"query":""`)) + snapshot = retainedTransportJSON(t, snapshotObject, true) + if len(snapshot) != 524288 { + t.Fatal("generated complete snapshot byte accounting", len(snapshot)) + } + t.Logf("handwritten old generated snapshot=%d projected frame=%d declarations=%d", len(snapshot), len(generatedRaw), len(declarations)) + for _, tc := range []struct{ name, raw string }{{"asserted", raw}, {"generated", generatedRaw}} { + t.Run(tc.name, func(t *testing.T) { + retainedTransportAssert(t, "validate", tc.raw, "", true, "retained-frame-valid") + exact := tc.raw + strings.Repeat(" ", dialect.RetainedColumnDraftFrameBytes-len(tc.raw)) + retainedTransportAssert(t, "validate", exact, "", true, "retained-frame-valid") + retainedTransportAssert(t, "validate", exact+" ", "", true, "refused") + }) + } +} + +// This admitted frame-grammar stress case is deliberately outside the pinned +// Desk snapshot projection. It checks the full public Base frame envelope, where +// valueJson is inspectable opaque text and must not amplify a second HTML pass. +func TestRetainedColumnTransportBaseOpaqueHTMLFrame(t *testing.T) { + for _, tc := range []struct{ name, unit string }{{"HTML", "<"}, {"mixed", "<>&\"\\\x00\t\u2028\u2029é😀"}} { + t.Run(tc.name, func(t *testing.T) { + field := map[string]any{"status": "supported", "valueJson": ""} + frame := map[string]any{"contractVersion": "1", "origin": "generated", "values": map[string]any{}, "research": map[string]any{"recordRecipeRevision": "r1", "declaration": nil, "fields": map[string]any{"Column": field}}} + overhead := len(retainedTransportJSON(t, frame, false)) + unitBytes := len(retainedTransportJSON(t, tc.unit, false)) - 2 + field["valueJson"] = strings.Repeat(tc.unit, (dialect.RetainedColumnDraftFrameBytes-overhead)/unitBytes) + raw := retainedTransportJSON(t, frame, false) + field["valueJson"] = field["valueJson"].(string) + strings.Repeat("<", dialect.RetainedColumnDraftFrameBytes-len(raw)) + exact := retainedTransportJSON(t, frame, false) + if len(exact) != dialect.RetainedColumnDraftFrameBytes { + t.Fatal("opaque frame grammar boundary", len(exact)) + } + retainedTransportAssert(t, "validate", exact, "", true, "retained-frame-valid") + retainedTransportAssert(t, "validate", exact+" ", "", true, "refused") + }) + } +} + +// Construct the complete frame by hand. Go's JSON encoder would pre-escape +// literal U+2028/U+2029 and hide the admitted three-byte UTF-8 input boundary. +func TestRetainedColumnTransportBaseLiteralSeparators(t *testing.T) { + for _, tc := range []struct{ name, unit string }{ + {"line", "\u2028"}, + {"mandatory-quote", `\"`}, + {"mandatory-backslash", `\\`}, + {"paragraph", "\u2029"}, + {"escaped-separators", `\u2028\u2029`}, + {"literal-backslash-u", `\\u2028\\u2029\\\\u2028\\\\u2029`}, + {"mixed-escaping", "\u2028" + `\\u2028\\u2029\\\\u2028\u0000\n\t\"\\` + "\u2029é😀"}, + } { + t.Run(tc.name, func(t *testing.T) { + prefix := `{"contractVersion":"1","origin":"generated","values":{},"research":{"recordRecipeRevision":"r","declaration":null,"fields":{"Column":{"status":"supported","valueJson":"` + suffix := `"}}}}` + room := dialect.RetainedColumnDraftFrameBytes - len(prefix) - len(suffix) + payload := strings.Repeat(tc.unit, room/len(tc.unit)) + strings.Repeat("x", room%len(tc.unit)) + exact := prefix + payload + suffix + if len(exact) != dialect.RetainedColumnDraftFrameBytes { + t.Fatal("handwritten raw UTF-8 frame boundary", len(exact)) + } + retainedTransportAssert(t, "validate", exact, "", true, "retained-frame-valid") + retainedTransportAssert(t, "validate", exact+" ", "", true, "refused") + }) + } +} + +// Full-document reports already retain only the canonical document. Exercise +// their separate Base envelope with raw UTF-8/mandatory escaping as well. +func TestRetainedColumnTransportBaseRawDocumentEscapes(t *testing.T) { + for _, tc := range []struct{ name, unit string }{{"line", "\u2028"}, {"paragraph", "\u2029"}, {"quote", `\"`}, {"backslash", `\\`}} { + t.Run(tc.name, func(t *testing.T) { + prefix := `{"version":3,"case":{"facts":[],"evidence":[]},"sources":[{"name":"original","kind":"operation","profile":"profile1","profileDigest":"sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","maxAge":86400,"arguments":{"payload":[` + suffix := `]},"read":{"copy":{"facts":[],"evidence":[]}}}]}` + chunks := make([]string, 16) + room := dialect.RetainedColumnDraftDocumentBytes - len(prefix) - len(suffix) - (16*2 + 15) + perChunk := room / 16 + for i := range chunks { + n := perChunk + if i < room%16 { + n++ + } + chunks[i] = `"` + strings.Repeat(tc.unit, n/len(tc.unit)) + strings.Repeat("x", n%len(tc.unit)) + `"` + } + exact := prefix + strings.Join(chunks, ",") + suffix + if len(exact) != dialect.RetainedColumnDraftDocumentBytes { + t.Fatal("handwritten full document byte boundary", len(exact)) + } + retainedTransportAssert(t, "validate", exact, "", false, "document-valid") + retainedTransportAssert(t, "validate", exact+" ", "", false, "refused") + }) + } +} + +func TestRetainedColumnTransportFrameReconstruction(t *testing.T) { + // Deliberately noncanonical source spacing/order, a historical null, an + // absent member, opaque malformed typed JSON, and ordered declarations. + raw := ` { "origin":"generated", "contractVersion":"1", "values":{"Null":null,"Empty":"","Escaped":"\\u2028","Literal":"` + "\u2028" + `"},"research":{"recordRecipeRevision":"v1","declaration":{"recipeRevision":"v1","fields":[{"name":"Second","fieldJson":" {\"name\":\"Second\",\"type\":\"future\",\"n\":-0} "},{"name":"First","fieldJson":"{\"name\":\"First\",\"type\":\"text\"}"}]},"fields":{"Null":{"status":"supported","valueJson":"null"},"Missing":{"status":"missing"},"Control":{"status":"conflicting","valueJson":"\\u2028 \u0000 \" \\\\"},"Malformed":{"status":"interpretation","valueJson":"\"\\ud800\""}}}} ` + retainedTransportAssert(t, "validate", raw, "", true, "retained-frame-valid") +} diff --git a/internal/dialect/check.go b/internal/dialect/check.go index da2cb2c..591356e 100644 --- a/internal/dialect/check.go +++ b/internal/dialect/check.go @@ -66,6 +66,12 @@ func Check(command string, data, pack []byte, engine *validation.Engine) (Report return r, code } r.ValidationScope = "version-" + strconv.Itoa(r.DialectVersion) + "-document-and-declared-pack-inventory" + return checkDeclaredInventory(r, document, pack, engine) +} + +// Both document readers reach the same pack validation and bounded inventory walk. +func checkDeclaredInventory(r Report, document *documentCheck, pack []byte, engine *validation.Engine) (Report, int) { + code := result.ExitSuccess checked, failure := engine.Validate(pack, validation.Options{}) r.PackValidation = &checked if failure != nil { diff --git a/internal/dialect/document.go b/internal/dialect/document.go index ba2c47a..fa3fe52 100644 --- a/internal/dialect/document.go +++ b/internal/dialect/document.go @@ -120,11 +120,23 @@ func Init(command string, version int) (Report, int) { // members and source kinds are retained verbatim as values, not admitted as // executable. Document checking is a separate, version-scoped operation. func Encode(command string, data []byte) (Report, int) { + return encodeDocument(command, data, MaxDocumentBytes, documentLimits()) +} + +func documentLimits() carrier.Limits { + return carrier.Limits{MaxDepth: MaxDepth, MaxNodes: MaxDocumentBytes, MaxStringBytes: MaxDocumentBytes} +} + +func encodeDocument(command string, data []byte, maxBytes int, limits carrier.Limits) (Report, int) { + return encodeDocumentWithIDLimit(command, data, maxBytes, limits, 1024) +} + +func encodeDocumentWithIDLimit(command string, data []byte, maxBytes int, limits carrier.Limits, maxIDBytes int) (Report, int) { r := report(command) - if len(data) > MaxDocumentBytes { + if len(data) > maxBytes { return refused(r, "JPS-DIALECT-BYTE-LIMIT", "", "The dialect exceeds the document byte limit.", result.ExitInvalid) } - value, failure := carrier.Decode(data, carrier.Limits{MaxDepth: MaxDepth, MaxNodes: MaxDocumentBytes, MaxStringBytes: MaxDocumentBytes}) + value, failure := carrier.Decode(data, limits) if failure != nil { r.Status = "refused" r.Diagnostics = []result.Diagnostic{failure.Diagnostic} @@ -149,8 +161,8 @@ func Encode(command string, data []byte) (Report, int) { } r.FormatVersion = selector.(string) id, ok := object["id"].(string) - if !ok || id == "" || len(id) > 1024 || strings.IndexFunc(id, func(c rune) bool { return c <= 32 || c == 127 }) >= 0 { - return refused(r, "JPS-DIALECT-ID", "/id", "Provide a non-empty stable identifier within 1024 UTF-8 bytes, without ASCII spaces or controls.", result.ExitInvalid) + if !ok || id == "" || len(id) > maxIDBytes || strings.IndexFunc(id, func(c rune) bool { return c <= 32 || c == 127 }) >= 0 { + return refused(r, "JPS-DIALECT-ID", "/id", "Provide a non-empty stable identifier within "+strconv.Itoa(maxIDBytes)+" UTF-8 bytes, without ASCII spaces or controls.", result.ExitInvalid) } version, ok := object["version"].(string) if !ok || !artifactGrammar.MatchString(version) { diff --git a/internal/dialect/research.go b/internal/dialect/research.go index 4632622..b4902e0 100644 --- a/internal/dialect/research.go +++ b/internal/dialect/research.go @@ -45,15 +45,15 @@ func (v *documentCheck) research(s map[string]any, path string, scope map[string v.template(s["question"], at(path, "question"), scope) } v.dictionary(s["constraints"], at(path, "constraints")) - v.boundedText(s["model"], at(path, "model"), 256) + v.boundedText(s["model"], at(path, "model"), v.ceiling(256)) for i, e := range v.list(s["evidence"], at(path, "evidence"), 0, 0) { - v.boundedText(e, at(at(path, "evidence"), strconv.Itoa(i)), 4096) + v.boundedText(e, at(at(path, "evidence"), strconv.Itoa(i)), v.ceiling(4096)) } fields := map[string]bool{} - for i, item := range v.list(s["fields"], at(path, "fields"), 1, 64) { + for i, item := range v.list(s["fields"], at(path, "fields"), 1, v.ceiling(64)) { p := at(at(path, "fields"), strconv.Itoa(i)) f := v.object(item, p, []string{"name", "type", "required", "description"}, nil) - name := v.boundedText(f["name"], at(p, "name"), 64) + name := v.boundedText(f["name"], at(p, "name"), v.ceiling(64)) if name == "case" || fields[name] { v.fail(at(p, "name"), "Field name is reserved or repeated.") } @@ -62,9 +62,9 @@ func (v *documentCheck) research(s map[string]any, path string, scope map[string if _, ok := f["required"].(bool); !ok { v.fail(at(p, "required"), "Required must be a boolean.") } - v.boundedText(f["description"], at(p, "description"), 2048) + v.boundedText(f["description"], at(p, "description"), v.ceiling(2048)) } - capabilities := v.list(s["capabilities"], at(path, "capabilities"), 1, 3) + capabilities := v.list(s["capabilities"], at(path, "capabilities"), 1, v.ceiling(3)) last := -1 web := []string{} for i, c := range capabilities { @@ -131,7 +131,7 @@ func researchPointer(s string, fields map[string]bool, taken bool) bool { } // Read only pointer-bearing syntax. Constants may contain arbitrary member names. -func readPointers(read map[string]any, visit func(string, bool)) { +func readPointers(read map[string]any, retainedDraft bool, visit func(string, bool)) { if unwrap, ok := read["unwrap"].([]any); ok { for _, p := range unwrap { if s, ok := p.(string); ok { @@ -144,6 +144,15 @@ func readPointers(read map[string]any, visit func(string, bool)) { items, _ := copy[k].([]any) for _, item := range items { f, _ := item.(map[string]any) + if retainedDraft { + _, conversion := f["conversion"] + _, availability := f["availability"] + if conversion || availability { + // The structurally checked pointer selects the whole retained + // frame, not a value in the current research declaration. + continue + } + } if s, ok := f["source"].(string); ok { visit(s, true) } @@ -190,7 +199,7 @@ func (v *documentCheck) researchRead(value any, path string, scope map[string]st if _, ok := read["sources"]; !ok { targets := v.read(value, path, scope) if v.issue == nil { - readPointers(read, func(ptr string, taken bool) { + readPointers(read, v.retainedDraft, func(ptr string, taken bool) { if !researchPointer(ptr, fields, taken) { v.fail(path, "Research read names a pointer outside declared field values or selects a conflicting observation.") } @@ -204,7 +213,7 @@ func (v *documentCheck) researchRead(value any, path string, scope map[string]st entries["/current/fields/"+escape(name)] = true } seen := map[string]bool{} - for i, raw := range v.list(read["sources"], at(path, "sources"), 1, 15) { + for i, raw := range v.list(read["sources"], at(path, "sources"), 1, v.ceiling(15)) { name := v.text(raw, at(at(path, "sources"), strconv.Itoa(i)), true) prior, ok := earlier[name] if !ok || seen[name] { @@ -226,7 +235,7 @@ func (v *documentCheck) researchRead(value any, path string, scope map[string]st c := raw.(map[string]any) walkConditions(c["when"], func(condition map[string]any) { every[jsonKey(condition)] = true }) } - readPointers(read, func(ptr string, taken bool) { + readPointers(read, v.retainedDraft, func(ptr string, taken bool) { if taken { return } diff --git a/internal/dialect/retained_column_draft.go b/internal/dialect/retained_column_draft.go new file mode 100644 index 0000000..0acdb14 --- /dev/null +++ b/internal/dialect/retained_column_draft.go @@ -0,0 +1,444 @@ +package dialect + +// This opt-in internal reader implements document/retained-frame structure from +// RFC 0029 at the immutable Draft revision below. It executes no conversions. +import ( + "crypto/sha256" + "encoding/hex" + "strconv" + "strings" + + "github.com/Judgment-Pack/judgment-pack-runtime/internal/carrier" + "github.com/Judgment-Pack/judgment-pack-runtime/internal/result" + "github.com/Judgment-Pack/judgment-pack-runtime/internal/validation" +) + +const ( + RetainedColumnDraftContract = "retained-column/1" + RetainedColumnDraftSelector = RetainedColumnDraftContract + "@" + RetainedColumnDraftRevision + RetainedColumnDraftRevision = "ade3914b0b81ef299e5b9a8d6147f37ff3f0976c" + RetainedColumnDraftSchema = "sha256:996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f" + RetainedColumnDraftCorpus = "sha256:e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2" + RetainedColumnDraftDocumentBytes = 1048576 + RetainedColumnDraftFrameBytes = 2097152 + RetainedColumnDraftExtendedDocumentBytes = 2097152 + RetainedColumnDraftExtendedFrameBytes = 4194304 + RetainedColumnDraftExtendedNodes = 147456 + RetainedColumnDraftExtendedStringBytes = 262144 +) + +type RetainedColumnDraftIdentity struct { + Version string `json:"version"` + Revision string `json:"revision"` + SchemaSHA256 string `json:"schemaSha256"` + CorpusSHA256 string `json:"corpusSha256"` +} + +// RetainedColumnDraftSelection is an explicit trusted selector, not an observed +// capability report or a negotiation implementation. No default opts into it. +type RetainedColumnDraftSelection struct { + Contract string + Spec RetainedColumnDraftIdentity + Profile string +} + +func RetainedColumnDraftBase() RetainedColumnDraftSelection { + return RetainedColumnDraftSelection{RetainedColumnDraftContract, RetainedColumnDraftIdentity{ + "Draft RFC0029", RetainedColumnDraftRevision, RetainedColumnDraftSchema, RetainedColumnDraftCorpus}, "base"} +} + +type RetainedColumnDraftLimits struct { + DocumentBytes int `json:"documentBytes"` + FrameBytes int `json:"frameBytes"` +} + +// RetainedColumnDraftReport is deliberately separate from the released report +// capabilities. Document validity makes no preparation or authenticity claim. +type RetainedColumnDraftReport struct { + Report + Contract string `json:"contract"` + Spec RetainedColumnDraftIdentity `json:"spec"` + Profile string `json:"profile"` + Role string `json:"role"` + Limits RetainedColumnDraftLimits `json:"limits"` + DraftCapabilities *RetainedColumnDraftCapabilities `json:"capabilities,omitempty"` +} + +func retainedDraftReport(command string) RetainedColumnDraftReport { + s := RetainedColumnDraftBase() + r := report(command) + r.SpecRevision = RetainedColumnDraftRevision + r.Specification = "https://github.com/Judgment-Pack/judgment-pack-spec/blob/" + RetainedColumnDraftRevision + "/rfcs/0029-retained-column-conversions.md" + r.Maturity = "experimental-draft" + return RetainedColumnDraftReport{r, s.Contract, s.Spec, s.Profile, "document-validation", + RetainedColumnDraftLimits{RetainedColumnDraftDocumentBytes, RetainedColumnDraftFrameBytes}, nil} +} + +func retainedDraftRefused(r RetainedColumnDraftReport, code, path, message string, exit int) (RetainedColumnDraftReport, int) { + r.Report, exit = refused(r.Report, code, path, message, exit) + return r, exit +} + +// Selection is checked before inspecting artifact bytes, even malformed bytes. +func retainedDraftSelection(r RetainedColumnDraftReport, selection RetainedColumnDraftSelection) (RetainedColumnDraftReport, int) { + if selection.Contract != r.Contract || selection.Spec != r.Spec { + return retainedDraftRefused(r, "capability-unsupported", "", "The exact experimental Draft contract and specification identity are required.", result.ExitUnsupported) + } + switch selection.Profile { + case "base": + return r, result.ExitSuccess + case "extended": + r.Profile = "extended" + r.Limits = RetainedColumnDraftLimits{RetainedColumnDraftExtendedDocumentBytes, RetainedColumnDraftExtendedFrameBytes} + return r, result.ExitSuccess + default: + return retainedDraftRefused(r, "input-malformed", "/profile", "Unknown Draft profile.", result.ExitInvalid) + } +} + +// ValidateRetainedColumnDraft checks the actual Dialect document, including all +// ordinary declarations, targets and references, with the Draft copy variants. +// It neither resolves source pointers against records nor executes conversion. +func ValidateRetainedColumnDraft(command string, data []byte, selection RetainedColumnDraftSelection) (RetainedColumnDraftReport, int) { + r, _, code := validateRetainedColumnDraftDocument(command, data, selection) + return r, code +} + +func retainedDraftDocumentLimits(profile string) carrier.Limits { + if profile == "extended" { + return carrier.Limits{MaxDepth: 128, MaxNodes: RetainedColumnDraftExtendedNodes, MaxStringBytes: RetainedColumnDraftExtendedStringBytes} + } + return documentLimits() +} + +func retainedDraftDocumentReport(r RetainedColumnDraftReport, checked Report, scope string) RetainedColumnDraftReport { + checked.SpecRevision, checked.Specification, checked.Maturity = r.SpecRevision, r.Specification, r.Maturity + checked.ValidationScope = "experimental-retained-column-" + r.Profile + "-" + scope + for i := range checked.Diagnostics { + switch checked.Diagnostics[i].Code { + case "JPS-DIALECT-FORM": + checked.Diagnostics[i].Code = "input-malformed" + case "JPS-DIALECT-COUNT-LIMIT": + checked.Diagnostics[i].Code = "input-over-bound" + } + } + r.Report = checked + return r +} + +func validateRetainedColumnDraftDocument(command string, data []byte, selection RetainedColumnDraftSelection) (RetainedColumnDraftReport, *documentCheck, int) { + r, code := retainedDraftSelection(retainedDraftReport(command), selection) + if code != result.ExitSuccess { + return r, nil, code + } + if len(data) > r.Limits.DocumentBytes { + r, code = retainedDraftRefused(r, "input-over-bound", "", "The experimental Draft document exceeds its byte limit.", result.ExitInvalid) + return r, nil, code + } + // Byte admission and parser work budgets are independent. The extended node + // allowance preserves the old envelope plus bounded new leaves; its string + // budget preserves any string from that old envelope. + checked, document, code := validateDocumentWithProfile(command, data, r.Limits.DocumentBytes, retainedDraftDocumentLimits(r.Profile), true, r.Profile) + return retainedDraftDocumentReport(r, checked, "document"), document, code +} + +// SelectRetainedColumnDraft resolves an explicit public selector to trusted +// compiled pins before any artifact is read. Caller-supplied hashes are not proof. +func SelectRetainedColumnDraft(command, selector, profile string) (RetainedColumnDraftReport, RetainedColumnDraftSelection, int) { + selection := RetainedColumnDraftBase() + selection.Profile = profile + if selector != RetainedColumnDraftSelector { + selection.Contract = "" + } + r, code := retainedDraftSelection(retainedDraftReport(command), selection) + return r, selection, code +} + +type RetainedColumnDraftCapability struct { + Contract string `json:"contract"` + Spec RetainedColumnDraftIdentity `json:"spec"` + Profile string `json:"profile"` + Role string `json:"role"` + Limits RetainedColumnDraftLimits `json:"limits"` +} + +type RetainedColumnDraftCapabilities struct { + ConversionContracts []RetainedColumnDraftCapability `json:"conversionContracts"` + Operations []string `json:"operations"` + PackCheckScope string `json:"packCheckScope"` + MaxPackBytes int64 `json:"maxPackBytes"` + MaxCoverageComparisons int64 `json:"maxCoverageComparisons"` + MaxCoverageReportBytes int `json:"maxCoverageReportBytes"` +} + +// ContractRetainedColumnDraft advertises only this experimental document/frame +// reader and its declared inventory check; it advertises no producer or preparer. +func ContractRetainedColumnDraft(command string, selection RetainedColumnDraftSelection) (RetainedColumnDraftReport, int) { + r, code := retainedDraftSelection(retainedDraftReport(command), selection) + if code != result.ExitSuccess { + return r, code + } + r.Status = "available" + r.DraftCapabilities = &RetainedColumnDraftCapabilities{ + ConversionContracts: []RetainedColumnDraftCapability{{r.Contract, r.Spec, r.Profile, r.Role, r.Limits}}, + Operations: []string{"contract", "canonicalize", "digest", "validate", "check"}, + PackCheckScope: "declared-inventory-coverage", MaxPackBytes: MaxPackBytes, + MaxCoverageComparisons: MaxCoverageComparisons, MaxCoverageReportBytes: MaxCoverageReportBytes, + } + return r, result.ExitSuccess +} + +// EncodeRetainedColumnDraft checks only the selected encoding domain and identity +// spelling. It does not admit conversion grammar or establish document validity. +func EncodeRetainedColumnDraft(command string, data []byte, selection RetainedColumnDraftSelection) (RetainedColumnDraftReport, int) { + r, code := retainedDraftSelection(retainedDraftReport(command), selection) + if code != result.ExitSuccess { + return r, code + } + if len(data) > r.Limits.DocumentBytes { + return retainedDraftRefused(r, "input-over-bound", "", "The experimental Draft document exceeds its byte limit.", result.ExitInvalid) + } + maxIDBytes := 1024 + if r.Profile == "extended" { + maxIDBytes = 2048 + } + checked, code := encodeDocumentWithIDLimit(command, data, r.Limits.DocumentBytes, retainedDraftDocumentLimits(r.Profile), maxIDBytes) + return retainedDraftDocumentReport(r, checked, "encoding-only"), code +} + +// CheckRetainedColumnDraft compares actual validated targets using the ordinary +// pack/inventory gates. Conversion values and source authenticity are not checked. +func CheckRetainedColumnDraft(command string, data, pack []byte, engine *validation.Engine, selection RetainedColumnDraftSelection) (RetainedColumnDraftReport, int) { + r, code := retainedDraftSelection(retainedDraftReport(command), selection) + if code != result.ExitSuccess { + return r, code + } + // Bound both operands before parsing either, matching ordinary Check ordering. + if len(data) > r.Limits.DocumentBytes { + return retainedDraftRefused(r, "input-over-bound", "", "The experimental Draft document exceeds its byte limit.", result.ExitInvalid) + } + if int64(len(pack)) > MaxPackBytes { + return retainedDraftRefused(r, "JPS-DIALECT-PACK-BYTE-LIMIT", "", "The pack exceeds the document byte limit.", result.ExitInvalid) + } + r, document, code := validateRetainedColumnDraftDocument(command, data, selection) + if code != result.ExitSuccess { + return r, code + } + r.ValidationScope = "experimental-retained-column-" + r.Profile + "-document-and-declared-pack-inventory" + r.Report, code = checkDeclaredInventory(r.Report, document, pack, engine) + return r, code +} + +func (v *documentCheck) retainedConversion(value any, path string, availability bool) { + required := []string{"contractVersion", "column"} + if !availability { + required = append(required, "kind") + if obj, ok := value.(map[string]any); ok && obj["kind"] == "boolean" { + required = append(required, "trueValue", "falseValue") + } + } + c := v.object(value, path, required, nil) + v.choice(c["contractVersion"], at(path, "contractVersion"), "1") + v.boundedText(c["column"], at(path, "column"), 160) + if availability { + return + } + kind := v.choice(c["kind"], at(path, "kind"), "text", "decimal", "number", "boolean", "research-value") + if kind == "boolean" { + a := v.boundedText(c["trueValue"], at(path, "trueValue"), 160) + b := v.boundedText(c["falseValue"], at(path, "falseValue"), 160) + if a == b || retainedBlank(a) || retainedBlank(b) { + v.fail(path, "Boolean spellings must be distinct and nonblank.") + } + } +} + +func retainedBlank(s string) bool { + return strings.TrimFunc(s, func(r rune) bool { + return 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 + }) == "" +} + +// The typed inspection result retains all original strings, ordered declaration +// entries and absent/null distinctions. Hashes identify exact supplied UTF-8; +// they do not attest the source, recipe inventory or record provenance. +type RetainedColumnDraftFrame struct { + ContractVersion string `json:"contractVersion"` + Origin string `json:"origin"` + Values map[string]*string `json:"values"` + Research *RetainedColumnDraftResearch `json:"research"` +} +type RetainedColumnDraftResearch struct { + RecordRecipeRevision string `json:"recordRecipeRevision"` + Declaration *RetainedColumnDraftDeclaration `json:"declaration"` + Fields map[string]RetainedColumnDraftField `json:"fields"` +} +type RetainedColumnDraftDeclaration struct { + RecipeRevision string `json:"recipeRevision"` + Fields []RetainedColumnDraftDeclarationEntry `json:"fields"` +} +type RetainedColumnDraftDeclarationEntry struct { + Name string `json:"name"` + FieldJSON string `json:"fieldJson"` + FieldSHA256 string `json:"-"` +} +type RetainedColumnDraftField struct { + Status string `json:"status"` + ValueJSON *string `json:"valueJson,omitempty"` +} +type RetainedColumnDraftFrameReport struct { + RetainedColumnDraftReport + // Keep typed inspection available internally. On the unpublished wire + // surface, Document retains every exact source byte once per report; + // repeating all decoded strings here amplifies the dual MCP response. + Frame *RetainedColumnDraftFrame `json:"-"` + FrameSummary *RetainedColumnDraftFrameSummary `json:"frameSummary,omitempty"` +} + +type RetainedColumnDraftFrameSummary struct { + ContractVersion string `json:"contractVersion"` + Origin string `json:"origin"` + ValueCount int `json:"valueCount"` + DeclarationCount int `json:"declarationCount"` + FieldCount int `json:"fieldCount"` +} + +// ValidateRetainedColumnDraftFrame checks a complete standalone retained frame. +// valueJson is opaque retained data: malformed typed JSON, unknown original +// types and revision mismatches remain inspectable per-record conversion issues. +func ValidateRetainedColumnDraftFrame(command string, data []byte, selection RetainedColumnDraftSelection) (RetainedColumnDraftFrameReport, int) { + r, code := retainedDraftSelection(retainedDraftReport(command), selection) + out := RetainedColumnDraftFrameReport{RetainedColumnDraftReport: r} + if code != result.ExitSuccess { + return out, code + } + fail := func(code, path, message string) (RetainedColumnDraftFrameReport, int) { + out.RetainedColumnDraftReport, _ = retainedDraftRefused(out.RetainedColumnDraftReport, code, path, message, result.ExitInvalid) + return out, result.ExitInvalid + } + if len(data) > r.Limits.FrameBytes { + return fail("input-over-bound", "", "The retained frame exceeds its byte limit.") + } + // Closed frame structure has at most 7011 nodes (1000 values, declaration + // entries and fields). This independent 8192-node allowance also bounds + // malformed containers. Opaque valueJson may occupy the whole frame budget; + // it is never recursively parsed here. Declarations are parsed separately. + value, failure := carrier.Decode(data, carrier.Limits{MaxDepth: MaxDepth, MaxNodes: 8192, MaxStringBytes: r.Limits.FrameBytes}) + if failure != nil { + code := "input-malformed" + if failure.Resource { + code = "input-over-bound" + } + return fail(code, failure.Diagnostic.InstancePath, failure.Diagnostic.Message) + } + v := documentCheck{} + frame := v.retainedFrame(value) + if v.issue != nil { + code := "input-malformed" + if v.issue.Code == "JPS-DIALECT-COUNT-LIMIT" { + code = "input-over-bound" + } + return fail(code, v.issue.InstancePath, v.issue.Message) + } + out.Status = "retained-frame-valid" + out.ValidationScope = "experimental-retained-column-" + r.Profile + "-frame-structure" + out.Document = string(data) + out.Digest = retainedDraftDigest(string(data)) + out.Frame = frame + out.FrameSummary = &RetainedColumnDraftFrameSummary{ContractVersion: frame.ContractVersion, Origin: frame.Origin, ValueCount: len(frame.Values)} + if frame.Research != nil { + out.FrameSummary.FieldCount = len(frame.Research.Fields) + if frame.Research.Declaration != nil { + out.FrameSummary.DeclarationCount = len(frame.Research.Declaration.Fields) + } + } + return out, result.ExitSuccess +} + +func retainedDraftDigest(raw string) string { + sum := sha256.Sum256([]byte(raw)) + return "sha256:" + hex.EncodeToString(sum[:]) +} + +func (v *documentCheck) retainedFrame(value any) *RetainedColumnDraftFrame { + f := v.object(value, "", []string{"contractVersion", "origin", "values", "research"}, nil) + out := &RetainedColumnDraftFrame{ContractVersion: v.choice(f["contractVersion"], "/contractVersion", "1"), Origin: v.choice(f["origin"], "/origin", "asserted", "generated"), Values: map[string]*string{}} + values := v.dictionary(f["values"], "/values") + if len(values) > 1000 { + v.refuse("JPS-DIALECT-COUNT-LIMIT", "/values", "At most 1000 retained values are permitted.") + } + for _, name := range keys(values) { + path := at("/values", name) + v.boundedText(name, path, 160) + if values[name] == nil { + out.Values[name] = nil + } else { + text := v.text(values[name], path, false) + if len(text) > 16000 { + v.refuse("JPS-DIALECT-COUNT-LIMIT", path, "A retained column is at most 16000 UTF-8 bytes.") + } + out.Values[name] = &text + } + } + if out.Origin == "asserted" { + if f["research"] != nil { + v.fail("/research", "Asserted frames require research:null.") + } + return out + } + r := v.object(f["research"], "/research", []string{"recordRecipeRevision", "declaration", "fields"}, nil) + research := &RetainedColumnDraftResearch{RecordRecipeRevision: v.boundedText(r["recordRecipeRevision"], "/research/recordRecipeRevision", 160), Fields: map[string]RetainedColumnDraftField{}} + out.Research = research + if r["declaration"] != nil { + d := v.object(r["declaration"], "/research/declaration", []string{"recipeRevision", "fields"}, nil) + decl := &RetainedColumnDraftDeclaration{RecipeRevision: v.boundedText(d["recipeRevision"], "/research/declaration/recipeRevision", 160), Fields: []RetainedColumnDraftDeclarationEntry{}} + research.Declaration = decl + seen := map[string]bool{} + for i, raw := range v.list(d["fields"], "/research/declaration/fields", 0, 1000) { + path := at("/research/declaration/fields", strconv.Itoa(i)) + e := v.object(raw, path, []string{"name", "fieldJson"}, nil) + name := v.boundedText(e["name"], at(path, "name"), 160) + if seen[name] { + v.fail(at(path, "name"), "Original declaration names must be distinct.") + } + seen[name] = true + text := v.text(e["fieldJson"], at(path, "fieldJson"), false) + if len(text) > 16384 { + v.refuse("JPS-DIALECT-COUNT-LIMIT", at(path, "fieldJson"), "Original field JSON is at most 16384 UTF-8 bytes.") + continue + } + // No canonical-number restriction: original numeric spelling is data. + // A 16KiB token budget bounds work independently of the frame ceiling. + field, failure := carrier.Decode([]byte(text), carrier.Limits{MaxDepth: 32, MaxNodes: 16384, MaxStringBytes: 16384}) + if failure != nil { + v.fail(at(path, "fieldJson"), "Original field JSON must be duplicate-free scalar-valid JSON with nesting at most 32.") + continue + } + obj, ok := field.(map[string]any) + if !ok || obj["name"] != name { + v.fail(at(path, "fieldJson"), "Original field JSON must be an object with the matching name.") + } + if _, ok := obj["type"].(string); !ok { + v.fail(at(path, "fieldJson"), "Original field JSON must contain a string type.") + } + decl.Fields = append(decl.Fields, RetainedColumnDraftDeclarationEntry{name, text, retainedDraftDigest(text)}) + } + } + fields := v.dictionary(r["fields"], "/research/fields") + if len(fields) > 1000 { + v.refuse("JPS-DIALECT-COUNT-LIMIT", "/research/fields", "At most 1000 retained fields are permitted.") + } + for _, name := range keys(fields) { + path := at("/research/fields", name) + v.boundedText(name, path, 160) + f := v.object(fields[name], path, []string{"status"}, []string{"valueJson"}) + entry := RetainedColumnDraftField{Status: v.choice(f["status"], at(path, "status"), "supported", "interpretation", "missing", "conflicting", "inaccessible", "stale")} + if raw, present := f["valueJson"]; present { + text := v.text(raw, at(path, "valueJson"), false) + entry.ValueJSON = &text + } + research.Fields[name] = entry + } + return out +} diff --git a/internal/dialect/retained_column_draft_test.go b/internal/dialect/retained_column_draft_test.go new file mode 100644 index 0000000..f62d276 --- /dev/null +++ b/internal/dialect/retained_column_draft_test.go @@ -0,0 +1,943 @@ +package dialect + +import ( + "bytes" + "crypto/sha256" + "encoding/hex" + "encoding/json" + "fmt" + "os" + "strings" + "testing" + + "github.com/Judgment-Pack/judgment-pack-runtime/internal/result" +) + +func draftJSON(t *testing.T, value any) []byte { + t.Helper() + raw, err := json.Marshal(value) + if err != nil { + t.Fatal(err) + } + return raw +} +func draftDocument(kind string) map[string]any { + conversion := map[string]any{"contractVersion": "1", "column": "Column", "kind": kind} + if kind == "boolean" { + conversion["trueValue"], conversion["falseValue"] = "YES", "NO" + } + return map[string]any{"version": 2, "case": map[string]any{"facts": []any{map[string]any{"target": "/converted", "source": "/retained", "conversion": conversion}}, "evidence": []any{map[string]any{"requirement": "proof", "source": "/retained", "availability": map[string]any{"contractVersion": "1", "column": "Column"}}}}} +} +func draftFact(d map[string]any) map[string]any { + return d["case"].(map[string]any)["facts"].([]any)[0].(map[string]any) +} +func draftConversion(d map[string]any) map[string]any { + return draftFact(d)["conversion"].(map[string]any) +} +func draftGenerated() map[string]any { + return map[string]any{"contractVersion": "1", "origin": "generated", "values": map[string]any{"Column": "-0", "Null": nil, "Empty": ""}, "research": map[string]any{ + "recordRecipeRevision": "recipe:7", "declaration": map[string]any{"recipeRevision": "recipe:7", "fields": []any{map[string]any{"name": "Column", "fieldJson": `{ "name":"Column","type":"number","opaque":{"n":1e100,"zero":-0,"label":"\u00e9"} }`}, map[string]any{"name": "Other", "fieldJson": `{"name":"Other","type":"string"}`}}}, + "fields": map[string]any{"Column": map[string]any{"status": "supported", "valueJson": "-0"}, "Other": map[string]any{"status": "interpretation", "valueJson": `"\ud800"`}, "Missing": map[string]any{"status": "missing"}, "Null": map[string]any{"status": "supported", "valueJson": "null"}}}} +} +func draftResearch(f map[string]any) map[string]any { return f["research"].(map[string]any) } +func draftDeclaration(f map[string]any) map[string]any { + return draftResearch(f)["declaration"].(map[string]any) +} +func draftEntry(f map[string]any) map[string]any { + return draftDeclaration(f)["fields"].([]any)[0].(map[string]any) +} + +func TestRetainedColumnDraftIdentityAndSelection(t *testing.T) { + for _, fixture := range []struct{ file, digest string }{{"contract.schema.json", RetainedColumnDraftSchema}, {"cases.json", RetainedColumnDraftCorpus}} { + raw, err := os.ReadFile("testdata/retained-column-draft/" + fixture.file) + if err != nil { + t.Fatal(err) + } + sum := sha256.Sum256(raw) + if "sha256:"+hex.EncodeToString(sum[:]) != fixture.digest { + t.Fatal("Draft fixture pin changed", fixture.file) + } + } + cases := []struct { + name, want string + change func(*RetainedColumnDraftSelection) + }{ + {"contract", "capability-unsupported", func(s *RetainedColumnDraftSelection) { s.Contract = "retained-column/2" }}, + {"version", "capability-unsupported", func(s *RetainedColumnDraftSelection) { s.Spec.Version = "1" }}, + {"revision", "capability-unsupported", func(s *RetainedColumnDraftSelection) { s.Spec.Revision = strings.Repeat("0", 40) }}, + {"schema", "capability-unsupported", func(s *RetainedColumnDraftSelection) { s.Spec.SchemaSHA256 = "wrong" }}, + {"corpus", "capability-unsupported", func(s *RetainedColumnDraftSelection) { s.Spec.CorpusSHA256 = "wrong" }}, + {"unknown profile", "input-malformed", func(s *RetainedColumnDraftSelection) { s.Profile = "unknown" }}, + {"missing profile", "input-malformed", func(s *RetainedColumnDraftSelection) { s.Profile = "" }}, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + selection := RetainedColumnDraftBase() + tc.change(&selection) + for _, raw := range [][]byte{nil, []byte("{"), bytes.Repeat([]byte("x"), RetainedColumnDraftFrameBytes+1)} { + r, code := ValidateRetainedColumnDraft("test", raw, selection) + if code == 0 || len(r.Diagnostics) != 1 || r.Diagnostics[0].Code != tc.want || r.Document != "" || r.Digest != "" { + t.Fatalf("selector was not checked first: %+v", r) + } + frame, code := ValidateRetainedColumnDraftFrame("test", raw, selection) + if code == 0 || len(frame.Diagnostics) != 1 || frame.Diagnostics[0].Code != tc.want || frame.Frame != nil { + t.Fatalf("frame selector was not checked first: %+v", frame) + } + } + }) + } +} + +func TestRetainedColumnDraftDocuments(t *testing.T) { + for _, version := range []int{2, 3} { + for _, named := range []bool{false, true} { + for _, kind := range []string{"text", "decimal", "number", "boolean", "research-value"} { + d := draftDocument(kind) + d["version"] = version + if named { + d["formatVersion"] = fmt.Sprintf("%d.0.0", version) + d["id"] = "urn:test:retained" + d["version"] = "1.0.0" + } + raw := draftJSON(t, d) + r, code := ValidateRetainedColumnDraft("test", raw, RetainedColumnDraftBase()) + if code != 0 || r.Status != "document-valid" || r.ValidationScope != "experimental-retained-column-base-document" || r.Spec.Revision != RetainedColumnDraftRevision || r.FullDocumentConformance || r.Maturity != "experimental-draft" || r.Capabilities != nil { + t.Fatalf("%d %v %s: %+v", version, named, kind, r) + } + if old, code := Validate("test", raw); code == 0 || old.Status != "refused" { + t.Fatal("released validation admitted Draft", old) + } + encoded, _ := Encode("test", raw) + if encoded.Document != r.Document || encoded.Digest != r.Digest { + t.Fatal("Draft changed canonical document identity") + } + } + } + } + // Converted targets participate in the real source-order parameter checks. + d := sampleDocument(t) + copy := sourceAt(d, 0)["read"].(map[string]any)["copy"].(map[string]any) + copy["facts"].([]any)[0].(map[string]any)["conversion"] = draftConversion(draftDocument("text")) + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()); code != 0 { + t.Fatal(r) + } + // Removing the earlier converted producer invalidates the later parameter. + copy["facts"] = []any{} + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()); code == 0 || r.Diagnostics[0].InstancePath != "/sources/1/parameters/firstValue/pointer" { + t.Fatal(r) + } +} + +func TestRetainedColumnDraftDocumentRefusals(t *testing.T) { + cases := []struct { + name string + change func(map[string]any) + }{ + {"leaf version", func(d map[string]any) { draftConversion(d)["contractVersion"] = "2" }}, + {"leaf version type", func(d map[string]any) { draftConversion(d)["contractVersion"] = 1 }}, + {"missing column", func(d map[string]any) { delete(draftConversion(d), "column") }}, + {"empty column", func(d map[string]any) { draftConversion(d)["column"] = "" }}, + {"unknown kind", func(d map[string]any) { draftConversion(d)["kind"] = "future" }}, + {"unknown leaf member", func(d map[string]any) { draftConversion(d)["extra"] = true }}, + {"boolean absent spelling", func(d map[string]any) { delete(draftConversion(d), "falseValue") }}, + {"boolean repeated spelling", func(d map[string]any) { draftConversion(d)["falseValue"] = "YES" }}, + {"boolean blank spelling", func(d map[string]any) { draftConversion(d)["falseValue"] = "\u0085\u3000" }}, + {"boolean wrong scalar", func(d map[string]any) { draftConversion(d)["trueValue"] = true }}, + {"mixed quality target", func(d map[string]any) { draftFact(d)["qualityTarget"] = "x" }}, + {"mixed evidence leaf", func(d map[string]any) { + draftFact(d)["availability"] = map[string]any{"contractVersion": "1", "column": "Column"} + }}, + {"bad pointer", func(d map[string]any) { draftFact(d)["source"] = "/bad~2" }}, + {"duplicate target", func(d map[string]any) { + c := d["case"].(map[string]any) + c["facts"] = append(c["facts"].([]any), draftFact(d)) + }}, + {"overlap", func(d map[string]any) { + c := d["case"].(map[string]any) + c["facts"] = append(c["facts"].([]any), map[string]any{"target": "/converted/child", "source": ""}) + }}, + {"unknown root", func(d map[string]any) { d["unknown"] = true }}, + {"unknown declared profile", func(d map[string]any) { d["profile"] = "unknown" }}, + {"wrong declared profile", func(d map[string]any) { d["profile"] = "extended" }}, + {"missing case", func(d map[string]any) { delete(d, "case") }}, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + d := draftDocument("boolean") + tc.change(d) + r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()) + if code != result.ExitInvalid || len(r.Diagnostics) != 1 || r.Diagnostics[0].Code != "input-malformed" || r.Document != "" || r.Digest != "" { + t.Fatalf("invalid Draft admitted: %+v", r) + } + }) + } + // The specified blank set deliberately excludes U+001C and zero-width space. + for _, spelling := range []string{"\u001c", "\u200b"} { + d := draftDocument("boolean") + draftConversion(d)["falseValue"] = spelling + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()); code != 0 { + t.Fatal(r) + } + } + for _, raw := range []string{`{"version":2,"version":2,"case":{"facts":[],"evidence":[]}}`, `{"version":2,"case":{"facts":[],"evidence":[]},"x":"\ud800"}`, `{"version":2,"case":{"facts":[],"evidence":[]}} {}`} { + if r, code := ValidateRetainedColumnDraft("test", []byte(raw), RetainedColumnDraftBase()); code == 0 || r.Document != "" { + t.Fatal(r) + } + } +} + +func TestRetainedColumnDraftFramePreservation(t *testing.T) { + f := draftGenerated() + raw := draftJSON(t, f) + r, code := ValidateRetainedColumnDraftFrame("test", raw, RetainedColumnDraftBase()) + if code != 0 || r.Status != "retained-frame-valid" || r.Document != string(raw) || r.Frame == nil || r.FullDocumentConformance { + t.Fatal(r) + } + sum := sha256.Sum256(raw) + if r.Digest != "sha256:"+hex.EncodeToString(sum[:]) { + t.Fatal("frame byte digest mismatch") + } + + frame := r.Frame + if frame.Research.RecordRecipeRevision != "recipe:7" || frame.Research.Declaration.RecipeRevision != "recipe:7" || len(frame.Research.Declaration.Fields) != 2 { + t.Fatal("lost original inventory/revision", frame) + } + entry := frame.Research.Declaration.Fields[0] + if entry.FieldJSON != draftEntry(f)["fieldJson"] || entry.Name != "Column" || frame.Research.Declaration.Fields[1].Name != "Other" { + t.Fatal("declaration bytes/order changed") + } + sum = sha256.Sum256([]byte(entry.FieldJSON)) + if entry.FieldSHA256 != "sha256:"+hex.EncodeToString(sum[:]) { + t.Fatal("field JSON hashing changed") + } + if value, present := frame.Values["Null"]; !present || value != nil { + t.Fatal("lost historical null") + } + if _, present := frame.Values["Absent"]; present { + t.Fatal("invented absent column") + } + if *frame.Values["Empty"] != "" || *frame.Research.Fields["Column"].ValueJSON != "-0" || *frame.Research.Fields["Other"].ValueJSON != `"\ud800"` || frame.Research.Fields["Missing"].ValueJSON != nil || *frame.Research.Fields["Null"].ValueJSON != "null" { + t.Fatal("raw/null/missing distinctions changed") + } + // Unavailable/mismatched original declaration and malformed typed raw remain inspectable. + for _, value := range []any{nil, map[string]any{"recipeRevision": "recipe:8", "fields": []any{map[string]any{"name": "Column", "fieldJson": `{"name":"Column","type":"future"}`}}}} { + f := draftGenerated() + draftResearch(f)["declaration"] = value + draftResearch(f)["fields"].(map[string]any)["Column"] = map[string]any{"status": "supported", "valueJson": "{"} + if r, code := ValidateRetainedColumnDraftFrame("test", draftJSON(t, f), RetainedColumnDraftBase()); code != 0 { + t.Fatal(r) + } + } +} + +func TestRetainedColumnDraftFrameRefusals(t *testing.T) { + cases := []struct { + name string + change func(map[string]any) + }{ + {"unknown", func(f map[string]any) { f["extra"] = true }}, + {"missing", func(f map[string]any) { delete(f, "values") }}, + {"version", func(f map[string]any) { f["contractVersion"] = "2" }}, + {"origin", func(f map[string]any) { f["origin"] = "record" }}, + {"asserted research", func(f map[string]any) { f["origin"] = "asserted" }}, + {"null research", func(f map[string]any) { f["research"] = nil }}, + {"value scalar", func(f map[string]any) { f["values"].(map[string]any)["Column"] = 0 }}, + {"empty column", func(f map[string]any) { f["values"].(map[string]any)[""] = "x" }}, + {"missing revision", func(f map[string]any) { delete(draftResearch(f), "recordRecipeRevision") }}, + {"declaration missing revision", func(f map[string]any) { delete(draftDeclaration(f), "recipeRevision") }}, + {"declaration duplicate name", func(f map[string]any) { + d := draftDeclaration(f) + d["fields"] = append(d["fields"].([]any), draftEntry(f)) + }}, + {"declaration wrong name", func(f map[string]any) { draftEntry(f)["fieldJson"] = `{"name":"Other","type":"text"}` }}, + {"declaration missing type", func(f map[string]any) { draftEntry(f)["fieldJson"] = `{"name":"Column"}` }}, + {"declaration type scalar", func(f map[string]any) { draftEntry(f)["fieldJson"] = `{"name":"Column","type":null}` }}, + {"declaration duplicate embedded", func(f map[string]any) { + draftEntry(f)["fieldJson"] = `{"name":"Column","type":"text","x":{"v":1,"\u0076":2}}` + }}, + {"declaration embedded surrogate", func(f map[string]any) { draftEntry(f)["fieldJson"] = `{"name":"Column","type":"text","x":"\ud800"}` }}, + {"declaration not object", func(f map[string]any) { draftEntry(f)["fieldJson"] = `[]` }}, + {"declaration invalid", func(f map[string]any) { draftEntry(f)["fieldJson"] = `{` }}, + {"declaration extra entry", func(f map[string]any) { draftEntry(f)["extra"] = true }}, + {"status", func(f map[string]any) { + draftResearch(f)["fields"].(map[string]any)["Column"] = map[string]any{"status": "found"} + }}, + {"raw value scalar", func(f map[string]any) { + draftResearch(f)["fields"].(map[string]any)["Column"] = map[string]any{"status": "supported", "valueJson": nil} + }}, + {"field extra", func(f map[string]any) { + draftResearch(f)["fields"].(map[string]any)["Column"] = map[string]any{"status": "supported", "extra": true} + }}, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + f := draftGenerated() + tc.change(f) + r, code := ValidateRetainedColumnDraftFrame("test", draftJSON(t, f), RetainedColumnDraftBase()) + if code != result.ExitInvalid || r.Diagnostics[0].Code != "input-malformed" || r.Frame != nil || r.Document != "" || r.Digest != "" { + t.Fatalf("malformed frame admitted: %+v", r) + } + }) + } + for _, raw := range [][]byte{nil, []byte(`{"contractVersion":"1","origin":"asserted","values":{"x":"1","\u0078":null},"research":null}`), []byte(`{"contractVersion":"1","origin":"asserted","values":{"x":"\ud800"},"research":null}`), []byte("\xff")} { + if r, code := ValidateRetainedColumnDraftFrame("test", raw, RetainedColumnDraftBase()); code == 0 || r.Frame != nil { + t.Fatal(r) + } + } +} + +func TestRetainedColumnDraftBounds(t *testing.T) { + // Limits count complete supplied serialized artifacts, including whitespace. + doc := draftJSON(t, draftDocument("text")) + exactDoc := append(append([]byte{}, doc...), bytes.Repeat([]byte(" "), RetainedColumnDraftDocumentBytes-len(doc))...) + if r, code := ValidateRetainedColumnDraft("test", exactDoc, RetainedColumnDraftBase()); code != 0 { + t.Fatal(r) + } + if r, code := Validate("test", exactDoc); code == 0 || r.Diagnostics[0].Code != "JPS-DIALECT-BYTE-LIMIT" { + t.Fatal("released document byte limit changed", r) + } + if r, code := ValidateRetainedColumnDraft("test", append(exactDoc, ' '), RetainedColumnDraftBase()); code == 0 || r.Diagnostics[0].Code != "input-over-bound" { + t.Fatal("Draft document byte bound missing", r) + } + frame := []byte(`{"contractVersion":"1","origin":"asserted","values":{},"research":null}`) + exactFrame := append(append([]byte{}, frame...), bytes.Repeat([]byte(" "), RetainedColumnDraftFrameBytes-len(frame))...) + if r, code := ValidateRetainedColumnDraftFrame("test", exactFrame, RetainedColumnDraftBase()); code != 0 { + t.Fatal(r) + } + if r, code := ValidateRetainedColumnDraftFrame("test", append(exactFrame, ' '), RetainedColumnDraftBase()); code == 0 || r.Diagnostics[0].Code != "input-over-bound" { + t.Fatal("frame byte bound missing", r) + } + // Existing document parser work budgets are independent of the new byte cap. + for _, tc := range []struct{ name, raw, want string }{ + {"nodes", `{"version":2,"case":{"facts":[],"evidence":[]},"x":[` + strings.Repeat("null,", MaxDocumentBytes) + `null]}`, "JPS-RESOURCE-NODE-LIMIT"}, + {"string", `{"version":2,"case":{"facts":[],"evidence":[]},"x":"` + strings.Repeat("x", MaxDocumentBytes+1) + `"}`, "JPS-RESOURCE-STRING-LIMIT"}, + {"depth", `{"version":2,"case":{"facts":[],"evidence":[]},"x":` + strings.Repeat("[", MaxDepth) + "null" + strings.Repeat("]", MaxDepth) + `}`, "JPS-RESOURCE-DEPTH-LIMIT"}, + } { + t.Run(tc.name, func(t *testing.T) { + r, code := ValidateRetainedColumnDraft("test", []byte(tc.raw), RetainedColumnDraftBase()) + if code == 0 || r.Diagnostics[0].Code != tc.want { + t.Fatalf("independent parser budget missing: %+v", r) + } + }) + } + for _, n := range []int{16000, 16001} { + f := draftGenerated() + f["values"].(map[string]any)["Column"] = strings.Repeat("x", n) + r, code := ValidateRetainedColumnDraftFrame("test", draftJSON(t, f), RetainedColumnDraftBase()) + if (code == 0) != (n == 16000) || code != 0 && r.Diagnostics[0].Code != "input-over-bound" { + t.Fatalf("raw column bound %d: %+v", n, r) + } + } + // UTF-8 byte ceilings, rather than rune counts, cover names and booleans. + for _, n := range []int{80, 81} { + d := draftDocument("boolean") + draftConversion(d)["column"] = strings.Repeat("é", n) + draftConversion(d)["trueValue"] = strings.Repeat("é", n) + r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()) + if (code == 0) != (n == 80) { + t.Fatalf("UTF8 bound %d: %+v", n, r) + } + } + for _, n := range []int{16384, 16385} { + f := draftGenerated() + base := `{"name":"Column","type":"number","opaque":""}` + draftEntry(f)["fieldJson"] = strings.Replace(base, `"opaque":""`, `"opaque":"`+strings.Repeat("x", n-len(base))+`"`, 1) + r, code := ValidateRetainedColumnDraftFrame("test", draftJSON(t, f), RetainedColumnDraftBase()) + if (code == 0) != (n == 16384) || code != 0 && r.Diagnostics[0].Code != "input-over-bound" { + t.Fatalf("fieldJson byte bound %d: %+v", n, r) + } + } + for _, depth := range []int{31, 32} { + f := draftGenerated() + draftEntry(f)["fieldJson"] = `{"name":"Column","type":"text","opaque":` + strings.Repeat("[", depth) + `null` + strings.Repeat("]", depth) + `}` + r, code := ValidateRetainedColumnDraftFrame("test", draftJSON(t, f), RetainedColumnDraftBase()) + if (code == 0) != (depth == 31) { + t.Fatalf("fieldJson depth %d: %+v", depth, r) + } + } + // Opaque typed data may exceed the 512KiB conversion parser limit; document + // admission does not execute that parser and cannot turn its issue into refusal. + f := draftGenerated() + large := strings.Repeat("x", 524289) + draftResearch(f)["fields"].(map[string]any)["Column"] = map[string]any{"status": "supported", "valueJson": large} + if r, code := ValidateRetainedColumnDraftFrame("test", draftJSON(t, f), RetainedColumnDraftBase()); code != 0 || *r.Frame.Research.Fields["Column"].ValueJSON != large { + t.Fatal("opaque retained raw was interpreted", r) + } + // All three complete inventories fit the independent frame node allowance. + f = draftGenerated() + values := map[string]any{} + fields := map[string]any{} + entries := []any{} + for i := 0; i < 1000; i++ { + name := fmt.Sprintf("c%d", i) + values[name] = "" + fields[name] = map[string]any{"status": "supported", "valueJson": "null"} + entries = append(entries, map[string]any{"name": name, "fieldJson": fmt.Sprintf(`{"name":"%s","type":"string"}`, name)}) + } + f["values"] = values + draftResearch(f)["fields"] = fields + draftDeclaration(f)["fields"] = entries + if r, code := ValidateRetainedColumnDraftFrame("test", draftJSON(t, f), RetainedColumnDraftBase()); code != 0 || len(r.Frame.Research.Declaration.Fields) != 1000 { + t.Fatal("complete inventories refused", r) + } + for _, part := range []string{"values", "fields", "declarations"} { + t.Run(part, func(t *testing.T) { + switch part { + case "values": + values["overflow"] = "" + defer delete(values, "overflow") + case "fields": + fields["overflow"] = map[string]any{"status": "missing"} + defer delete(fields, "overflow") + case "declarations": + draftDeclaration(f)["fields"] = append(entries, map[string]any{"name": "overflow", "fieldJson": `{"name":"overflow","type":"string"}`}) + defer func() { draftDeclaration(f)["fields"] = entries }() + } + r, code := ValidateRetainedColumnDraftFrame("test", draftJSON(t, f), RetainedColumnDraftBase()) + if code == 0 || r.Diagnostics[0].Code != "input-over-bound" { + t.Fatalf("inventory bound %s missing: %+v", part, r) + } + }) + } +} + +func TestRetainedColumnDraftPinnedCorpusAdmission(t *testing.T) { + raw, err := os.ReadFile("testdata/retained-column-draft/cases.json") + if err != nil { + t.Fatal(err) + } + var corpus struct { + Cases []struct { + ID string `json:"id"` + Kind string `json:"kind"` + InputJSON *string `json:"inputJson"` + InputState string `json:"inputState"` + Column string `json:"column"` + Origin string `json:"origin"` + Type *string `json:"type"` + Status string `json:"status"` + Rule map[string]any `json:"rule"` + Declaration json.RawMessage `json:"declaration"` + Undeclared bool `json:"undeclared"` + RevisionMismatch bool `json:"revisionMismatch"` + FieldEntryAbsent bool `json:"fieldEntryAbsent"` + } `json:"cases"` + } + if err := json.Unmarshal(raw, &corpus); err != nil { + t.Fatal(err) + } + if len(corpus.Cases) != 72 { + t.Fatal("pinned Draft admission coverage changed") + } + for _, c := range corpus.Cases { + t.Run(c.ID, func(t *testing.T) { + column := c.Column + if column == "" { + column = "Column" + } + kind := c.Kind + if kind == "evidence-availability" { + kind = "text" + } + d := draftDocument(kind) + conversion := draftConversion(d) + conversion["column"] = column + for k, v := range c.Rule { + conversion[k] = v + } + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()); code != 0 { + t.Fatal("pinned Draft document case refused", r) + } + f := map[string]any{"contractVersion": "1", "origin": "asserted", "values": map[string]any{}, "research": nil} + if c.Kind != "research-value" && c.InputJSON != nil { + var value any + if err := json.Unmarshal([]byte(*c.InputJSON), &value); err != nil { + t.Fatal(err) + } + f["values"].(map[string]any)[column] = value + } + if c.Origin == "generated" || c.Origin == "" && c.Kind == "research-value" { + f["origin"] = "generated" + typ := "text" + if c.Type != nil { + typ = *c.Type + } + entries := []any{} + if !c.Undeclared { + entries = append(entries, map[string]any{"name": column, "fieldJson": string(draftJSON(t, map[string]any{"name": column, "type": typ}))}) + } + 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 == "" || c.ID == "planned-research-zero-records" { + 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 + } + f["research"] = map[string]any{"recordRecipeRevision": "recipe:1", "declaration": declaration, "fields": fields} + } + if r, code := ValidateRetainedColumnDraftFrame("test", draftJSON(t, f), RetainedColumnDraftBase()); code != 0 { + t.Fatal("pinned Draft frame case refused", r) + } + }) + } +} + +func TestRetainedColumnDraftReleasedContractUnchanged(t *testing.T) { + contract := Contract("test") + raw := string(draftJSON(t, contract)) + if strings.Contains(raw, "conversionContracts") || strings.Contains(raw, "retained-column") || contract.Capabilities.MaxDocumentBytes != 131072 || contract.SpecRevision != SpecRevision { + t.Fatal("released contract advertises Draft", contract) + } + for _, version := range []int{2, 3} { + legacy, code := Init("test", version) + if code != 0 { + t.Fatal(legacy) + } + released, code := Validate("test", []byte(legacy.Document)) + if code != 0 { + t.Fatal(released) + } + draft, code := ValidateRetainedColumnDraft("test", []byte(legacy.Document), RetainedColumnDraftBase()) + if code != 0 || draft.Document != released.Document || draft.Digest != released.Digest { + t.Fatal("historical document identity changed", draft) + } + } +} + +func TestRetainedColumnDraftResearchFramePointer(t *testing.T) { + d := researchSample(t) + copy := sourceAt(d, 0)["read"].(map[string]any)["copy"].(map[string]any) + fact := copy["facts"].([]any)[0].(map[string]any) + fact["source"] = "/retained" + fact["conversion"] = map[string]any{"contractVersion": "1", "column": "OriginalColumn", "kind": "research-value"} + copy["evidence"] = []any{map[string]any{"requirement": "proof", "source": "/retained", "availability": map[string]any{"contractVersion": "1", "column": "OriginalColumn"}}} + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()); code != 0 { + t.Fatal("Draft research frame pointer refused", r) + } + // Ordinary copies keep current-research-field restrictions in both entries. + delete(fact, "conversion") + copy["evidence"] = []any{} + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()); code == 0 { + t.Fatal("ordinary research pointer restriction removed", r) + } + if r, code := Validate("test", draftJSON(t, d)); code == 0 { + t.Fatal("released research pointer restriction removed", r) + } + // Even a Draft leaf does not bypass malformed pointer or unwrap restrictions. + fact["conversion"] = map[string]any{"contractVersion": "1", "column": "OriginalColumn", "kind": "research-value"} + fact["source"] = "bad" + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()); code == 0 { + t.Fatal("Draft source syntax bypassed", r) + } + fact["source"] = "/retained" + sourceAt(d, 0)["read"].(map[string]any)["unwrap"] = []any{"/unknown"} + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()); code == 0 { + t.Fatal("ordinary research unwrap restriction removed", r) + } +} + +func TestRetainedColumnDraftPinnedFieldIdentity(t *testing.T) { + raw, err := os.ReadFile("testdata/retained-column-draft/cases.json") + if err != nil { + t.Fatal(err) + } + var corpus struct { + Cases []struct { + ID string `json:"id"` + Request struct { + Lineage json.RawMessage `json:"lineage"` + } `json:"request"` + Expected struct { + Identity struct { + Revision string `json:"recipeRevision"` + Hash string `json:"fieldSha256"` + } `json:"researchIdentity"` + } `json:"expected"` + } `json:"interfaceCases"` + } + if err := json.Unmarshal(raw, &corpus); err != nil { + t.Fatal(err) + } + count := 0 + for _, c := range corpus.Cases { + if c.Expected.Identity.Hash == "" { + continue + } + t.Run(c.ID, func(t *testing.T) { + var lineage struct { + Frame json.RawMessage `json:"frame"` + } + if err := json.Unmarshal(c.Request.Lineage, &lineage); err != nil { + t.Fatal(err) + } + r, code := ValidateRetainedColumnDraftFrame("test", lineage.Frame, RetainedColumnDraftBase()) + if code != 0 { + t.Fatal(r) + } + if r.Frame.Research.RecordRecipeRevision != c.Expected.Identity.Revision || r.Frame.Research.Declaration.Fields[0].FieldSHA256 != c.Expected.Identity.Hash { + t.Fatal("original declaration identity differs from pinned handwritten vector", r.Frame) + } + }) + count++ + } + if count != 4 { + t.Fatal("pinned field identity vectors changed", count) + } +} + +func draftExtended() RetainedColumnDraftSelection { + s := RetainedColumnDraftBase() + s.Profile = "extended" + return s +} + +func draftOperation(name string) map[string]any { + return map[string]any{"name": name, "kind": "operation", "profile": "input", "profileDigest": "sha256:" + strings.Repeat("a", 64), "maxAge": 1, "arguments": map[string]any{}, "read": map[string]any{"copy": map[string]any{"facts": []any{}, "evidence": []any{}}}} +} + +func draftExtendedDocument() map[string]any { + return map[string]any{"version": 2, "profile": "extended", "case": map[string]any{"facts": []any{}, "evidence": []any{}}} +} + +func draftRule(clauses, conditions int) map[string]any { + list := []any{} + for i := 0; i < clauses; i++ { + when := map[string]any{"op": "always"} + if i == 0 && conditions > 0 { + of := []any{} + for j := 0; j < conditions; j++ { + of = append(of, map[string]any{"op": "exists", "field": "/value"}) + } + when = map[string]any{"op": "all", "of": of} + } + list = append(list, map[string]any{"when": when, "claim": map[string]any{"facts": []any{}, "evidence": map[string]any{}, "acquisitionStatus": "unknown"}, "reason": ""}) + } + return map[string]any{"ruleVersion": "1", "parameters": map[string]any{}, "clauses": list} +} + +func TestRetainedColumnDraftExtendedStructuralCeilings(t *testing.T) { + cases := []struct { + name string + max int + make func(int) map[string]any + }{ + {"sources", 32, func(n int) map[string]any { + d := draftExtendedDocument() + sources := []any{} + for i := 0; i < n; i++ { + sources = append(sources, draftOperation(fmt.Sprint("s", i))) + } + d["sources"] = sources + return d + }}, + {"parameters", 128, func(n int) map[string]any { + d := draftExtendedDocument() + params := map[string]any{} + for i := 1; i < n; i++ { + params[fmt.Sprint("p", i)] = map[string]any{"pointer": "/value", "type": "integer"} + } + d["case"].(map[string]any)["parameters"] = params + return d + }}, + {"fact_targets", 512, func(n int) map[string]any { + d := draftExtendedDocument() + facts := []any{} + for i := 0; i < n; i++ { + facts = append(facts, map[string]any{"target": fmt.Sprint("/f", i), "source": "/retained", "conversion": map[string]any{"contractVersion": "1", "column": "Column", "kind": "boolean", "trueValue": "YES", "falseValue": "NO"}}) + } + d["case"].(map[string]any)["facts"] = facts + return d + }}, + {"evidence_targets", 256, func(n int) map[string]any { + d := draftExtendedDocument() + evidence := []any{} + for i := 0; i < n; i++ { + evidence = append(evidence, map[string]any{"requirement": fmt.Sprint("e", i), "source": "/retained", "availability": map[string]any{"contractVersion": "1", "column": "Column"}}) + } + d["case"].(map[string]any)["evidence"] = evidence + return d + }}, + {"unwrap", 8, func(n int) map[string]any { + d := draftExtendedDocument() + s := draftOperation("s") + unwrap := []any{} + for i := 0; i < n; i++ { + unwrap = append(unwrap, "") + } + s["read"].(map[string]any)["unwrap"] = unwrap + d["sources"] = []any{s} + return d + }}, + {"clauses", 128, func(n int) map[string]any { + d := draftExtendedDocument() + s := draftOperation("s") + s["read"] = map[string]any{"rule": draftRule(n, 0)} + d["sources"] = []any{s} + return d + }}, + {"conditions", 128, func(n int) map[string]any { + d := draftExtendedDocument() + s := draftOperation("s") + s["read"] = map[string]any{"rule": draftRule(2, n)} + d["sources"] = []any{s} + return d + }}, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + d := tc.make(tc.max) + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), draftExtended()); code != 0 { + t.Fatal("extended boundary refused", r) + } + d["profile"] = "base" + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()); code == 0 || r.Diagnostics[0].Code != "input-over-bound" { + t.Fatal("base ceiling widened", r) + } + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, tc.make(tc.max+1)), draftExtended()); code == 0 || r.Diagnostics[0].Code != "input-over-bound" { + t.Fatal("extended ceiling missing", r) + } + }) + } +} + +func TestRetainedColumnDraftExtendedResearchCeilings(t *testing.T) { + cases := []struct { + name string + max int + set func(map[string]any, int) + }{ + {"fields", 128, func(s map[string]any, n int) { + fields := []any{} + for i := 0; i < n; i++ { + name := "retention" + if i > 0 { + name = fmt.Sprint("field", i) + } + fields = append(fields, map[string]any{"name": name, "type": "integer", "required": true, "description": "Field."}) + } + s["fields"] = fields + }}, + {"field_name", 128, func(s map[string]any, n int) { + s["fields"].([]any)[0].(map[string]any)["name"] = strings.Repeat("x", n) + s["read"] = map[string]any{"copy": map[string]any{"facts": []any{}, "evidence": []any{}}} + }}, + {"description", 4096, func(s map[string]any, n int) { + s["fields"].([]any)[0].(map[string]any)["description"] = strings.Repeat("x", n) + }}, + {"model", 512, func(s map[string]any, n int) { s["model"] = strings.Repeat("x", n) }}, + {"instruction", 8192, func(s map[string]any, n int) { s["evidence"] = []any{strings.Repeat("x", n)} }}, + } + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + makeDoc := func(n int) map[string]any { + d := researchSample(t) + d["profile"] = "extended" + delete(d, "admits") + tc.set(sourceAt(d, 0), n) + return d + } + d := makeDoc(tc.max) + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), draftExtended()); code != 0 { + t.Fatal("extended research boundary refused", r) + } + d["profile"] = "base" + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()); code == 0 || r.Diagnostics[0].Code != "input-over-bound" { + t.Fatal("base research ceiling widened", r) + } + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, makeDoc(tc.max+1)), draftExtended()); code == 0 || r.Diagnostics[0].Code != "input-over-bound" { + t.Fatal("extended research ceiling missing", r) + } + }) + } + // A larger resource ceiling invents no capability names or repeated assignments. + d := researchSample(t) + d["profile"] = "extended" + sourceAt(d, 0)["capabilities"] = []any{"answer", "search", "page", "answer"} + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), draftExtended()); code == 0 || r.Diagnostics[0].Code != "input-malformed" { + t.Fatal("closed capability vocabulary widened", r) + } +} + +func TestRetainedColumnDraftExtendedIdentityAndWork(t *testing.T) { + d := draftExtendedDocument() + d["formatVersion"], d["id"], d["version"] = "2.0.0", strings.Repeat("x", 2048), "1.0.0" + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), draftExtended()); code != 0 || r.ArtifactID != d["id"] { + t.Fatal("extended artifact ID refused", r) + } + d["id"] = strings.Repeat("x", 2049) + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), draftExtended()); code == 0 || r.Diagnostics[0].Code != "JPS-DIALECT-ID" { + t.Fatal("extended artifact ID ceiling missing", r) + } + // Nested operation arguments exercise the actual document parser and template walk. + for _, depth := range []int{128, 129} { + // root, sources array, source object, arguments object account for four levels. + raw := `{"version":2,"profile":"extended","case":{"facts":[],"evidence":[]},"sources":[{"name":"s","kind":"operation","profile":"p","profileDigest":"sha256:` + strings.Repeat("a", 64) + `","maxAge":1,"arguments":{"value":` + strings.Repeat("[", depth-4) + `0` + strings.Repeat("]", depth-4) + `},"read":{"copy":{"facts":[],"evidence":[]}}}]}` + r, code := ValidateRetainedColumnDraft("test", []byte(raw), draftExtended()) + if (code == 0) != (depth == 128) || code != 0 && r.Diagnostics[0].Code != "JPS-RESOURCE-DEPTH-LIMIT" { + t.Fatal("extended depth boundary changed", depth, r) + } + } + for _, n := range []int{RetainedColumnDraftExtendedStringBytes, RetainedColumnDraftExtendedStringBytes + 1} { + d := draftExtendedDocument() + s := draftOperation("s") + s["arguments"].(map[string]any)["value"] = strings.Repeat("x", n) + d["sources"] = []any{s} + r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), draftExtended()) + if (code == 0) != (n == RetainedColumnDraftExtendedStringBytes) || code != 0 && r.Diagnostics[0].Code != "JPS-RESOURCE-STRING-LIMIT" { + t.Fatal("extended string work budget changed", n, r) + } + } + // Carrier counts values and containers, not keys. This document has exactly + // 19 nodes before its argument-array elements, derived from its written shape. + for _, n := range []int{RetainedColumnDraftExtendedNodes - 19, RetainedColumnDraftExtendedNodes - 18} { + raw := `{"version":2,"profile":"extended","case":{"facts":[],"evidence":[]},"sources":[{"name":"s","kind":"operation","profile":"p","profileDigest":"sha256:` + strings.Repeat("a", 64) + `","maxAge":1,"arguments":{"value":[` + strings.Repeat("0,", n-1) + `0]},"read":{"copy":{"facts":[],"evidence":[]}}}]}` + r, code := ValidateRetainedColumnDraft("test", []byte(raw), draftExtended()) + if (code == 0) != (n == RetainedColumnDraftExtendedNodes-19) || code != 0 && r.Diagnostics[0].Code != "JPS-RESOURCE-NODE-LIMIT" { + t.Fatal("extended node work boundary changed", n, r) + } + } + // Same valid document with explicit and absent base declarations has distinct identity. + base := draftDocument("text") + a, code := ValidateRetainedColumnDraft("test", draftJSON(t, base), RetainedColumnDraftBase()) + if code != 0 { + t.Fatal(a) + } + base["profile"] = "base" + b, code := ValidateRetainedColumnDraft("test", draftJSON(t, base), RetainedColumnDraftBase()) + if code != 0 || a.Digest == b.Digest { + t.Fatal("profile declaration identity changed", b) + } + for _, selection := range []RetainedColumnDraftSelection{RetainedColumnDraftBase(), draftExtended()} { + doc := draftExtendedDocument() + if selection.Profile == "extended" { + delete(doc, "profile") + } + if r, code := ValidateRetainedColumnDraft("test", draftJSON(t, doc), selection); code == 0 || r.Diagnostics[0].Code != "input-malformed" { + t.Fatal("trusted/document profile mismatch admitted", r) + } + } +} + +func TestRetainedColumnDraftExtendedByteBounds(t *testing.T) { + doc := draftJSON(t, draftExtendedDocument()) + exact := append(append([]byte{}, doc...), bytes.Repeat([]byte(" "), RetainedColumnDraftExtendedDocumentBytes-len(doc))...) + if r, code := ValidateRetainedColumnDraft("test", exact, draftExtended()); code != 0 || r.Limits.DocumentBytes != 2097152 { + t.Fatal("extended document boundary refused", r) + } + if r, code := ValidateRetainedColumnDraft("test", append(exact, ' '), draftExtended()); code == 0 || r.Diagnostics[0].Code != "input-over-bound" { + t.Fatal("extended document byte bound missing", r) + } + frame := []byte(`{"contractVersion":"1","origin":"asserted","values":{},"research":null}`) + exact = append(append([]byte{}, frame...), bytes.Repeat([]byte(" "), RetainedColumnDraftExtendedFrameBytes-len(frame))...) + if r, code := ValidateRetainedColumnDraftFrame("test", exact, draftExtended()); code != 0 || r.Limits.FrameBytes != 4194304 { + t.Fatal("extended frame boundary refused", r) + } + if r, code := ValidateRetainedColumnDraftFrame("test", append(exact, ' '), draftExtended()); code == 0 || r.Diagnostics[0].Code != "input-over-bound" { + t.Fatal("extended frame byte bound missing", r) + } + // The large opaque member is retained exactly and never parsed as JSON. + f := draftGenerated() + large := strings.Repeat("x", RetainedColumnDraftFrameBytes+1) + draftResearch(f)["fields"].(map[string]any)["Column"] = map[string]any{"status": "supported", "valueJson": large} + if r, code := ValidateRetainedColumnDraftFrame("test", draftJSON(t, f), draftExtended()); code != 0 || *r.Frame.Research.Fields["Column"].ValueJSON != large { + t.Fatal("extended opaque string interpreted or clipped", r) + } + if r, code := ValidateRetainedColumnDraftFrame("test", draftJSON(t, f), RetainedColumnDraftBase()); code == 0 || r.Diagnostics[0].Code != "input-over-bound" { + t.Fatal("base frame widened", r) + } +} + +func TestRetainedColumnDraftExtendedReconciliation(t *testing.T) { + for _, n := range []int{30, 31} { + d := researchSample(t) + d["profile"] = "extended" + delete(d, "admits") + sources, names := []any{}, []any{} + for i := 0; i < n; i++ { + s := sourceAt(researchSample(t), 0) + name := fmt.Sprint("r", i) + s["name"] = name + s["read"] = map[string]any{"copy": map[string]any{"facts": []any{}, "evidence": []any{}}} + sources = append(sources, s) + names = append(names, name) + } + last := sourceAt(researchSample(t), 0) + last["name"] = "reconciled" + last["read"] = map[string]any{"sources": names, "rule": draftRule(1, 0)} + d["sources"] = append(sources, last) + r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), draftExtended()) + if (code == 0) != (n == 30) || code != 0 && (r.Diagnostics[0].Code != "input-over-bound" || r.Diagnostics[0].InstancePath != "/sources/31/read/sources") { + t.Fatal("earlier reconciliation source boundary changed", n, r) + } + } +} + +func TestRetainedColumnDraftExtendedAggregateTargets(t *testing.T) { + for _, evidence := range []bool{false, true} { + max := 512 + if evidence { + max = 256 + } + for _, n := range []int{max, max + 1} { + d := draftExtendedDocument() + s := draftOperation("s") + d["sources"] = []any{s} + c := d["case"].(map[string]any) + other := s["read"].(map[string]any)["copy"].(map[string]any) + for i := 0; i < n; i++ { + dest := c + if i >= max/2 { + dest = other + } + if evidence { + dest["evidence"] = append(dest["evidence"].([]any), map[string]any{"requirement": fmt.Sprint("e", i), "source": ""}) + } else { + dest["facts"] = append(dest["facts"].([]any), map[string]any{"target": fmt.Sprint("/f", i), "source": ""}) + } + } + r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), draftExtended()) + if (code == 0) != (n == max) || code != 0 && (r.Diagnostics[0].Code != "input-over-bound" || r.Diagnostics[0].InstancePath != "") { + t.Fatal("aggregate target ceiling changed", evidence, n, r) + } + } + } +} + +func TestRetainedColumnDraftMaximumEscapedPolicies(t *testing.T) { + for _, profile := range []string{"base", "extended"} { + selection := RetainedColumnDraftBase() + factsMax, evidenceMax := 256, 128 + if profile == "extended" { + selection = draftExtended() + factsMax, evidenceMax = 512, 256 + } + d := draftExtendedDocument() + d["profile"] = profile + c := d["case"].(map[string]any) + for i := 0; i < factsMax; i++ { + distinct := strings.Repeat("\x00", 157) + fmt.Sprintf("%03d", i) + c["facts"] = append(c["facts"].([]any), map[string]any{"target": fmt.Sprint("/f", i), "source": "/retained", "conversion": map[string]any{"contractVersion": "1", "column": distinct, "kind": "boolean", "trueValue": distinct, "falseValue": strings.Repeat("\x01", 160)}}) + } + for i := 0; i < evidenceMax; i++ { + c["evidence"] = append(c["evidence"].([]any), map[string]any{"requirement": strings.Repeat("\x00", 157) + fmt.Sprintf("%03d", i), "source": "/retained", "availability": map[string]any{"contractVersion": "1", "column": strings.Repeat("\x00", 160)}}) + } + raw := draftJSON(t, d) + r, code := ValidateRetainedColumnDraft("test", raw, selection) + if code != 0 || len(raw) <= 262144 { + t.Fatal("maximum escaped policies refused", profile, len(raw), r) + } + } +} diff --git a/internal/dialect/retained_column_entry_test.go b/internal/dialect/retained_column_entry_test.go new file mode 100644 index 0000000..7612e48 --- /dev/null +++ b/internal/dialect/retained_column_entry_test.go @@ -0,0 +1,180 @@ +package dialect + +import ( + "bytes" + "encoding/json" + "fmt" + "reflect" + "strings" + "testing" + + "github.com/Judgment-Pack/judgment-pack-runtime/internal/result" + "github.com/Judgment-Pack/judgment-pack-runtime/internal/validation" +) + +func TestRetainedColumnEntryPackTargets(t *testing.T) { + engine, err := validation.NewEngine() + if err != nil { + t.Fatal(err) + } + pack := checkPack(t, "/converted", true) + for _, kind := range []string{"text", "decimal", "number", "boolean", "research-value"} { + for _, version := range []int{2, 3} { + for _, named := range []bool{false, true} { + t.Run(fmt.Sprintf("%s/%d/%v", kind, version, named), func(t *testing.T) { + d := draftDocument(kind) + d["version"] = version + d["case"].(map[string]any)["evidence"].([]any)[0].(map[string]any)["requirement"] = "receipt" + if named { + d["formatVersion"] = fmt.Sprintf("%d.0.0", version) + d["id"] = "urn:test:converted" + d["version"] = "1.0.0" + } + r, code := CheckRetainedColumnDraft("test", draftJSON(t, d), pack, engine, RetainedColumnDraftBase()) + if code != 0 || r.Status != "complete" || r.Compatibility == nil || !reflect.DeepEqual(r.Compatibility.Facts, []CoverageEntry{{Target: "/converted", Status: "mapped", Producers: []string{"/converted"}, AcknowledgedBy: []string{}}}) || !reflect.DeepEqual(r.Compatibility.Evidence, []CoverageEntry{{Target: "receipt", Status: "mapped", Producers: []string{"receipt"}, AcknowledgedBy: []string{}}}) { + t.Fatalf("converted targets did not reach ordinary inventory: code=%d %+v", code, r) + } + if r.Compatibility.ValueTypesChecked || r.Compatibility.ExecutionChecked || !r.Compatibility.InventoryOverApproximates || r.FullDocumentConformance || r.Maturity != "experimental-draft" || r.Spec.Revision != RetainedColumnDraftRevision { + t.Fatal("overstated Draft check", r) + } + encoded, code := EncodeRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()) + if code != 0 || encoded.Document != r.Document || encoded.Digest != r.Digest || encoded.ValidationScope != "experimental-retained-column-base-encoding-only" { + t.Fatal("checked canonical identity drift", encoded, r) + } + }) + } + } + } + // A converted read in a real operation source reaches the same coverage walk. + d := sampleDocument(t) + first := sourceAt(d, 0)["read"].(map[string]any)["copy"].(map[string]any) + first["facts"].([]any)[0].(map[string]any)["conversion"] = draftConversion(draftDocument("text")) + r, code := CheckRetainedColumnDraft("test", draftJSON(t, d), checkPack(t, "/first", false), engine, RetainedColumnDraftBase()) + // Other sample evidence targets remain undeclared in this pack and keep the + // ordinary incomplete result; the converted source fact must still be mapped. + if code != 1 || r.Status != "incomplete" || r.Compatibility == nil || r.Compatibility.Facts[0].Target != "/first" || r.Compatibility.Facts[0].Status != "mapped" { + t.Fatal("source converted target lost", code, r) + } +} + +func TestRetainedColumnEntrySelectionBeforeAdmission(t *testing.T) { + engine, _ := validation.NewEngine() + for _, tc := range []struct{ selector, profile, want string }{ + {"", "base", "capability-unsupported"}, {"retained-column/1", "base", "capability-unsupported"}, {RetainedColumnDraftSelector + "extra", "base", "capability-unsupported"}, + {RetainedColumnDraftSelector, "", "input-malformed"}, {RetainedColumnDraftSelector, "unknown", "input-malformed"}, + } { + r, selection, code := SelectRetainedColumnDraft("test", tc.selector, tc.profile) + if code == 0 || r.Diagnostics[0].Code != tc.want { + t.Fatal("public selector admitted", r) + } + checked, code := CheckRetainedColumnDraft("test", []byte("{"), bytes.Repeat([]byte("x"), int(MaxPackBytes)+1), engine, selection) + if code == 0 || checked.Diagnostics[0].Code != tc.want || checked.PackValidation != nil || checked.Compatibility != nil { + t.Fatal("selection did not precede artifacts", checked) + } + } + r, code := ContractRetainedColumnDraft("test", RetainedColumnDraftBase()) + raw, _ := json.Marshal(r) + var wire map[string]any + json.Unmarshal(raw, &wire) + caps := wire["capabilities"].(map[string]any) + entries := caps["conversionContracts"].([]any) + entry := entries[0].(map[string]any) + if code != 0 || len(entries) != 1 || len(entry) != 5 || entry["contract"] != "retained-column/1" || entry["role"] != "document-validation" || entry["profile"] != "base" || len(entry["limits"].(map[string]any)) != 2 || strings.Contains(string(raw), "preparationBytes") || strings.Contains(string(raw), "combinedBytes") { + t.Fatal("unsupported capability claim", string(raw)) + } + old, _ := json.Marshal(Contract("test")) + if strings.Contains(string(old), "conversionContracts") || strings.Contains(string(old), "retained-column") { + t.Fatal("legacy default changed", string(old)) + } +} + +func TestRetainedColumnEntryCheckRefusals(t *testing.T) { + engine, _ := validation.NewEngine() + pack := checkPack(t, "/converted", false) + for _, tc := range []struct { + name string + change func(map[string]any) + }{ + {"unknown kind", func(d map[string]any) { draftConversion(d)["kind"] = "future" }}, + {"unknown version", func(d map[string]any) { draftConversion(d)["contractVersion"] = "2" }}, + {"unknown key", func(d map[string]any) { draftConversion(d)["extra"] = true }}, + {"mixed quality", func(d map[string]any) { draftFact(d)["qualityTarget"] = "/quality" }}, + {"mixed copy", func(d map[string]any) { + draftFact(d)["availability"] = map[string]any{"contractVersion": "1", "column": "Column"} + }}, + {"overlap", func(d map[string]any) { + c := d["case"].(map[string]any) + c["facts"] = append(c["facts"].([]any), map[string]any{"target": "/converted/child", "source": "/v"}) + }}, + } { + t.Run(tc.name, func(t *testing.T) { + d := draftDocument("boolean") + tc.change(d) + r, code := CheckRetainedColumnDraft("test", draftJSON(t, d), pack, engine, RetainedColumnDraftBase()) + if code != result.ExitInvalid || r.Diagnostics[0].Code != "input-malformed" || r.Compatibility != nil || r.PackValidation != nil || r.Digest != "" { + t.Fatal("invalid converted document reached pack", r) + } + }) + } + d := draftDocument("text") + d["case"].(map[string]any)["evidence"] = []any{} + for _, tc := range []struct { + name string + pack []byte + want string + }{ + {"invalid", []byte("{"), "JPS-DIALECT-PACK-INVALID"}, + {"unsupported", []byte(`{"specVersion":"future"}`), "JPS-DIALECT-PACK-INVALID"}, + {"oversized", bytes.Repeat([]byte(" "), int(MaxPackBytes)+1), "JPS-DIALECT-PACK-BYTE-LIMIT"}, + } { + t.Run(tc.name, func(t *testing.T) { + r, code := CheckRetainedColumnDraft("test", draftJSON(t, d), tc.pack, engine, RetainedColumnDraftBase()) + if code == 0 || r.Diagnostics[0].Code != tc.want || r.Compatibility != nil { + t.Fatal("pack gate bypassed", r) + } + }) + } + // Actual inventory mismatch remains incomplete; declaring a different target cannot satisfy it. + r, code := CheckRetainedColumnDraft("test", draftJSON(t, d), checkPack(t, "/missing", false), engine, RetainedColumnDraftBase()) + if code != 1 || r.Status != "incomplete" || r.Compatibility.Facts[0].Status != "missing" { + t.Fatal("coverage was fabricated", r) + } +} + +func TestRetainedColumnEntryCanonicalAndLegacyIdentity(t *testing.T) { + base := draftDocument("boolean") + first, code := EncodeRetainedColumnDraft("test", draftJSON(t, base), RetainedColumnDraftBase()) + if code != 0 { + t.Fatal(first) + } + for _, change := range []func(map[string]any){ + func(d map[string]any) { draftConversion(d)["trueValue"] = "Yes" }, + func(d map[string]any) { + draftConversion(d)["kind"] = "text" + delete(draftConversion(d), "trueValue") + delete(draftConversion(d), "falseValue") + }, + func(d map[string]any) { draftFact(d)["source"] = "/other" }, + func(d map[string]any) { draftConversion(d)["column"] = "Other" }, + } { + d := draftDocument("boolean") + change(d) + r, code := ValidateRetainedColumnDraft("test", draftJSON(t, d), RetainedColumnDraftBase()) + if code != 0 || r.Digest == first.Digest || r.Document == first.Document { + t.Fatal("conversion policy omitted from identity", r) + } + } + // These exact historical bytes and canonical identities are handwritten. + for _, raw := range []string{ + `{"case":{"evidence":[],"facts":[{"source":"/raw","target":"/value"}]},"version":2}`, + `{"case":{"evidence":[],"facts":[{"source":"/raw","target":"/value"}]},"version":3}`, + `{"case":{"evidence":[],"facts":[{"source":"/raw","target":"/value"}]},"formatVersion":"2.0.0","id":"urn:test:old","version":"1.2.3"}`, + `{"case":{"evidence":[],"facts":[{"source":"/raw","target":"/value"}]},"formatVersion":"3.0.0","id":"urn:test:old","version":"1.2.3"}`, + } { + old, oldCode := Validate("test", []byte(raw)) + fresh, freshCode := ValidateRetainedColumnDraft("test", []byte(raw), RetainedColumnDraftBase()) + if oldCode != 0 || freshCode != 0 || old.Document != raw || fresh.Document != raw || old.Digest != retainedDraftDigest(raw) || fresh.Digest != old.Digest { + t.Fatal("historical identity changed", old, fresh) + } + } +} diff --git a/internal/dialect/testdata/retained-column-draft/README.md b/internal/dialect/testdata/retained-column-draft/README.md new file mode 100644 index 0000000..93fd7dc --- /dev/null +++ b/internal/dialect/testdata/retained-column-draft/README.md @@ -0,0 +1,85 @@ +# Experimental retained-column Draft document reader + +`contract.schema.json` and `cases.json` are byte-exact test inputs from Spec commit +`ade3914b0b81ef299e5b9a8d6147f37ff3f0976c`, under +`rfcs/retained-column-conversion/`. They are Draft artifacts, never embedded or +served by the released Dialect schema/resource tools. Source: +https://github.com/Judgment-Pack/judgment-pack-spec/tree/ade3914b0b81ef299e5b9a8d6147f37ff3f0976c/rfcs/retained-column-conversion + +SHA-256: + +- Schema: `996cec17473987eebf1aa553536df0ce5a740971532567f411282ee70036879f` +- Corpus: `e2ac53f56cd5ab779e032d2847b49fa04438ffb9df57d456f75f2ba058dc12d2` + +The explicit internal `ValidateRetainedColumnDraft` and +`ValidateRetainedColumnDraftFrame` entries require the exact trusted Draft selector. +They check document syntax/identity, copy variants, declarations, target ownership, +ordinary references and retained-frame structure. The trusted selection must match +the document's explicit `profile`; absence still means base. The conditional Draft +limits are base document 1048576/frame 2097152 and extended document 2097152/frame +4194304. These are experimental admission limits, not adopted combined-carrier +accounting or a production capability report. + +Base parser depth 64, document node and individual-string budgets 131072 remain +independent and unchanged. Extended uses depth 128, nodes 147456 and individual +strings 262144. The carrier counts values and containers, not member keys. An old +262144-byte extended document needs at most 131072 such nodes; each new boolean +conversion adds at most six, each availability adds three. The 512/256 target +ceilings add at most 3840 nodes and the profile adds one. A separate 16384-node +reserve covers that growth without deriving work from the enlarged byte cap. +The string ceiling preserves any string in the original extended byte envelope. + +All applicable Core extended document rows are checked: sources, parameters, +clauses, conditions, unwrap pointers, fact/evidence targets, research declaration +counts and string limits, reconciliation inputs and artifact IDs. Closed grammar, +canonical numeric domains and fixed conversion spelling/type limits are retained. +Acquisition results, answers, profiles/bindings, preparation/record sizes and +combined-carrier accounting remain outside these document/frame entries; no full +profile conformance or public extended capability is claimed. + +Closed frames need at most 7011 nodes under either profile: root and container +scaffolding, 1000 values, 1000 three-node declaration entries and 1000 three-node +field entries. Their reader permits 8192. Opaque `valueJson` strings may occupy +the selected frame envelope and are never recursively parsed or converted. Each +`fieldJson` stays bounded at 16384 UTF-8 bytes before parsing, with depth 32 and +at most 16384 nodes. This preserves original numbers and exact declaration text. + +The 72 pinned conversion cases exercise actual document and standalone frame +admission only. Their preview/claim outputs are not evaluated by Runtime. Empty +or unknown original types, unavailable declarations, mismatched revisions, +malformed typed value JSON and legacy escaped surrogates remain inspectable; +Runner must apply the ordered per-record conversion diagnostics. The inspected +frame distinguishes absent, historical null and exact raw strings. Its report +retains the complete original frame text and hashes those supplied UTF-8 bytes; +`fieldJson` identity separately hashes the exact original declaration string. +No original source, receipt or declaration-inventory authenticity is inferred. + +Default Contract/Validate/CLI/MCP and released schemas remain unchanged. The entry +is not capability negotiation: in particular it does not resolve the Draft +reader's omitted `capabilities.conversionContracts` diagnostic mismatch. It cannot +authorize acquisition, conversion, preview, preparation, provenance verification, +producer restoration or full-envelope compatibility. Those owners and normative +adoption remain prerequisites for Agent #171. + +This is an experimental, unreviewed Draft candidate pin, not an adopted or released dependency. Final integration requires the reviewed immutable identity and matching artifacts. + +The selected Draft MCP report text uses literal HTML JSON encoding, matching the +outer structured encoder. Both `structuredContent` and `content[].text` carry the +same report, including the exact original frame text and digest. Applying an +optional second HTML escape pass to the text report can amplify an admitted Base +frame beyond the client line budget; ordinary tool serialization is unchanged. +The transport tests consume the complete escaped request and both report forms. +They distinguish handwritten projected old-source families from independent +full-frame grammar stress cases, and from whitespace used only to reach an exact +byte ceiling. The pinned Desk/Agent pack domain is 1 MiB; Runtime's ordinary +10 MiB decoded pack cap and 16 MiB incoming MCP line cap remain separate limits. + +Standalone frame wire reports retain all exact original data once per report in +`document`, with its exact digest and bounded `frameSummary` counts. Parsing that +original text reconstructs every value, status, declaration and escape spelling. +The complete typed Frame remains available internally in Go and is not repeated +in JSON. Both MCP report representations remain equivalent. With Base frame F, +JSON quoting of valid original JSON costs at most 2F; quoting that report text +again costs at most 4F. The complete dual response therefore fits 6F plus bounded +fixed report/summary metadata, below 16 MiB for F=2 MiB. This does not establish a +full Extended response guarantee or change ordinary transport/report defaults. diff --git a/internal/dialect/testdata/retained-column-draft/cases.json b/internal/dialect/testdata/retained-column-draft/cases.json new file mode 100644 index 0000000..6f0e6b9 --- /dev/null +++ b/internal/dialect/testdata/retained-column-draft/cases.json @@ -0,0 +1,18115 @@ +{ + "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\":\"é\"}", + "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\":\"é\"}", + "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" + } + } + ] +} diff --git a/internal/dialect/testdata/retained-column-draft/contract.schema.json b/internal/dialect/testdata/retained-column-draft/contract.schema.json new file mode 100644 index 0000000..f006154 --- /dev/null +++ b/internal/dialect/testdata/retained-column-draft/contract.schema.json @@ -0,0 +1,1456 @@ +{ + "$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 + }, + "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": 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 + } + ] + }, + "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 + } + }, + "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" + } + ] +} diff --git a/internal/dialect/validate.go b/internal/dialect/validate.go index 8fc0112..ab37420 100644 --- a/internal/dialect/validate.go +++ b/internal/dialect/validate.go @@ -24,7 +24,19 @@ func invalidDocument(r Report, code, path, message string, exit int) (Report, *d } func validateDocument(command string, data []byte) (Report, *documentCheck, int) { - r, code := Encode(command, data) + return validateDocumentWithLimits(command, data, MaxDocumentBytes, documentLimits(), false) +} + +func validateDocumentWithLimits(command string, data []byte, maxBytes int, limits carrier.Limits, retainedDraft bool) (Report, *documentCheck, int) { + return validateDocumentWithProfile(command, data, maxBytes, limits, retainedDraft, "base") +} + +func validateDocumentWithProfile(command string, data []byte, maxBytes int, limits carrier.Limits, retainedDraft bool, profile string) (Report, *documentCheck, int) { + maxIDBytes := 1024 + if retainedDraft && profile == "extended" { + maxIDBytes = 2048 + } + r, code := encodeDocumentWithIDLimit(command, data, maxBytes, limits, maxIDBytes) if r.DialectVersion != 0 { r.ValidationScope = "version-" + strconv.Itoa(r.DialectVersion) + "-document" } @@ -33,11 +45,11 @@ func validateDocument(command string, data []byte) (Report, *documentCheck, int) } // Encode has already bounded and checked the carrier. Keep json.Number here // too; validation must never round a retained integer through float64. - value, failure := carrier.Decode(data, carrier.Limits{MaxDepth: MaxDepth, MaxNodes: MaxDocumentBytes, MaxStringBytes: MaxDocumentBytes}) + value, failure := carrier.Decode(data, limits) if failure != nil { return invalidDocument(r, "JPS-DIALECT-DOCUMENT", "", "The dialect could not be read.", result.ExitInvalid) } - v := documentCheck{version: r.DialectVersion, named: r.FormatVersion != ""} + v := documentCheck{version: r.DialectVersion, named: r.FormatVersion != "", retainedDraft: retainedDraft, extended: retainedDraft && profile == "extended"} v.document(value) if v.issue != nil { code := result.ExitInvalid @@ -51,6 +63,8 @@ func validateDocument(command string, data []byte) (Report, *documentCheck, int) } type documentCheck struct { + retainedDraft bool + extended bool named bool version int issue *result.Diagnostic @@ -62,6 +76,14 @@ type documentCheck struct { type target struct{ name, path string } type readTargets struct{ facts, evidence []target } +// ceiling applies only Core's resource rows, never fixed grammar or numeric domains. +func (v *documentCheck) ceiling(base int) int { + if v.extended { + return base * 2 + } + return base +} + func (v *documentCheck) fail(path, message string) { v.refuse("JPS-DIALECT-FORM", path, message) } @@ -178,6 +200,9 @@ func (v *documentCheck) pointer(value any, path string, target bool) string { func (v *documentCheck) document(value any) { optional := []string{"sources", "admits", "unmapped", "unmappedEvidence"} + if v.retainedDraft { + optional = append(optional, "profile") + } if v.version == 2 && !v.named { optional = append(optional, "provider", "facts", "evidence") } @@ -186,6 +211,19 @@ func (v *documentCheck) document(value any) { required = append(required, "formatVersion", "id") } top := v.object(value, "", required, optional) + if v.retainedDraft { + declared := "base" + if raw, present := top["profile"]; present { + declared = v.choice(raw, "/profile", "base", "extended") + } + selected := "base" + if v.extended { + selected = "extended" + } + if declared != selected { + v.fail("/profile", "The document profile must equal the trusted Draft selection.") + } + } if value, ok := top["provider"]; ok { v.choice(value, "/provider", "") } @@ -227,7 +265,7 @@ func (v *documentCheck) document(value any) { previous := map[string]readTargets{} researchFields := map[string]map[string]bool{} if raw, ok := top["sources"]; ok { - for i, rawSource := range v.list(raw, "/sources", 0, 16) { + for i, rawSource := range v.list(raw, "/sources", 0, v.ceiling(16)) { p := at("/sources", strconv.Itoa(i)) source := v.dictionary(rawSource, p) name := v.text(source["name"], at(p, "name"), true) @@ -269,8 +307,8 @@ func (v *documentCheck) document(value any) { written := map[string]bool{} for _, r := range all { for _, t := range r.facts { - if len(facts) >= 256 { - v.refuse("JPS-DIALECT-COUNT-LIMIT", "", "A dialect admits at most 256 fact targets.") + if len(facts) >= v.ceiling(256) { + v.refuse("JPS-DIALECT-COUNT-LIMIT", "", "A dialect admits at most "+strconv.Itoa(v.ceiling(256))+" fact targets.") return } for _, other := range facts { @@ -290,8 +328,8 @@ func (v *documentCheck) document(value any) { evidence[t.name] = true } } - if len(facts) > 256 || len(evidence) > 128 { - v.refuse("JPS-DIALECT-COUNT-LIMIT", "", "A dialect admits at most 256 fact targets and 128 evidence targets.") + if len(facts) > v.ceiling(256) || len(evidence) > v.ceiling(128) { + v.refuse("JPS-DIALECT-COUNT-LIMIT", "", "A dialect admits at most "+strconv.Itoa(v.ceiling(256))+" fact targets and "+strconv.Itoa(v.ceiling(128))+" evidence targets.") } if raw, ok := top["admits"]; ok { admits := v.object(raw, "/admits", nil, []string{"facts", "evidence"}) @@ -350,8 +388,8 @@ func (v *documentCheck) parameters(value any, path string, scope map[string]stri } scope[name] = typ } - if len(scope) > 64 { - v.refuse("JPS-DIALECT-COUNT-LIMIT", path, "A scope admits at most 64 parameters, including runAt.") + if len(scope) > v.ceiling(64) { + v.refuse("JPS-DIALECT-COUNT-LIMIT", path, "A scope admits at most "+strconv.Itoa(v.ceiling(64))+" parameters, including runAt.") } } @@ -496,7 +534,7 @@ func (v *documentCheck) read(value any, path string, scope map[string]string) re } if raw, ok := r["unwrap"]; ok { p := at(path, "unwrap") - for i, ptr := range v.list(raw, p, 1, 4) { + for i, ptr := range v.list(raw, p, 1, v.ceiling(4)) { v.pointer(ptr, at(p, strconv.Itoa(i)), false) } } @@ -510,9 +548,16 @@ func (v *documentCheck) copy(value any, path string) readTargets { r := readTargets{} if raw, ok := c["facts"]; ok { p := at(path, "facts") - for i, item := range v.list(raw, p, 0, 256) { + for i, item := range v.list(raw, p, 0, v.ceiling(256)) { q := at(p, strconv.Itoa(i)) - f := v.object(item, q, []string{"target", "source"}, nil) + required := []string{"target", "source"} + if entry, ok := item.(map[string]any); ok && v.retainedDraft { + if conversion, present := entry["conversion"]; present { + required = append(required, "conversion") + v.retainedConversion(conversion, at(q, "conversion"), false) + } + } + f := v.object(item, q, required, nil) t := v.pointer(f["target"], at(q, "target"), true) v.pointer(f["source"], at(q, "source"), false) r.facts = append(r.facts, target{t, at(q, "target")}) @@ -521,9 +566,17 @@ func (v *documentCheck) copy(value any, path string) readTargets { if raw, ok := c["evidence"]; ok { p := at(path, "evidence") seen := map[string]bool{} - for i, item := range v.list(raw, p, 0, 128) { + for i, item := range v.list(raw, p, 0, v.ceiling(128)) { q := at(p, strconv.Itoa(i)) - e := v.object(item, q, []string{"requirement", "source"}, nil) + required := []string{"requirement", "source"} + if entry, ok := item.(map[string]any); ok && v.retainedDraft { + if availability, present := entry["availability"]; present { + required = append(required, "availability") + v.retainedConversion(availability, at(q, "availability"), true) + v.boundedText(entry["requirement"], at(q, "requirement"), 160) + } + } + e := v.object(item, q, required, nil) name := v.text(e["requirement"], at(q, "requirement"), true) v.pointer(e["source"], at(q, "source"), false) if seen[name] { @@ -548,7 +601,7 @@ func (v *documentCheck) rule(value any, path string, scope map[string]string) re } declared[name] = typ } - clauses := v.list(r["clauses"], at(path, "clauses"), 1, 64) + clauses := v.list(r["clauses"], at(path, "clauses"), 1, v.ceiling(64)) targets := readTargets{} facts, evidence := map[string]bool{}, map[string]bool{} for i, raw := range clauses { @@ -622,7 +675,7 @@ func (v *documentCheck) condition(value any, path string, declared map[string]st } } if op == "all" || op == "any" { - for i, item := range v.list(c["of"], at(path, "of"), 0, 64) { + for i, item := range v.list(c["of"], at(path, "of"), 0, v.ceiling(64)) { v.condition(item, at(at(path, "of"), strconv.Itoa(i)), declared) } } else if op == "not" { diff --git a/internal/mcp/dialect.go b/internal/mcp/dialect.go index 3f8972e..036ea35 100644 --- a/internal/mcp/dialect.go +++ b/internal/mcp/dialect.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "github.com/Judgment-Pack/judgment-pack-runtime/internal/dialect" + "strings" ) func dialectDefinition(operation string) map[string]any { @@ -41,10 +42,25 @@ func dialectDefinition(operation string) map[string]any { properties["pack"] = map[string]any{"type": "string", "description": fmt.Sprintf("Exact pack JSON text, never a path. Maximum %d UTF-8 bytes; the byte bound is enforced after transport decoding.", dialect.MaxPackBytes), "maxLength": dialect.MaxPackBytes} schema["required"] = []string{"document", "pack"} } + if operation == "contract" || operation == "canonicalize" || operation == "digest" || operation == "validate" || operation == "check" { + dialectDraftSchema(operation, schema, properties) + descriptions[operation] += fmt.Sprintf(" Explicit experimental draftContract/draftProfile selects the immutable RFC0029 document/frame reader; no preparation, authenticity or execution claim. The %d-byte stdio request limit includes JSON escaping and delimiter; decoded byte limits do not guarantee transport admission.", maxMessageBytes) + } return map[string]any{"name": name, "description": descriptions[operation], "inputSchema": schema} } func (s *Server) toolDialect(name string, args json.RawMessage) any { command := "mcp " + name + if name == "get_dialect_contract" || name == "dialect_canonicalize" || name == "dialect_digest" || name == "dialect_validate" || name == "dialect_check" { + var fields map[string]json.RawMessage + if json.Unmarshal(args, &fields) == nil { + _, selector := fields["draftContract"] + _, profile := fields["draftProfile"] + _, frame := fields["retainedFrame"] + if selector || profile || frame { + return s.toolRetainedColumnDraft(name, args) + } + } + } if name == "get_dialect_contract" || name == "get_dialect_reference" { if m := noArguments(name, args); m != "" { return toolError(m) @@ -148,3 +164,137 @@ func (s *Server) toolDialect(name string, args json.RawMessage) any { } return reply } + +// Draft branches keep the ordinary bound conditional on absence of all selectors. +// maxLength is a transport editing aid; UTF-8 byte ceilings are enforced by readers. +func dialectDraftSchema(operation string, schema, properties map[string]any) { + properties["draftContract"] = map[string]any{"type": "string", "enum": []string{dialect.RetainedColumnDraftSelector}} + properties["draftProfile"] = map[string]any{"type": "string", "enum": []string{"base", "extended"}} + selectorMembers := []any{map[string]any{"required": []string{"draftContract"}}, map[string]any{"required": []string{"draftProfile"}}} + if operation == "validate" { + properties["retainedFrame"] = map[string]any{"type": "boolean", "description": "With exact Draft selection, check document text as a standalone retained frame; no conversion or provenance verification."} + selectorMembers = append(selectorMembers, map[string]any{"required": []string{"retainedFrame"}}) + } + legacy := map[string]any{"not": map[string]any{"anyOf": selectorMembers}} + if operation != "contract" { + document := properties["document"].(map[string]any) + delete(document, "maxLength") + document["description"] = "Exact JSON text, never a path. The selected legacy/Draft branch bounds decoded UTF-8 bytes; stdio escaping and delimiter count against the separate request envelope." + legacy["properties"] = map[string]any{"document": map[string]any{"maxLength": dialect.MaxDocumentBytes}} + } + branches := []any{legacy} + for _, profile := range []string{"base", "extended"} { + docBound, frameBound := dialect.RetainedColumnDraftDocumentBytes, dialect.RetainedColumnDraftFrameBytes + if profile == "extended" { + docBound, frameBound = dialect.RetainedColumnDraftExtendedDocumentBytes, dialect.RetainedColumnDraftExtendedFrameBytes + } + variants := 1 + if operation == "validate" { + variants = 2 + } + for variant := 0; variant < variants; variant++ { + props := map[string]any{"draftContract": map[string]any{"const": dialect.RetainedColumnDraftSelector}, "draftProfile": map[string]any{"const": profile}} + required := []string{"draftContract", "draftProfile"} + bound := docBound + if operation == "validate" { + props["retainedFrame"] = map[string]any{"const": variant == 1} + if variant == 1 { + bound = frameBound + required = append(required, "retainedFrame") + } + } + if operation != "contract" { + props["document"] = map[string]any{"maxLength": bound} + } + branches = append(branches, map[string]any{"required": required, "properties": props}) + } + } + schema["oneOf"] = branches +} + +func (s *Server) toolRetainedColumnDraft(name string, args json.RawMessage) any { + command := "mcp " + name + members := []string{"draftContract", "draftProfile"} + if name != "get_dialect_contract" { + members = append(members, "document") + } + if name == "dialect_check" { + members = append(members, "pack") + } + if name == "dialect_validate" { + members = append(members, "retainedFrame") + } + if message := exactMembers(name, args, members...); message != "" { + return toolError(message) + } + var input struct { + DraftContract *string `json:"draftContract"` + DraftProfile *string `json:"draftProfile"` + RetainedFrame *bool `json:"retainedFrame"` + Document *string `json:"document"` + Pack *string `json:"pack"` + } + var fields map[string]json.RawMessage + if json.Unmarshal(args, &fields) != nil || json.Unmarshal(args, &input) != nil { + return toolError("Expected exact Draft selectors and JSON text arguments.") + } + for _, key := range []string{"draftContract", "draftProfile", "retainedFrame"} { + if value, present := fields[key]; present && bytes.Equal(bytes.TrimSpace(value), []byte("null")) { + return toolError("Draft selection members cannot be null.") + } + } + selector, profile := "", "" + if input.DraftContract != nil { + selector = *input.DraftContract + } + if input.DraftProfile != nil { + profile = *input.DraftProfile + } + selected, selection, code := dialect.SelectRetainedColumnDraft(command, selector, profile) + var output any = selected + if code == 0 { + if name == "get_dialect_contract" { + selected, code = dialect.ContractRetainedColumnDraft(command, selection) + output = selected + } else { + if input.Document == nil { + return toolError("Expected document as exact JSON text in a string.") + } + switch name { + case "dialect_check": + if input.Pack == nil { + return toolError("Expected pack as exact JSON text in a string.") + } + selected, code = dialect.CheckRetainedColumnDraft(command, []byte(*input.Document), []byte(*input.Pack), s.engine, selection) + output = selected + case "dialect_validate": + if input.RetainedFrame != nil && *input.RetainedFrame { + frame, frameCode := dialect.ValidateRetainedColumnDraftFrame(command, []byte(*input.Document), selection) + output, code = frame, frameCode + } else { + selected, code = dialect.ValidateRetainedColumnDraft(command, []byte(*input.Document), selection) + output = selected + } + default: + selected, code = dialect.EncodeRetainedColumnDraft(command, []byte(*input.Document), selection) + output = selected + } + } + } + // The outer MCP encoder already emits literal HTML. Apply the same policy + // to this selected Draft report's text representation: a second optional + // HTML escape pass can make a valid Base frame's dual response exceed the + // stdio client envelope. JSON quoting, controls and UTF-8 content remain + // exact, and the structured report and retained-byte digest are unchanged. + var text bytes.Buffer + encoder := json.NewEncoder(&text) + encoder.SetEscapeHTML(false) + if err := encoder.Encode(output); err != nil { + return toolError("The Draft report could not be encoded.") + } + return map[string]any{ + "content": []map[string]any{{"type": "text", "text": strings.TrimSuffix(text.String(), "\n")}}, + "structuredContent": output, + "isError": code != 0, + } +} diff --git a/internal/mcp/dialect_retained_column_test.go b/internal/mcp/dialect_retained_column_test.go new file mode 100644 index 0000000..ba0078a --- /dev/null +++ b/internal/mcp/dialect_retained_column_test.go @@ -0,0 +1,167 @@ +package mcp + +import ( + "bufio" + "bytes" + "encoding/json" + "errors" + "strings" + "testing" + + "github.com/Judgment-Pack/judgment-pack-runtime/internal/conformance" + "github.com/Judgment-Pack/judgment-pack-runtime/internal/dialect" + "github.com/Judgment-Pack/judgment-pack-runtime/internal/validation" + "github.com/santhosh-tekuri/jsonschema/v6" +) + +func TestRetainedColumnEntryMCPSchemaSelectionAndLimits(t *testing.T) { + for _, operation := range []string{"contract", "canonicalize", "digest", "validate", "check"} { + definition := dialectDefinition(operation) + raw, err := json.Marshal(definition["inputSchema"]) + if err != nil { + t.Fatal(err) + } + schema, err := validation.CompileSchema(raw, "urn:judgmentpack:test:draft-"+operation) + if err != nil { + t.Fatal(err) + } + cases := []struct { + name string + options map[string]any + size int + valid bool + }{ + {"legacy", nil, dialect.MaxDocumentBytes, true}, + {"legacy bound", nil, dialect.MaxDocumentBytes + 1, false}, + {"selector only", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector}, 0, false}, + {"profile only", map[string]any{"draftProfile": "base"}, 0, false}, + {"foreign revision", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector + "x", "draftProfile": "base"}, 0, false}, + {"unknown profile", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": "unknown"}, 0, false}, + {"base exact", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": "base"}, dialect.RetainedColumnDraftDocumentBytes, true}, + {"base one over", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": "base"}, dialect.RetainedColumnDraftDocumentBytes + 1, false}, + {"extended exact", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": "extended"}, dialect.RetainedColumnDraftExtendedDocumentBytes, true}, + {"extended one over", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": "extended"}, dialect.RetainedColumnDraftExtendedDocumentBytes + 1, false}, + } + if operation == "validate" { + cases = append(cases, + struct { + name string + options map[string]any + size int + valid bool + }{"frame without selector", map[string]any{"retainedFrame": true}, 0, false}, + struct { + name string + options map[string]any + size int + valid bool + }{"base frame exact", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": "base", "retainedFrame": true}, dialect.RetainedColumnDraftFrameBytes, true}, + struct { + name string + options map[string]any + size int + valid bool + }{"base frame over", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": "base", "retainedFrame": true}, dialect.RetainedColumnDraftFrameBytes + 1, false}, + struct { + name string + options map[string]any + size int + valid bool + }{"extended frame exact", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": "extended", "retainedFrame": true}, dialect.RetainedColumnDraftExtendedFrameBytes, true}, + struct { + name string + options map[string]any + size int + valid bool + }{"extended frame over", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": "extended", "retainedFrame": true}, dialect.RetainedColumnDraftExtendedFrameBytes + 1, false}, + ) + } + for _, tc := range cases { + t.Run(operation+"/"+tc.name, func(t *testing.T) { + if operation == "contract" && tc.size > 0 && !strings.Contains(tc.name, "exact") && tc.name != "legacy" { + return + } + args := map[string]any{} + for k, v := range tc.options { + args[k] = v + } + if operation != "contract" { + args["document"] = strings.Repeat(" ", tc.size) + } + if operation == "check" { + args["pack"] = "{}" + } + encoded, _ := json.Marshal(args) + instance, err := jsonschema.UnmarshalJSON(bytes.NewReader(encoded)) + if err != nil { + t.Fatal(err) + } + admitted := schema.Validate(instance) == nil + if admitted != tc.valid { + t.Fatalf("conditional schema admitted=%v, want=%v: %s", admitted, tc.valid, tc.name) + } + }) + } + } +} + +func TestRetainedColumnEntryMCPRefusesMalformedAndUnsupportedSelection(t *testing.T) { + selector := dialect.RetainedColumnDraftSelector + for _, args := range []string{ + `{"draftContract":null,"draftProfile":"base","document":"{"}`, + `{"draftContract":"` + selector + `","draftProfile":null,"document":"{"}`, + `{"draftContract":"` + selector + `","draftProfile":"base","retainedFrame":null,"document":"{"}`, + `{"draftContract":"` + selector + `","draftProfile":"base","draftProfile":"extended","document":"{"}`, + `{"draftContract":"` + selector + `","draftProfile":"base","spec":{"revision":"caller-proof"},"document":"{"}`, + } { + r := runServer(t, rawToolCall(t, 1, "dialect_validate", args))[0]["result"].(map[string]any) + if r["isError"] != true { + t.Fatal("malformed selection admitted", r) + } + } + for _, tc := range []struct{ args, want string }{ + {`{"draftContract":"foreign","draftProfile":"base","document":"{"}`, "capability-unsupported"}, + {`{"draftProfile":"base","document":"{"}`, "capability-unsupported"}, + {`{"draftContract":"` + selector + `","document":"{"}`, "input-malformed"}, + {`{"draftContract":"` + selector + `","draftProfile":"future","document":"{"}`, "input-malformed"}, + } { + r := runServer(t, rawToolCall(t, 1, "dialect_validate", tc.args))[0]["result"].(map[string]any) + report := r["structuredContent"].(map[string]any) + diagnostics := report["diagnostics"].([]any) + if r["isError"] != true || report["status"] != "refused" || diagnostics[0].(map[string]any)["code"] != tc.want || report["document"] != nil { + t.Fatal("selection did not precede malformed artifact", r) + } + } + // Frame mode is confined to selected validate, never silently accepted elsewhere. + for _, name := range []string{"dialect_check", "dialect_digest", "get_dialect_contract"} { + r := runServer(t, toolCall(t, 1, name, map[string]any{"draftContract": selector, "draftProfile": "base", "retainedFrame": true, "document": "{}", "pack": "{}"}))[0]["result"].(map[string]any) + if r["isError"] != true { + t.Fatal("extra selection admitted", name, r) + } + } +} + +func TestRetainedColumnEntryMCPTransportEnvelope(t *testing.T) { + // This valid decoded extended frame uses 3MiB of opaque retained text. The + // actual JSON-RPC encoder's HTML escaping expands it beyond stdio's 16MiB line. + frame := `{"contractVersion":"1","origin":"generated","values":{},"research":{"recordRecipeRevision":"r","declaration":null,"fields":{"Column":{"status":"supported","valueJson":"` + strings.Repeat("<", 3*1024*1024) + `"}}}}` + selection := dialect.RetainedColumnDraftBase() + selection.Profile = "extended" + if r, code := dialect.ValidateRetainedColumnDraftFrame("test", []byte(frame), selection); code != 0 { + t.Fatal("frame witness is not valid", r.Diagnostics) + } + request := toolCall(t, 1, "dialect_validate", map[string]any{"draftContract": dialect.RetainedColumnDraftSelector, "draftProfile": "extended", "retainedFrame": true, "document": frame}) + if len(frame) >= dialect.RetainedColumnDraftExtendedFrameBytes || len(request) <= maxMessageBytes { + t.Fatal("witness did not cross transport envelope", len(frame), len(request)) + } + engine, err := validation.NewEngine() + if err != nil { + t.Fatal(err) + } + server := NewServer(engine, conformance.NewRunner(engine)) + var out, logs bytes.Buffer + err = server.Serve(strings.NewReader(request), &out, &logs) + if !errors.Is(err, bufio.ErrTooLong) || out.Len() != 0 { + t.Fatal("MCP envelope was bypassed", err, out.Len()) + } +}