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())
+ }
+}