Skip to content

Parser decodes: route NotUnicodeScalar into each parser's own typed refusal (XL-2 from_code_point; lands inside #13378's unit) - #13387

Closed
gunbai-bot[bot] wants to merge 58 commits into
mainfrom
session/bold-deer-208
Closed

gunbai-bot[bot] wants to merge 58 commits into
mainfrom
session/bold-deer-208

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #13378 (bright-fox-380, still open). This branch merges session/bright-fox-380-fcp, so the diff against main includes #13378 until it lands. That PR declares std.unicode.scalar from_code_point / char_text and files RFM bare_from_code_point_binds_the_total_seed_builtin.

Lands as part of one unit (manager decision): #13378 deletes the seed from_code_point builtin. The seed interpreter dispatches builtins before module functions (v1_interpreter eval_call: eval_builtin before ctx.lookup_fn), so until then every call here still binds the total builtin, and the witnesses below cannot go green on this head alone. This PR is approved on its own diff. bright-fox-380 then merges it into #13378 together with #13386 / #13384 / #13381, and one gate runs over the combined head.

This is XL-2's from_code_point follow-up for the parser-decode population. It is PR 1 of 2 in this lane.

Survey: re-deriving the 9 PARSER DECODE identities

identity finding disposition here
extdeps.languages.yaml.ingest::yaml_double_quoted_escape a \x/\u/\U escape decoded from source migrated: NotUnicodeScalar → YamlScalarRefused, which names the escape and the cause (YAML 1.2.2 §5.1 and §5.7). The hand-duplicated surrogate/range check is deleted
tools.fabric_ci_evidence::fabric_ci_decode_step a 6-hex-digit word decoded from the wire migrated: a new typed and located refusal FabricCiEvidenceUndecodable { cause: FabricCiDecodeRefusal }. Its arms are FabricCiWireUnframed, FabricCiWireEmpty, FabricCiWordNotHex { at } and FabricCiWordNotScalar { at, cause: NotUnicodeScalar }. The hand range check is deleted; 8 consumer patterns are updated in gunbc.fabric_control_plane_live_probe and tools.fabric_ci_evidence
extdeps.languages.json.parse::json_unescape_decode_piece the whole .dag json_unescape chain had zero consumers. parse_json decodes through the native json_unescape_checked, which recombines surrogate pairs and refuses unpaired ones (RFC 8259 §7) deleted (json_unescape, json_unescape_decoded_pieces, json_unescape_decode_rest, json_unescape_drop_first, json_unescape_decode_piece, plus their acc types). The existing RED is test.claim.json_parse_witness::an_unpaired_surrogate_refuses_rather_than_vanishing
std.judgment_contract::string_from_code_points input is chars(s) of a String, so it is CHAR-kind and not parser decode; no refusal is possible deleted. length_prefixed_decode now uses the declared std.coercion unicode_scalar_unfold / unicode_scalar_fold, and the dead re-export in std.materialization_provider is removed
extdeps.standards.rfc_8949::cbor_text_of_octets, extdeps.http.form_urlencoded::form_component, gunbc.auth.approval_device_wire::decode_path_segment, gunbc.auth.oidc_id_token_verification::jwt_segment_json, extdeps.uri::uri_percent_decode_component under-typed UTF-8. These get code points that utf8_decode_octets already validated as scalars but returns as List<Int>; uri hand-rolls a second decoder. A NotUnicodeScalar RED is unauthorable at the call PR 2 (manager ruling): the decoder yields Char, the callers use char_text, and uri is routed through the one std decoder

Module-grain consequence (manager ruling, migrate-all): importing from_code_point into yaml.ingest rebinds every bare caller in that module. So its 6 CHAR-kind sites move here too, and the CHAR lane drops the module:
yaml_refused_characters, yaml_first_refused_character, yaml_line_start_mark, yaml_line_join_mark, yaml_key_separator, ingest_yaml_source. The refused repertoire is now one literal yaml_refused_text whose chars are the List<Char>, spelled through char_text, and the marks are "\u{N}" literals.

Migrated / deleted identities (several are outside the required gate)

  • extdeps.languages.yaml.ingest: yaml_double_quoted_escape, yaml_double_quoted_scalar (new), yaml_first_refused (new), yaml_refused_text (new), yaml_refused_code_points, yaml_refused_characters, yaml_first_refused_character, yaml_line_start_mark, yaml_line_join_mark, yaml_key_separator, ingest_yaml_source
  • tools.fabric_ci_evidence: FabricCiEvidenceDecode, FabricCiDecodeRefusal (new), FabricCiDecodeState, fabric_ci_decode_step, decode_fabric_ci_evidence_wire, and two consumer matches
  • gunbc.fabric_control_plane_live_probe: 6 FabricCiEvidenceUndecodable matches
  • extdeps.languages.json.parse: the json_unescape chain (deleted)
  • std.judgment_contract: string_from_code_points (deleted), length_prefixed_decode
  • std.materialization_provider: re-export removed
  • RFM bare_from_code_point_binds_the_total_seed_builtin: receipts updated. PARSER DECODE is re-derived to 5 remaining and re-kinded; CHAR goes from 85 to 79

