Skip to content

Retire std.string_type String: delete dag/std/string_type.dag (0 importers after #12512) - #13089

Merged
gunbai-bot[bot] merged 4 commits into
mainfrom
session/still-owl-561
Oct 3, 2026
Merged

gunbai-bot[bot] merged 4 commits into
mainfrom
session/still-owl-561

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Retires std.string_type String (= FreeMonoid<Char>), the duplicate of v2.std.text String. This is the operator-ruled retirement that gunbc#12512's import deletions made possible.

What changes

  • dag/std/string_type.dag is deleted. Its only remaining declaration was type String, and an empty module is dead. Text crossings unfold or refuse: exact-representation text compat (XL-0T ruling B) #12512 had already deleted its two functions.
  • v1.compiler.coercion structural_declaration_modules_for no longer lists the deleted path. The stage0 mirror is regenerated to a fixed point.
  • test.claim.self_host_symbol_identity_binding_witness_test drops its decl_ref(std.string_type, String) sibling citation, because the cited-declaration gate refuses a citation of a declaration that does not exist.
  • gunbc.defork_type_name_census: the String row moves from ForkAwaitingRuling to resolved. The resolution type had arms for deleting the v2 side but none for deleting the dag side, so this adds ResolvedByDeletingDag, the mirror of ResolvedByDeletingV2, and its render arm.
  • v1.tests.claim.checkpoint_identity_keying_witness_test: two claims whose only subject was the deleted path are deleted. They sent dag/std/string_type.dag through the structural roster. Their v2.std.text siblings still cover the structural-String refusal. This file is in the v1 tests tree that the floor does not execute; its stage0 mirror is compiled by the lint step.

Zero importers, verified

  • Multi-line-aware search at this head: git grep -lzE 'import[[:space:]]+std\.string_type\b'. It finds no production importer. The three hits are:
    • a comment in extdeps.cloudflare.account_api_tokens;
    • a source string inside test.claim.text_string_importer_census_test;
    • the census lens's own fixture, test/fixture_roots/text_string_importer_census_literals/string_type_importer.dag. The census claims read that fixture as source text with the population passed as a parameter, so they never resolve its import (39/39 PASS below).
  • The v2: kernel host-text String, bound only where no String declaration is visible (stacks on #12549) #12760 literal-site census confirms it by population (below).

#12760 literal-site census: summary and routing

  • Instrument: v2.lens.text_string_importer_census text_string_importer_literal_sites.
  • Population: the royal-lark-857 partial (gunbc#12871 comment 5940031933; batches s000–s002 and t000–t009) plus the neat-boar-16 remainder at main 841df4abf6, srv1, gunbc sha256 919e77636b97…. The remainder covers the set difference of 229 modules, artifact branch artifact/string-literal-census-841df4ab (9f34453f51).
  • TSV sha256: partial ae356ebbef46777a…, remainder 43248fa4962aa168….
Population on main Files STRUCTURAL literal sites Disposition
std.string_type importers 39 538 Resolved: #12512 deleted every import
v2.std.text importers or consumers 324 4812 Routed to neat-ibex-696's lane (neat-boar-16's ruling: host-text v2.std.text importers lose the import, census-classified). Spot checks are host text: embedded module sources, notes, qualified names.
src/v2/workflow/gunbc_invoke_step_emit.dag (one site) 1 1 Finding, not fixed here. A deliberate FreeMonoid<Char> position is given the literal "_", so it needs the declared Unicode-scalar unfold. Routed under gunbc.rung_drop text_boundary_identity_wall.
  • Reconciliation: 5351 sites in 364 files in total. The first classification pass counted 5 files (111 sites) as importing neither text module. That was a reader artefact: all five reach v2.std.text through multi-line imports or its structural functions. So they are counted in the v2.std.text row, and gunbc_invoke_step_emit is also listed separately.
  • UNRESOLVED rows, reported and not dispositioned here. They are routed to the owner of v2: kernel host-text String, bound only where no String declaration is visible (stacks on #12549) #12760's roster. 3837 of the remainder's 4427 come from src/v2/workflow/floor_grandfathered_roster.dag; they look like roster string data, spelled_other_than_text. The other reasons are callee_module_not_parsed, field_owner_not_read, positional_argument, field_not_declared, callee_module_declined, callee_not_imported_by_name and spelling_declarer_not_loaded.

Evidence (local, seed regenerated from this tree)

claim_batch --source-root dag --source-root src/v2:

  • defork_type_name_census_witness_test 6/6
  • self_host_symbol_identity_binding_witness_test 20/20
  • text_string_importer_census_test 39/39
  • text_boundary_identity_wall_witness_test 21/21
  • bare_name_ambiguity_wall_witness_test 10/10

Stage0 reached a fixed point after 2 rounds.

v1 admission (gunbc.v1_maintenance_standing v1_seed_standing): the v1.compiler.coercion edit removes a roster path whose declaration no longer exists. It serves the v2 self-host by keeping the structural roster equal to the declarations that exist.

🤖 Generated with Claude Code

Brian Searls and others added 4 commits October 3, 2026 06:10
…rters)

Operator-ruled retirement of the duplicate structural declaration
(String = FreeMonoid<Char>) beside v2.std.text String, after gunbc#12512
deleted its 81 host-text importers. Consumers updated in the same motion:
v1.compiler.coercion structural_declaration_modules_for drops the path;
the symbol-identity witness drops its sibling citation; the de-fork census
moves the String row to resolved via a new ResolvedByDeletingDag arm.
Stage0 regenerated to fixed point.

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

Both sent the deleted path through structural_declaration_modules_for and
asserted the structural refusal; with the path gone from the roster they
have no subject. The v2.std.text sibling claims keep covering the refusal.

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

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 3, 2026
Merged via the queue into main with commit 7014b7a Oct 3, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/still-owl-561 branch October 3, 2026 11:01
gunbai-bot Bot pushed a commit that referenced this pull request Oct 3, 2026
Both retirements apply: the symbol-identity sibling list and structural_declaration_modules_for
keep only v2.std.text String, and the checkpoint witness drops both retired structural rows
(string_type by #13089, logic Bool by this cut), keeping the retirement note.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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