Result: blocked Files: packages/yaml/nikaia.toml packages/yaml/nikaia.lock packages/yaml/nikaia.contracts packages/yaml/nikaia.derived packages/yaml/nikaia.proofs packages/yaml/src/main.nika packages/yaml/tests/block_collections.nika packages/yaml/tests/block_collections.stdout packages/yaml/tests/documents.nika packages/yaml/tests/documents.stdout packages/yaml/tests/empty_stream_and_comments.nika packages/yaml/tests/empty_stream_and_comments.stdout packages/yaml/tests/errors_carry_line_and_column.nika packages/yaml/tests/errors_carry_line_and_column.stdout packages/yaml/tests/flow_collections.nika packages/yaml/tests/flow_collections.stdout packages/yaml/tests/multi_line_scalars.nika packages/yaml/tests/multi_line_scalars.stdout packages/yaml/tests/plain_scalars_resolve_by_the_core_schema.nika packages/yaml/tests/plain_scalars_resolve_by_the_core_schema.stdout packages/yaml/tests/quoted_scalars.nika packages/yaml/tests/quoted_scalars.stdout packages/yaml/tests/spans.nika packages/yaml/tests/spans.stdout Commit: yaml: the package’s skeleton and its core grammar into a zero-copy tree with spans (#928 steps 1-4) Body: packages/yaml: Node/Value/Entry/Scalar/Style/Error of ADR-yaml-1 D4, one grammar over ref Bytes named after YAML 1.2.2’s productions (documents, comments, block and flow collections, plain/single/double scalars with spans), core-schema resolution in the actions (D5), text() folding and escapes, as_i64/as_f64, Error with line, column and byte offset read from ParseError’s rendered message (Part II 10.8). as_f64 rewrites .5, 1., .inf, .nan into the spelling text::parse_f64 reads (ADR-285 D35). Flow separation is written as s-separate-lines. Expected outputs blessed from the program and checked by hand against YAML 1.2.2 (a: - x and a tab as indentation are errors; ‘- x / -y’ is the scalar ‘x -y’, so that error case became ‘k: / - x / - y’). Not built: hex/octal in as_i64/as_f64 and decoding of \x \u \U (kept as written; they wait on a radix parse in std), and checking those escapes’ digits (hex_digit does not lower). Part: #928 Fixes: none Tests: target/fast/nikaia test –project packages/yaml: 9 of 9 pass (empty_stream_and_comments, block_collections, flow_collections, documents, spans, plain_scalars_resolve_by_the_core_schema, quoted_scalars, multi_line_scalars, errors_carry_line_and_column) Gate: green Deviation: steps 1-4 in one commit; step 3’s as_i64/as_f64 of 0x/0o and text() of \x \u \U not built (gap below); step 4’s tab case stops at 2:2 (after the tab), not 2:1 Found: (1) a group of alternatives whose branches yield different types reaches rustc: rule Fs = (“ “ | “#” until(“\n”))* -> { } fails “expected Result<(&str, &str)>, found Result<&str>” (also with a unit rule in place of the sequence); (2) hex_digit (Part II 10.8) lowers to “Undefined rule: ‘hex_digit’”: entry rule one -> String = “x” h:hex_digit -> { f”{h}” }; (3) let x = 8232 as scalar fails in rustc “only u8 can be cast into char” (‘\u{2028}’ works); (4) G::w(Bytes([97, 97])) catch { return } with a text result fails in rustc “temporary value dropped while borrowed” (let input = Bytes(..) first works); (5) gap: std has no radix parse (i64::from_str_radix): 0x1F, 0o17 and \x41 cannot be read without a hand-written digit loop Needs: owner decision (5: a std radix parse, e.g. text::parse_i64_radix(s, 16)); fix (1)-(4) in crates/ Changelog: none Owner: should std gain a radix parse (text::parse_i64(s; radix: 16)) for yaml’s 0x/0o and \x \u \U, or is a digit loop in the package acceptable? Rs2nika: none Pushed: 642eedf9ea07fc570a5b4ffad8fcf3501c595e35 Disk freed: 0.03 GB (packages/yaml/target, scratch copies); target/nikaia-project-tests 5.4G, / 13G free, no new entry over 100 MB