Skip to content

D Pinned details (informative)

Specification source

This appendix indexes the details identified in PLAN.md §6.2. The normative decisions are in the linked chapters and appendix C. The reference pin is 5e7bbd5c26b0702c6fd652356b2289da0710ac3c, as defined in §1.2.

Each example link names an exact id from an extractable iris example block and leads to its containing section. Reference status distinguishes examples that agree with the pin from deliberate Iris differences.

D.1 Input lexing

PLAN.md §6.2 subitem Decision Normative section Executable examples Reference status
Integer token syntax Complete signed decimal, within the signed 64-bit domain. §4.4 input-integer-spellings, input-integer-token Pinned reference
Float token syntax and exponents Complete decimal binary64 conversion with the specified rounding and underflow rules. §4.5 input-float-spellings, input-float-normal-boundary, input-float-underflow Pinned reference
Leading + for integers Accepted on input. §4.4 input-integer-spellings Pinned reference
Leading + for floats Accepted on input. §4.5 input-float-spellings Pinned reference
inf rejection Infinity spellings are rejected. §4.5 input-float-inf Pinned reference
nan rejection NaN spellings are rejected. §4.5 input-float-nan Pinned reference
Hexadecimal integer rejection Hexadecimal input is rejected. §4.4 input-integer-hex Pinned reference
Hexadecimal float rejection Hexadecimal input is rejected. §4.5 input-float-hex Pinned reference
Default whitespace Six ASCII bytes separate ordinary tokens. §4.2 input-ascii-whitespace, notation-crlf-tab Pinned reference
VT/FF versus line blanks VT and FF separate tokens but remain in line text and do not satisfy pattern blanks. §4.2, §7.2 input-ascii-whitespace, input-line-blanks, input-pattern-blanks Pinned reference
CR LF and lone CR Only LF ends a physical line; CR counts as one byte. §4.1, §4.6 input-line-endings, input-crlf-columns, input-cr-columns Pinned reference
Final newline A final LF is optional, including for patterns. §4.1, §7.3 input-line-endings, structure-line-final-lf Pinned reference

D.2 Positions and UTF-8

PLAN.md §6.2 subitem Decision Normative section Executable examples Reference status
Column unit Columns count bytes, independently of Unicode code points or grapheme clusters. §4.6 input-byte-columns Pinned reference
Tabs A tab advances the column by one. §4.6 input-byte-columns, input-crlf-columns Pinned reference
Input-wide UTF-8 Validate all supplied bytes after parameter admission and before execution; locate the first ill-formed subsequence. §4.10 input-invalid-utf8-comment, input-invalid-utf8-tail Iris difference C.1
Read-value UTF-8 Validate each actually read word/rest value, including when byte settings split valid input. §4.10 input-invalid-utf8-split Iris difference C.1
Reader-spec UTF-8 Validate the whole source before lexing, with a byte column on failure. §5.1 reader-invalid-utf8-string, reader-invalid-utf8-comment Iris difference C.2

D.3 Comment and stop prefixes

PLAN.md §6.2 subitem Decision Normative section Executable examples Reference status
Prefix boundary class The final and following bytes use ASCII letters, digits, and underscore. §4.7 input-comment-boundaries, input-prefix-underscore Pinned reference
Non-ASCII prefix/following bytes Non-ASCII bytes are outside the boundary class. §4.7 input-prefix-nonascii, input-comment-boundaries Pinned reference
Stop boundary rule Stop uses the same boundary test as comment. §4.7 input-stop-boundaries Pinned reference

D.4 Work budgets

PLAN.md §6.2 subitem Decision Normative section Executable examples Reference status
Idle limit and iterations B = 2^20; charge each counted iteration that consumes no input; equality succeeds. §10.1, §10.2 budgets-idle-under, budgets-idle-equal, budgets-idle-over Pinned reference
Empty-row charges Charge positive dimension prefixes of empty ordinary arrays and the row count of zero-column alphabets. §10.2 budgets-idle-empty-prefixes, values-alphabet-empty Pinned reference
Expression formula and charges Limit B + 16*N; use the exact event and lifted-dependency tables. §10.1, §10.3, §10.4 budgets-effort-under, budgets-effort-equal, budgets-effort-over Pinned reference
Input byte length N is the entire original byte length, including ignored tails and multibyte characters. §10.1 budgets-effort-raw-bytes Pinned reference
Counter lifetime Both counters span the whole read or catalog operation without resets. §10.1, §10.5 budgets-idle-no-reset Pinned reference
Exact budget arithmetic Mathematical nonnegative integers; the ordinary boundary examples do not reproduce the pinned overflow bug (see below). §10.1 budgets-effort-equal, budgets-effort-over Iris difference C.3

C.3 is a source-backed correction to overflow in the pinned budget arithmetic. No full-size reader/input reproduction was run; the linked ordinary boundary examples agree with the reference and cover accounting, not overflow. C.3 identifies the affected source expressions and the verification limit.

D.5 Integer semantics

PLAN.md §6.2 subitem Decision Normative section Executable examples Reference status
64-bit checked arithmetic All integer arithmetic is exact or fails on overflow. §8.4 data-integer-limits, expressions-add-overflow, expressions-addition-underflow, expressions-negate-minimum Pinned reference
Truncating division The quotient truncates toward zero. §8.4 expressions-integer-results, expressions-minimum-div-minus-one Pinned reference
Negative remainder operands The remainder has the dividend's sign; minimum-int modulo -1 fails. §8.4 expressions-integer-results, expressions-minimum-mod-minus-one Pinned reference
Power results and overflow Nonnegative exponents produce exact in-range powers; negative exponents and overflow fail. §8.4 expressions-power-results, expressions-power-overflow, expressions-negative-exponent Pinned reference