REDs (one per parser)

  • yaml: test.claim.yaml_ingest_witness::red_a_non_scalar_hex_escape_refuses_typed_and_located. \uD800 refuses at line 2 naming a surrogate, \U00110000 refuses as past U+10FFFF, and the U+D7FF / U+10FFFF neighbours decode
  • fabric: test.claim.fabric_ci_evidence_wire_decode_witness::red_a_non_scalar_word_refuses_typed_at_its_offset. The real-path control is a_wire_the_encoder_wrote_decodes_back, which round-trips through the real encoder
  • json: the existing an_unpaired_surrogate_refuses_rather_than_vanishing

Also: json_hex_nibble had two importers reaching it through a re-export in json.parse. They now import it from its declarer, extdeps.languages.json.grammar: extdeps.bmc.ipmi_master_write_read and gunbc.machine_intake_ampere_socket_console_observation.

No rows were added to floor_cross_claim_pure_producers_warm.

🤖 Generated with Claude Code

gunbc-ci-auto-heal and others added 18 commits October 5, 2026 09:53
…Scalar) + total char_text; migrate v2 callers

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… identity grain, by kind)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…fusal (XL-2, from_code_point follow-up)

yaml.ingest (all sites, module-grain), fabric_ci_evidence typed located refusal,
json_unescape chain deleted (no consumer), judgment_contract onto the declared
unicode_scalar unfold/fold route; RFM receipts updated.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…sites to std.unicode.scalar char_text

Retires the CHAR population of RFM bare_from_code_point_binds_the_total_seed_builtin
(6 extdeps.languages.yaml.ingest identities transferred to the parser-decode lane).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…80 Time refuses non-ASCII; honest non-UTF-8 fixture + RFM

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…arm (review 76444)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…rammar), not a re-export through json.parse

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…uthority); migrate v1's own callers to char_text

The interpreter dispatches builtins before module fns, so the std declaration was
unreachable while the builtin existed. Removes the BuiltinSignature row, the
interpreter arm (which fabricated U+0000 for non-scalars), the primitive
contract/roster rows, the Rust bridge row and the egress row.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… through unicode_scalar_fold (XL-2 from_code_point, PR 2/2)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…gger

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Brian Searls and others added 5 commits October 5, 2026 11:13
…el; RFM char_brand_admits_any_int; CHAR population recorded NAME-MIGRATED, not Char-proven

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…(the deleted builtin admitted an Optional index silently)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… without it)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…not-Char-proven dependents; bare-name silent bind + eval-only type refusal

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbc-ci-auto-heal and others added 2 commits October 5, 2026 11:59
…ns disagreed

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…coder lane

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Follow-up on review 76486: I merged #13378's current head (merge commit 48adbb9c75). It now includes the CHAR (#13386), octet and seam lanes, so the CHAR population named in the review (std.content_hash::content_hash_combine_preimage, extdeps.dns.domain_name::fold_dns_case_string_at, …) is migrated on this head.

This PR is part of the #13378 landing unit. The builtin deletion and all five migrations land together, as gunbc.recurring_failure_mode bare_from_code_point_binds_the_total_seed_builtin (DISPOSITION OF THE SEED BUILTIN) records, and this PR never lands alone.

The reviewer's generated-Rust point stands as a gate item for the combined head: the emitted rt_function_registry row (extdeps.languages.rust.emit) and the primitive-surface / std.primitives from_code_point_contract rows must agree with the deleted builtin before the unit lands. The remaining bare callers on this head are the five byte-input sites migrated further up this lane's stack (#13389 / #13390) and test.claim.git_upstream_model_witness (octet lane); the combined gate's grep is where 0 is asserted.

— sent from bold-deer-208

gunbc-ci-auto-heal and others added 24 commits October 5, 2026 12:13
…nded)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… (expects C3 BF), so char_text, not from_code_point

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…leading module-scope // blocks)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…onRef, LiteralHomomorphism)

std.coercion had no imports and resolved them only through the whole-tree flat
namespace. Once extdeps.uri reached it (char_text / unicode_scalar_fold), every
fixture census importing extdeps.uri carried blocking UnresolvedType rows, which
regressed guarantee_probe_corpus's sole_constructor_forged_literal_red_refuses,
sole_constructor_mint_fn_hole_still_compile_clean and
sole_constructor_forged_red_does_not_satisfy_green_expectation (green at merge base 864c9ce).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…de its consumer extdeps.uri) with its import edges; regenerate the partition

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…0-fcp

# Conflicts:
#	src/v2/workflow/floor_unimported_bare_provider_debt_roster.dag
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…sus (regen_scope_worktree split delimiter and its witness's nul): char_text; record them on the RFM row

Found by review 76569 (witness) and the follow-up sweep (production site).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…module declaration (required-regen named them)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…what --emit-partition-crates renders: written=0 after rebuild)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…surface (v1_compiler_emit_core_support uses it)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…0-fcp

# Conflicts:
#	dag/test/claim/git_ls_remote_witness_test.dag
#	src/v1/01_tokenize.dag
#	src/v1/stage0/src/v1_compiler_emit.rs
#	src/v1/stage0/src/v1_compiler_runtime_rust.rs
#	src/v1/stage0/src/v1_compiler_tokenize.rs
#	src/v1/stage0/src/v1_rt.rs
@gunbai-bot

gunbai-bot Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Closing as merged into #13378: this branch's head eea9a7e is an ancestor of #13378's branch (session/bright-fox-380-fcp), verified with git merge-base --is-ancestor. Its content lands as part of #13378's from_code_point unit (the seed builtin deletion plus all bare-caller migrations, landing together), so it never lands alone. Its review approvals apply to this content inside #13378.

— sent from lively-crane-656

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants