Skip to content

Portable Conformance Coverage

This is the normative coverage index from behavior to stable Conformance Markdown case IDs. Keep IDs stable. A language-specific test may be removed or reduced only after the behavior it protects has a passing portable case listed here. Add or update this matrix in the same change as new portable behavior.

Portable semantic coverage

Behavior Stable portable case IDs
Weighted choice predicates and weights cannot resolve each other’s sibling binding compile.build-errors/choose-sibling-scope-predicate, choose-sibling-scope-weight
CreateMap returns Nothing for mismatched key/value counts without reading unstaged registers, clears staging, and permits subsequent valid construction program.binary-format/valid-map-stage-count-mismatch
Stack-safe compiler resource analysis for deep acyclic calls within portable limits compile.deep-call-graph/ten-thousand-calls
Enclosing selector bindings retain their value across nested projection/aggregation iterations, including fused projections and binary roundtrips runtime.atomic.iterator-core/nested-projection-capture, triple-projection-capture, nested-aggregation-capture, fused-projection-capture
Duplicate typed local parameters are diagnosed independently of call/declaration order and source boundaries compile.build-errors/duplicate-typed-parameters-forward, duplicate-typed-parameters-backward, duplicate-typed-parameters-cross-source
Choice counts accept the signed-immediate maximum and reject larger counts without truncation in deterministic, random, and weighted variants runtime.atomic.iterator-core/choose-maximum-count; compile.build-errors/choose-count-{first,random,weighted}-{32768,65537}
Quoted text cannot substitute for grammar tokens; numeric constant signs reject nonnumeric literals compile.lexical-boundaries/quoted-be, quoted-parameter-open, quoted-infix, quoted-emit, negative-text-constant, negative-tag-constant, negative-boolean-constant, negative-nothing-constant; positive controls: negative-numeric-constants, keyword-text-values
Expression bindings retain ancestor visibility in functions, generators, nested selectors, fields, tags, seeds, and weights; siblings may reuse names compile.lexical-boundaries/function-parameter-shadow, generated-local-shadow, nested-selector-shadow, nested-generator-shadow, record-field-shadow, message-tag-shadow, random-seed-shadow, nested-weight-shadow, sibling-selector-scopes
List subtraction removes one matching Nothing element, with ordinary scalar propagation unchanged runtime.atomic.collection-nothing/literal, dynamic
Unconstrained external Vector/Point declarations preserve constructor and getter units runtime.atomic.external-spatial-units/fields, map
External constructor and field failures preserve stable diagnostics, abort only the current handler, and keep the Host reusable runtime.external-callback-failures/constructor-unexpected, constructor-declared-context, field-unexpected, field-declared-context
Diagnostic context is filled only when absent and caller-supplied fields are preserved independently runtime.external-callback-failures/constructor-declared-context, field-declared-context, runtime.host-dispatch/native-declared-fault-context, native-supplied-fault-context
Shared exact decimal decoding for compiler literals, constants, Number/Percentage casts, exponent/separator grammar, units, ties, underflow and overflow runtime.text-literal-conversion/numeric-text-grammar, invalid-number-text-and-fallback, exact-decimal-boundaries, compiler-literal-01 through compiler-literal-07, percentage-literal-overflow
Uniform Percentage ratios and exact numeric/Text/parse roundtrips without a fixed decimal spelling runtime.text-literal-conversion/uniform-percentage-ratios, percentage-exact-roundtrips, number-quantity-text-roundtrips, nested-data-roundtrips
Complete literal recognition, unchanged original-Text fallback, quoted and nested Text, prefix precedence and independent truth casts runtime.text-literal-conversion/literal-recognition-and-exact-fallback, parse-non-text, root-and-nested-text-formatting, prefix-precedence, text-truth-view-stays-independent
Deterministic Dice result literals, descending duplicate-preserving order, source and parsed text roundtrips, nested values, exact parse bounds, and unchanged random consumption all runtime.dice-literals cases, including source-values, text-roundtrips, parse-valid, parse-invalid, depth-*, items-*, nested-items-*, and source-rejects-*
Constructor-shaped Vector/Point text, positional and labeled numeric components, exact binary64/unit roundtrips, nested data, fallback, and shared depth/item bounds all runtime.spatial-literals cases: vector-* and point-*
Exact input-scalar, container-depth, aggregate-item and duplicate-key bounds, with handler recovery after exhaustion all runtime.text-literal-conversion/parse-depth-*, parse-limit-recovery, input-*, items-*, duplicate-items-*, and nested-items-* cases
ParseLiteral canonical binary encoding, operand validation and reserved opcode rejection program.binary-format/valid-parse-literal, all five program.binary-format/invalid-parse-* cases, program.binary-format/invalid-reserved-opcode-da, compile.program-dumps/parse-literal
Reader and canonical writer validate deep acyclic graphs and reject deep cycles within V1 limits without ending the embedding process all four program.call-graph-depth cases: shallow/deep valid chains and invalid cycles, with deep fixtures containing 21,845 routines and 65,535 instructions
Exact folded and runtime div, mod, and rem above 2^53, with negative operands, Int64 limits, quantities, zero divisors, and binary roundtrip all 34 runtime.numeric.integer-precision cases
Number cast Int64 and Quantity identity, including explicit dynamic random seeds and parent-stream restoration runtime.numeric.number-casts/identity-*, runtime.numeric.number-casts/random-seed-*, each with direct and binary variants
Folded and runtime text conversion of signed infinity, NaN, invalid text, and finite numbers runtime.numeric.number-casts/text-*, each with direct and binary variants
Conformance comparison rejects wrong numeric storage and infinite units, recursively, in exact and ULP modes all 48 api.conformance-comparison cases, including exact Int64 range fields, nested records/messages, NaN, duplicate keys, and positive tolerance controls
Binary resources cover executable call depth, live caller frames, staging, record creation/casts, and each individual handler; control-flow joins require balanced frame/stage lengths program.binary-format/valid-direct-call, program.binary-format/valid-nested-call, program.binary-format/underdeclared-depth-direct-call, program.binary-format/underdeclared-depth-nested-call, program.binary-format/underdeclared-registers-direct-call, program.binary-format/underdeclared-registers-nested-call, and all 13 program.binary-format/*-resource-* cases
Exactly reaching the processed-message limit while draining all work emits no limit observation, for native/script handlers and completion/frame pumps the eight runtime.host-observer/processed-limit-{script,native}-{completion,frame}-{1,2} cases; below-limit control: runtime.host-observer/processed-limit-below-script-completion; stop/resume controls: runtime.host-observer/emit-and-runtime-limit-order and the three runtime.host-observer/processed-limit-pending-* cases
Message normalization, signature construction and matching api.messages/case-0001 through api.messages/case-0012, api.messages/signature-equality, api.messages/signature-create-message
Signature, Message and Handler equality/hash contracts api.messages/signature-equality, api.messages/signature-parameter-inequality, api.messages/signature-arity-inequality, api.messages/message-equality, api.messages/message-argument-inequality, api.messages/message-tag-inequality, api.messages/unlabeled-message-equality, api.messages/handler-equality, api.messages/handler-inequality
Explicit ordered arguments and rejection of unordered/duplicate forms api.messages/case-0001, api.messages/case-0004, api.messages/case-0005, api.messages/case-0006
Public Value kinds, readers, flags and equality/hash api.values/primitives, api.values/measured-float, api.values/percentage, api.values/vector, api.values/point, api.values/text, api.values/tag-case-sensitive, api.values/nan-is-nothing
Value container ordering, duplicate keys and defensive copies api.values/list-defensive-copy, api.values/dice-defensive-copy, api.values/map-ordering-and-copy, api.values/record
Integer/float Range storage and Message values api.values/integer-range, api.values/float-range, api.values/message-value
List, Map, Vector, Point, Dice and Range construction runtime.atomic.create-values/case-0002 through runtime.atomic.create-values/case-0007
Record and external-value construction runtime.atomic.custom-types/case-0001, runtime.atomic.custom-types/case-0003
Collection/member/index semantics and canonical map-key spellings runtime.atomic.member-index-access/case-0008 through runtime.atomic.member-index-access/case-0016, compile.syntax-errors/case-0042
Random known-answer vectors, non-consuming bounds, valid nested streams, explicit dynamic-seed conversion, invalid-seed parent restoration, and cleanup after runtime limits runtime.atomic.random/case-0002 through runtime.atomic.random/case-0007, runtime.random-dice-ranges/case-0005, runtime.random-dice-ranges/case-0018, compile.build-errors/case-0038, compile.build-errors/case-0039, compile.bytecode-lowering/case-0012
Quantity application, checks, and unit removal through :Quantity(none) runtime.types-and-values.numeric-and-units/case-0036
Compiler handler/program resource metadata compile.binary-compiler/case-0001, api.messages/case-0007
Direct recursive call rejection compile.build-errors/case-0001
Callable overload identity by ordered labels, without type dispatch runtime.predicates-functions/case-0010, compile.build-errors/case-0049
Predicate/function name separation and ambiguous predicate shorthand compile.build-errors/case-0021, compile.build-errors/case-0050
No lexical shadowing, with sibling branch-name reuse compile.build-errors/case-0051 through compile.build-errors/case-0053, runtime.control-flow/case-0013
Indirect cyclic call graph rejection at the untrusted .gesb boundary program.binary-format/invalid-indirect-call-cycle
Native-only Host runtime.host-lifecycle/native-only
Same immutable Program in independent Hosts runtime.host-lifecycle/shared-program-multiple-hosts
Multiple Programs and deterministic load order runtime.host-dispatch/case-0007
VM reset between handlers/messages runtime.host-lifecycle/vm-reset-between-handlers
Receive, local Emit and local-plus-outbound Publish runtime.atomic.external-access/case-0008, runtime.publish-tags/case-0001
Publish with absent, accepting, rejecting and throwing sink runtime.host-observer/publish-without-sink, runtime.host-observer/publish-accepted, runtime.host-observer/publish-rejected, runtime.host-observer/publish-sink-exception
Full Publish result the four runtime.host-observer/publish-* cases
Ordered Emit/Publish/Dispatch/limit/diagnostic observer events runtime.host-observer/publish-sink-exception, runtime.host-observer/emit-and-runtime-limit-order
Load/Detach/Subscribe/Unsubscribe during dispatch runtime.host-lifecycle/detach-unsubscribe-snapshot, runtime.host-lifecycle/load-subscribe-after-dispatch
Idempotent Subscription/Instance handle results runtime.host-lifecycle/subscription-handle-state, runtime.host-lifecycle/instance-handle-state
Enqueue-time subscription snapshot runtime.host-lifecycle/detach-unsubscribe-snapshot
Initialization once per instance, initial Start barrier, failure cancellation and load/queue ordering runtime.host-startup/*, runtime.host-dispatch/case-0008, runtime.host-lifecycle/load-subscribe-after-dispatch, runtime.host-lifecycle/initialization-queue-order
Loading while a handler is paused preserves VM state runtime.host-lifecycle/load-while-paused
Native message-name matching runtime.host-lifecycle/native-message-name-subscription
Native handlers are atomic under frame budgets runtime.host-lifecycle/native-handler-frame-atomicity
Queue limits count logical messages and preserve observer order runtime.control-flow/case-0006, runtime.host-observer/queue-limit-observer-order
Runtime limits reset per script handler runtime.host-lifecycle/runtime-limits-per-handler
Pause/resume under frame budget runtime.host-dispatch/case-0009
External types without Reflection runtime.atomic.custom-types/case-0003
Missing and mismatched external runtime constructors compile.external-type-linking/missing-runtime-constructor, compile.external-type-linking/mismatched-runtime-constructor
Portable external-type catalog duplicate rejection api.external-types/duplicate-type-name
Canonical binding, message-name and embedded-source dumps compile.program-dumps/compact-bindings, compile.program-dumps/message-name-and-source
Canonical GESA binary64 immediates: exponent spelling, decimal/scientific boundaries, exact significant digits, zero, subnormal/normal limits, infinity, Percentage ratios and staged operands Binary fixtures: compile.program-dumps/float-exponents, float-notation-boundaries, float-extremes, float-staging; native compiler: float-source
Fixed extension environment (echo, fail, floor, navigation) runtime.atomic.external-access/case-0010, runtime.atomic.control-flow/case-0002, runtime.extensions-sequences/case-0001

The complete portable .gesb fixture manifest is program.binary-format, program.call-graph-depth, and the four binary-backed GESA cases in compile.program-dumps. It covers canonical and noncanonical valid Programs, opaque optional data, stable structural errors, stable semantic validation errors, bounded resource resolution, rewrite identity, runtime execution, and canonical dumps of identical Program data across implementations.

Cross-language acceptance, corpus identity, shared parser bootstrap fixtures, and the compact C# reference result are defined in Cross-language acceptance. The comparison is keyed exclusively by the stable IDs in this coverage index and the executable corpus.

Intentionally language-specific coverage

Shared allocation workloads live in all 16 performance.low-allocation cases. They pair exact and message-name dispatch, counting-observer off/on, completion with one handler and frames with two handlers, and 1000/2000 iterations. Their zero bound exercises the existing warmed allocation contract. Native adapters provide the measurements; a correctness-only corpus pass does not qualify an allocation profile. The C# managed-thread evidence does not qualify other heaps or other language runtimes.

The ten performance.text-conversion cases pair N/2N dynamic Number/Percentage casts, numeric literal parsing, plain-Text fallback, and Percentage formatting followed by parsing. They require zero managed allocation for the reading paths and a separate bounded budget for formatting. These budgets are C# profile properties; their portable scripts and correctness expectations can be reused by other platforms with independently qualified budgets.

The following tests remain implementation tests even when the underlying semantics also has a portable case:

  • C# public API snapshots;
  • Reflection, attributes and CLR conversion adapters;
  • C# auto-runner synchronization and threading, including takeover of queued or paused work and disposal before the initial pump;
  • internal builder/rewriter structure and optimizer pass tests;
  • concrete C# struct layouts and defensive-array implementation checks;
  • mutation attempts through C# collection interfaces on public message tags, signature parameters, and argument-label views;
  • C# allocation measurements and platform/runtime benchmark profiles.

These tests must not become required behavior for other language ports. The test-project structure and retention rule are documented in the C# test README.

Explicit data and product transport

  • runtime.explicit-data/* owns portable checks for constructor forms, Range normalization, lazy Series, Record reconstruction versus constructor execution, full recognition before side effects, opcode-budget resumption and text splitting.
  • api.product-json/* owns product JSON encoding/decoding, canonical numeric payloads, ordered arguments, recursive values and stable format errors.
  • program.binary-format/data-*, program.binary-format/split-* and compile.program-dumps/explicit-data-opcodes pin new instruction encoding, operand validation and portable GESA output.
  • The product JSON integration gate exchanges actual C# and Swift output using the same Markdown oracles.