Phonetic, musical and specialist notation imports
Current execution results are recorded in the 2026-11-02 native validation report. That report supersedes earlier test-deferral notes below for its explicitly listed suites; untested…
Phonetic, musical and specialist notation imports
Current execution results are recorded in the 2026-11-02 native validation report. That report supersedes earlier test-deferral notes below for its explicitly listed suites; untested variants and broader format conformance remain separate.
These native Rust readers belong to Standard (Lite) and are inherited
by Pro. Core retains their syntax and catalog metadata; compiling a literal
requires the Standard parser service. Each tag accepts ordinary quotes, raw
triple quotes and angle blocks. Ordinary quotes process Grid escapes; use raw
forms for X-SAMPA backslashes and fixed-column TLE records. Grid quotes support
\n, \r and \t; they do not use JSON’s \f escape. Preserve a BRF form-feed
byte literally in a raw payload when importing page boundaries.
Literal compilation produces native objects and arrays. Persisted constants do
not need a parser; explicit PARSE_* function calls still do. The result is a
structural import unless explicit transcription is described below, not a renderer, external tool invocation or
promise of complete standards conformance. New profiles start at contract revision 1. The ipa, transliteration,
abc, lilypond and tei contracts advance to revision 2 for the changes described below.
Explicit execution adapters connect LP/MPS to native solver reports, R formulas to MODEL.FIT, and annotation formats to Frame/Graph tables. Reading a literal alone remains descriptive.
| Tag / function | Accepted input and native result | Boundary |
|---|---|---|
ptb / PARSE_PTB |
Penn Treebank bracketed trees, including a forest and unlabeled outer wrapper. Ordered roots, nodes, edges and tokens preserve labels, function tags, coindices, traces and UTF-8 spans. Bracket placeholders retain source spelling alongside decoded token text. | No tag-set ontology validation, grammatical analysis or probabilistic parsing. Preterminals contain exactly one token; constituents cannot mix children and bare tokens. |
ipa / PARSE_IPA |
A pinned IPA character inventory with segment/modifier/boundary tokens, optional /…/ or […], exact source and canonical X-SAMPA where representable. |
Lexical inventory validation, not phonotactics, language identification or full IPA conformance. IPA uses Unicode NFD normalization (clusters capped at 1,024 UTF-8 bytes); decomposed or reordered tokens point to their complete authored cluster. Canonical inventory spellings such as ç retain their X-SAMPA encoding. Additional IPA-only symbols make xsampa null. |
xsampa / PARSE_XSAMPA |
Longest-token X-SAMPA decoding to IPA with original token spans. | Pinned mapping, not arbitrary phonetic escape conventions. Unknown tokens fail. Canonical output separates tokens with - where token concatenation could change meaning; authored spelling is retained separately. |
roman / PARSE_ROMAN |
Legacy chord lists retain their prior native shape. RomanText document profile v2 retains ordered metadata, measure/ending/variant identities, authored beat strings, key changes/ambiguity, copy ranges, pedals, bracket alterations and chained tonicizations. Source-only header, meter, minor-policy and chord completion/hover. | No pitches, durations, inherited harmony, copy expansion or reference resolution. This is descriptive import, not music21 score realization; native validation remains deferred. |
nashville / PARSE_NASHVILLE |
Degrees 1–7, accidentals, common major/minor/diminished/augmented/suspended symbols, extensions and slash-bass degrees. | A declared Grid textual profile of conventional symbols; no chart layout, rhythm diamonds, rehearsal marks or key inference. |
figuredbass / PARSE_FIGUREDBASS |
LilyPond-style figure payloads such as <6 4>2 <5 3>4 <_+>. Groups retain figures, duration denominators, dots and spans. Bare groups inherit the preceding duration and dots. |
No executable LilyPond commands, continuo realization or engraving. Figures 1–99 or _, bounded modifiers, power-of-two durations 1–1024, at most three dots. |
solfege / PARSE_SOLFEGE |
Italian fixed-do note names (do re mi fa sol la si), LilyPond d/dd/b/bb accidentals, absolute octave marks, rests and inherited dotted durations. |
Music-expression tokens only; no commands, movable-do inference or score renderer. Default octave is 3, default duration a quarter note. |
jianpu / PARSE_JIANPU |
Monophonic jianpu-ly tokens with explicit 1=tonic or 6=tonic, optional initial meter, numbered notes/rests, octave marks, duration letters, dots, extension dashes and initial KeepLength. |
No chords, repeats, lyrics, layout commands or pitch realization. Default duration is a quarter note; KeepLength makes the duration denominator sticky. % starts a comment. |
cif / PARSE_CIF |
CIF 1.1 ASCII and header-selected CIF 2.0: ordered blocks, frames, scalar items and rectangular loops; original spellings and uncertainty lexemes; distinct unknown ? and inapplicable .. CIF 2 adds Unicode canonical caseless identities, nested lists/tables, triple quotes and text protocols. |
DDL1/DDL2/DDLm declarations and authored imports are data. No implicit dictionary validation, import fetching, method execution, unit conversion or crystallographic calculations. See the CIF 2 contract below. |
brf / PARSE_BRF |
Six-dot Braille ASCII: uppercase ASCII space through underscore, LF/CRLF and form feed. Unicode braille cells retain dots, page/line/column and source spans. | Cell decoding only: no UEB/Nemeth translation or contraction expansion. Lowercase, tabs, Unicode braille input and lone CR fail. Positions are zero-based. |
tle / PARSE_TLE |
NORAD fixed-column two-line elements with optional name/0 name line. Validates 69-column ASCII lines, checksums, numeric satellite identity, fixed decimals and orbital ranges; preserves raw lines and decoded fields. |
Numeric satellite IDs only; no Alpha-5, SGP4 propagation, SPICE or ephemeris retrieval. Epoch uses the NORAD 57-year pivot and preserves day zero (the preceding December 31). Blank exponent fields represent zero. Mean-motion derivative fields retain their published division factors in field names. |
fsw / PARSE_FSW |
Formal SignWriting in ASCII: optional sorting sequence, B/L/M/R sign boxes, coordinates, ordered spatial symbol keys and standalone punctuation. | Checks the 37,811 assigned ISWA 2010 fill/rotation combinations; does not infer sign meaning. SWU has a separate reader; no style/query extensions, fonts or rendering. Coordinates are 250–749. |
dexpi / PARSE_DEXPI |
Explicit DEXPI 1.3 / Proteus 4.1 PlantModel XML. Equipment, nozzles, piping systems/segments/components, instrumentation, attributes and drawings retain document order, containment and unique uppercase ID identities. |
Also accepts the separate DEXPI 2.0.1 Model exchange profile described below; neither profile claims full metamodel validation. Required PlantInformation version/discipline/dimensionality metadata is checked. No inferred pipe connectivity, diagram geometry or symbol rendering. |
syntax_tree = ptb"""(S (NP (NNP Zoë)) (VP (VBZ sings)))"""
pronunciation = ipa"[prʲɪvʲet]"
phonetic_ascii = xsampa"""pr_jIv_jet"""
harmonic_analysis = roman"I vi6 iiø65 V7/V | V7 I"
chord_chart = nashville"1 6m 4 5/7 | 1"
continuo_figures = figuredbass"<6 4>2 <5 3>4 <_+>"
See the complete example for the other readers, including a fixed-column orbital record. Source spelling and diagnostic spans are distinct from reconstructed or converted output. Formatting Grid source does not invoke these parsers or rewrite their payloads.
Existing readers extended
abc now reads all fifteen major and fifteen minor key signatures (minor tonic
spelled with m). Explicit accidentals persist to the barline, following the
pitch propagation default; a header %%propagate-accidentals not, octave or
pitch selects the other supported rules. Mid-tune headers, other directives,
modal/custom key signatures and ornament/repeat syntax fail explicitly. L:
and K: remain required. The native score constructor derives measures from
note durations; authored bar placement is not an engraving round-trip promise.
lilypond absolute monophonic blocks now inherit dotted durations correctly.
Durations must be powers of two; empty blocks fail. Relative notation, Scheme,
includes and general commands remain outside the profile. Neither music reader
runs LilyPond or ABC software.
tei now exposes apparatus, readings, witnesses and
apparatusReferences. References from wit, from, to and corresp retain
their spelling. Local #id targets resolve within the document; wit targets
must be witnesses. Dangling and external targets remain explicit unresolved
records. No external resources are opened, and no editorial truth or complete
TEI apparatus conformance is inferred.
Editor and resource behavior
The existing catalog supplies completion, hover, edition requirements and
literal boundaries. Same-spelled functions and literal tags remain distinct
completion choices, including ROMAN(...) and roman"...". PTB, IPA, X-SAMPA, harmonic symbols, figured bass, BRF, TLE
FSW, CIF, solfège and jianpu have lexical grammars for raw triple/angle payloads; DEXPI uses XML.
Ordinary quoted payloads keep Grid string highlighting. Semantic diagnostics
require the host's injected Standard parser service. There is no new payload
rename, graphical editing, phonetic keyboard, braille display or sign renderer.
Readers use the existing input, node, depth and result-size limits and cancellation checkpoints. Parsing and lexical allocation occur only on explicit parser calls or literal expansion. Registration is static; no discovery, I/O, worker or polling service is added. The common evaluator is unchanged. New catalog/table bytes and selected-parser allocation costs are not a claim of zero memory or latency cost. The local debug observer records 31 paired samples for thirteen fixtures, four scaling cases and ordinary compilation with/without the parser binding. It does not establish optimized production budgets or historical ordinary-path tax; the program ledger compares the retained ordinary-compilation anchor without replacing it.
Pinned data and external references
The phonetic conversion table is vendored from the MIT-licensed ipa-translate revision 9d845ae, with its license alongside it. Grid implements a longest-token scanner rather than that project's replacement algorithm. The mapping is a declared inventory, not certification against all revisions of the IPA chart.
Other source contracts are the Penn Treebank guidelines, LilyPond notation reference, CIF 1.1 syntax, jianpu-ly input convention, ABC standard, Braille ASCII assignments in liblouis 3.35.0, NORAD TLE format, TLE epoch and optional-field conventions, Formal SignWriting, TEI critical apparatus, and DEXPI 1.3 model metadata. These references explain the chosen subsets; none implies that the entire external standard is implemented.
Additional interchange profiles
Six more Standard (Lite) profiles use the same native literal, function, compiler and editor contracts. They perform no network reads or external execution.
| Tag / function | Native interpretation | Explicit boundary |
|---|---|---|
landxml / PARSE_LANDXML |
LandXML 1.2 namespaced survey XML. Requires one Metric/Imperial unit declaration; checks finite North/East/[Elevation] coordinates, unique CgPoint and instrument IDs, numeric observations and local point/setup references. Raw records, CRS metadata and unresolved references survive. | Authored TIN and alignment projections are described below. No coordinate transformation, inferred CRS, curve realization or full XSD validation. Unresolved references produce no edges. Angles retain declared units; no DMS conversion. |
omm / PARSE_OMM |
CelesTrak GP JSON object or array with OMM keywords. Calendar epochs, elliptic element ranges and integer catalog identifiers are checked. raw, normalized fields and documented defaults remain separate. |
GP JSON retains Earth/TEME/UTC/SGP4 defaults. Explicit CCSDS KVN/XML alternatives are described below; no defaults are invented for those messages. No propagation or leap seconds. |
openpsa / PARSE_OPENPSA |
Open-PSA MEF 2.0 fault/event trees with scoped components and retained instruction syntax. Typed events, ordered Boolean formulas, cardinality/arity validation, implicit basic events, top events and acyclic gate references. Constant house values, public parameters, stochastic expression trees, common-cause groups and substitutions remain native data. | Rejects duplicate declarations, missing/cyclic parameter references, ambiguous identities, external functions, consequence/reporting records and DTDs. No probability evaluation, sampling or expression type/domain certification. This strict profile rejects duplicate definitions rather than applying the broader MEF last-definition convention. |
xmi / PARSE_XMI |
UML structure, interaction and state-machine projection (contract revision 3). Resolves namespace-aware IDs and type QNames, selected concrete containment types, class/association and sequence-interaction tables, local links and explicit unresolved/external references. | Supports OMG UML 20131001/20161101 and Eclipse UML2 5.0 namespace spellings. Not complete UML/SysML metamodel validation, SACM support, diagram layout or behavior execution. External hrefs are never opened. |
swu / PARSE_SWU |
Sutton SignWriting Unicode structural encoding to native sign boxes, sequences and symbol keys, plus canonical FSW. Results and diagnostics refer to authored UTF-8 scalars. | Same structural and ISWA repertoire checks as FSW; no styles, query syntax, null symbols or rendering. SWU is its own encoding and is not a generic Unicode braille/sign-language decoder. |
knitout / PARSE_KNITOUT |
Knitout 2 headers, rail/carrier declarations, operation arity, finite rack/stitch values, needle beds and signed indices, carrier references, comments/source annotations and retained x-* extension instructions. |
Strict version-2 profile with required carriers. Instruction import only: no machine execution, yarn/loop simulation, release-hook state validation or machine safety claim. Empty carrier sets are accepted for knitting operations. |
XML profiles use existing DTD/entity protections and bounded document parsing.
Raw angle blocks still end at their first matching closing tag. Use quotes or
triple quotes for an unprefixed LandXML document: its </LandXML> would close
the outer <landxml> literal. A namespace-prefixed XML root avoids that
delimiter collision. No reader changes Grid delimiter semantics.
The editor uses XML for LandXML/Open-PSA/XMI, encoding-aware lexical support for OMM, and dedicated lexical
grammars for SWU and Knitout. Completion, hover, embedded boundaries and compiler
errors use the shared catalog. Open-PSA public parameter navigation and unit completion
are described below; LandXML local point editing is described in its profile.
Neither capability implies unrestricted XML identity editing.
transliteration contract revision 3 adds russian-alalc-2012, identified by
ala-lc:ru:2012. The native table follows the Library of Congress 2012 Russian
letter table, including pre-1918 letters and combining ties. It normalizes NFC,
preserves unlisted characters and does not infer language or apply another
language's table. The fourteen existing ICU transforms retain their identities.
Revision 4 adds Ukrainian 2011 (ukrainian-alalc-2011, ala-lc:uk:2011),
bringing the selection to sixteen transforms. This does not certify other ALA-LC
languages or contextual Pinyin/Hepburn conventions.
Source contracts: ALA-LC Russian 2012, LandXML ePlan mapping, CelesTrak GP guidance, Open-PSA fault-tree layer, OMG UML machine-readable model, Sutton SignWriting conversion contract, and Knitout format. Fixtures are newly authored minimal documents, except the SWU conversion example which is retained from the documented Sutton conversion example (MIT-licensed core project). Broader independently licensed conformance corpora remain work.
Open-PSA public parameters and expressions
Contract revision 2 adds the MEF 2.0 stochastic layer to the flat public
fault-tree profile. parameters contains declaration IDs, units and expression
roots; expressions contains ordered nodes with operators, argument IDs,
attributes and payload-relative UTF-8 spans. parameterReferences resolves
references to declarations. expressionEdges uses numeric XML node identities
and remains separate from the event graph's string identities. Parameter and
event names occupy separate namespaces, so both may be named pump.
Supported syntax includes Boolean, signed 64-bit integer and finite floating
constants; parameter references; mission time; arithmetic, comparisons and
Boolean operators; ite and switch; exponential, GLM, Weibull and periodic-test
models; uniform, normal, lognormal, gamma and beta deviates; and histograms.
case and bin are positional wrappers, not standalone expressions. Arity is
checked, including periodic-test's 4/5/11 forms. Variadic arithmetic and Boolean
operators require at least two operands. Each parameter requires one expression.
Duplicate, missing and cyclic parameter references are errors. Forward references
are supported. The unit vocabulary is bool, int, float, hours, hours-1,
years, years-1, fit and demands.
Import preserves syntax without evaluating it. expressionSemanticsValidated
is false: no inferred types, compatible-unit proof, derived probability-domain
checks, histogram-bound ordering, random sampling or unit conversion is claimed.
A basic event's probability is populated only for a direct numeric constant in
0..1; other expressions retain expressionRoot with null probability. External
functions and consequence/reporting records remain unsupported. Revision 5 adds
component/private identity resolution, and revision 6 adds event-tree syntax below. Revision 3 adds CCF group syntax below. Original XML records and attributes survive.
The editor retains XML highlighting and adds literal-local public parameter completion, definitions, references and hover, plus unit completion and operator arity help. Event names are never mistaken for parameter names. Duplicate, entity-spelled or DTD-bearing identities refuse navigation; component/private resolution is described under revision 5 below; parameter rename is unavailable. Help is source-only and never executes the expression. Compiler diagnostics use the shared literal source maps for ordinary quotes, triple quotes and angle blocks.
See the example and MEF stochastic-layer contract. The fixture is synthetic. Reader, native editor and compiler/runtime tests are authored but native validation is deferred; historical fault-tree results do not validate this increment. Source-only editor checks are recorded separately.
Open-PSA common-cause groups
Revision 3 imports root/fault-tree define-CCF-group declarations for
beta-factor, MGL, alpha-factor and phi-factor. ccfGroups preserves model,
member-node IDs, distribution root and factors; ccfMembers resolves event names
and identifies implicit basic events. Shared expressions retain parameter links.
Existing event formulas and probabilities remain unchanged; ccfExpanded is false.
Membership must be nonempty, unique within each group and basic-event compatible.
For N members the factor counts are 1, N−1, N and N respectively. Explicit levels
must be unique and within 1..N (2..N for MGL). Omitted levels remain null: no
positional interpretation is invented. The profile accepts both a single factor
and a factors container, but rejects empty factor sets. It preserves overlapping
groups; it does not certify factor normalization, distribution domains, expansion
or reliability results. Source records retain original spellings and order.
The editor supplies model choices and factor-level help. Parameter navigation also works inside group expressions; member-event navigation and rename remain unavailable. See the example and MEF CCF contract. Reader/editor/saved-LIR tests and the selected-cost observer are authored; native validation remains deferred.
Open-PSA substitutions
Revision 4 imports root/fault-tree define-substitution declarations into
substitutions, substitutionFormulas and substitutionReferences. Numeric XML
node IDs identify declarations; optional names remain null when absent. Type
labels are open strings, including conventional delete-term, recovery-rule and
exchange-event labels. They do not select executable behavior.
Each hypothesis is one Boolean formula over basic events. Arity/cardinality and
declared event kinds are checked. Source omission represents an empty set;
authored source sections must contain events. Targets are a nonempty event set
or one Boolean constant. Duplicate named substitutions and duplicate source/target
set members are rejected. Undeclared basic events remain explicit implicit events,
shared with fault-tree and CCF references. Hypothesis operators and authored node
order survive; no substitution is applied, cut set computed or graph rewritten.
The result marks substitutionsApplied false. This profile does not prove logical
consistency, substitution termination or applicability to a reliability analysis.
Editor type suggestions accept custom labels. Section help describes optional source and target forms. Boolean formula hover follows formula arities, distinct from stochastic expression arities. Event references remain separate from the parameter navigation index; event rename/navigation are not advertised.
See the example and MEF substitution grammar. Synthetic fixtures, native tests and a cost-observer case are authored. Native reader/editor/compiler/runtime validation remains deferred.
Open-PSA component and private identities
Revision 5 adds nested components and inherited public/private roles. Explicit
roles override the enclosing component's role. Public event/parameter names stay
global; private identities use full container paths. Event and parameter namespaces
remain separate. References resolve public names, absolute paths such as
FT.A.rate, and paths local to the current container such as A.rate inside
FT. Bare private names resolve in their own container. The importer does not
search arbitrary sibling/ancestor scopes. Competing interpretations are errors;
it does not guess a shadowing priority. Unresolved qualified references are
errors rather than new implicit events.
identityScopes records declaration names, canonical identities, paths, visibility,
containers and authored/resolved references. Original records retain authored
attribute values; working expression/event/CCF/substitution projections use resolved
identities. Named containers and declaration paths must be unique; public names
must be unique within their namespace. Inherited metadata attributes are retained
through raw records and parent IDs, not flattened into effective attribute sets.
The contract identity is now openpsa-mef-2.0-fault-tree-v1; the result profile is
mef-2.0-fault-tree. Public-only data keeps its existing identity spellings.
The native importer and editor use one shared scope resolver. Parameter navigation supports private and qualified names; completion offers the shortest unambiguous public/local/full spelling. Ambiguous reference sites have no navigation target. DTD/entity-spelled identities and malformed scope declarations refuse indexing. Editor indexing remains bounded, including reference/candidate work; parameter rename and event navigation remain unavailable.
See the example and MEF name-resolution contract. Reader/editor/compiler/runtime cases and a scoped-cost case are authored but unrun; native validation remains deferred.
Open-PSA event-tree structure and instructions
Revision 6 imports event trees, local functional events, sequences, named
branches, forks and custom path-state labels. eventTrees, eventTreeNodes and
eventTreeEdges retain structure and reference links without enumerating paths.
Each branch requires one terminal after its instructions. Duplicate states,
missing targets, cross-tree local references, branch/rule/link/group cycles and
conflicting initiating-event tree assignments are errors. Initiating groups may
nest; declarations retain their resolved tree association and collected items.
Consequence/reporting records remain outside this profile.
eventTreeInstructions preserves assignment directions, conditional/block order,
collection, rule calls and tree links. Formula arguments use instructionFormulas
and instructionReferences; stochastic arguments reuse expressions. Known
assignment targets must have the correct kind. eventTreesExecuted is false:
no traversal, probability collection, assignment, expansion or environment mutation
runs. Functional tests outside a concrete tree (including model-wide rules) retain
contextDependent references;
caller-context validity, functional-event ordering along every path, terminal
reachability and semantic state/type/domain checks are not certified.
Editor navigation/completion covers tree-local branches, sequences and functional
events, plus model-wide tree/rule/initiating names. Assignment parameter targets
share the parameter index. Direction/state suggestions and instruction help are
source-only; custom states survive. Dynamic functional tests have no guessed target.
Rename and fault-tree event navigation remain unavailable. The production adapter
accepts openpsaEventTreeItem; its added transport test is synthetic.
The parser contract is now openpsa-mef-2.0-v1, with output profile
mef-2.0-native-import. See the example
and MEF event-tree grammar.
Native reader/editor/compiler/runtime tests and the cost observer are authored,
but their execution remains deferred. Source-only adapter/catalog checks are
tracked separately.
Humdrum, citations, ephemerides and HNS-SiGML
Seven additional Standard (Lite)/Pro profiles share the native literal/function contract. These are external syntax readers with explicit bounds:
| Tag / function | Native result and checks | Deliberate boundary |
|---|---|---|
humdrum / PARSE_HUMDRUM |
Ordered records, stable spines, split/add/join edges, exchange and termination; **kern absolute pitches/rests/chords and exact rational reciprocal durations, **solfa movable-do degrees with explicit tonic, **recip durations and **text. Joins require compatible interpretations and tonic contexts. |
Other exclusive representations fail. Tandem interpretations and articulation marks are retained rather than performed. No time alignment, tie realization, engraving or playback. Durations accept up to 15 augmentation dots. 0, 00 and 000 encode two, four and eight whole notes. The extended 3%2 encodes two thirds of a whole note, and 3%2. encodes one whole note. Ratio components must be positive 32-bit integers. Durationless q grace notes cannot also carry a numeric duration in this profile. |
ecli / PARSE_ECLI |
One identifier per nonblank line; canonical ASCII uppercase, jurisdiction, court, year, ordinal and authored UTF-8 span. Checks the five components, court length 1–7 and ordinal length 1–25. | No national court registry or decision lookup. Lexical validity does not establish an existing decision. |
usc / PARSE_USC |
Single citations such as 5 U.S.C. 552(a)(1) (2024), with numeric title, textual section, ordered subsections and optional year. § is optional. |
U.S.C. or USC spelling; numeric ranges require explicit §§ and preserve endpoints without expansion; no section lists, annotated code editions, case reporters or legal interpretation. |
cfr / PARSE_CFR |
Single citations such as 40 C.F.R. § 60.1(a) (2025); the period separates part and section within the preserved section identifier. |
C.F.R. or CFR spelling; no ranges, whole-part references, amendment tracking or regulation lookup. |
oem / PARSE_OEM |
CCSDS OEM 2.0/3.0 KVN and unqualified XML headers, segments, metadata, ordered position/velocity samples, optional accelerations and six-row lower-triangular covariance records. Validates civil dates, interval endpoints, strictly increasing samples, finite coordinates, row dimensions and nonnegative covariance diagonals. | Calendar or ordinal epochs; leap seconds rejected. Time-system/frame names are preserved, not converted. No interpolation or propagation. Positive-semidefiniteness is explicitly unchecked. Total segment intervals may overlap; usable intervals cannot. Time system and object stay fixed across segments; state and covariance epochs must be ordered. |
spice / PARSE_SPICE |
KPL/PCK, LSK, SCLK, IK, FK, MK text-kernel assignments. Ordered authored assignments plus final variables after = replacement and += append; scalar/vector numbers, doubled-quote strings and raw @date tokens. Numeric/string mixtures fail. |
ASCII data lines, at most 132 columns; no tabs, multiline strings or strings over 80 characters. @date is a preserved lexical token, not a validated or converted epoch. No binary kernels, string-continuation joining, kernel loading, coordinate evaluation or filesystem access. |
sigml / PARSE_SIGML |
Unnamespaced sigml containing hns_sign with a required gloss and exactly one nonempty hamnosys_manual. Validates placement, attributes, 216 published manual token names and balanced nested group markers. Retains sign-language/gloss-language and positive speed metadata. |
HNS manual-token subset of SiGML 1.2. Nonmanual, gestural, player, avatar and animation forms fail. Token membership and group nesting are checked; HamNoSys phonetic sequence validity is explicitly unchecked. No external references or animation. |
Humdrum, ECLI, USC, CFR, OEM and SPICE have dedicated lexical grammars; SiGML uses XML highlighting. Completion and hover describe the exact profile. As with other imports, ordinary quoted payloads remain Grid strings; raw triple quotes and angle blocks embed the payload grammar. Compiler diagnostics use the normal native parser service. XML structural diagnostics retain the shared XML reader's locations; semantic XML errors may refer to the payload start.
These readers implement the published Humdrum spine model,
kern and solfa
representations and the extended rhythm convention; ECLI identifiers;
US Code citation structure
and CFR citation structure;
CCSDS 502.0-B-3 orbital messages;
NAIF text kernels;
and the UEA HNS-SiGML token vocabulary.
The SiGML implementation contains the factual token identifiers, not a bundled
DTD, external entity loader or full schema validator.
LandXML contract revision 4 retains the revision-2 projection of authored TIN Pnts and
Faces as surfaces[].vertices and surfaces[].faces. Point IDs are unique
positive integers within each surface, coordinates require elevation, and each
face refers to three distinct existing vertices. Optional neighbor indices and
visibility markers are checked. One point/face collection per TIN definition is
supported. Grid surfaces, alignment realization, triangulation of source points,
orientation/manifold checks and topology certification remain outside this
profile. Units retain their authored meaning. The structural reference is the
buildingSMART LandXML surface convention.
LandXML revision 4 adds parcels with ordered boundary segments, optional centers,
authored area/volume, parent parcel identities and raw attributes. Names must be
unique within a collection. parcelReferences resolves pclRef only when one
parcel has that name; missing or ambiguous names stay explicit and produce no
reference edge. Point and parcel identity spaces remain separate. Nested
membership becomes parcelContains edges; reference cycles are preserved as
references, never expanded recursively. VolumeGeom is retained by record
identity, without solid reconstruction. Declared quantities remain in authored
units, without computing area, closing rings, choosing winding or establishing
legal validity. Generic XML records retain addresses and other metadata.
XML highlighting, local CgPoint completion/navigation and checked point rename
also apply inside the bounded parcel/geometry vocabulary. Point rename leaves
same-spelled parcel names and pclRef unchanged. Parcel-name navigation/rename
and unknown extension vocabularies remain outside checked edits. The
parcel example is
synthetic and deliberately has an open boundary. Native reader/editor/runtime
validation is deferred. The structural source is the
NSW LandXML recipe, Parcel section;
this bounded projection does not claim NSW or other jurisdictional conformance.
Raw angle literals still end at the first matching closing tag. A full SiGML
document contains </sigml>, so use sigml"""…""" or an ordinary escaped
quoted literal for that document. The same collision rule applies to LandXML
and other XML roots matching their Grid tag. Editor grammar state never changes
these compiler delimiter rules.
Orbital encoding variants and alignment geometry
The existing tags select the encoding from the payload: omm accepts GP JSON,
CCSDS KVN and unqualified XML; oem accepts KVN and unqualified XML. The parser
runs once during literal expansion, producing native values. Calling
PARSE_OMM or PARSE_OEM explicitly parses the supplied string at runtime.
OMM and OEM contracts are revision 2; LandXML is revision 4.
OMM/OEM editor assistance shares fields, units and time scales with the Rust
readers. KVN completion replaces field names or scalar values; OEM suggestions
follow header, metadata, sample and covariance sections. OMM 2.0 omits 3.0-only
BTERM/AGOM choices. Within explicit OMM unit brackets or XML units attributes,
completion offers the admitted unit without converting the number. GP JSON
choices are record-local and preserve the EARTH/TEME/UTC/SGP4 profile defaults;
unknown metadata is not interpreted. XML assistance covers existing scalar,
version and unit values in recognized unqualified structure; paired element
names are not rewritten.
Assistance runs without importing data or opening resources, including in an edition without the reader. Quoted, triple-quoted and angle literals use the existing source map. Comments, ambiguous/foreign XML, DTDs, entity-spelled XML values, duplicate JSON keys and oversized payloads refuse assistance. This is not schema validation, reference navigation, rename or payload formatting. Existing lexical highlighting is unchanged. Native editor/compiler/runtime cases are authored and unrun; no rendered QA is claimed. See the orbital example.
CCSDS messages require an explicit version 2.0 or 3.0, header, object, reference
frame and time system. OMM KVN uses ordinary KEY = value lines without OEM's
META_START delimiters. The XML profile requires omm/oem, the matching
CCSDS_OMM_VERS/CCSDS_OEM_VERS id, header, body and segment containers.
OMM accepts exactly one segment; OEM accepts ordered segments. Qualified XML,
combined ndm containers, duplicate fields, foreign elements and DTD declarations
are rejected. Schema locations remain inert; no document is fetched.
OMM retains explicit mean elements, spacecraft/TLE parameters, user-defined
fields and optional 6×6 Cartesian covariance. It accepts exactly one positive
mean motion or semi-major axis, elliptic eccentricity, bounded angles, calendar
or ordinal epochs and exact integer identifiers. Optional covariance requires
all 21 lower-triangle fields; diagonals must be nonnegative. No positive-
semidefinite test, element-theory execution or propagation is performed. Numeric
units must match the declared CCSDS units (for example deg, km, rev/day,
km**3/s**2); units are not converted. The JSON branch alone retains the
CelesTrak GP defaults. Both CCSDS encodings return elements, header,
comments, version and encoding; raw lexical fields remain separate from
normalized fields and user-defined data.
A present TLE parameter block requires BSTAR, MEAN_MOTION_DOT and
MEAN_MOTION_DDOT; version 3 permits BTERM instead of BSTAR and AGOM
instead of MEAN_MOTION_DDOT. Alternative pairs are mutually exclusive, and
ELEMENT_SET_NO is limited to 0–9999. Omitting the entire optional block is
distinct from authoring an incomplete block. The positive XML fixtures were
also checked independently against the published SANA NDM/XML 3.0.0 schema;
this fixture check does not make the native reader a general XSD validator.
OEM XML feeds the same segment/state/covariance validator as KVN. Position,
velocity and acceleration fields accept their standard km-based units; unknown
units fail. All three acceleration components must be present together.
XML diagnostics and sample spans point into the original XML, including when
Grid quoted literals escape the XML attribute quotes. Comments retain Unicode.
Use triple-quoted or ordinary quoted literals for complete omm/oem XML
messages: their closing root tags collide with the corresponding outer angle
literal delimiter.
LandXML alignments retains ordered Line, Curve, Spiral and IrregularLine
segments as parameters and control points. North/east/[elevation] order and
source units are unchanged. Point references resolve to existing CgPoints;
dangling alignment control points fail. Curves require positive radii and
cw/ccw rotation. Spirals retain positive or INF endpoint radii and the
authored standard spiral type. Irregular lines retain explicit 3D point lists.
Station equations retain internal, back and ahead stations. Vertical ProfAlign
records contain ordered PVI, ParaCurve, CircCurve or UnsymParaCurve entries;
ProfSurf retains ordered station/elevation pairs. Native fields are accompanied
by original XML records. geometryRealized and continuityCertified remain
false: no tessellation, continuity adjustment, vertical curve evaluation, station
inversion or transformation is implied. Profile endpoints must be PVIs and
station sequences must increase. Unknown geometry kinds fail explicitly.
The orbital lexical grammar recognizes KVN fields/comments, XML tags/attributes, comments and CDATA, and GP JSON strings/numbers. LandXML uses the XML grammar. Completion and hover identify the contract without running a parser; diagnostics use the existing injected native service. No format-specific rename or visual geometry editor is advertised. Namespace-qualified orbital XML and full NDM containers remain explicit follow-up profiles, not accepted aliases.
References: CCSDS ODM 502.0-B-3, CCSDS XML 505.0-B-2, and buildingSMART LandXML alignments.
Chinese and WXF xiangqi moves
xiangqi contract revision 2 retains existing UCCI/ICCS coordinate moves and
adds whitespace-separated four-symbol Chinese/WXF descriptors: 炮二平五,
C2=5, H8+7, 前車进一, +R+1, R++1 and the WXF multi-pawn form 36=5.
Traditional/simplified characters and Chinese, ASCII or fullwidth digits are
accepted. = and . mean traverse; + and - mean advance and retreat.
Front/rear selection is retained explicitly; middle and numbered selectors
apply to pawns. Files are numbered from the moving player's perspective.
Each descriptor records piece, selection or source file, action, and a target
file or distance. Source bytes and UTF-8 spans survive. boardResolved: false
and legalityChecked: false mean no square, side-to-move, capture, legality or
board position is invented. Game headers, move numbers, annotations and engine
commands remain outside this movetext profile. Coordinate records retain their
existing shape. Highlighting covers all accepted token families.
References: WXF 2018 rules, section 7 and XQBase computer notation conventions.
Dictionary declarations, text runs, explicit connectivity and tuplets
cif contract 2 accepts non-nested, explicitly closed save_name … save_
frames alongside CIF 1.1 data blocks. Frame and data-name identity is
case-insensitive; duplicate frame names, empty/nested/unclosed frames and incomplete
loops fail. Frame-local data names have their own scope. dictionary.definitions
projects DDL1/DDL2 declarations into names, types, categories, mandatory codes,
enumerations, units and paired parent/child links. Original items, unknown
categories, lexemes and uncertainty spellings remain available. This is a
dictionary declaration reader. Explicit VALIDATE_CIF(data, dictionary) performs the bounded validation described below. Implicit imports and methods remain outside the parser; explicit supplied-resource validation is described below; CIF 2 syntax and explicit DDLm validation are described below. The projection preserves mandatory/type codes as
stated rather than converting them into stronger validation guarantees.
dexpi contract 2 retains DEXPI 1.3/Proteus 4.1 and adds connections,
nodes and edges. A segment's explicit Connection endpoints retain
FromID/ToID and zero-based FromNode/ToNode. A declared index into an
existing owner's ConnectionPoints/Node list must be in range. Missing and
dangling owner references remain unresolved; they produce no graph edge. Nodes
include isolated identified entities. Graph edges are undirected connectivity:
endpoint order does not establish fluid flow. Missing endpoints are not inferred.
Contract 3 additionally accepts the distinct DEXPI 2.0.1 exchange model, described below.
tei contract 3 adds textExport.runs: ordered text, line/page/column breaks
and gaps from TEI text content. Each run identifies its owning XML node and
nearest editorial alternative (lem, rdg, orig, reg, sic, corr, abbr
or expan). Mixed text before/after child elements keeps document order. This
export does not silently concatenate alternatives into a reading edition,
normalize whitespace or reconstruct glyphs. Contract 4 also supplies a native DOM for explicit editing and XML export, described below.
Local target, ref, sameAs, next and prev pointers join the existing
apparatus references. Unresolved/external pointers remain explicit. Full P5
schema/ODD validation is not claimed.
abc contract 3 adds triplets (3CDE and explicit ratios such as
(5:4:5CDEFG and (3:2:2CD. A group scales the next r notes/rests by q/p;
r defaults to p. Only triplets have an implicit q (2). Other groups require
it explicitly. Nested, incomplete and overflowing groups fail. Durations enter
the existing native score constructor; no second score evaluator is introduced.
The selected written-repeat, ornament and simultaneous-voice additions are specified in specialist enhancements; full ABC/LilyPond conformance remains outside the profiles.
The existing tags provide completion, generated hover/help, native diagnostics and embedded highlighting. CIF save frames and ABC tuplets have lexical tokens; TEI/DEXPI continue using XML highlighting. Dictionary reference navigation remains unimplemented. XML navigation is described below; XML rename is not supported.
Primary contracts: IUCr DDL2, DEXPI 1.3, TEI P5, and ABC 2.1.
Maritime visual-hoist transcription
maritime contract 3 accepts the existing Grid record v1 JSON and a second,
explicitly bounded surface: whitespace-separated uppercase visual
hoists (A–Q, S–Z, plus NC, CB and BR). For example, maritime"A G P Z" returns hoists
with code, individual flags in order, authored UTF-8 span and codebook concept identifiers. The fixed
codebook is NGA Publication 102 (2020), selected visual signals.
NC retains distress/immediate-assistance concepts, CB immediate assistance,
and BR an urgent helicopter request. They are complete hoists, not separate
letter instructions. The reader does not act on these messages.
Fishing-ground and harbor alternatives remain conditional; the reader does not
select an operating context. These are textual transcriptions of visual symbols,
not a standardized interchange file container or an operational signaling system.
R, other multi-letter codes, numerical complements, procedure/radio signals,
icebreaker exchanges and landing signals are outside this profile and fail
explicitly. JSON record-local navigation and checked rename continue to apply
only to the existing JSON carrier; visual hoists have no identifier definitions
to rename. Both surfaces have embedded lexical highlighting and native diagnostics.
Visual tokens also have bounded code completion and concept/context hover.
The new two-letter assignments are in Chapter 2.
The primary codebook is NGA Pub. 102, Chapter 1, page 21.
XML identifier navigation
The editor offers definition, references and occurrence highlighting inside
individual LandXML, TEI and DEXPI literals. LandXML links pntRef to CgPoint
name; TEI links local fragment pointers to xml:id (with witness typing for
wit); DEXPI links Proteus Connection endpoints to ID, and 2.x ObjectReference.object / References.objects local fragments to Object.id. Namespace aliases are
resolved, foreign namespace lookalikes ignored, and references never cross
literals. Grid escapes and UTF-8 payload offsets map back to LSP UTF-16 positions.
This syntax-only index does not invoke native parsers or fetch schemas. It
bounds payloads to 256 KiB, depth to 128 and total XML nodes/attributes to 25,000
per document index. Duplicate identities, DTDs and entity-spelled identity or
reference attributes refuse navigation for that literal. Unresolved/external
references provide no target. Local reference completion offers up to 128 identities within the same literal, replaces only the reference token, and restricts wit candidates to witnesses. Checked identity rename is available under the closed reference-completeness rules below; imported/named DEXPI path completion and cross-dictionary completion remain unsupported. The index is lazy per document revision; it adds no runtime resolve
work or background service.
For XML roots whose name matches the Grid tag, prefer triple quotes. Inside
an angle block, use an XML namespace prefix to keep the inner closing tag
distinct, for example <landxml><l:LandXML xmlns:l="http://www.landxml.org/schema/LandXML-1.2">…</l:LandXML></landxml>.
The prefix does not change the XML namespace. Existing Grid delimiter semantics
are preserved.
DEXPI 2.0.1 exchange model and TEI DOM interoperation
dexpi contract 3 dispatches an unqualified Model root to the native DEXPI
2.0.1 exchange reader. Static structural rules are generated from the published
DEXPI XML schema 1.0.0; that schema version differs from the specification
version. The input root has no version attribute: the output names the pinned
reader contract, not a version discovered from the document. PlantModel
continues to select the legacy 1.3 profile.
The exchange reader retains packages, type/property declarations, imported-model
URIs, instances, ordered compositions, scalar values and references. It checks
required/allowed attributes, child ordering/cardinality, lexical scalar values,
unique IDs/named declarations and declared import prefixes. String, Boolean,
Integer, Double and DateTime values retain their lexical spelling. Integers
outside native 64-bit JSON integer ranges remain text with exactIntegerAsText;
INF, -INF and NaN also remain explicit text. Dates remain authored text;
the bounded lexical validator supports 4–9 digit nonzero years.
objects, scalarValues, compositions, references, nodes and edges are
native data. Use graph plant = GRAPH(dexpi"""...""") for the compiled graph: the existing constructor admits inline closed data. A named parsed-data binding is not yet a supported live graph source; compiling it as an immutable snapshot would incorrectly discard later overrides. Graph nodes include anonymous and isolated objects. IDs based on
zero-based document positions are deterministic for identical input, not durable
identities across document restructuring. Directed edges describe composition
or explicit object references, not process flow. Dangling and imported
references remain unresolved and do not create graph edges. Imported models
are never fetched; metamodelValidated, importsResolved and
connectivityInferred are false. Structural exchange validation does not check
all imported Plant/Core classes, physical units or property-type constraints.
tei contract 4 adds dom, using Grid's existing native DOM structure with
qualified element names, namespace declarations, attributes and ordered text.
Existing DOM operations accept the TEI object directly:
source = tei"""<TEI xmlns="http://www.tei-c.org/ns/1.0"><text><body><p>Hello <hi>world</hi>.</p></body></text></TEI>"""
updated = DOM_SET_TEXT(source, "hi", "Grid & friends")
xml_text = TO_XML(updated)
The result is an XML DOM; it does not update the original TEI projection in
place. Reparse xml_text explicitly when fresh TEI entity tables are needed.
Export preserves text, namespace prefixes and XML escaping; it does not promise
original bytes, attribute order, CDATA/entity spellings, comments, processing
instructions or a schema-valid edited document. No witness choice, ODD lookup
or external schema validation is implicit.
Primary contract: DEXPI 2.0.1 metamodel and exchange format.
TEI temporal alignment
TEI contract 5 adds timelines, timepoints and temporalReferences alongside
its existing DOM and text/apparatus projections. Points preserve document order,
absolute-time lexemes, interval strings (including unknown/regular values),
inherited units/intervals and the source node for each inherited value. An
omitted since uses the enclosing origin only when no absolute value is given.
No timestamp arithmetic, timezone inference or media retrieval is performed.
Timelines require one or more direct when children; each when requires an
identity and empty content. Local since targets must be other points in the
same timeline; origin targets its own points or another timeline. Explicit
start/end on TEI timed elements target points; global synch also permits
other TEI identities. Unresolved/external/wrong-kind targets remain explicit
records with resolved: false. This resolves identities, not time equations;
cycles, temporal datatypes and full TEI schema conformance are not validated.
Completion filters temporal targets by kind/scope. Definition/reference lookup and checked rename share those constraints, and rename refuses unresolved or wrong-scope references. Native diagnostics retain payload locations through all literal delimiters. See the working model and the TEI definitions of timeline, when and timed attributes.
Explicit CIF dictionary validation
VALIDATE_CIF(data, dictionary) takes two already parsed cif objects in
Standard (Lite) or Pro. It returns grid.cif-validation.v1: valid, complete,
conformsToSupportedRules, checkedValues, diagnostics and unsupportedRules.
valid is null when any dictionary rule or required lookup is unsupported;
conformsToSupportedRules then describes only the checks actually performed.
Diagnostics retain block/frame, item name and original payload byte spans.
Imports are never fetched, dictionary methods never run, and declared units are
metadata rather than conversions or dimensional proofs.
The implemented DDL1/DDL2 rules cover primitive character/numeric types,
enumerations, DDL1 inclusive numeric ranges, DDL2 open ranges and explicit
singletons, permitted uncertainty, loop placement,
category/item requirements, aliases, composite keys and same-block parent links.
Supplied DDL2 type constructs use the supported Rust regular-expression subset,
anchored to the complete value. Unsupported constructs make the result incomplete.
Type declarations are limited to 128, each pattern to 16 KiB, aggregate patterns
to 256 KiB, and each compiled expression to 1 MiB. Exact decimal comparisons
preserve uncertainty lexemes and support exponents from -1,000,000 to 1,000,000;
larger syntactically valid exponents produce an incomplete result. Validation
uses existing input/output limits, cancellation checkpoints and at most 10,000
findings. Identifiers are bounded to 75 printable ASCII bytes, composite keys to 128 fields, and semantic work to the context node budget (one million by default). unsupportedRulesTruncated records the 10,000-rule reporting cap. Implicit mandatory codes, imported dictionaries, methods and DDL1/DDL2 save-frame data validation are explicitly unsupported. DDLm uses the separate profile below.
DDL1 null definitions describe the dictionary itself; they are accepted in a
supplied dictionary and rejected as data items. Both su and esd permit
standard uncertainty, and an explicit none condition is supported. Omitted
_list means no, as specified by DDL1; _list both permits scalar or looped
values. Only loop level 1 applies to CIF 1.1. Other levels and sequence (seq)
conditions remain incomplete rather than silently accepted.
Parent relationships can be declared on either side with _list_link_parent
or _list_link_child; child values require matching parents in the same data
block, without imposing parent uniqueness. _list_reference requires its names
in the referring item's loop. _list_uniqueness checks the declaring item
combined with the named fields; reference checks respect that explicit composite
instead of imposing a conflicting singleton key. The published PUBL_BODY shape
therefore permits a section and a footnote with the same label, but rejects a
repeated label/element pair. DDL1 alternatives and replacements are explicit, directed relationships.
Required fields may be satisfied by a declared alternative in the same loop;
references and scalar parent links can use a replacement when the canonical
field is absent. Chains are followed with cycle detection. A present canonical
field takes precedence. A replacement does not rewrite authored data: use of
the replaced name returns CIF_DEPRECATED_ITEM with severity warning, and
warnings alone do not make valid or conformsToSupportedRules false.
convention and conversion describe relationships but do not perform value
conversion or transfer required-field checks.
Trailing-underscore selectors expand to all matching non-dictionary-only fields. Every component of a compound alternative/key must be present, and key components must share the source loop. Group width is capped at 128 and relationship depth at 64; traversal consumes the semantic-work budget. Malformed relationship pairs fail explicitly. Unresolved names, over-depth chains, multiple applicable alternative key/parent selections and compound scalar-parent replacements make the result incomplete. No arbitrary field or conversion is selected. Direct related-item names retain literal-local editor navigation; compound selectors have no fabricated single definition target. Compound identifiers follow International Tables G, section 3.1.4.1. These rules also follow the DDL1 reference and its published validation examples.
DDL2 _item_range.minimum and _item_range.maximum are row-aligned pairs.
Each pair denotes an open interval; equal endpoints admit that exact value, and
multiple pairs form a union. An unquoted . is unbounded; quoted '.' remains a
character value. ? makes the range incomplete. Character ranges use ASCII
ordering, with case folding for uchar. Constraints over abstract types or
another item's range remain unsupported. Reversed, unpaired or malformed bounds
fail even if that item is absent from the data. Range bounds are compiled once
per definition; range and enumeration comparisons consume the validation work
budget. These semantics follow the DDL2 ITEM_RANGE contract.
The function borrows the native objects and validates their structure; it does not reparse source or trust the optional cached dictionary projection. It remains usable on saved LIR values after the literal parser binding is removed. Invalid native shapes and malformed supported dictionary declarations fail explicitly.
CIF editor assistance recognizes literal-local DDL1 _name and DDL2 _item.name
definitions, both DDL1 parent/child declarations, _list_reference and
_list_uniqueness, DDL2 category keys and _item_range.name associations. Definition, references,
highlights, hover and up to 128 local name completions share the native CIF lexer.
Duplicate identities, malformed loops and text-field identities refuse indexing.
There is no dictionary execution, cross-literal lookup or checked rename.
Assigned SignWriting repertoire
FSW and SWU contract revision 2 validate every key in sorting sequences, spatial
symbols and punctuation against the pinned ISWA 2010 repertoire: 652 bases and
37,811 assigned glyph combinations. Invalid combinations fail at the full FSW
key or original SWU scalar span. Results include glyphsValidated: true and
repertoire: "ISWA-2010"; those fields assert assignment, not rendering quality,
linguistic validity or signing semantics. Existing compiled values retain their
original metadata. New parser cache identities use revision 2.
FSW completion offers at most 96 assigned variants after a base such as S14d,
replacing only that symbol key. FSW and SWU hover explain assignment, base, fill
and rotation, including in escaped literals. Editor and parser use one immutable
repertoire table; they load no fonts and access no network. Metadata provenance
and the source font's SIL OFL notice are retained under
rust/grid-format-core/data/iswa-2010.json and OFL-ISWA.txt.
SiGML manual-token authoring
Within an unnamespaced sigml/hns_sign/hamnosys_manual sequence, the editor
completes partial ham... element names and explains known tokens on hover.
Its 216-name vocabulary is shared with the native reader and comes from the
published HNS SiGML DTD.
Edits replace only the element name, preserving XML delimiters and authored Grid
escapes across all three literal forms. A </sigml> XML root terminator also
closes Grid's angle form: use quoted/triple literals, or legal XML closing-tag
whitespace (</sigml >) inside the angle payload. Comments, CDATA, attributes, DTDs and
foreign-namespace parent elements do not receive manual-token suggestions.
Requests inspect at most 256 KiB of payload, 25,000 XML events/attributes and
128 parent levels. No parser execution, schema retrieval or animation occurs.
The reader preserves group tables per sign: id, kind, zero-based inclusive
startToken/endToken, and nullable parent. Sequence, parallel, fusion and
alternative begin/end pairs must nest correctly, with at most 128 open groups.
Unmatched, crossed and unclosed pairs report GRID_SIGML_GROUP at the authored
token; a group cannot cross sign boundaries. groupingValidated is true, while
phoneticSequenceValidated remains false. Empty balanced groups are retained;
this structural check does not assert their phonetic validity. Token streams
and existing attributes retain authored order. No motion is expanded or timed.
Completion offers a closing group marker only for the innermost open pair; hover explains the matching pair. Grouping context resets for each manual sign and malformed preceding group nesting suppresses suggestions. Ordinary tokens remain available; the editor does not guess handshape/orientation constraints. The UEA manual example provides an independent parallel-group fixture, with its nonmanual tier omitted explicitly. Hanke's description, section 2.5 explains movement grouping; this reader does not implement the complete phonetic grammar or avatar semantics. That work remains open. Navigation and rename are unsupported because these tokens are vocabulary symbols, not user-defined identities.
Checked XML identity edits
TEI xml:id, LandXML CgPoint.name, Proteus ID and DEXPI 2 Object.id can be
renamed with their resolved local references in the same literal. TEI linking
lists include copyOf, synch, exclude and select alongside the existing
pointers; DEXPI 2 includes DataReference.data. DEXPI object names and named/imported
paths are distinct from object IDs and are preserved when an ID changes.
Rename requires a recognized element/attribute vocabulary and complete local reference resolution. Unknown extensions, foreign elements, base-URI overrides, entity-spelled/encoded identities, extended pointers, duplicates, invalid witness targets or dangling references refuse the entire edit. TEI external pointers also refuse rename because the editor cannot establish whether they target this document. Navigation remains available where its narrower index is trustworthy. DEXPI 2's attribute and name/reference facts are shared with the native reader. TEI, LandXML and Proteus use the documented conservative vocabulary in the identity contract; this is reference-completeness checking, not full schema/metamodel validation.
New IDs are limited to 256 UTF-8 bytes. TEI uses XML NCNames; DEXPI 2 uses its ASCII exchange-name grammar. LandXML/Proteus accept the bounded unescaped name characters documented by the editor. Collisions in the same literal and edits that would exceed the 1 MiB source budget are rejected. Authored text, comments, other literals and named paths remain untouched. Ordinary, triple and angle literals use the compiler's existing Unicode/escape source mapping.
Monaco accepts the native-format symbol kinds returned by the Rust service, retains unavailable-rename reasons, and checks the exact occurrence set before applying one version-fenced workspace edit. Native identities do not use cached runtime-cell value hovers. This changes semantic editor behavior, without adding a visual layout, a parser in JavaScript or a second runtime evaluator.
CIF 2 and DDLm declaration reading
The exact initial #\#CIF_2.0 header (optionally preceded by a UTF-8 BOM)
selects CIF 2 syntax. Other files retain the CIF 1.1 reader. Native parser
contract revision 3 prevents reuse of earlier CIF expansion cache entries.
Standard/Lite and Pro include this reader; Core edition allocation is unchanged.
CIF 2 permits Unicode names and applies canonical caseless matching to block,
frame and data-name uniqueness. Authored spellings remain separate. Lists use
kind: "list", items; tables use kind: "table", entries, retaining authored
entry order, logical keys, raw keys, key spans and values. Compound values occupy
one loop cell. Duplicate exact logical table keys are rejected; key case remains
significant. No numeric precision or uncertainty is discarded.
Triple quotes do not process escapes. CR, LF and CRLF become logical LF inside
values; rawText appears when text normalization changes the physical text.
Semicolon fields implement prefixing and folding, including end-of-field fold
separators, following CIF 2 sections 3 and 5.
All spans remain byte offsets in the original payload. Lines are bounded to 2048
Unicode characters. Existing input, node, output and cancellation limits apply;
compound nesting additionally has a hard maximum of 128 and respects the supplied
depth budget. The final native-object depth budget can impose a lower practical
nesting limit because objects and arrays each contribute a level.
DDLm definitions expose names, categories, types, containers, dimensions, aliases
and import tables alongside all original fields. Imports are not resolved and
methods are never executed. VALIDATE_CIF accepts supplied DDLm declarations over CIF 1.1 scalar or CIF 2 compound data. Parsing alone never validates data. The optional supplied-resource validation profile below composes Contents imports.
The source-only editor navigates Unicode DDLm item definitions and recognized scalar or flat-list references. Category definitions, method bodies and import tables cannot create item identities. Compound loop values preserve column alignment. Rename remains unsupported. Monaco recognizes CIF 2 triple strings, compound delimiters and table keys in raw embedded literals; ordinary quoted Grid literals retain Grid escape highlighting.
Five upstream COMCIFS CIF API fixtures are retained with exact Git blob identities and their LGPL notices. They exercise lists, tables, Unicode, triple quotes and text protocols. The 2015 upstream C expectation for a final folding backslash predates the normative 2016 rule; Grid's assertion follows the latter. These fixtures establish bounded interoperability, not complete CIF/DDLm conformance. No C parser or external executable is linked.
Explicit DDLm validation
VALIDATE_CIF(data, dictionary) now recognizes _definition.id declarations.
It returns the same report with dictionaryLanguage: "DDLm". Each block and
save frame is checked separately; links never borrow values from another scope.
The input dictionary must contain the definitions needed for the data. This
bounded declarative profile supports:
- Text, Word, Code, Name, Tag, Integer, Real, Dimension, Range, Symop, Date, DateTime, Uri and Version contents, using the declared defaults when attributes are absent.
- Single, List, Array, Matrix and Table containers; explicit list/array/matrix dimensions, including zero sizes. Nested lists without dimensions remain incomplete. Table keys support Text, Code, Date, Uri and Version syntax and retain case-sensitive identity.
- Whole-value enumeration states, optional enumeration enforcement, and exact inclusive numeric bounds. Table entry order does not affect enumeration comparison. Malformed enumeration states are rejected with the dictionary.
- Unicode canonical caseless item identities, aliases, Set/Loop placement, compound category keys, Key uniqueness and same-scope linked values.
- Exact Number-purpose values without uncertainty. Scalar and compound Real Measurand/SU
definitions associate through the SU item's explicit
_name.linked_item_id; no name suffix is inferred. Parenthesized and separately supplied uncertainty must agree exactly, including exponent and authored trailing-zero precision. SU values must be nonnegative and cannot themselves carry uncertainty. An integrated SU value is checked against its own definition's constraints. For aligned associations, columns share a loop and row alignment or are both scalar. Different explicitly declared Set categories may associate within the same scalar scope; no value is borrowed across blocks or save frames. Missing recommended uncertainty is a warning; a known SU without its measured value is an error. Matching List/Array/Matrix definitions pair elements by position; matching Table definitions pair case-sensitive keys independently of key order. Containers and declared dimensions must match. Effective integrated uncertainty trees inherit SU ranges and whole-container enumerations. Integrated leaves can fill unknown explicit SU positions before enumeration checks. Missing SU definitions, unresolved cross-category associations, uncertainty-aware measurand ranges and uncertain-value identity remain incomplete. See the working measurement example. Separate Loop categories can also associate through explicit_name.linked_item_idrelationships covering a complete declared category key in either direction. Compound keys use their declared content types, including canonical caseless Code values and exact numeric identities. Both sides must match uniquely; row order is irrelevant. Missing counterparts retain missing/orphan diagnostics. Missing or ambiguous link plans, unresolved key values, and non-one-to-one correspondence remain incomplete. No multi-hop relation or positional join is inferred. Shared key correspondence is indexed once per scalar/frame scope and row layout; identity bytes and comparison work consume the operation limits. These distinctions follow the DDLm 4.1 purpose definitions.
Uri uses the existing pinned Rust fluent-uri parser for RFC 3986 reference
syntax, including absolute, relative, fragment-only and empty references. Invalid
escapes, authority syntax, raw Unicode IRIs and spaces fail. Validation neither
fetches nor normalizes a resource. DateTime accepts RFC 3339 full dates and
timestamps with T/t, seconds, optional fractional seconds and an explicit
Z/z or numeric offset. Calendar dates, clock fields and offset ranges are
checked. Reduced dates, offset-free times and hour 24 fail. A syntactically
well-formed second 60 keeps the result incomplete because leap-second history
has not been established; it is not certified as valid or rejected as an
ordinary malformed timestamp. Offsets, precision and authored spelling are
preserved, with lexical enumeration/key identity rather than instant or URI
equivalence. Direct _type.indices choices follow DDLm's separate vocabulary:
DateTime is not a direct index code. See the
URI/date example,
DDLm contents,
RFC 3986 reference syntax
and RFC 3339.
ByReference resolves _type.contents_referenced_id and Table
_type.indices_referenced_id against supplied item definitions and aliases,
including forward chains and explicitly composed imports. Resolution is
memoized once per validation, with iterative traversal and the operation's
work/cancellation limits. Missing targets, cycles or unsupported target types
leave validation incomplete, even when no corresponding values occur.
The referenced contents syntax applies to the receiving item's leaves; its
own container, dimensions, purpose, range and enumeration still apply.
These constraints are not copied from the target definition. Referenced Table
keys can use a supported scalar syntax such as Integer or DateTime, but remain
case-sensitive strings: '01', '1' and '+1' are distinct keys. Timestamp
history and bounded-exponent limitations also apply to referenced keys.
Inactive reference attributes do not change an explicitly declared direct type.
See the referenced-type example
and DDLm reference definition.
The DDLm 4.1 range definition permits reported values with associated SU to lie outside the declared inclusive range; that definition supplies no confidence threshold. Grid therefore reports these range checks as incomplete rather than inventing a Gaussian multiplier. Adding an explicit caller policy would be a separate validation contract, not an interpretation silently attached to imported dictionary declarations.
Implied contents/container declarations are supported for reference-dictionary
attributes (_definition.class Attribute). For each supplied save-frame
definition, contents come from that definition's _type.contents; container,
shape and Table index rules come from its structure declarations. Omitted
contents/container use DDLm defaults Text/Single; explicitly unknown declarations
remain incomplete. Contents and container may independently be Implied. The
receiving attribute keeps its own purpose, range and enumeration policy.
Forward contents/index references and aliases resolve only inside the same
supplied block, with memoized iterative traversal and existing work limits.
Missing/cyclic references, recursive Implied contexts and conflicting identities
are never inferred from the values. Attribute values in ordinary instance data
remain invalid. The source-only editor offers Implied choices and context help.
See the executable example
and the DDLm container contract.
This is selected attribute validation, not full reference-dictionary certification.
_dictionary_valid declarations now check attribute applicability in supplied
Reference and Instance dictionaries. Dictionary addresses the data-block root;
Category and Item address save frames using _definition.scope (Item when
omitted). Template and Function dictionaries are excluded. Missing dictionary
class uses the DDLm Instance default; explicit unknown classes/scopes remain
incomplete. This does not fetch a dictionary or execute its methods.
Each _dictionary_valid.attributes list names attributes or categories.
Attribute aliases resolve to the same identity; categories include attributes
in descendant categories. Mandatory omissions are errors, Recommended
omissions are warnings, and Prohibited occurrences are errors. Recommended is
the default option. Presence is distinct from a known value: an authored ?
satisfies a presence requirement, and still violates a prohibition. Ordinary
type/value checks continue separately. The deprecated two-element
_dictionary_valid.application declaration is accepted; conflicting current
and legacy declarations fail. Columns must share rows, duplicate scope/option
rows and Mandatory/Prohibited overlaps fail, and unknown selectors or scope
codes remain incomplete. Category cycles fail within the existing work budget.
Reference Attribute purposes Audit and Identify are recognized. Source-only
editor completion and hover cover applicability scope/option, dictionary class,
definition scope and these purposes across the three literal delimiters.
The applicability example
uses a Grid-authored minimal schema, with provenance beside its fixtures; it
is not the entire DDLm metamodel. Validation never inserts defaults into imported
data or certifies unsupported methods, inherited rules or other unknown semantics.
Inherited types, IRI/complex contents,
method execution, nested Loop-category semantics and unrecognized
attributes remain explicitly unsupported. complete: false and valid: null
prevent partial checks from claiming full conformance. This is instance
validation, not certification of a dictionary against the complete DDLm reference
dictionary. Dictionary authors can use local completion, navigation and Unicode
reference highlighting without executing validation. Scalar _type.contents, _type.indices,
_type.container, _type.purpose and _enumeration.mandatory values offer supported-profile
choices and hover help when the literal contains a DDLm definition declaration.
The editor replaces the authored value content, retaining its quotes. It tracks
loop columns and excludes comments and method text; the missing default slot described below also accepts insertion. The Monaco adapter preserves these
replacement ranges and enumeration kinds and discards obsolete responses.
CIF 2 identifiers allow up to 2,048 Unicode characters; compound validation uses the existing structural limits, at most 64 dimension axes, 128 key fields and the context's semantic-work budget. Comparison text also consumes one unit per 64 bytes, and canonical compound identities use a single size-bounded buffer. No ambient dictionary lookup occurs. The maintained tests include exact COMCIFS Core Dictionary save-frame excerpts under CC-BY-4.0, with provenance beside the fixture.
Static DDLm enumeration defaults
VALIDATE_CIF(data, dictionary) checks an item’s _enumeration.default
against the same type, container, dimension, purpose, range and enumeration
rules as an explicit value. This includes resolved ByReference types and
whole compound enumeration members. An incompatible default makes the
dictionary invalid even when the data supplies an acceptable value.
DDLm 4.1 reference
For an omitted item, validation borrows the declared value when the authored
data establishes its row count. A Set category supplies one scalar packet;
a Loop category supplies one value per row of a single physical loop. Items
without a category require an unambiguous scalar packet of known uncategorized
items. An explicit item or alias takes precedence, including an authored
? or .. Defaults never create rows or alter the imported CIF value.
The report gives staticDefaults.declarations and staticDefaults.applied.
When a value is inferred, staticDefaults.inferredValues counts the effective
values used during validation. They participate in parent links, category keys
and measurement checks. A diagnostic on a borrowed value identifies its span
with spanSource: "defaultDeclaration". Absent or split packets, conflicting
defaults, unresolved types and method-derived defaults leave inference
incomplete. Working example
In a closed CIF 2 item save frame, the editor offers up to 128 short, single-line
scalar states declared by _enumeration_set.state. At a scalar default, the
edit replaces the entire token, preserving the selected state’s CIF quotes and
Grid escapes. After _enumeration.default and horizontal whitespace at the end
of a line, completion can insert a missing default. Compound states are checked
by the validator but have no insertion suggestion.
Indexed DDLm enumeration defaults
VALIDATE_CIF can check omitted items using a dictionary lookup. For the
single-selector form, _enumeration.def_index_id names an item and
_enumeration_default.index and _enumeration_default.value supply paired
code keys and defaults. In the ordered form, _enumeration.def_index_ids names
the selectors in order. Each _enumeration_defaults.index list contains one
value per selector, paired with _enumeration_defaults.value. The validator
checks those key components against their selector definitions and checks the
defaults against the receiving item. It rejects duplicate canonical keys,
wrong tuple widths and unpaired table columns. DDLm 4.1
and IUCr dictionary handout
Explicit data columns, including explicit unknown values, take precedence.
For an omitted column, Grid uses authored selectors in the same scalar packet
or the same physical Loop category. Aliases resolve before lookup. Code
matching uses the validator’s case-insensitive identity, while integer selectors
use exact numeric identity. Grid treats inferred values as a temporary column
for type, category-key, measurement and parent-link checks. Rules requiring
an attribute to be explicitly present still inspect the authored data. The report counts
them in indexedDefaults.inferredValues. A finding located in an inferred
value carries spanSource: "defaultDeclaration". The source data remains
available exactly as imported. Working example
A known selector outside a single-index code table produces CIF_DEFAULT_INDEX.
Missing selectors, unmatched ordered tuples, split packets, cross-category selections,
and competing static defaults leave the result incomplete. Defaults do not
chain through other inferred selectors. Dictionary references in selector
lists have literal-local completion and navigation. A scalar default-table
value offers state choices from the same item save frame.
Supplied DDLm dictionary resources
VALIDATE_CIF(data, dictionary, resources) accepts an optional closed object
mapping absolute resource URIs to already parsed native CIF dictionary values.
The two-argument call preserves its existing behavior: import declarations remain
unsupported unless resources are supplied explicitly. This optional argument is
for DDLm dictionaries; it does not make DDL1/DDL2 import systems executable.
The complete example defines the data, dictionary, reusable type template and resource map in one model. After literal expansion, validation uses those native values from saved LIR. The compiler parser binding is needed to recompile the authored literals.
The supported Contents profile resolves nested save-frame imports, including
same-dictionary references, and caches each selected frame only for the current
validation call. Different resource values are separate inputs; there is no
process-global dictionary cache. Relative URI references resolve against the
importing dictionary's _dictionary.uri, or its explicitly supplied resource
key when no URI is declared. URI syntax uses the pinned Rust fluent-uri
parser; reference resolution follows RFC 3986 section 5.2. Resource keys use
exact resolved strings, without filesystem, DNS, percent-decoding, host-case
normalization or network discovery. Missing resources are errors even when
miss: 'Ignore' is set, because that policy concerns a missing definition
inside a supplied dictionary.
_import.get list-of-table declarations and ordered _import_details rows
(scalar columns or explicit single tables) are accepted. If both are authored,
their directives must agree. version requires
a valid semantic version with the same major version as the supplied dictionary.
dupl defaults to Exit; Ignore and Replace act on the entire affected
Loop category when an attribute collides, including scalar one-row authoring.
miss defaults to Exit; Ignore retains an explicit skipped-frame trace.
Save-frame matching follows CIF's canonical caseless identity. Original source
values remain unchanged. The report includes imports, dictionaryResources
and importsResolved; those fields describe resolution, not complete dictionary
conformance. Methods still make validation incomplete and never run.
Full imports bring in the selected definition and its descendants. The
importer must be a Category; the selected root becomes its child. Head-to-Head
imports omit the foreign Head and reparent only its immediate children. A Head
cannot be imported into a non-Head category or through Contents. Category
_definition.id and _name.object_id must agree canonically when both are given.
Ignore skips an already-present selected root and its incoming subtree;
otherwise duplicate policies apply to whole save frames, including descendants.
Replace replaces each colliding definition rather than merging its attributes.
Source dictionaries containing Full declarations are assembled before a Contents
lookup, so newly introduced or replaced definitions are visible. Same-dictionary
lookups also resolve pending Full declarations. Plain Contents-only dictionaries
retain lazy frame lookup. Full-source dictionary dependency cycles are rejected,
including cycles whose individual frame selection might be acyclic; category
and active-frame cycles also fail explicitly. This is bounded dictionary
composition, not complete metamodel validation: methods and unsupported
measurement rules still make complete false and valid null.
Importable dictionaries currently require one data block. Limits include 128 supplied resources, 4,096 bytes per resource URI, 64 active frames (also bounded by context depth), 10,000 trace/unresolved entries, and separate composition work and cumulative logical copy budgets derived from the context's node/output limits. Those are bounded logical operations, not measured peak RSS or hard real-time preemption.
Editor completion offers Contents, Exit, Ignore and Replace, plus Full
when the same save frame has one explicit Category scope declaration. These choices appear both in import-detail scalar fields and
direct mode, dupl and miss values inside _import.get and _import_details.single tables. It
preserves quotes and authored source offsets, and does not resolve resources while providing suggestions.
The Full-category example
shows an imported category and its item definition using the same native API.
Explicit UEB plain-text transcription
Standard (Lite) and Pro add ueb1 / PARSE_UEB1 and ueb2 / PARSE_UEB2.
The grade is explicit: ueb1"⠃" produces text b; ueb2"⠃" produces but.
All three literal delimiters work. Results contain format, grade, the pinned
profile, authored source, decoded text, transcribed and tableVersion.
Compiled literal results are ordinary native constants; saved LIR needs no
braille parser. Recompiling the literal requires the Standard assembly.
BRAILLE_TRANSLATE(text, "ueb2", "forward") encodes text to six-dot Unicode
braille; "backward" decodes it. The returned object contains profile, grade,
text, braille and tableVersion. Use "ueb1" for uncontracted English.
These are the pinned liblouis 3.39.0 plain-text tables executed by the repaired
native Rust louis-rs engine. No C executable, WASM, network, runtime table files,
locale discovery or caller-selected table program is used.
Layout whitespace is normalized to spaces (CRLF becomes one space) during transcription;
forward U+00A0 nonbreaking spaces retain the pinned table's numeric-grouping meaning.
encoded braille uses the Unicode braille blank U+2800 for those spaces.
the authored input stays in source for literal results, or the input-side field
for explicit transcription. BRF still decodes ASCII cells only. It does not infer
a grade. These profiles do not claim full UEB validation, arbitrary caller tables,
page layout, regional rules, mathematical expression transcription or contextual
Nemeth. Undefined-character fallback is an error; transliterating unsupported
characters into plausible output is not a fallback.
Forward transcription also accepts an optional fourth typeforms argument:
styles = [{class: "italic", start: 0, end: 16}]
result = BRAILLE_TRANSLATE("ROMEO AND JULIET", "ueb2", "forward", styles)
Each record has exactly class, start and end. Offsets count Unicode scalar
values in the authored print string, starting at zero, with an exclusive end;
they are neither UTF-8 bytes nor editor UTF-16 columns. Ranges must be nonempty
and within the string. Supported classes are italic, underline, bold,
script, transnote, and trans1 through trans5. The pinned table defines
their indicators; callers cannot install custom rules. At most 4,096 spans are
accepted and overlaps are allowed. The result additionally retains authored
typeforms and typeformOffsetUnit: "unicode-scalar".
Styles follow character origins through normalization and table corrections:
copied text keeps its origin, inserted replacement text inherits the first
replaced character, and deletions do not shift later authored styles. A style
covering only a removed CR contributes no indicator. Generated style runs are
also capped at 4,096. Supplying typeforms for backward transcription is an
error, including an empty array. To recover annotations, explicitly select the
three-argument backward-typeforms direction instead:
decoded = BRAILLE_TRANSLATE("⠨⠂⠃", "ueb2", "backward-typeforms")
/* text: "but"; typeforms: [{class:"italic", start:0, end:3}] */
Recovered ranges index Unicode scalars in the decoded text, including
contraction expansion and correction-rule provenance. They are ordered by class
then start, with adjacent same-class output merged. Overlapping classes remain
separate. The output additionally contains typeforms (possibly empty) and
typeformOffsetUnit: "unicode-scalar". Plain backward and literal parsing
retain their plain-text result shape. The pinned reverse algorithm includes a
terminating space in word emphasis before clearing that class; phrase emphasis
survives spaces until its terminator. This is explicit indicator recovery, not
font inference or a guarantee that translating back recreates identical cells.
The reverse example
includes overlapping bold/italic styles and a grade-2 contraction. Independent
reference coverage includes nine grade-1 and eight grade-2 reverse style answers;
broader translation options and full UEB conformance remain outside this claim.
The styled example includes a combining-accent correction. The public adapter matches 98 pinned forward grade-2 styled answers; this is a selected reference corpus, not full UEB or grade-1 styled conformance.
Function signature help exposes the optional argument, and hover documents classes, offset units and limits. Span records use ordinary Grid object/string highlighting. There is no inferred visual styling or record-field completion.
The authored input is capped at 65,536 UTF-8 bytes. Translation has a 524,288-byte per-stage output cap, 2,097,152 cumulative emitted bytes, 131,072 emitted events, and 64,000,000 logical work units. Host parser limits can lower applicable caps. Cancellation is checked in translation loops, the pattern VM and normalization. These are logical execution limits, not RSS quotas. Fixed tables initialize once per selected grade/direction on first use; table compilation is outside the per-translation budget. Partial output is discarded on failure.
The catalog supplies completion, hover and edition requirements. Raw angle/triple payloads highlight six-dot cells and flag eight-dot cells; ordinary quotes keep Grid string highlighting. Native validation maps errors through escaped and Unicode source spans. No payload formatting, identity navigation or tactile renderer is advertised. See the working model.
Mathematical braille from MathML
mathml / PARSE_MATHML contract revision 2 preserves the existing Content
MathML subset and adds MathML 3 Presentation elements, ordered text, attributes,
script pairs, table structure and opaque XML annotations. Fixed child counts,
parent ownership and semantics ordering are checked. MathML's named character
entities use the pinned WHATWG character-reference data,
including multi-codepoint values, without loading a DTD; other XML readers keep their existing
entity policy. This is structural import, not full schema validation, mathematical
evaluation or rendering. Content dictionaries and arbitrary annotations are not
executed. Namespace declarations remain required on imported MathML roots.
MATH_BRAILLE(mathml, profile) explicitly transcribes either MathML text or a
native mathml object. Select "nemeth" or "ueb-technical" for a linear
transcription, or "nemeth-spatial" for a standalone matrix. Standalone text also
accepts an unqualified math root. Native object indices, parent ownership and
ordered content are checked before serialization; corrupt or unreachable records
fail. A linear result contains code, profile, Unicode braille, canonicalMathml,
engineVersion and engineCommit. The working example
uses both input forms. BRAILLE_TRANSLATE remains the separate plain-text UEB
operation; braille and brf remain cell decoders.
The Standard/Pro native implementation pins MathCAT tag v0.7.7, commit
764d24d1241b20c0973e9dbcee62d022c1f99a4a; its upstream Cargo version is
0.7.6-rc.4. Fixed English/Nemeth/UEB Technical tables are embedded. There are no
user rule paths, ambient preferences, network retrieval, external processes or
WASM. Profile initialization is lazy on the invoking thread. Compilation of an
ordinary model does not initialize the engine. Saved native MathML values need
no compiler parser when loaded; executing MATH_BRAILLE still needs Standard's
native transcription function.
The separate "nemeth-spatial" profile produces up to 25 lines of 40 six-dot
cells each for one standalone rectangular matrix. Provide two or more rows and
explicit square, round, or determinant fences, using mo tokens or mfenced.
A cell can contain an unsigned integer, a unary minus followed by an integer (optionally inside one mrow), a single Latin letter, a horizontal
ellipsis (… or ⋯), a vertical ellipsis (⋮), or a descending diagonal ellipsis
(⋱). An empty cell becomes a short dash. Cells are left-aligned within each
column with one blank cell between columns. Width includes the enlarged grouping
signs. rows holds individual Unicode braille lines; braille joins them
with newlines. widthCells and heightLines describe the result.
Styled, spanned, ragged or oversized matrices, complex cell expressions,
runovers and surrounding equations are refused by this profile. The reference
fixtures reproduce BANA examples 25-69 and 25-71, including their original column padding. One augmented separator is supported through mtable columnlines: supply exactly one none or solid value per column gap, with at most one solid.
Working model and
BANA Nemeth Code, rules 19.6 and 25.8.
The two linear six-dot profiles reject undefined-character fallback and eight-dot output. In particular, two upstream linearized-matrix examples emit an eight-dot row marker and are explicitly refused. This does not claim every MathML construct has a supported braille rendering, bidirectional mathematical-braille decoding, page layout, caller-defined typeform mappings/preferences or complete regional conformance. Budgets cap input at 64 KiB, input elements at 4,096, depth at 128, each engine-emitted string at 512 KiB, created nodes at 131,072, logical intermediate strings at 4 MiB and observed work at 2,000,000 units. Caller limits can reduce those bounds; cancellation and exhaustion return errors. The final native object additionally obeys the caller’s total output limit. Logical budgets are not RSS limits.
The language service offers namespace-aware element completion and hover,
including parent-specific table children and matching closing names, across all
three literal delimiters. Within a complete quoted mathvariant attribute on
MathML tokens or mstyle, it offers the 18
MathML 3 symbol classes
and explains their role. Completion replaces the whole attribute value while
preserving quotes, namespace prefixes and Grid escapes. Unknown/foreign scopes,
comments, CDATA, opaque annotations, duplicate attributes and unfinished quotes
receive no typeform assistance. Other attribute values remain outside this
completion profile. These syntax operations do not execute the parser or
braille engine. Native validation supplies mapped payload diagnostics. Existing
XML highlighting covers raw triple-quoted and angle payloads; ordinary escaped
quotes retain literal-boundary highlighting. Payload formatting and semantic
identity rename are not added for MathML.
Authored mathvariant values already survive native import and feed the fixed
transcription profile. For example,
MATH_BRAILLE("<math><mn mathvariant='bold'>0</mn></math>", "nemeth")
returns braille ⠸⠼⠴. Editor-to-runtime checks cover bold, bold-fraktur,
sans-serif and script under Nemeth, plus bold-italic and italic under UEB
Technical, using unchanged pinned upstream answers. Offering a valid MathML
class does not promise a distinct braille rendering for every character/class
combination; arbitrary plain-text UEB typeform runs remain separate.
Direct HamNoSys characters
hamnosys / PARSE_HAMNOSYS imports the 200 distinct character spellings in the
University of Hamburg's published input palette,
pinned on 2026-10-31. This is a subset of Grid's existing 216-name SiGML vocabulary.
It accepts Unicode/private-use characters, rather than XML elements or textual
symbol names. The native object retains the original source, ordered tokens
with character/name/codepoint/UTF-8 span fields, layout records and nested groups.
Sequence, parallel, fusion and alternative grouping use the same checked pairs
as SiGML. Spaces remain hamspace symbols. Tabs, CR and LF are retained separately
as layout; they do not invent sign boundaries or motion. Unknown characters,
empty/space-only streams, crossed/unclosed groups and resource overruns fail
explicitly. These records do not certify phonetic sequence validity, choose a
sign-language interpretation or animate a sign. The Code editor loads an attributed
Hamburg webfont only for raw published glyphs inside HamNoSys literals. It does not
install a system font or apply a global private-use fallback. Other editor clients
need a compatible font. The repertoire provenance and
checksum-bound generated native table are retained in grid-format-core/data.
The unchanged webfont comes from Thomas Hanke, Universität Hamburg, HamNoSys 4.1.7, copyright 1989–2022 Universität Hamburg, under CC BY 4.0.
The editor offers published character-name completion (type a ham prefix),
matching group closers and codepoint/name hover without invoking the reader.
The working example uses actual
Unicode characters and explanatory symbol-name comments. Quoted literals retain
Grid’s existing escape rules; Rust-style \u{…} escapes are not supported.
Binary SPICE kernels
PARSE_DAF(kernel_bytes) accepts a supplied array of byte integers in Standard
(Lite) and Pro. It reads NAIF DAF SPK, binary PCK and CK files with explicit
LTL-IEEE or BIG-IEEE representation. It is a function-only reader; there is
no daf literal. The ordinary function catalog supplies editor completion,
hover and argument help. Existing spice literals continue to read text kernels.
The result has kernelType, binaryFormat, internalName,
ftpMarkerPresent, firstFreeAddress, commentAreaHex and ordered segments.
Each segment keeps its name, time bounds, time scale, integer descriptor,
one-based inclusive word addresses and exact dataHex in the input byte order.
SPK records expose target/center/frame IDs, PCK records expose frame-class and
reference-frame IDs, and CK records expose instrument/frame IDs and the angular
velocity flag. IDs remain integers; no implicit kernel or frame lookup occurs.
Raw comment records are retained as hexadecimal, not interpreted as prose.
SPK types 2 and 3 and PCK type 2 additionally expose records with the initial
epoch, interval length, record size, polynomial degree, component names and
ordered midpoint/radius/coefficient arrays. Other types keep their payload,
set decoded to false and records to null; the native parser also emits
GRID_DAF_OPAQUE_SEGMENT. Thus preserved data never implies a decoded record
layout. CK bounds are encoded spacecraft clock values; SPK/PCK bounds are TDB
seconds past J2000. No conversion, interpolation or propagation is performed.
Structural validation rejects truncated records, unsupported representations, damaged FTP markers, bad summary dimensions/links, invalid address ranges, metadata/data overlap, duplicate array storage and malformed supported Chebyshev directories. Input, output, node, depth and cancellation limits apply. Other DAF architectures, legacy files without explicit IEEE representation, DAS/DSK kernels, record codecs beyond those named above and full numerical kernel validation remain outside this profile.
The maintained examples are the exact external de430sub.bsp and
VEX_BOOM_V01.BC fixtures under rust/grid-format-standard/tests/fixtures/daf/.
Their provenance records pin source URLs, hashes and independently decoded
summaries. The compiler/runtime test imports each byte array through the normal
function and queries the loaded LIR result. A runtime function call still needs
the Standard parser assembly; a separately saved native value does not.
Sources: NAIF DAF, SPK, PCK, and CK.
Electrical SPICE netlists
spicenetlist and PARSE_SPICENETLIST(text) implement
spice3-descriptive-netlist-v1 in Standard (Lite) and Pro. Core reports the
parser as unavailable. All three Grid literal delimiters use the same native
reader; the payload's first line is its title, including for angle blocks.
This is an electrical format, separate from the orbital spice and daf
profiles. See the voltage-divider example.
The native object preserves source, title, ordered components, models,
subcircuits, inert directives, and resolved/unresolved references.
nodes and edges form a bipartite component/net graph suitable for
the literal constructor GRAPH(spicenetlist"""..."""). The one-argument
constructor for a named cell currently expects a parse/tree value, so use the
inline native literal shown in the example. Terminal edges carry zero-based positions and point from component to net to
represent incidence, not current or signal flow. Unused declared
subcircuit ports and global nets remain nodes. Local nets and names are
ASCII case-insensitive within their declaration scope; ground 0 and declared
.global nets share root scope. IDs are deterministic for identical source;
they are not persistent identities across edits. Subcircuit declarations remain
separate scopes; calls are references and are never flattened or expanded.
The profile reads fixed-terminal R/C/L/V/I/B, D, J/Z/U, M/S/O, T, linear E/G,
F/H/W controlling-source references, two-inductor K coupling and X subcircuit
calls. Q has three or four terminals only when exactly one locally declared
NPN/PNP model identifies the model position. Ambiguous or external-only Q
models fail instead of guessing a substrate terminal. Active-device model
references, X calls and controlling elements resolve in their declared scopes;
other missing targets remain explicit resolved: false references. X calls to
local declarations must match the declared port count. Expressions, numeric
suffixes, device options and parameter assignments retain raw spellings; this
reader does not validate every simulator's device semantics.
A nonempty title and final .end are required. + continuation lines join
logical cards; * comment lines and unquoted ;/$ comments are accepted.
Quoted paths preserve comment characters. Diagnostics use original UTF-8
card spans, including continuations, then map through Grid literal escapes.
Duplicate local names, unbalanced expressions, mismatched .ends, malformed
terminal lists and content after .end fail. Input/output, node/depth budgets
and cancellation apply.
.include/.inc paths and external .lib path section directives are retained
without opening files. Local library blocks, simulator control blocks,
conditional topology, polynomial controlled sources, multi-inductor coupling,
unsupported device prefixes, unknown dot directives (including net-alias commands)
and implicit macro expansion are excluded. Parameter/function, option, output,
initial-condition and analysis directives are retained as raw inert cards. There
is no simulation, numeric suffix conversion, equation generation, external
resource retrieval or ngspice execution.
The editor provides the native parser's tag/function completion and hover, lexical highlighting for raw literal bodies, literal-boundary ownership and compilation diagnostics. Ordinary quoted payloads retain Grid string/escape coloring. It does not claim net/model reference navigation, rename, completion inside payloads or visual schematic editing. Parsing runs at literal compilation or an explicit function call, with no discovery work on ordinary cell resolution.
Profile references: ngspice input structure and subcircuit declarations.
R model-formula syntax
rformula / PARSE_RFORMULA(text) implement r-model-formula-ast-v1 in
Standard (Lite), inherited by Pro. This reads authored formula syntax separately
from Grid's modelformula JSON record contract. It accepts one one-sided or
two-sided formula and returns a native syntax graph: root, optional response,
predictor, scalar-property nodes, and ordered child edges. Each node has
its authored label, kind, sourceStart/sourceEnd UTF-8 offsets and a
context distinguishing model syntax from expressions inside calls or indices.
Original source is preserved. Graph IDs identify syntax occurrences, not
variable bindings. See the working syntax graph.
The reader preserves symbolic +, -, *, /, :, ^, %in%, parentheses,
intercept literals and . without expanding model terms. Calls such as I,
offset, log, cbind and package-specific transformations remain syntax.
Named arguments, namespace/member/slot access, single/double indexing, logical
and comparison operators, custom percent operators and |/|| expressions
retain structure. The latter do not imply a mixed-effects fitting engine.
Operator precedence, right-associated powers and complete-expression newline
boundaries follow R. Names retain case and spelling; backticks support names
containing spaces. Numeric tokens are decimal lexemes with optional exponent,
L or i suffix, not converted floating-point estimates.
evaluated: false, termsExpanded: false and environment: null are explicit.
There is no R process, environment lookup, column substitution, expression
execution, dummy encoding, intercept inference, coefficient fitting or model
validation. Assignments, control statements, function definitions, blocks,
multiple formulas, hex/raw-string syntax and missing call arguments are outside
this profile. Quoted tokens retain simple R escapes; numeric Unicode/octal/hex
escapes are refused—literal Unicode is accepted. Locale-specific identifier
acceptance is not certified. Input/output/node/depth limits and cancellation
bound lexing and AST construction.
References: R model formulas, operator precedence, and R language syntax.
Brat standoff annotations
brat / PARSE_BRAT(text) implement brat-1.3-standoff-v1 in Standard (Lite),
inherited by Pro. They read TAB-separated .ann records independently of the
associated document. Native annotations retain source order, authored IDs,
types, text and original UTF-8 card spans. references identify targets and
resolution status; scalar nodes and reference edges support native graph
construction, including isolated annotations. See the
annotation graph example.
Supported records are text-bound T, event E, binary relation R, equivalence
*/R … Equiv, attribute A/legacy M, normalization N, and annotation note
#. Discontinuous text spans retain ordered, nonoverlapping segments. Document
offsets are zero-based Unicode character counts with exclusive ends; source
spans remain UTF-8 byte offsets in the annotation input. Binary attributes
retain true, explicit attribute values stay strings, and normalization
resource/entry identifiers are never fetched. Equivalence groups retain member
references rather than expanding transitive pairwise links.
Duplicate IDs, malformed offsets or records, and incompatible local reference
kinds fail. Forward references resolve after all declarations. Missing targets
remain native unresolved references and produce no graph edges. Native parser,
literal-compilation and editor diagnostics expose warnings; ordinary function
calls return the value with its explicit reference status/counts, without a
separate runtime warning channel. At most 64 individual warnings are returned; unresolvedCount remains
complete and diagnosticsTruncated reports truncation. Warning counts and all
reference records remain bounded by the normal input/output/node budgets.
documentValidated: false states that document length, mention-text agreement,
annotation configuration/ontology, event-type conventions and normalization
resources were not validated. Document-wide freeform notes without an annotation
ID are excluded. No text/media files, network resources or executables are
opened. The authoritative record syntax is the
brat standoff specification.
Both readers provide tag/function completion and hover, raw-body lexical grammars, literal boundaries and native diagnostics mapped through Grid escapes to editor UTF-16 ranges. Ordinary quotes retain Grid string/escape coloring. Payload reference completion, navigation, renaming, semantic R assistance and rendered editor QA are not claimed by these new profiles. Parser costs occur only for explicit imports; ordinary cell resolution performs no discovery.
FOLD frames
fold and PARSE_FOLD use fold-1x-frames-v2 (contract revision 2).
Existing single-frame results retain document, nodes, edges, faces and
dimension. When file_frames is present, the result also has frames in
source order, including the key frame at index 0. Each entry has id, parent,
inherit, its resolved document, and checked geometry tables. The top-level
document retains the complete authored JSON, including child frames. The
other top-level tables still describe frame 0.
file_frames[i] has ID i+1. A child with frame_inherit: true must name an
explicit integer frame_parent. Forward references are accepted; missing,
self and cyclic parents fail, including cycles among non-inheriting frames.
Inheritance copies missing whole fields, including custom metadata. A locally
present value replaces the parent's value completely; arrays and objects are
not merged, and null does not mean delete. File metadata and relationship
control fields do not propagate. A child without inheritance is independent
of its parent's geometry. File-level properties are forbidden in children.
Every resolved frame uses the existing coordinate/topology profile: finite 2D/3D vertices, checked vertex indices, edge assignments, optional fold angles and simple face polygons. Coordinate-free abstract complexes, derived geometry, layer-order validation and folding simulation remain outside this profile. The reader accepts up to 4,096 frames and applies parent-depth, cumulative expanded-node/byte and cancellation limits before or during expansion. The profile's duplicate-key behavior remains JSON last-value semantics.
Within closed JSON literals, the editor completes parent IDs and inheritance booleans, navigates parent references and highlights their occurrences. Parent suggestions exclude the current frame and descendants. Frame definitions are anchored to their opening braces. Hover explains IDs and whole-field inheritance. Source indexing rejects duplicate JSON keys to avoid ambiguous edits; native validation remains authoritative. Frame IDs are positional, so rename and payload formatting are not offered. The example compiles into native values that run after saved-LIR reload without a parser.
The contract follows the FOLD multiple-frame specification. Pinned upstream box and diagonal geometry fixtures exercise unchanged external files; inheritance/cycle/limit cases are authored contract tests, not an upstream multi-frame conformance corpus.
PED/FAM pedigrees and separated genotype calls
pedigree, ped, fam and PARSE_PEDIGREE use the Standard/Pro
plink-ped-separated-alleles-v2 profile (contract revision 2). The six-column
FAM output is retained. PED additionally accepts a consistent number of
whitespace-separated allele pairs after the pedigree columns. This follows the
published PLINK PED field layout.
For genotype-bearing input, the object adds variantCount, genotypeEncoding
and genotypes. Each call has person (zero-based people-table row),
variantIndex (zero-based authored variant order), alleles (two original
strings) and missing. 0 0 is a missing call; half-missing calls, incomplete
pairs and inconsistent row widths fail. Multicharacter alleles stay strings.
Allele order does not establish phase. Compound two-character genotype tokens
are not auto-detected; every two tokens are one variant in this explicit profile.
Marker names/coordinates require a separate map and are not invented here.
Existing family-local parent links, dangling-reference flags, isolated people
and cycle rejection remain. Phenotypes and sex codes stay authored values; no
clinical interpretation, Mendelian checking or genotype-derived parentage is
performed. Six-column and genotype-bearing records cannot be mixed in one
literal. Comments begin with # at the start of a line.
The editor provides parent completion, definitions, references, highlights and
hover within each family and literal, including ped/fam aliases and all
three delimiters. Duplicate identities suppress that literal's navigation.
Suggestions exclude self/other-parent IDs and offer 0 for an absent parent;
they do not certify ancestry validity, which the parser checks. Completion is
limited to IDs containing letters, digits, _, -, ., or : so insertions
remain valid across delimiters. Rename and payload formatting are unsupported.
See the model and
fixture provenance.
WFDB headers, signals and annotations
Standard (Lite) and Pro provide three native entry points:
| Entry point | Input and result |
|---|---|
wfdb / PARSE_WFDB(text) |
WFDB header text to native record, channel, group, calibration and segment declarations. All three literal delimiters work. |
READ_WFDB(header, resources[, frames]) |
Header text or native wfdb header plus an explicit object mapping exact file names to byte arrays. Returns raw digital, missing-aware digital and physical samples per channel. |
PARSE_WFDBANN(bytes[, format]) |
MIT (default), aha-distribution or aha-wfdb annotation bytes to native events. Explicit variant controls timestamp units; function only. |
The example supplies signal bytes without filesystem or network access. Headers retain authored source and byte spans. Resource names are exact object keys, including names that resemble paths; no environment search path, stdin, URL or external file is opened.
Single-record decoding supports null signals (0), first differences (8), and amplitude encodings 16, 24, 32, 61, 80, 160, 212, 310 and 311. FLAC storage formats 508, 516 and 524 decode exact signed 8-, 16- and 24-bit amplitudes. Channel groups must be consecutive and agree on storage layout. Mixed samples-per-frame remain separate channel arrays with their actual sample frequency. Skew remains an explicit negative first-sample offset; the reader does not resample or silently align channels. Packed final groups accept the exact bytes needed for the requested sample count. Preamble offsets are honored, and unused trailing bytes are reported for uncompressed storage.
FLAC resources must contain one complete stream after any declared preamble. The FLAC channel count must match the file group (at most eight channels), and all group channels must have equal samples per frame. Blocks may split WFDB frames; decoding restores the WFDB channel ordering. Timing and sample frequency come from the WFDB header, never from FLAC's conventional 96000-Hz placeholder. STREAMINFO bit depth and nonzero sample count must agree with the header. Unknown FLAC sample counts and absent MD5 are accepted; present MD5, frame CRC, contiguous frame bytes, sample sequence and exact decoded length are checked. Trailing bytes, concatenated streams and damaged/resynchronized frames fail. Optional tags/pictures are skipped without interpretation or external lookup. Cancellation is checked between library packet/decode calls and while copying samples; a library call itself is not preemptible. Input, output and decoded block scratch are bounded before allocation. Native execution of this new profile is deferred; fixtures and integration tests are authored, not passing validation claims. See the FLAC example and WFDB signal formats.
Stored digital values remain available as rawDigital; encoding-specific
missing values become blanks in digital and physical. physical uses
(digital - baseline) / gain only when a nonzero gain is declared. Missing or
zero gain remains uncalibrated. A declared checksum is checked against the full
stored channel before any missing-value conversion. A missing or zero header
frame count requires an explicit count; in that case checksum verification stays
unknown. Declared and supplied counts must agree. Input, sample allocation,
aggregate output and cancellation checks apply before and during decoding.
MIT annotation decoding retains signed skip intervals, persistent number/channel state and event-local subtypes. Auxiliary bytes remain exact, with a text field only when they are valid UTF-8. Metadata notes and user-defined codes are data: no implicit time rescaling, label substitution or clinical interpretation occurs. Malformed modifiers, truncation and missing termination fail explicitly. This entry point does not auto-detect annotation formats.
For fixed-width AHA files, explicitly choose aha-distribution (milliseconds
from the annotated segment) or aha-wfdb (sample intervals from the record).
Each event retains absolute time, unsigned serial, ahaCode, its mapped
numeric code, byte span, unused prefix and exact eight trailing bytes. The
WFDB variant additionally exposes storedMitCode, signed subtype, six exact
auxiliary bytes and ASCII text up to the first null. The distribution variant
leaves those extension fields blank: its trailing bytes are uninterpreted.
code follows the AHA symbol; the stored MIT code remains a separate field.
No timestamp conversion, clinical interpretation or inferred provenance occurs.
Whole-record physical EOF and uniform 0xff logical-EOF padding are accepted;
partial records, unknown AHA symbols and contaminated padding are rejected.
See the AHA example and the
WFDB annotation format reference.
Multisegment READ_WFDB inputs supply {segments: {name: {header, resources}}}.
Each named constituent has its own header text and byte-resource object, so two
segments may use the same file spelling without sharing their bytes. Repeated
constituents decode once; segmentSpans preserves every occurrence and master
frame offset. segmentRecords retains original header, samples and checksums.
Nested multisegment records and conflicting lengths/frequencies are rejected.
Fixed layouts retain channel order, calibration and signal metadata. Variable
layouts begin with an explicit zero-frame layout header whose signal files are
~ with format 0. Unique nonempty channel descriptions define the mapping;
missing channels and null segments become blanks. Matching samples-per-frame,
units are required: this profile does not infer unit conversions or resample.
Changing skew is aligned exactly in channel samples to the layout offset,
not rounded to frames. For target sample i, source index is
i + sourceSkew - layoutSkew. Positions outside the current segment become
blanks in all three arrays. No neighboring segment supplies a replacement.
The aggregate retains the layout firstSampleOffset; unchanged-skew outputs
retain their previous values. Changed channels have an explicit
segmentSpans.signalAlignment window: source/target starts, copied count and
leading/trailing blank counts. Original stored samples, including those outside
the aligned window, and their complete checksums stay in segmentRecords.
This is Grid's segment-local sample projection, not a claim of reproducing the
C library's frame-rounded deskew buffer behavior. See the
changing-skew example. Calibration changes map digital samples into
the layout's gain/baseline, rounding nearest with ties toward positive infinity.
Conversion overflow is rejected rather than saturated. Unknown calibration may
be retained unchanged but cannot be used for a calibration transformation.
digital and physical use layout calibration; rawDigital retains the source
segment's stored values and must be interpreted with segmentSpans and
segmentRecords, since calibration can change. layoutHeader retains the
selected layout. Annotations are not automatically concatenated.
The multisegment example
uses only explicitly supplied data. Ten assembly/reference tests and the existing
codec/annotation tests pass in a focused source snapshot (27 checks total);
five linked editor/compiler/runtime checks and ten assembly/reference checks
also pass. Shared-source changes during that run are recorded in the
integration evidence;
physical editions, CLI and live editor interactions are not inferred. The
WFDB multisegment reference
defines the channel/layout distinction. Three synthetic multisegment cases match
independent digital and physical answers from checksum-pinned WFDB 10.7.0
rdsamp: repeated fixed layouts, variable channel order/calibration with missing
channels and null segments, and negative halfway rounding. Inputs, answers and
reference identity are retained in tests/fixtures/wfdb/segments-reference.json
under grid-format-standard. Timestamp interpretation and waveform rendering remain
outstanding. Changing-skew assembly, AHA runtime/editor and FLAC native validation
are deferred; the earlier execution evidence does not cover these additions. The waveform Grid
record carrier is a different format.
The editor highlights header syntax and offers uncompressed and FLAC storage-format
numbers while preserving xN, :skew and +byte-offset modifiers. Field hover
explains calibration and explicit resources. External-reference navigation,
renaming and payload reformatting are unavailable. Native parser diagnostics
retain the ordinary/triple/angle source mapping.
The pinned synthetic fixture covers 499 frames in ten encodings against
independent WFDB rdsamp answers. An upstream synthetic wrann fixture also
checks repeated SKIP intervals at a 10-billion-tick timestamp. Unchanged bytes,
license and provenance live in rust/grid-format-standard/tests/fixtures/wfdb.
This verifies that fixture scope;
it is not unrestricted WFDB, medical-device or clinical conformance.
SACM assurance-case interchange
Standard/Pro PARSE_SACM(text), sacm"...", sacm"""...""" and
<sacm>...</sacm> import assurance-case instances. This is distinct from
the existing Grid gsn record carrier and from importing SACM's UML metamodel
with PARSE_XMI. The bounded sacm-instance-v1 profile recognizes the
20220301 SACM namespace and EMF package namespaces for SACM 2.0–2.3. It does
not certify the complete constraints of those metamodel versions.
records retains every XML element in source order, including foreign models,
attributes, mixed content, authored XMI identity, expanded type, source span and
EMF containment path. collections indexes packages, claims, reasoning,
relationships, artifacts and terminology by record number. Explicit assertion
status and boolean declaration flags are retained; omitted defaults are not
silently inferred. XMI IDs are namespace-aware and must be unique. SACM gid
values remain authored attributes rather than substitutes for XMI identity.
references retains each authored role and target in order, its owning record,
resolved local node (when available), and whether it is external. Local XMI IDs,
#id fragments and EMF positional containment paths resolve within the supplied
document. Child reference features using href or xmi:idref are supported.
Unresolved local targets produce diagnostics and no reference edge. External
references are retained without opening any file or network resource.
nodes and edges can be passed directly to GRAPH(...). Nodes represent
recognized SACM entities, including isolated claims and relationship entities;
explicitly referenced foreign records are also included. Other foreign records
remain available in records. Edges distinguish containment from named
reference roles. An inference with several sources remains one relationship
entity with ordered links: the importer does not turn it into proved pairwise
entailments. See examples/native-formats/sacm.grid.
Triple-quoted and angle literals embed XML highlighting; ordinary quoted literals retain Grid string highlighting. Parser diagnostics map through all literal delimiters. Source-only completion and hover explain assertion-status and boolean declaration values. Reference navigation, rename, automatic payload formatting and visual assurance-case editing are not implemented. No assertion is proved and no cited evidence is evaluated by this reader.
QIF 3.0 semantic PMI and GD&T
qif (alias qif3) and PARSE_QIF(text) import Quality Information Framework
3.0 XML in Standard and Pro. This is semantic manufacturing/inspection
interchange, not Quicken's financial QIF format.
The qif3-semantic-pmi-v1 profile retains ordered XML records, identified
entities, typed collections, references, and scalar-property nodes and
edges for GRAPH(...). Collections identify characteristic definitions,
nominals, items and measurements; corresponding feature families; datums and
datum frames; standards; and external document references. Raw attributes,
unknown records, source spans and exact numeric spellings remain available.
Scalar dimensional quantities identify their record, owner, numeric value,
exact lexical spelling, unit name, unit declaration and unit-selection source.
units preserves conversion factors and offsets as authored decimal text.
Values are not converted. Explicit unit attributes override primary units;
primary PMI units override the corresponding ordinary units only within the
sections specified by QIF PrimaryUnitsType. Otherwise the schema's SI defaults
apply. A custom explicit unit without a matching declaration remains explicit
with no invented conversion. Vector and other structured quantities remain in
source records rather than receiving inferred scalar semantics.
Local IDs resolve to entities. External xId and Id/XIds pairs retain the
external object identity and local external-document entity separately. Assembly
path references remain explicit. Nothing retrieves a URI, opens media, executes
an inspection plan or proves a tolerance is satisfied. Dangling references and
selected wrong-type reference targets produce warnings and no misleading graph
edge; the authored reference remains available.
Known enum, numeric, boolean, identifier, fixed-length-list and required-attribute
constraints are checked from pinned QIF 3.0 schema facts. The reader rejects
conflicting IDs, unit definitions and reference-list counts. This is not a full
XSD/XSLT validator or GD&T conformance engine: schemaValidated and
inspectionExecuted remain false. The independent NIST, widget and reference
fixtures are pinned with their upstream license and hashes.
Editor wiring selects XML highlighting and bounded, source-only completion and hover for unambiguous schema enum elements, including material conditions and datum precedence. It does not perform reference navigation, rename, XML formatting or graphical tolerance-frame editing. Four native compiler/runtime/editor checks pass against the recorded 0.76.0 artifacts, including saved-LIR graph reload. Rendered syntax passes the four theme/width cases; live popups remain separate.
Knotty XML stitch-pattern interchange
knotty and PARSE_KNOTTY(text) import the knotty-xml-2025-v1 profile in
Standard (Lite) and Pro. It retains a stitch pattern's authored structure:
ordered XML records, rows, rowGroups, instructionDefinitions, yarns,
options, dimensions, optional gauge, and nested operations. nodes and
edges describe row-group/operation containment for GRAPH(...).
A run names a stitch and optional yarn identity; a seq contains ordered
operations. Both retain authored repeat counts. Missing or zero counts mean a
variable repeat, represented by variableRepeat: true; Grid does not choose its
width or expand it. Large fixed repeats remain compact. Yarn colors are six-digit
RGB strings; gauge retains authored counts, measurements and cm/inch units
without conversion. Unknown stitch identifiers and metadata remain explicit.
Graph edges describe instructions, not inferred fabric connectivity.
The reader checks scalar structure, row coverage, duplicate row/yarn identities, RGB values, option enums, nonnegative counts, gauge values and declared repeat bounds. Undeclared yarns produce diagnostics and remain references, with no external lookup. DTDs are rejected. Input, depth, record, output and cancellation budgets apply. This is a structural interchange profile, not full XSD validation, knittability checking, machine execution or a chart renderer.
The pinned upstream lattice export uses dimensions/rows; its pinned XSD expects
row-count. The reader accepts that exact compatibility spelling with
GRID_KNOTTY_LEGACY_ROWS and records rowCountSpelling. The original fixture is
unchanged and fails the upstream schema at that mismatch; it is not described
as schema-valid. See reference provenance.
All three literal forms use XML lexical support. Bounded source-only completion
and hover offer option enums and common stitch identifiers. XML-sensitive stitch
text is escaped when inserted (w&t becomes w&t). These suggestions are not
an exhaustive stitch vocabulary. Automatic payload formatting, reference rename,
chart editing and visual knitting simulation remain unsupported. Native
compiler/runtime/editor contracts pass all four checks against the recorded
0.76.0 artifacts, including escaped insertion and saved-LIR graph reload.
Example: knotty.grid.
CrochetPARADE descriptive syntax
crochetparade / PARSE_CROCHETPARADE(text) is a Standard/Pro structural
reader. It preserves exact source, UTF-8 syntax spans, ordered syntax records,
compact repeat spellings, labels, attachment expressions and inert directives.
Its nodes and edges describe syntax containment, not fabric connectivity.
Counter expressions are retained without validation or evaluation. Aliases and
repeats are not expanded; directives and external resources are not executed.
This limited profile does not provide full upstream grammar conformance,
attachment resolution, geometric simulation or rendering.
All three literal delimiters have lexical highlighting. Payload completion, hover, navigation, rename and formatting remain unsupported. Native integration contracts pass all four checks against the recorded 0.76.0 artifacts. Seven direct reader tests passed, including four pinned upstream showcase patterns. See the fixture provenance.
Knitspeak written instructions
knitspeak / PARSE_KNITSPEAK(text) imports written knitting instructions in
Standard (Lite) and Pro. The native value contains exact source, source-spanned
records, courses, verticalRepeats, and syntax-containment nodes/edges.
Course ranges and fixed/adjustable repeats stay compact, even for billion-count
inputs. Courses retain their authored row/round distinction and explicit RS/WS
faces; absent faces remain absent. Stitch-count assertions are retained, not
solved against the instructions. Graphs describe syntax, not fabric topology.
The written-instructions profile accepts row lists/ranges, bracketed repeats, star repeats with end/last-stitch boundaries, common stitch/cable/compound phrases, wrapped yarn, short-row turns, in-next-stitch groups and final vertical repeat ranges. Statements end with periods. It rejects overlapping course numbers, missing vertical-repeat targets, unknown phrases, malformed groups, zero operation counts and nested/multiple adjustable-width sections. A zero stitch-count assertion after binding off is valid. Input, construction, depth, output and cancellation limits apply; course coverage is indexed without expanding ranges. The reader does not execute patterns, infer default faces, solve stitch counts, render charts or certify every knitting convention.
All three literal delimiters have lexical highlighting, source tag help and native diagnostic integration. Payload completion/hover, navigation, rename and formatting are unsupported. Four native integration contracts pass against the recorded 0.76.0 artifacts, including source mapping and parser-free graph reload. Ten direct-reader tests pass, including 31 pinned upstream row-list inputs; some upstream cases test unsupported stitch execution or fabric constraints, so accepting their syntax does not establish semantic equivalence with Knotty. Reference provenance and working example.
Xigt interlinear annotation interchange
xigt / PARSE_XIGT provides an external XML interchange reader for interlinear
annotations, alongside the simpler gloss text reader and Grid-defined
glosstiers records. See the Xigt contract
for tier scoping, Unicode span selection, native graph tables and editor
reference assistance. Six direct reader checks pass against independently
recorded upstream values; compiler/runtime and rendered checks remain separately
tracked in the parser ledger.
Open-PSA consequences and inherited metadata (revision 7)
openpsa / PARSE_OPENPSA now imports define-consequence and
define-consequence-group into consequences, consequenceGroups and
consequenceReferences. A consequence retains its initiating event, assigned
event tree and sequence node. The sequence may be bare or fully qualified but
must belong to that initiating tree, including assignment through initiating
groups. Nested and empty consequence groups remain explicit. Consequences and
groups may supply an initiating event's collected item. Duplicate members,
unresolved references, cross-tree sequences and dependency cycles are rejected.
These are structural records; no consequence probability or sequence traversal
is computed. See the authored example
and MEF organization grammar.
metadata.labels and metadata.declaredAttributes retain source node IDs and
owners. metadata.effectiveAttributes maps each declared owner/key to its source
attribute and owner, with an inherited flag. Values and optional type annotations
remain strings, including empty values and numeric-looking spellings. Local names
override inherited attributes; the complete declaration is replaced, so a missing
local type does not inherit an old type. Only fault trees, event trees and components
contribute inherited attributes; model metadata and labels do not. Duplicate local
keys, missing values, nested attribute content and misplaced/empty metadata sections
are rejected. Labels precede attributes, which precede the body, as defined in
MEF anatomy and
inheritance.
The output keeps one declaration per authored attribute and bounded effective
references rather than duplicating values. Import uses a mutable inheritance map
with undo records; it does not clone the full map for each XML node.
Editor support retains XML highlighting and adds consequence/group navigation, initiating-tree sequence completion and metadata help. The source-only index propagates static initiating-group assignments; it does not guess missing tree contexts or run the native parser. Rename remains unsupported. Reader, language service and saved-LIR/function/example tests are authored but unrun under the owner's native-validation deferral. Node adapter checks establish frontend wiring only. Revision 7 supersedes the earlier metadata/consequence limitations above. Missions/phases, report-fragment import, external functions and full dynamic/type/ domain certification remain open. The report chapter supplies standalone result shapes but no general model-level report wrapper; Grid does not invent one.
RELIABILITY_REPORT admission accepts the current import profile for its existing
independent static fault subset, and continues to accept historical flat models.
It rejects nonempty CCF, substitution, event-tree, consequence or parameter tables
and non-scalar stochastic expressions rather than ignoring their semantics. This
source repair has an authored regression case; execution remains deferred. It does
not add probability analysis for the new descriptive constructs.
Open-PSA missions and report fragments (revision 8)
define-alignment imports an ordered mission containing one or more named
define-phase records. Native alignments and phases retain parent IDs, order,
authored fraction spellings and instruction roots. Phase names are local to each
alignment; instruction references retain model scope. Fractions must be finite
and in [0, 1]; a compensated sum must be within 1e-12 of one. This is an
explicit import-profile tolerance. Values are never rescaled. Alignment/phase
metadata is local, not a new inherited container. Instructions use the existing
expression, formula and instruction tables; assignments are not run. Tree-link
instructions remain restricted to sequence definitions. See the
mission example and
MEF organization.
The same tag/function also accepts each of the three standalone roots documented in the MEF report chapter:
| Root | Native tables | Example |
|---|---|---|
sum-of-products |
Ordered products and signed event literals; raw extra attributes | Products |
measure |
Mean/deviation, confidence/error-factor values and quantile bins | Measure |
curve |
Ordered X/Y points, optional Z and axis annotations | Curve |
These return profile mef-2.0-report-fragment; model documents retain
mef-2.0-native-import. No aggregate report wrapper is invented. Report references
remain external names, with no implicit event declarations or navigation targets.
Declared counts/order annotations remain separate from observed counts: sparse
quantiles, duplicate/contradictory literals and empty products remain authored
data. No probability, minimality, interpolation, unit conversion or statistical
certification is computed. Numeric values must be finite; count fields must fit
signed 64-bit integers. Invalid shapes, duplicate/out-of-order measure sections,
invalid percentages/error factors/deviations, reversed bounds and unsupported
curve units fail. Curve names use the existing XML NCName validator.
Editor support preserves XML highlighting and adds phase symbols, fraction/help
text, report help and curve-unit completion. RELIABILITY_REPORT explicitly
refuses missions/phases and standalone reports. Reader, editor and compiler/LIR
cases are authored, but native validation remains deferred. External
includes/functions, full dynamic/type/domain certification and other reliability
grammars remain outstanding. Revision 8 supersedes the mission/report import
limitations recorded in earlier checkpoints.
UML XMI structure and interactions
xmi and PARSE_XMI use uml-structure-interactions-v2 in Standard and Pro.
The tag accepts ordinary quotes, triple quotes and angle blocks through the
existing native literal service. Contract revision 2 replaces prior cached
expansions. See the class and interaction example.
The result retains source-ordered elements, references and edges, and adds
umlTables. Present tables contain source-ordered rows; a table with no rows is
absent. Each row has node, optional id and name, owner (the parent element
index), kind, feature, typeInferred and the original attributes.
Indices refer to the result's elements array, not persistent cross-file IDs.
| Tables | Content |
|---|---|
classifiers, associations, generalizations, dependencies |
Selected UML class/data/interface types, association entities, inheritance and dependency records |
properties, operations, parameters, enumerationLiterals |
Explicitly typed records and selected concrete containment features |
interactions, lifelines, messages, occurrences, fragments |
Authored interaction structure, message endpoints, ordering references and combined-fragment/operand records |
values |
Explicit literal value specifications and opaque expressions; supplied values remain attributes |
A record belongs to one primary table: for example, an Interaction appears in
interactions, and an AssociationClass in associations. All records, including
unprojected guards and vendor elements, remain in elements.
The reader recognizes concrete containment types such as a Class's
ownedAttribute → Property and an Interaction's message → Message, using the
selected UML 2.5.1 metamodel
features. An explicit XMI type takes precedence. Abstract features such as
fragment, ownedBehavior, lowerValue and upperValue require an explicit
supported type to enter a typed table; Grid does not guess a concrete subtype.
typeInferred distinguishes this projection from authored type information.
Foreign namespace elements and their unknown children remain raw records.
References include association ends, classifiers, generalization, dependencies,
lifeline representation and coverage, message send/receive events and signatures,
execution endpoints, and stereotype base_* links. Local targets become edges;
dangling targets remain reference records with resolvedNode: null. External
hrefs and URI fragments remain unresolved with external: true; no resources
are retrieved. Duplicate IDs and malformed/unbound type QNames produce errors.
Multiplicity defaults, metaclass compatibility, association consistency, message
ordering and OCL constraints are not validated. Nothing executes a behavior or
renders a diagram: metamodelValidated, behaviorExecuted and
externalResourcesLoaded remain false. SysML profile semantics are separate.
The editor retains XML highlighting for triple-quoted and angle-block literals.
Namespace-aware local ID navigation, references, completion and identity hover
operate on authored source in all three forms. Suggestions enumerate document
IDs without metaclass filtering. Fragment-only href="#id" can navigate;
external links cannot. Duplicate identities, DTDs, unbound prefixes and
entity-spelled identities refuse indexing. Rename and payload formatting remain
unavailable because vendor/custom references cannot safely be rewritten.
Indexing is bounded by the existing 256 KiB literal and 25,000 shared work-unit
limits, depth 128, at most 128 choices per reference slot and 2 MiB choice text.
It never invokes the format reader or loads a schema.
This increment is source-implemented. Native reader, language-service and compiler/runtime acceptance cases are authored but remain unrun under the owner's native-validation deferral. Frontend transport-shape checks do not establish native or live-editor conformance.
Morse symbols and nominal timing
morse / PARSE_MORSE use itu-m1677-symbols-timing-v2 in Standard (Lite)
and Pro. Whitespace separates dot/dash groups; / separates words. Authored
whitespace width does not encode timing. The signal example
includes accented E and procedure signs. Empty input is an empty sequence.
// E, T, then A in a new word: 19 nominal dot units.
message_signals = morse". - / .-"
The selected ITU-R M.1677-1 (2009) assignments
add ..-.. (É), ...-. (understood), ........ (error), .-... (wait),
...-.- (end of work) and -.-.- (starting signal). The existing letter,
digit and punctuation mapping remains. Four groups retain machine-readable
alternativeInterpretations: K/invitation to transmit, X/multiplication,
addition/end of telegram and double hyphen/section separator. No meaning is
selected from context and no procedure is executed, including the error sign.
symbols retain code, character text when present, meaning, source byte spans
and nominal start/end units. Word-boundary rows retain source spans. text
remains the character projection for character-only input; it is null with
textComplete: false when any procedure-only sign appears. This avoids silently
dropping procedure signs or treating error as a deletion command. Ambiguous
character codes retain their legacy character projection and explicit alternatives.
timeline contains ordered marks and gaps, with durationUnits, startUnit,
endUnit, source start/end and the relevant symbol index. Internal gaps
have zero-width source locations; inter-symbol gaps reference whitespace and
word gaps reference the authored slash. A boundary is replaced by one gap,
not added to another gap. totalUnits ends at the final mark; no leading or
trailing silence is inferred. Timing uses nominal relative dot units, with
no speed, milliseconds, audio, measured rhythm or Farnsworth-spacing inference.
The profile rejects leading, repeated or trailing word separators, unlisted
joined prosigns, non-ITU exclamation spelling and other Morse alphabets. ... --- ...
is three characters; the joined distress signal is not admitted by this profile.
Payload diagnostics retain UTF-8 spans. Expansion obeys cancellation and bounded
node/output budgets, including timeline records.
Source-only editor completion replaces an existing token or inserts into an empty literal; labels explain supported symbols. Hover explains meanings, ambiguity and nominal duration. All three literal delimiters retain source mapping through escapes and Unicode; triple-quoted/angle payloads keep the existing Morse highlighting. No identity navigation, rename, playback or transmission is added. Indexing is lazy and bounded to 256 KiB per literal, 25,000 shared literal/token work units, and copied tokens of at most 16 bytes. Longer invalid groups remain the native diagnostic service's responsibility.
Contract revision 2 invalidates earlier expansion caches. Reader, editor and compiler/runtime cases are authored but native validation remains deferred; frontend wiring checks do not establish native or live-editor conformance.
Ahnentafel ancestry slots
ahnentafel / PARSE_AHNENTAFEL use ahnentafel-tabbed-slot-graph-v2 in
Standard (Lite)/Pro. This is Grid's tab-delimited representation of the
Ahnentafel numbering convention,
not a general genealogy interchange standard. Each nonblank line has a positive
unsigned 64-bit slot number, one tab and a nonempty name. Subject slot 1 is
required. Duplicate numeric slots fail, including lexical variants such as 1
and 01. Names are preserved; equal names do not identify the same person.
See the example.
The existing ancestors and links remain. Ancestors gain original numberText,
UTF-8 source start/end and zero-based generation (subject is generation 0).
Links retain whether their descendant slot was supplied. Added nodes use
canonical decimal string IDs, with names and generation; edges point from
an ancestor slot to its supplied descendant slot, labeled paternalSlot or
maternalSlot. Edges expose native graph endpoints from/to and retain the
existing source/target fields. Missing descendants do not create edges or fabricated nodes.
Every supplied slot appears, including isolated slots. These tables describe
positions in an asserted ancestry, not distinct people or certified parentage.
GRAPH(ahnentafel"""…""") uses the existing native graph admission path. The
fixture's four supplied slots produce four nodes and two edges: slot 8 has no
supplied descendant 4 and remains isolated. The reader, editor and saved-LIR
compiler/runtime cases passed on 2026-11-02. Pedigree-collapse mappings, qualified unions,
identity matching and narrative genealogy parsing remain separate work.
Number hover explains the slot's generation, descendant presence and conventional parent numbers. Checked integer arithmetic refuses to wrap parent numbers beyond the profile's range. Malformed rows, duplicate slots and missing subject refuse whole-literal help. All three delimiters retain source mapping through escaped tabs/newlines and Unicode. Existing tabbed-record highlighting remains; no rename, inferred-reference navigation or new person identities are added. The source index reuses the existing pedigree authoring cache with 256 KiB per literal and 25,000 shared row-work units. No native parser or runtime model is consulted.
Contract revision 3 invalidates earlier expansion caches for the corrected native graph endpoints. Live editor coverage is limited to the separately recorded QA observations; passing native service tests does not establish every rendered interaction.
Specialist profiles: signals, feature matrices, risk and geology
These additions use the existing signals, phonology, risk and geology
tags/functions in Standard (Lite), inherited by Pro. Their contract revision
is 2 for signals and risk; phonology uses revision 4; geology and maritime use revision 3. All retain the existing closed Grid JSON record
v1 surface. No new tag, parser discovery, WASM guest or execution path is added.
The revision changes invalidate earlier literal-expansion cache entries.
| Tag / function | Additional selected input | Native result and limits |
|---|---|---|
signals / PARSE_SIGNALS |
SEMAPHORE followed by LH/RH position pairs, e.g. down/low high/up down/low |
Ordered symbols with signaller-hand positions, letter/control, numeric alternative and UTF-8 spans. A-I/K retain 1-9/0 alternatives; J also indicates alphabetic mode. modeSelected and proceduresExecuted are false; text is null. |
phonology / PARSE_PHONOLOGY |
TEI P5 XML in http://www.tei-c.org/ns/1.0, rooted at fs, fLib, fvLib, fsdDecl or TEI |
Ordered records, structures, features, values and links. Binary, symbol, finite numeric, string, nested fs, vAlt/vNot/vColl and default nodes are retained. Local feats/fVal targets must exist and have the correct kind. External references remain unexpanded. |
risk / PARSE_RISK |
CSV with the exact NASA SFMEA worksheet headings below | Ordered failure rows and original field text. Repeated item IDs represent separate failure modes; quoted commas/newlines remain CSV content. Detectability and criticality are not numeric scores by default. |
risk / PARSE_RISK |
bowtie-diagram export with $schema: "https://todus-advisors.github/bowtie/v1", integer version 1 |
Original document plus graph tables, including isolated nodes. Requires unique node/edge IDs, resolved endpoints, known node kinds, positions and base labels. Retains barrier metadata; no breach propagation or risk calculation. |
geology / PARSE_GEOLOGY |
CSV header id,convention,azimuth,dip |
Unique orientation IDs; explicitly stated right-hand-rule or dip-direction. Finite decimal degrees with azimuth [0,360), dip [0,90]. Returns both right-hand strike and dip direction, retaining authored numeric spellings. No north datum or magnetic correction is inferred. |
geology / PARSE_GEOLOGY |
GeoSciML Lite 4.1 GeologicUnitView, directly or in GML/WFS 2.0 FeatureCollection |
Unit identifiers, names, lithology/rank/history, vocabulary URIs, raw flat fields, finite numeric ages in Ma, shape-node links and ordered XML records. Both age bounds must be ordered when present. Shape may be nil; geometry and unknown extension subtrees remain records. |
The semaphore position names are down, low, out, high, up,
across-low and across-high; only pairs in the
ANBG LH/RH table are admitted.
The left/right viewpoint is the signaller's. Grid's whitespace carrier is a
transcription convention, not an external file standard. Moving error signals,
word timing and control execution are outside this profile.
TEI's feature-structure encoding
is an external format. The included English [s] example is transcribed from its
published feature matrix. Feature names remain theory-specific. Local fsDecl/fDecl declarations add type and feature-name vocabularies.
Explicit authored features are checked against supported binary, symbol, string,
numeric interval, alternative and empty typed-fs ranges. Unknown feature names,
duplicate declarations and explicit out-of-range values are errors. Missing
features are not filled or rejected merely for being absent: TEI partial
structures may admit extensions. declarations and validation.checks explain
the checks; local inheritance combines all applicable ranges.
validation.unvalidated identifies missing base types, cross-feature
constraints, defaults, collection comparisons, truncated numerics and general
subsumption. Base-URI overrides are rejected in this local feature-reference
profile. This is not a whole-document validity result. External declarations
are not fetched; vocabularyValidated and completeSubsumption remain false.
The FMEA carrier uses these eight headers, in order:
ITEM DESCRIPTION,ITEM ID,FUNCTION,FAILURE MODE,LOCAL EFFECT,SYSTEM EFFECT,DETECTABILITY,CRIT
These are the NASA SFMEA worksheet
columns; the CSV carrier is Grid-defined. The separate bow-tie import follows
this pinned exporter.
It is not a generic BowTieXP importer or an assurance assessment. center
denotes the top event; other kinds are hazard, threat, consequence, and
barrier, with preventive/mitigative barrier type. Labels, positions and metadata
are retained without executing their behavior.
Orientation conversion uses dip direction = right-hand strike + 90° modulo 360,
as documented by USGS.
The CSV carrier is Grid-defined. GeoSciML Lite uses the exact namespace
http://www.opengis.net/gsml/4.1/geosciml-lite and the fields of the
4.1 schema, revision 4.1.1.
Basic and GeologicTime 4.1 use the exact GeoSciML-Basic and GeologicTime
namespace suffixes. Selected entities project to units, events, materials,
compositions, hierarchies, eras, boundaries, stratotypes, contacts and
timeObjects when present. Ordered XML records preserve unprojected metadata,
quantities and positional uncertainty. timePositions retains authored text,
frame and indeterminate-position attributes; no conversion to years or dates
is inferred. Prefix aliases resolve through actual XML namespace bindings.
Duplicate/invalid GML IDs are errors.
relationships retains explicit property roles such as hierarchyLink,
targetUnit, start, end, nextEra and previousEra. These meanings are not
interchangeable. Native nodes/edges use stable document ordinal keys and
from/to; inline and resolved local entity references yield edges, including
self-links. External and dangling references are retained in references with
a status and yield no unresolved graph edge. An inherited xml:base override
marks references base-uri-unresolved; they are not rebound to local IDs.
No URI retrieval, XSD/CRS
validation, stratigraphic rendering, age correlation or inferred layer order
is performed. The two OGC publisher instances are preserved byte-for-byte in
the fixture corpus; they have not been run through the native reader yet.
Examples: semaphore, maritime hoists, feature matrix, FMEA, bow-tie, orientations, GeoSciML units.
Editor support uses hybrid payload grammars, shared semaphore/ICS choices,
namespace-aware XML element/value choices and hover, bow-tie metadata enums,
and orientation-convention completion. CSV fields retain source ranges through
quoted commas, doubled quotes, CRLF and embedded line breaks. Separate lexical
states keep CSV quotation distinct from JSON escapes and XML attributes;
source formatting preserves all payloads. Ordinary quoted Grid literals retain
flat lexical highlighting; completion/hover source mapping covers all delimiters.
Existing Grid-record ID navigation/rename applies only to that JSON-v1 contract;
TEI feature XML adds local feats/fVal navigation with target-kind checks,
references/highlights and compatible-target completion. Bow-tie exports add
node/endpoint navigation, references/highlights and endpoint completion. Duplicate
identities refuse indexing; unresolved references do not invent a definition.
External-format rename is unavailable because these indexes do not establish
complete reference ownership. TEI declarations add local/inherited field choices and type/baseTypes navigation;
GeoSciML has element help without identity navigation. Native diagnostics
still require an injected parser binding. No parser runs for source-only help.
Native reader, compiler/runtime and language-service checks for these additions are authored and unrun, under the owner's validation deferral. Frontend/source checks are reported separately; no live-editor or complete-standard conformance claim follows from metadata or highlighting.
Remaining specialist encodings: selected implementation targets
These selections distinguish actual interchange from Grid's existing JSON record carriers. Selection alone is not an implementation or conformance claim. External executables, rendering and operational calculations remain separate.
| Family | Concrete encoding and next implementation boundary |
|---|---|
| Category diagrams | Source-implemented, native validation deferred: quiver version-0 export: decoded JSON begins with version and vertex count, followed by positional vertex/edge arrays. Endpoint indices may target earlier edges as well as vertices, so preserve higher cells. Bounded JSON/base64/share-link import and decoded index navigation now preserve higher cells; malformed/forward endpoints are rejected. Labels remain inert; no TeX/macros or commutativity proof. See the quiver contract below. |
| Reaction records | Source-implemented, native validation deferred: selected CML Schema 3 vocabulary and pinned CMLXOM reaction/scheme examples. Participants, raw counts, hierarchy, typed references and native containment graphs have bounded editor assistance. No dedicated reaction convention was established from the published convention list; full convention/schema certification, chemical balance, formula grammar and kinetics remain separate. |
| Mechanism steps | Source-implemented, native validation deferred: CML schemes/steps, mechanism/component annotations and explicit electron atom/bond references, with same-kind/molecule-local editor navigation. The pinned vocabulary describes detailed mechanisms as experimental. Explicit map contexts and partial-set incidence are implemented with source-only endpoint assistance. Selected MRV now retains curved-flow geometry, weights and atom endpoints with native incidence and scoped source assistance. Rendering, electron-count inference and chemical execution remain separate; see the MRV contract below. Existing Grid mechanism records remain available. |
| Feynman diagrams | Source-implemented, native validation deferred: FeynML 0.2.0.1 wrappers and standalone diagrams from the pinned producer. Child-element and legacy attribute endpoint forms are distinct; mixed forms fail. Ordered vertices, propagators and external legs produce entity-incidence graph tables with diagram-local vertex navigation. Broader versions, XML identity rename, particle inference, rendering and amplitudes remain. See the FeynML contract below. |
| Laban movement | Source-implemented, native validation deferred: gestureBot timed-pose JSON. Pinned consumer establishes seconds, five joints, head/arm vocabulary and time/duration ordering. Native poses/tracks/cues and conditional editor choices preserve source data without interpolation or playback. Legacy LabanotationSuite/Kinect-export objects now retain named keyframes and milliseconds with array vocabulary assistance. Full Labanotation, sensor capture and Benesh remain separate. |
| Causal DAG interchange | Source implemented: explicit DAGitty graph documents, all graph/edge kinds, bounded grouped expansion and structural cycle checks; local variable editor assistance. Exact contract. Native validation deferred; no full MAG/PAG proof, causal inference, legacy adjacency import or rendering. |
| Choreographic formations | Source implemented: selected CalChart formatVersion-1 JSON shows, with performer/formation identities, explicit curves, holds, inert continuity ASTs and source-only positional reference support. Contract. Native validation deferred; no binary SHW/viewer import, inferred motion, execution or rendering. |
| Benesh | Benesh Notation Editor is an identified producer. A usable machine-readable exchange schema and independent file were not established by this inspection. Keep the Grid record carrier; obtain an available encoding before promising external-score import. PDF staff images are not an interchangeable structured score. |
| Welding | Reuse QIF 3.0's pinned schema, already represented by the native qif reader: FrameWeldSymbolType, weld characteristic types and side/contour enums. A new focused typed-fragment fixture and native/editor/runtime cases exercise this existing implementation; they are authored and unrun. Explicit xsi:type enables enum assistance. Complete AWS/ISO convention checks and symbol rendering remain separate. |
New examples: declared features, GeoSciML Basic, geological time, QIF weld fragment. The QIF example is a synthetic typed fragment, not a full schema-valid drawing.
Quiver category-diagram exchange
categorydiagram / PARSE_CATEGORYDIAGRAM now accepts the pinned quiver v0
export in addition to the existing closed Grid record-v1 JSON carrier. Parser
contract revision 2 invalidates earlier expansion caches. Allocation stays
Standard (Lite), inherited by Pro; Core has no new physical dependency.
Inputs are decoded JSON arrays, standard-base64 UTF-8 JSON, or
https://q.uiver.app/#q=... links. Legacy ?q=... links are also accepted.
The bare canonical URL denotes the empty diagram. Additional share parameters
(including macros, macro URLs and renderer options) retain their raw encoded
text in shareParameters; no network request or label/stylesheet execution
occurs. Base64 accepts omitted final padding, rejects noncanonical unused bits,
and does not accept MIME line wrapping. Quiver contract errors select the
whole authored payload, never a decoded offset inside encoded data. JSON integers are limited to the exact
safe-integer range of the exporting JavaScript representation.
The array is [0, vertexCount, ...vertices, ...edges]. Vertices carry
nonnegative grid positions and optional labels/colours. Edges carry source and
target cell indices, optional labels, alignment, option deltas and colours.
Endpoints must precede the referencing cell; this permits higher cells while
excluding forward/self-reference cycles in the dependency structure. Ordinary
loop arrows between the same vertex are valid. Duplicate vertex positions,
invalid colours, arities, option types/ranges and duplicate JSON object keys
are errors. Unknown option data is retained without interpretation. Legacy
length/body-level options remain authored data; dependencyLevel describes
reference nesting, not a renderer's overridden line multiplicity.
cells preserves every vertex and arrow in order, including higher cells;
document retains the decoded export. nodes contains all cells and
edges contains two labelled incidence links from each arrow to its source and
target. This distinction keeps arrows-to-arrows representable. An isolated
vertex remains a node. Edge IDs and endpoints satisfy the existing native
GRAPH(...) table contract; the graph is not a commutativity proof.
graph cell_relations = GRAPH(categorydiagram"""[0,2,[0,0,"A"],[1,0,"B"],[0,1,"f"],[0,1,"g"],[2,3,"α"]]""")
cell_count = cell_relations.NODE_COUNT()
reference_count = cell_relations.EDGE_COUNT()
The expected counts are five cells and six incidence links. The saved-LIR case is authored but unrun under the current native-validation deferral. Standalone import example.
Decoded JSON has source-only indexed definition/reference/highlight support and endpoint completion limited to earlier cells. A definition selects that cell's opening bracket. Numeric index rename/reordering is unavailable; the existing Grid JSON record carrier retains its own checked ID rename. Base64 and share links have lexical and format help without fabricated JSON ranges. All Grid literal delimiters retain their source mapping; raw triple/angle payloads have embedded highlighting and ordinary escaped quotes remain flat.
The pinned upstream test corpus
provides a retained legacy URL with 16 vertices and 57 total cells, including
higher-cell references. Its decoded JSON is retained separately; Python's
standard base64/JSON decoding establishes fixture structure only. The native
reader, compiler/runtime and language-service cases are authored and unrun.
The adjacent QUIVER-LICENSE retains the upstream MIT notice. No renderer or
external executable is required by this reader.
FeynML diagram exchange
feynman / PARSE_FEYNMAN, contract revision 2, accepts the existing Grid
record-v1 JSON and the selected unnamespaced XML serialization from
FeynML revision 4f2ede5.
A <feynml version="0.2.0.1"> wrapper uses child-element endpoints. A standalone
<diagram> may use those children or the older attribute endpoints/sense.
A diagram cannot mix the two forms; other wrapper versions fail explicitly.
This is a bounded import profile, not universal FeynML version compatibility.
diagramsretain source order, optional authored IDs and the selected endpoint encoding.entitiesretain ordered vertices, propagators and external legs, their authored attributes and scalar source/target/sense/name/texname fields.documentElementsretains the ordered XML element/content tree, including symbolic momentum, labels, coordinates, styles, resource links and extensions. Particle IDs and coordinates remain authored strings; no PDG lookup or unit, momentum-conservation, particle-type or numeric-coordinate validation occurs.- Entity IDs must be nonempty, whitespace-free and unique within a diagram. Diagram IDs, when supplied, must be distinct. Reusing an entity ID in another diagram is permitted. Endpoints resolve only to vertices in their own diagram.
referencesclassifies each required endpoint as resolved, missing, unresolved or wrong-kind. The latter three remain structuredissuesin the result and do not create graph edges. They do not silently become vertices. Duplicate IDs, duplicate scalar fields, mixed endpoint forms, misplaced structural elements, DTDs, malformed XML andxml:basefail compilation/import.
nodes and edges form an entity-incidence graph: every vertex, propagator
and leg is a node, including isolated vertices. A propagator has a source and
target incidence edge; a leg has a target incidence edge. All edges point
from the connector entity to its referenced vertex. This direction describes
incidence, not charge, momentum or time flow. Authored leg sense remains separate.
Graph IDs are stable xml:<document-element-index> values within an unchanged
input; reordering the XML can change them. Structured raw properties stay in
entities/documentElements rather than nested graph properties.
imported = feynman"""<diagram>
<vertex id="v"/>
<leg id="e" pdgid="11"><target>v</target><sense>incoming</sense></leg>
</diagram>"""
graph diagram = GRAPH(imported)
Raw triple/angle literals receive XML lexical highlighting. The existing bounded,
lazy source index supplies local endpoint definition/references/highlights,
vertex-only completion and incoming/outgoing sense choices. Duplicate identities,
entity-spelled identities, ambiguous/mixed endpoint fields and xml:base refuse
identity assistance. Unknown endpoint names have completion but no invented
definition. XML identity rename and payload rewriting remain unavailable;
existing Grid-record-v1 JSON rename retains its earlier contract. Ordinary quoted
literals retain flat Grid escaping and mapped editor/diagnostic offsets.
The independent fixture extracts the complete XML stream output from the pinned
producer's debug/css.ipynb: four vertices, four propagators and four legs imply
12 incidence nodes and 12 links. Its stylesheet URL is retained, never fetched.
Fixture-only GPL-3.0 attribution/license is retained beside the data; no producer
implementation or Python runtime is incorporated. A synthetic fixture exercises
isolated vertices, non-ASCII IDs and symbolic momentum. Provenance records hashes
and separates these origins; this task did not run the producer.
Reader, source-editor and compiler/saved-LIR/GRAPH/diagnostic cases are authored. Native execution, live-editor QA and Performance remain owner-deferred. No stylesheet/TeX execution, rendering, amplitudes, exporter, new evaluator or new runtime dependency is introduced. Standard (Lite)/Pro allocation is unchanged.
CML reactions, schemes and mechanism annotations
reactions / PARSE_REACTIONS and mechanism / PARSE_MECHANISM, contract
revision 4, retain Grid record-v1 JSON and accept selected XML in
http://www.xml-cml.org/schema. Roots are cml, reaction, reactionList,
reactionScheme, mechanism or map. The old cml2/react namespace is not silently
aliased. Namespace prefixes may vary without changing meaning.
The import is grounded in the pinned Schema 3 vocabulary and CMLXOM publisher examples. The published conventions list does not supply a dedicated reaction convention. This delivery therefore names a bounded structural import, not a newly invented CML convention or complete XSD validator. Schema 3's extensible content model and experimental mechanism details do not justify inferring chemical behavior.
The native object contains:
records: ordered reaction/list/scheme/step entities; reactants, products, spectators and substances; molecules, atoms, bonds and formulas; mechanisms, components and electrons; condition lists, properties, amounts and scalars; maps and links. Other named CML elements become identity anchors, permitting contexts such as a namedreactantListwithout inventing chemical semantics. Each record retains its XML element index, raw attributes/content, nearest selected entity parent, sibling ordinal and eldest-molecule scope.groups: element-kind to document-element-index arrays. These indexdocumentElements, not positions in the smallerrecordsarray.documentElements: the full ordered element/content tree, including unknown extensions, names, units, quantity text, classifications and map annotations.referencesandissues: authored typed identity links and explicit unresolved, wrong-kind, ambiguous or external/unsupported targets.nodesandedges: every selected entity is a node, even if anonymous or isolated.containsedges preserve hierarchy and order;referenceedges preserve resolved explicit links.map-contextedges identify explicitly named contexts;map-endpointedges run from a link entity to a resolved endpoint. Stablexml:<element-index>identities apply within unchanged input; reordering input can change them.
Participant count is retained as the authored stoichiometricCount string and
checked as positive and at most 1e99. Missing counts stay absent; they are not
silently defaulted to one. amount is measured quantity, not a stoichiometric
multiplier. Quantity units, step yield/ratio and written ordering remain raw
metadata without conversions, kinetic meaning or inferred sequential execution.
A supported ref points to the same element kind. Atom/bond IDs are scoped to
the eldest containing molecule; other selected IDs use document scope. Duplicate
IDs in one scope fail. Explicit bond/electron atomRef, atomRefs, atomRefs2,
bondRef and bondRefs fields are checked for their supported arity and target
kind. Outside a molecule, an atom/bond name resolves only when globally unique;
ambiguity is retained instead of choosing a molecule. Compound identity spellings
are matched literally, without URI dereferencing. Link locator ref is not
interpreted as a same-kind entity reference.
References are not recursively expanded or used to merge property values.
Unknown/unresolved targets create no reference edges, but their authored records
and containment remain. DTDs, malformed XML, duplicate identities, invalid
participant counts/reference arities and xml:base fail. Full formula/atom-array
expansion, schema/convention constraints, reference inheritance and molecular validation remain outside this profile.
Map/link fromContext and toContext select descendants of explicit named CML
containers. A unique context ID resolves directly; an otherwise ambiguous ID
must name the nearest matching ancestor. Link declarations override their
containing map's context and fromType/toType. Types are literal local element
names per Schema 3; prefixed type strings such as the publisher's cml:atom
remain authored values without guessed namespace stripping. Missing contexts
produce issues and no endpoint edges; they never fall back to global resolution.
With no context, targets must be unique for the selected type throughout the
literal. fromRef/toRef are not aliases for the schema's context attributes.
mappings retains each endpoint's side, single/set attribute, expected type,
authored context, resolved context/target element indexes and status. from and
to each contain one ID; reserved null means unmapped, with no endpoint edge.
fromSet and toSet contain distinct same-type identities. Partial sets have
no inferred pairings or order semantics: four endpoint incidences for two
sets of two members do not become four atom-to-atom mappings. Source order is
retained as data only. mapSetsPaired remains false. Locator/extended links and
links outside a map retain their records with an unsupported-form issue.
Map example exercises duplicate atom IDs in separate molecules, set incidence, a link-level bond type override, an unmapped endpoint and a missing context. Its graph has 14 nodes and 23 edges; the missing context and endpoint remain two explicit issues. The editor uses the same indexed identity/context lookup for definitions and bounded completion, with distinct token spans even inside escaped quoted payloads. XML rename is unavailable.
Working example imports a
synthetic scheme with fractional participant count, a scoped bond and explicit
electron association. GRAPH(imported) produces 15 entity nodes and 18
containment/reference edges. This is a structure graph, not a claim that the
illustrated reaction is chemically balanced or that the electron moves along a
specified path. Both tags use the same native XML projection.
Raw triple/angle payloads have XML highlighting. The bounded lazy source index
provides definition/references/highlights and same-kind reference completion,
including molecule-scoped atom/bond names and explicit map-context/endpoint slots. Duplicate or entity-spelled identities,
ambiguous global names and xml:base do not produce guessed navigation. XML
rename remains unavailable; existing Grid-record-v1 JSON rename stays intact.
Ordinary quoted literals keep Grid escaping and mapped source positions.
Three independent CMLXOM examples retain attribution and their Apache-2.0 license. Only line endings/trailing whitespace were normalized and a modification comment added. Two fixtures are explicitly synthetic. A fourth publisher specimen is transcribed from pinned CMLMapTest.java with attribution, expanded namespace constant and whitespace. It intentionally lacks endpoint definitions; no prefixed type normalization is inferred. These files exercise real publisher vocabulary, including intentionally unresolved molecule refs and nested schemes; no producer, schema validator or chemical oracle was executed. Reader/editor and compiler/saved-LIR/GRAPH/diagnostic cases are authored. Native execution, live-editor QA and Performance remain deferred by owner. Standard (Lite)/Pro allocation is unchanged. No network loading, new evaluator, chemistry execution or runtime dependency was added.
gestureBot timed-pose JSON
laban / PARSE_LABAN, contract revision 3, retains the Grid record-v1 object
carrier and accepts the timed-pose JSON array used by Microsoft's
gestureBot Design Kit.
This is a named five-joint upper-body robotics format, not complete Labanotation,
or Benesh. The older Kinect/LabanotationSuite object format is described below.
Standard (Lite)/Pro allocation is unchanged.
Each array item requires numeric time in seconds. Present joints use the
case-sensitive keys head, relbow, rwrist, lelbow and lwrist, each with
dur (seconds), dir and lvl. Times/durations must be finite and nonnegative;
zero-duration placements and repeated timestamps are preserved. An empty array
and a time-only pose are allowed. No missing joint pose is synthesized.
Directions and levels accept ASCII case variants while retaining original text.
Arms admit forward, right forward, right, right backward, backward, left backward,
left, left forward and place. The head omits the three backward directions.
Levels are high, normal and low; place with normal is ambiguous and rejected.
These rules are pinned to the joint consumer.
The upstream controller logs some invalid values and proceeds with fallback
angles; Grid rejects them instead of silently importing those fallback poses.
The native object provides:
document: complete decoded JSON, including cues and extension fields.poses: source-order pose indexes and start times.movements: one row per authored joint occurrence, ordered by pose and the fixed joint list above, with original joint object, normalized direction/level, start, duration and computed end in seconds.tracks: movement indexes sorted by time, then duration, then source order. This reflects the consumer's ordering without creating or interpolating playback keyframes. Signed zero sorts as zero; original JSON remains retained.cues: text/MIDI/audio objects with source pose/time, optional duration/end and all original fields. Text, MIDI notes, encoded audio and file URLs are opaque; there is no speech, MIDI parsing, audio decoding or resource loading.issues: overlapping positive-duration intervals and unknown pose fields. Neither is discarded or silently resolved. Unknown fields stay indocument.latestPoseSecondsandmotionEndSeconds: separate maxima for authored pose starts and known movement ends. A time-only pose does not extend motion. Missing maxima are blank; unknown media duration is never fabricated.
nodes and edges form a pose-membership and track-order graph. Each pose,
movement and cue is a node; pose-to-item edges describe membership and
next-in-track edges link sorted occurrences of the same joint. Array indexes
form identities, so inserting/reordering poses can change graph IDs. Track edges
do not imply interpolation, physical feasibility or actuator commands.
The example preserves
out-of-order sparse poses, an overlap, Unicode text and an inert media URL;
GRAPH(imported) has nine nodes and seven edges.
JSON highlighting applies to raw triple/angle payloads; ordinary quoted Grid literals retain host escaping. Bounded source-only completion offers pose/joint keys, head-versus-arm directions, compatible levels and seconds help. Enum insertions replace string contents only; invalid unquoted scalar fields receive help without corrupting JSON. Timed poses have no named references or identity rename. Existing Grid-record-v1 navigation and checked rename remain available for the older object carrier.
Duplicate JSON keys, missing required fields, invalid direction/level pairs, negative/non-finite timings and end overflow fail. Parser diagnostics select the whole authored payload and map through Grid escapes/Unicode. The import does not apply the controller's millisecond rounding, synthesize start keyframes, calculate joint angles, solve kinematics or run any controller.
Two independent publisher files are retained with MIT attribution: hello.json
(ten poses, fifty movements, a 4.05-second motion end) and GestureFormat.json
(which includes cues and a time-only pose at 232 seconds). A third fixture is
synthetic. The producer/controller was inspected, not executed. Reader/editor
and compiler/saved-LIR/GRAPH/diagnostic cases are authored; native execution,
live-editor QA and Performance remain deferred by owner. No new runtime,
media dependency, worker or network operation was introduced.
LabanotationSuite named gestures
laban / PARSE_LABAN, contract revision 3, also accepts the older JSON written
by Microsoft's LabanotationSuite authoring tool.
Standard (Lite)/Pro allocation, Grid record-v1 input and gestureBot arrays remain.
This imports already-authored Kinect-derived notation, not raw Kinect sensor
frames or a movement-recognition algorithm.
The root is an object mapping gesture names to objects of named poses. Each pose
requires "start time": [value], a finite nonnegative number or numeric string
in milliseconds. Joint fields head, right elbow, right wrist, left elbow and left wrist contain [direction, level]. They use the same pinned
head/arm vocabulary as gestureBot. Missing joints remain absent, and time-only
poses and empty named gestures remain represented. Gesture/pose names are
nonempty; duplicate JSON keys fail, including escaped equivalents.
The upstream converter
changes some initial timestamps and derives durations from adjacent poses. Grid
retains the authored timestamp, including an initial 1 millisecond; it does
not apply those playback transformations. An optional duration is checked as
a one-item finite nonnegative numeric array and retained as authoredDuration.
It is not used as a movement interval. rotation remains uninterpreted data.
The native result contains:
document: complete decoded data, including unknown pose fields.gestures: every named gesture, its source-order pose indexes, a separatechronologicalPosesindex and optionallatestTimeMilliseconds.poses: gesture/name, authored-order index,timeMilliseconds, derivedtimeSeconds,authoredDurationand rawrotation.joints: individual authored joint arrays with pose/gesture membership, canonical joint key and normalized direction/level beside original values.tracks: joint indexes ordered by millisecond timestamp, then original member order for ties, independently for each gesture and joint.issues: unknown pose fields retained without interpretation.
Source member order is recorded independently of the JSON map implementation.
A Position10 member before Position2 stays first in poses; names are not
lexically or numerically sorted. Numeric object keys also retain textual order.
No gesture is discarded because a downstream player handles only one at a time.
Graph nodes represent gestures, poses and joint occurrences, including empty
or isolated entities. contains edges preserve membership; next-in-track
edges describe chronological joint order, without interpolating movement.
Positional graph IDs are stable for unchanged input and may change after member
insertion/reordering. The example
has three gestures, five poses, five joint occurrences, 13 nodes and 12 edges.
Raw payloads retain JSON highlighting. Bounded source assistance provides spaced field-name completion, conditional joint-array direction/level choices and millisecond help through all Grid literal delimiters. Non-string direction/level values receive no string-content replacement. Pose names are declarations, not cross-reference slots; this profile introduces no identity navigation or rename. Grid-record-v1 checked rename remains separate and unchanged.
Publisher hello.json and generated_motion_sample.json retain MIT attribution;
only line endings/trailing spaces and terminal newlines are normalized. They
contain 10/17 poses and 50/85 joint occurrences respectively. The sparse,
multi-gesture fixture is synthetic. Source inspection confirms milliseconds and
the retained initial times; neither the upstream producer/converter nor Grid's
native importer was executed for this increment. Native reader/compiler/runtime
validation, live-editor QA and Performance remain owner-deferred.
Benesh exchange-format research, 2026-11-01
The official editor introduction describes font-based, vector, freehand and text signs. The editor FAQ describes the product and access. Neither inspected document provides a machine-readable serialization contract or redistributable exchange fixture. This is a specific evidence gap, not proof that no format exists. A pinned file specification and representative permitted samples remain necessary for a real Benesh importer. Grid's existing Benesh record carrier is not renamed or counted as native BNE-file support; no software purchase, external contact or invented file encoding was used to fill that gap.
MRV molecules and curved electron-flow arrows
mechanism / PARSE_MECHANISM and reactions / PARSE_REACTIONS, contract
revision 4, accept selected Marvin XML (MRV)
through their existing Standard (Lite)/Pro parsers. No additional tag, package,
ChemAxon dependency or runtime engine is required. Grid record-v1 and the CML
profiles remain supported. The changed contract invalidates earlier expansions.
The reader accepts cml, MDocument, molecule or reaction roots, either in
http://www.chemaxon.com or the older empty namespace. Elements in other
namespaces remain raw data. It supports explicit <atom id="a1" .../> and
compact <atomArray atomID="a1 a2" elementType="C O" .../> forms. Selected
parallel columns are elementType, formalCharge, hydrogenCount, isotope,
lonePair, radical, mrvMap, x2, y2, x3, y3 and z3. Column lengths
must match atomID. Unknown compact attributes remain on documentElements
with an issue; they are not guessed into per-atom columns. Mixing explicit and
compact atoms in one array fails. Coordinates become finite numbers alongside
original string properties. Charges, isotopes and bond order remain authored
values, without valence or chemical validation.
Each MEFlow has exactly two direct children: a source MEFlowBasePoint or
MAtomSetPoint, then a target MAtomSetPoint. A base point has one atomRef;
an atom-set point has one or two distinct atomRefs. These use explicit
molID.atomID references, such as m1.a2. Optional weights contains exactly
two finite numbers, retained without normalization. An atom pair may describe
an incipient bond: Grid does not require or invent a molecular bond between it.
The pinned schema's numeric identity spellings are not a claimed XSD constraint;
the selected reader permits local nonempty identity names without dots.
Flow arcAngle, head/tail lengths, widths and skips are finite numeric geometry.
Head/tail flags and electron-container/index attributes are retained as integers.
These flags do not infer electron count, electron occupancy or a chemical
transformation. Missing geometry is absent rather than filled with viewer
defaults. Other attributes and ordered XML content remain in documentElements.
No arrow is rendered, animated or executed.
Identity scopes are explicit: molID is unique within its MDocument; atom IDs
and bond IDs are local to their nearest molecule. Separate documents may reuse
names. Forward references resolve after collecting atoms. Unresolved references
produce issues and null atom indexes, with no invented graph edge. Duplicate
identities, malformed endpoint cardinalities, nonfinite geometry and xml:base
fail. Nested-molecule ancestor fallback, SGroup expansion, full XSD validation,
non-flow graphical object references and external resources are outside this
selected profile; their uninterpreted XML is retained.
The native object contains records, atoms, bonds, flows, endpoints,
references, issues, nodes, edges and documentElements. Atom rows retain
XML element and compact-row indexes. Endpoint rows retain their source/target
role, raw references, resolved atom indexes and weights. Graph nodes represent
selected XML entities and every atom, including isolated atoms; containment and
reference edges describe incidence, not electron transfer. IDs are stable for
unchanged input and may change with source insertion or reordering. The
example contains two
documents, four atoms and three flows; its expected graph has 19 nodes and 25
edges, with one unresolved endpoint deliberately omitted from graph links.
The editor retains XML highlighting and adds bounded, source-only definition,
reference and completion support for compact atom tokens, explicit atom IDs,
local bond endpoints and document-scoped flow endpoints through all three Grid
literal delimiters. Entity-spelled or duplicate identities and xml:base refuse
navigation. XML identity rename remains unavailable. Source navigation does not
execute the parser and does not substitute for native semantic diagnostics.
The source contract was checked against the pinned 5.10 schema mirror and current publisher documentation. An independent ACE Organic mechanism test provides a 19-atom, 15-bond, three-flow fixture; Java string escapes were decoded and the upstream AGPL license is retained beside this test-only data. No producer, chemistry engine or XSD validator was run. Synthetic modern-namespace tests cover multiple scopes and unresolved endpoints. Native reader/compiler/runtime tests, live-editor QA and Performance remain owner-deferred.
TEI feature-type inheritance
phonology / PARSE_PHONOLOGY, contract revision 4, follows local fsDecl
baseTypes declarations when checking authored feature values. The TEI P5
4.12 inheritance contract
combines inherited and local specifications monotonically. A same-named local
feature cannot widen an inherited range. The feature-system chapter
separates that relationship from conditional defaults and full subsumption.
Grid now resolves forward-declared bases, traverses multiple inheritance and checks each supplied atomic value against every applicable supported range. Diamond paths contribute a shared declaration once. The existing binary, symbolic, string, numeric-range and alternation checks remain bounded. Empty typed-structure ranges accept a locally established subtype; the nested structure's authored fields are checked separately. Unknown type relationships remain unvalidated. This is explicit-value checking, not a general unification engine or a proof that an entire declared type has a valid instance.
Declarations retain their direct features and add baseTypes,
ancestorDeclarations, effectiveFeatures with every contributing constraint,
missingBaseTypes and inheritanceResolved. Successful checks identify all
contributing declaration nodes. Local cycles and malformed base names fail.
Missing bases and inherited fsConstraints disable complete explicit-value
checks for the affected type and remain visible in validation.unvalidated.
Nothing is fetched. Missing features and defaults are not materialized;
conditional defaults, complex collection ranges, truncated numerics and full
subsumption remain outside the selected checks.
The diamond-inheritance example
combines numeric ranges 0..10, 2..8 and 4..6: its authored value 5 passes
all three, while 7 fails despite passing the first two. The local label
constraint narrows two inherited choices to one. Its nested Leaf structure
satisfies an empty Base type range. Four explicit field checks are expected.
The fixture is synthetic and specification-derived, not output from an
independent TEI validator.
Source-only editor assistance combines inherited feature choices and navigates
fs/@type and individual fsDecl/@baseTypes tokens to local declarations.
Token edits retain their authored ranges through quoted, triple and angle-block
Grid literals. Incomplete inheritance suppresses the affected feature choices;
cycles or entity-spelled names refuse the index. Identity rename remains
unavailable. No parser execution or external schema loading occurs for this help.
A shared iterative traversal charges reachable ancestry and edges against the existing ingress/editor budget; independent types do not allocate a whole-document state array per type. Effective constraint tables can still grow with inheritance depth and are bounded by that budget. Default-path and selected costs are unmeasured. Native validation, live-editor QA and Performance remain owner-deferred; source/frontend checks are recorded separately.
DAGitty causal graph interchange
causaldag / PARSE_CAUSALDAG contract revision 3 keeps the Grid-record-v1
branch and adds explicit braced DAGitty documents. The native implementation
is based on the pinned publisher grammar,
consumer,
and structural checks.
No upstream code or fixture is copied; the regression fixture is synthetic and
has not been run through an upstream oracle. No JS runtime or dependency is added.
Use the causal-graph example. All three Grid delimiters and the native function share this profile. Standard (Lite)/Pro allocation stays unchanged.
For a native graph region, pass the literal directly:
graph causal = GRAPH(causaldag"""dag { X [exposure]; Y [outcome]; X -> Y; isolated }""")
nodeCount = causal.NODE_COUNT()
Named-data graph admission remains a separate recorded integration obligation.
- Headers:
dag,digraph,graph,pdag,mag,pag, optional graph name andstrictmarker. The marker is retained, as in the upstream grammar; it does not introduce a separate evaluator. - Bare or double-quoted identifiers, quoted concatenation, escaped quotes and backslash-newline continuation preserve decoded identity and authored text. Semicolons separate statements. Bare-body/legacy adjacency input and DOT comments/HTML labels are not admitted by this profile.
- Chained edges, anonymous/named groups and nested groups expand their actual member sets. Named groups are containers, not vertices. All nine operators retain tail/arrow/circle endpoint marks. Reversed operators normalize their source/target orientation. Repeated identical edge kinds merge attributes; parallel different kinds remain distinct. Self edges are rejected.
- Variables retain first-encounter order, including isolated vertices. Node
declarations accumulate exposure/outcome/latent/adjusted/selected roles and
their documented aliases; flags are presence-based even with an explicit
value. Unknown attributes remain inert.
posrequires two finite numbers,bbfour. Latest repeated attribute values win, whiledocumentretains original spelling, group names, duplicates and statement order. variablesandrelationspreserve rich role arrays, attribute objects, layout coordinates and normalized authored endpoints.nodesandedgesare separate graph-ready projections with scalar properties. Edges use the nativeid/from/tocontract and retain kind, endpoint marks and a relation index; nodes retain role flags and a variable index. Thegraphkind suppliesdirected:false; other kinds supply directed generic graph projections. A bidirected/partial relation stays one canonical marked relation, not an inferred set of causal reachability arcs. Generic traversal is not causal analysis. Empty variable names are rejected by the selected graph profile. Edge-chain/group attributes apply to every expanded relation; this deliberately avoids the upstream consumer's last-edge-only assignment for group products.- DAG admits directed/bidirected edges and rejects directed cycles. Graph admits undirected edges. PDAG/MAG admit directed/bidirected/undirected edges; PAG preserves every mark. PDAG/MAG/PAG reject directed cycles after contracting undirected components. Digraph retains directed cycles. These structural checks do not prove full MAG/PAG validity, maximality or causal claims.
- Source-only editor indexing offers literal-local variable definitions, references and completion, graph-kind and node-attribute choices, and hover. Quoted completion copies the original mapped token so ordinary Grid quotes retain escapes. First explicit declaration is the definition, otherwise the first endpoint occurrence. Malformed syntax yields no identity index. The lexical grammar uses existing theme tokens; identity rename is unavailable.
Syntax work, nesting, group products, owned string expansion and cancellation are bounded before/following construction as appropriate. Union-by-size and Kahn traversal avoid per-variable cycle searches. Parsing runs only at explicit parser ingress/compilation, with no new per-cell or per-resolve work. Native correctness and Performance remain unrun, including ordinary-path tax and selected-path cost. Regression sources cover graph kinds, marks, group products, duplicates, Unicode spans, limits, cancellation, all delimiters, function/literal equivalence, documented examples and saved-LIR graphs without the parser. Causal estimation, adjustment sets, interventions, layout, rendering, external resources and broader legacy input remain outside the descriptive profile.
CalChart choreography show JSON
choreography / PARSE_CHOREOGRAPHY contract revision 3 retains Grid-record-v1
and adds CalChart formatVersion: 1 JSON shows, pinned to
fb8e4bde3db9dabd52d1c27db5c064fd05dd36e9.
The producer's show schema,
show reader,
sheet reader/writer
and point reader
define this selected contract. The source calls this a new JSON show format;
this is not older binary .shw or the separate viewer export format.
Use the formation example.
Quoted, triple-quoted and angle-block literals and the native function share the
Standard (Lite)/Pro reader. formatVersion / labels_and_instruments selects
the external branch; Grid's version/nodes/edges carrier remains unchanged.
performersretain label/instrument data and zero-based array identities. Duplicate labels do not merge performers.formationsretain sheet order, names, integer counts and tempo, plus cumulative authored beat bounds. Zero counts and tempos remain explicit; no elapsed-seconds timeline is inferred.positionsretain authored coordinates, optional reference positions, symbols and display flags. Units are CalChartCoord::units(1/16 step). Fractions are not rounded; omitted references/flags remain null instead of receiving playback defaults. At most three reference positions are accepted, following the point reader rather than the looser published schema.curvesretain authored control points and performer assignments. The pinned schema sayspoint_indices; the actual reader/writer saysmarchers. Either is admitted with its original spelling recorded. If both occur, differing arrays fail; equal arrays are admitted without duplicate memberships.continuitiesretain symbol-scoped ordered procedure/value/point ASTs and legacy text. Shared native/editor vocabulary covers 22 procedure, 18 value and five point kinds. Known kinds require their declared fields, typed child kinds and enum values. Unknown future kinds are preserved inunvalidatedAst. This intentionally checks known nodes more strictly than the schema's broad fallback alternative, which could otherwise mask malformed known kinds.fermatasretain every authored hold in source order, including repeated beats. They do not silently collapse to the producer's last-value map or modify formation durations. Print continuity, media, images, mode and unknown fields remain indocument; media/base64 strings are not decoded, validated as image/audio bytes, fetched or executed.- Stable
nodes/edgesdescribe shows, performers, formations, positions, curves, continuity selection and next-formation order. No interpolated path, speed, collision, movement interval or choreography execution is invented. Point/performer count mismatches and out-of-range selection/curve/current-sheet references remain issues. Missing memberships are omitted, with isolated performers retained. Duplicate JSON keys and conflicting assignments fail. - JSON highlighting stays active. Source-only assistance navigates numeric selection/curve indices to performer labels and current-sheet indices to formation names, with literal-local numeric completion. Point-object starts also navigate their positional performer when present. Fields, symbols and AST kinds offer vocabulary completion and hover. Dual assignment fields suppress source indexing conservatively. Positional identities cannot be renamed through this profile; existing Grid-record rename remains unchanged.
The publisher fixture is transcribed from its validator test and carries GPL-2.0 attribution. It contains two labels but one point: the importer exposes that mismatch. A synthetic fixture adds duplicate labels, two formations, assigned curves, unknown AST data, inert media and dangling references. Neither fixture has been executed here by upstream CalChart. Seven focused native reader/editor/runtime cases and combined delimiter/function/cancellation/example/cost cases are authored, unrun under the owner's native-validation deferral.
Work and output measurements are bounded at parser ingress and projections; all execution remains on Grid's existing LIR path. No native conformance, physical-edition availability, rendered editor QA or measured performance claim follows from these source changes. Broader choreography and Benesh remain separate families/contracts.
Additional Benesh investigation
The MacBenesh manual describes score frames, signs, saving and print/paint output, but the inspected manual does not establish a machine-readable exchange schema or permitted sample bytes. This adds another inspected source; it does not prove that a serialization is unavailable elsewhere. An actual encoding contract and representative permitted files remain the concrete prerequisites for a Benesh reader. No software was purchased or run, and nobody was contacted.
Native graph projection correction, 2026-11-01
Source review against grid-gir-passes/src/lowering/graph/native_data.rs
found that the initial, unexecuted DAGitty and CalChart implementations emitted
source/target graph endpoints, but native graph admission requires from/to.
DAGitty also included non-scalar attributes/roles/positions in graph rows.
Revision 3 corrects both contracts; rich DAGitty data remains in separate
variables/relations tables. CalChart's existing rich tables remain unchanged.
The earlier implementation evidence is retained as historical source evidence,
not promoted to executed graph acceptance.
A new reader contract case checks eight specialist projections for scalar
properties, unique identities and resolved from/to endpoints. A new
compiler/runtime case compares DAGitty and CalChart projections with handwritten
native graph constants through saved LIR. Both are authored and unrun. Named
live-data GRAPH(binding) remains separate work: its current tree-source
binding must not be replaced by a frozen compile-time copy.
The handwritten closed-object form also preserves directed: FALSE instead of
forcing directed edges. Omission defaults to TRUE; nonboolean and live
direction expressions refuse at compilation. Two lowering cases check the
portable payload/handle flags and invalid inputs; all native cases remain unrun.
The saved-LIR comparison now checks out-degrees and every ordered reachability
pair, including reversed edges, undirected graphs and isolated vertices.
Shared graph data admission, 2026-11-01
The compiler's native graph constants now use the shared
grid-value::native_graph_data admission owner. It borrows decoded JSON or
resident closed records and ordered row sequences, checks the same portable
GraphSpec, and rejects duplicate IDs, dangling endpoints, structured properties,
nonfinite numbers and invalid direction. Node/edge counts, cumulative work and
logical allocation bytes are bounded; the selected caller's cancellation and
deadline control also reaches final GraphSpec validation. These counters are
not measured RSS or latency. Preceding text decoders retain their own input,
depth and duplicate-key obligations.
The resident adapter preserves native record identity rather than interpreting arbitrary key/value arrays as objects. Explicit legacy object carriers are accepted with duplicate-field checks; flat or one-row arrays and native vectors/tuples/deques may carry records. Encoded handles and unsupported scalar carriers refuse. Signed 64-bit exact integers remain exact; integral native numbers are checked before conversion, without saturation. Rich root metadata is not copied or traversed.
Five focused cases and the existing compiler/saved-LIR controls are authored,
not executed. This is a shared admission implementation, not completion of live
GRAPH(named_value). The next runtime change must version the source contract,
carry changing direction through primary and derived graph handles, reuse exact
source-revision caching, and preserve failure/recovery and saved-LIR behavior.
Existing tree and certificate-bound symbolic result semantics remain intact.
Live native graph data, 2026-11-01
The shared admission stage above is now connected to GRAPH(named_value).
For example, import a literal into data, then declare graph links = GRAPH(data). The binding tracks the current value; it does not freeze the
initial literal. The same form accepts a computed native object with nodes,
edges and boolean directed. See the reactive example.
Graph ABI 11/source schema 2 carries revision-dependent direction through primary and derived graph handles. Old schema-1 tree bindings remain readable. Changed sources are bounded before revision hashing, including metadata omitted from graph projections. Existing typed-object carriers decode with depth, duplicate-field and cumulative allocation checks. No original format parser is needed to hydrate compiled values. Invalid replacements fail; a later valid replacement can rebuild the graph through the existing resident store.
The editor uses the existing Grid reference and graph-method support; no tag or embedded grammar is added. Source-only payload navigation remains local to its literal. This does not add runtime-derived node completion or payload formatting. No rendered editor QA was performed for this increment.
Ten native cases cover bounded wire decoding, metadata extent, dialect/flag compatibility, old tree metadata, changed direction and derived graphs, query-only edits, columnar layout identity, malformed-value recovery, example reload and eight named specialist projections compared with inline graphs after saved-LIR loading. All are authored and unrun under the native-validation deferral. Source checks cannot establish these runtime guarantees; see the evidence record.
RomanText analysis documents
roman accepts the descriptive grammar in the RomanText specification, alongside existing chord lists. See the analysis example.
A document returns format: "romantext" with ordered entries. Measure entries
have a measure range/ending/variant and events; each event retains its source,
payload-relative UTF-8 span and authored beat text (default "1" before an explicit
beat). Key, meter and minor-mode changes remain ordered records, without inferred
inheritance. A movement scopes measure identities. Duplicate/overlapping
identities reject; variant readings and alternative endings remain distinct.
Copy entries retain equal-length earlier source ranges without materializing
measures. This supports compact and overlapping copies without unbounded
expansion. Gaps in numbering may imply held harmony in RomanText; Grid neither
fills those gaps nor claims reference resolution. Pedal endpoints are retained
with the standard exclusive end convention. Unknown metadata has known: false.
pitchesRealized, copiesExpanded, timingRealized and referencesResolved are
all false. Numeric subdivision strings such as 1.66.5 are never rounded into
exact timestamps. Supported meter syntax is simple/additive integer numerators
over power-of-two denominators, C, Cut, and Slow/Fast prefixes. Other
music21 meter dialects, contextual musical validity, score rendering and playback
remain outside this profile.
The implementation reuses native parser limits, cancellation and cache identity; no Python or external executable runs. Four BSD-licensed music21 source fixtures are pinned with provenance. Parser, editor and saved-LIR acceptance are authored but unrun while native validation is deferred. Monaco lexical support and shared LSP completion/hover are implemented; live rendered QA is outstanding.
Highlighting native payloads in VS Code
The editor recognizes all 204 literal spellings from the native parser catalog, including aliases. Angle blocks close on their own spelling with case-insensitive ASCII matching. An ordinary quoted string uses Grid escapes. Raw angle and triple-quoted payloads have more detailed highlighting, including GEDCOM records, Newick branch lengths, FASTQ read structure, KiCad schematics and RomanText analyses. Domain-specific assistance such as navigation and completion is listed for each parser in the editor catalog.
Delegated host grammars carry multiline state on interior lines. Grid bounds the host grammar's input on the line containing the closing delimiter. Format-specific states carry across lines for selected formats including CIF text fields, SGF values, FASTQ and SPICE. Host grammar availability depends on the editor installation. A quoted payload containing escaped foreign syntax can have fewer lexical colors than its raw equivalent.
KiCad electrical schematics
Use circuit or PARSE_CIRCUIT(text) in Standard (Lite) or Pro to read a
KiCad 7 schematic with revision 20230121. Read elements for placed symbols,
pins, sheets, junctions, buses, wires and labels. A wire's points hold the
authored pair of XY coordinates in millimetres. Sheet properties retain the
referenced filename. sections records every form in source order with its
parent, attributes and UTF-8 byte spans into source. This keeps extensions and
instance paths inspectable. Example · KiCad schematic specification
GRAPH(schematic) describes object containment, pin ownership, and local
library use. A placed symbol resolves against the embedded library using its
lib_name override when present, or its lib_id otherwise. Missing definitions
produce unresolved reference rows. Duplicate library names, duplicate placed
UUIDs, malformed coordinates, ambiguous scalar fields and unsupported revisions
produce diagnostics. The structural reader retains unprojected forms as data.
Electrical net inference, external sheet traversal, complete KiCad validation
and rendering remain open.
The editor highlights schematic keywords, quoted strings and comments. Within a supported schematic, go to definition follows an embedded symbol reference. Completion offers local library definitions, label shapes and symbol flags. Library completion copies the authored spelling from the same Grid literal, including escapes. Grid JSON records continue to support their existing checked identity edits.
Benesh VBD key poses
In Standard/Lite and Pro, benesh and PARSE_BENESH accept the Virtual Ballet
Dancer ASCII pose notation illustrated in Royce Neagle’s thesis. The reader
retains the numbered frames in source order. Head, body and pelvis may have
successive bend, tilt and turn instructions. Each hand or foot position carries
its written width, stave height and qualifier. The supported position qualifiers
are front, level and contact. A hash starts a line comment.
Neagle, Emotion by Motion, chapter 4, figures 4.3, 4.4 and 4.6
Read frames for pose labels and marks for the ordered orientations and
positions. The nodes and edges tables connect each frame to its marks.
Omitted body parts stay absent. Grid does not derive Cartesian joint
positions, timing or interpolation. The existing Grid record-v1 JSON remains
available. BNE and MacBenesh score files require separate readers.
Two-pose Grid example
Specialist enhancements in 0.76.0
These bounded Standard/Pro additions retain the single Rust LIR path. The delivery ledger records specifications, validation and the explicit Benesh deferral. The working example uses ordinary literals and explicit operations; no external program is executed.
RESOLVE_ROMANTEXT(text)expands earlier same-movement measure copies and missing measures with held harmony, up to 4096 output measures. Keys follow the destination context unless copied events explicitly change key. It preserves source spans and ordered positive decimal beat labels (up to six fractional digits); each key change needs a following harmony. Alternate endings/readings, pivot chords, optional keys, missing copy sources and an initial chord without a key are refused. It does not realize pitches or calculate timestamps.romanstays descriptive.LANDXML_POINTS(data, unit)converts native LandXML 1.2 point coordinates with a declared linear unit. Supported targets are millimeter, centimeter, meter, kilometer, inch, foot, USSurveyFoot and mile. The exact rational scale is reported; arithmetic is binary64. Missing elevation stays null. Overflow and underflow-to-zero are errors. No CRS or uncertainty transformation occurs.RESOLVE_XIANGQI(board, move)interprets a Chinese/WXF descriptor using{side, pieces}; each piece suppliespiece,sideandsquare. Squares run froma0toi9, with Red advancing toward rank 9. It checks ordinary piece movement, blockers, cannon screens, palace and river restrictions. Source-file selection must identify one piece; front/rear requires exactly two pieces on one file, middle exactly three pawns, and numbered pawn selection a unique file. Check, flying-general captures, repetition and game legality are not evaluated. The board remains unchanged; the result supplies UCCI coordinates.VALIDATE_DEXPI(text, resources)validates target-model objects against up to 16 supplied DEXPI XML 2.0.1 model texts, matching import URIs exactly. It checks inherited data properties, multiplicity, primitive kinds, nested aggregates (depth 32), and enumeration literals, including declared unit membership. Inheritance is bounded to 64 active definitions. Missing definitions, cycles, class extensions, relationship properties, bound/union types, primitive/enum inheritance and multi-valued uniqueness are refused. Unused definitions are not validated; no resources are fetched and no units are converted.abcrevision 5 accepts explicitly paired, unnested|:/:|at complete measure boundaries. Written repeat marks remain in the native score. Selected preceding decorations are trill, lower mordent, turn, fermata, staccato and accent, including their supported standard short forms. Unknown decorations, alternate endings, partial-measure repeats and unattached marks are refused. Decorations attach to the first event of a split/tied note. No ornament notes are synthesized.lilypondrevision 4 accepts two to four non-nested absolute voices in<< { ... } \\ { ... } >>; each voice has independent duration inheritance and must span the same number of measures. Existing final-measure rest padding applies independently. Scheme, includes and relative pitch remain refused.xmirevision 3 adds regions, concrete vertices, transitions and triggers, including protocol state machines. Local event/submachine references resolve through the shared ID index. Abstract containment does not invent a type; external links remain data. There is no state-machine execution.maritimerevision 4 adds NGA Pub. 102 (2020) AC, AN/AN1–2, BR1–4 and CB1–8. A selected numeric complement can be compact or separated by whitespace. The import preserves the original source span and canonical compact code.uscrevision 2 adds positive ascending integer section ranges after§§, using a hyphen or en dash and an optional nonzero four-digit edition year. Endpoints retain their spelling and are not expanded. A single-section identifier such as2000e-2retains its existing meaning.transliterationrevision 4 adds the ALA-LC Ukrainian 2011 letter table asukrainian-alalc-2011/ala-lc:uk:2011. The input is NFC-normalized; unmapped characters remain. Output is not declared reversible or word-contextual.phonologyrevision 5 checks local TEI symbol-onlyvCollranges: lists preserve order, bags preserve multiplicity, and sets compare membership. Omittedorgmeans list; empty collections are valid. Other collection expressions remain explicitly unvalidated. Defaults are not materialized and cross-feature constraints are not newly evaluated.VALIDATE_CIFcan apply a supplied static default to a wholly absent root Set-category packet. Missing values explicitly authored as?or.are not overwritten. Loop packets, save-frame packets, split packets and method-derived values are not inferred by this addition. Imported data is never mutated.sacmrevision 2 reports expected types and local endpoint-type checks for selected asserted relationships. Wrong known endpoint types produce warnings while retaining links. Unresolved/external/foreign targets remain unchecked; the result still does not claim complete metamodel validation or proof.knitoutrevision 2 types four CMU settings only for the declared MachineSWG091N2:x-stitch-number(u32),x-speed-number(0–15),x-sub-roller-number(0–31), andx-presser-mode(off/auto/on). Each requires one argument. Other machine extensions retain uninterpreted arguments. These are imported commands, with no machine execution or fabric simulation.
Authoring uses existing embedded grammars, native diagnostics and catalog help. UML state references participate in local navigation, and the new maritime codes use the shared completion vocabulary. The new callable operations have function help and argument signatures; they do not add a second parser or board/model editor.