D.6 Error order

PLAN.md §6.2 subitem Decision Normative section Executable examples Reference status
Phase order Complete-source lexing precedes parsing; global conflicts precede resolution, parameter admission, and execution. §11.2 errors-lex-before-syntax, errors-binding-before-type Pinned reference
Structural prechecks and component order Structural-name conflicts precede expression resolution; type bounds resolve before dimensions. §11.2 errors-record-precheck-before-field, errors-resolver-type-before-dimensions Pinned reference
Runtime statement and operand order Follow executed statements, each statement's local evaluation order, and operand order. §11.2, §6.7, §8.1, §8.9 expressions-operand-before-type, expressions-index-base-first, values-offset-list-timing Pinned reference
Sections ties The first matching arm and first missing required arm use declaration order. §7.8 structure-sections-first-arm, structure-sections-missing Pinned reference
Deferred failures Only specified instance rejections defer; later hard or immediately selected failures can become primary. §9.5, §11.2 instances-name-becomes-selected, instances-skipped-hard-error Pinned reference

D.7 Name scopes

PLAN.md §6.2 subitem Decision Normative section Executable examples Reference status
Ordinary record names Use the remaining-repeat judgments and shallow whole-array exceptions. §8.12 expressions-whole-vs-record, expressions-ambiguous-repeat Pinned reference
Explicit each names Current record inside its repeat; implicit quantification only in checks outside it. §8.12, §7.6 structure-record-each-only, expressions-each-outside Pinned reference
Nested repeats and field/list paths Align nested records and require explicit paths for nested structural lists. §8.12, §7.1 expressions-nested-fields, expressions-nested-list-unqualified Pinned reference
Type-name scopes and bounds Lexical visibility, no visible shadowing; bounds freeze when definitions execute. §6.5 values-type-forward, values-type-escape, values-range-timing Pinned reference

D.8 Matrix layouts

PLAN.md §6.2 subitem Decision Normative section Executable examples Reference status
FULL_MATRIX Row-major, rectangular, without mirroring. §6.8 values-layout-full-matrix, values-layout-rectangular Pinned reference
UPPER_ROW Strict upper triangle by row, then mirror. §6.8 values-layout-upper-row Pinned reference
LOWER_ROW Strict lower triangle by row, then mirror. §6.8 values-layout-lower-row Pinned reference
UPPER_DIAG_ROW Upper triangle including diagonal by row, then mirror. §6.8 values-layout-upper-diag-row Pinned reference
LOWER_DIAG_ROW Lower triangle including diagonal by row, then mirror. §6.8 values-layout-lower-diag-row Pinned reference
UPPER_COL Strict upper triangle by column, then mirror. §6.8 values-layout-upper-col Pinned reference
LOWER_COL Strict lower triangle by column, then mirror. §6.8 values-layout-lower-col Pinned reference
UPPER_DIAG_COL Upper triangle including diagonal by column, then mirror. §6.8 values-layout-upper-diag-col Pinned reference
LOWER_DIAG_COL Lower triangle including diagonal by column, then mirror. §6.8 values-layout-lower-diag-col Pinned reference

D.9 Instances and catalog

PLAN.md §6.2 subitem Decision Normative section Executable examples Reference status
Ordinal selection and name priority Complete integer conversion selects a 1-based ordinal before name matching. §9.4 instances-frame-selection, instances-ordinal-before-name Pinned reference
Name selection, duplicates, and empty names Exact local derived names; first match wins; unusable names derive the empty string. §9.4 instances-text-selection, instances-duplicate-names, instances-empty-name-selection Pinned reference
Retained data, frames, and unread tail Copy the retained frame into prefix data; explicit selection returns immediately. §9.3, §9.4 instances-frame-selection, instances-retained-frame-visible Pinned reference
Catalog entries, optionality, and order Return instances, then optional name and failed vectors, in pass order. §9.6 catalog-failure-summaries, catalog-unusable-name, catalog-empty-file Pinned reference
Catalog rejection summaries and recovery Retain exact first-rejection summaries; hard failures and missing-arm EOF abort. §9.5, §9.6 catalog-failure-summaries, catalog-missing-arm-at-end Pinned reference

D.10 dzn output

PLAN.md §6.2 subitem Decision Normative section Executable examples Reference status
Names, integers, and entry order Frozen quoting set, exact signed decimal integers, definition order. §B.1, §B.2 dzn-scalars-names-order Pinned reference
Float text Increasing-precision round-trip search with fixed notation thresholds and exponent spelling. §B.3 dzn-float-spellings Pinned reference
Floats just below 1e17 Exact starting precision prevents omitted leaf text. §B.3 dzn-float-precision-gap Iris difference C.4
String escaping Quote UTF-8 bytes with the specified control escapes. §B.4 dzn-string-bytes Pinned reference
Rectangular, empty, ragged, and deep arrays Choose matrix, arrayNd, or nested one-tuples from resulting shape and depth. §B.5, §B.6 dzn-rectangular-arrays, dzn-empty-arrays, dzn-ragged-and-deep Pinned reference
Catalog, separators, LF, and errors Render catalog data unchanged; exact assignment separators and LF; render only successful data. §B.7, §B.8 dzn-catalog-summaries, dzn-empty-data Pinned reference