From 14f8d53b4802580e97e89a0d0ea8efff83197d51 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 25 Jul 2026 00:24:44 +0000 Subject: [PATCH 1/6] =?UTF-8?q?WIP:=20Extdeps/std=20=C2=A73-fork=20dedups?= =?UTF-8?q?=20(point-at-existing-authority=20cluster)=20=E2=80=94=20per=20?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dag/extdeps/boot/freestanding_witness.dag | 12 ++-- .../formats/elf/hello_static_witness.dag | 24 ++++---- dag/extdeps/formats/elf/segments.dag | 26 +++------ dag/extdeps/formats/elf/types.dag | 3 + dag/extdeps/languages/rust/types.dag | 31 +++++++--- dag/extdeps/shell/gnu_coreutils.dag | 3 +- dag/std/filesystem.dag | 17 +++--- dag/std/markdown_markup.dag | 56 +++---------------- dag/std/markup.dag | 17 ++++++ 9 files changed, 89 insertions(+), 100 deletions(-) diff --git a/dag/extdeps/boot/freestanding_witness.dag b/dag/extdeps/boot/freestanding_witness.dag index 3dffa226f6e..58be89db84f 100644 --- a/dag/extdeps/boot/freestanding_witness.dag +++ b/dag/extdeps/boot/freestanding_witness.dag @@ -45,25 +45,25 @@ fn witness_emitted_entry_point() -> Bool { fn witness_emitted_first_phdr_is_pt_load_rx() -> Bool { let bytes = emit_freestanding_elf64(pixel_writer_code_bytes) match decode_elf64_phdr(bytes, freestanding_phoff) { - PhdrDecoded { value: phdr } => + ElfDecoded { value: phdr } => phdr.segment_type == PtLoad && phdr.flags == pf_r + pf_x && phdr.offset == freestanding_code_file_offset && phdr.vaddr == freestanding_load_vaddr - PhdrRejected { reason: _ } => false + ElfRejected { reason: _ } => false } } fn witness_emitted_load_segment_carries_code() -> Bool { let bytes = emit_freestanding_elf64(pixel_writer_code_bytes) match decode_elf64_phdr(bytes, freestanding_phoff) { - PhdrDecoded { value: phdr } => + ElfDecoded { value: phdr } => let seg = elf64_phdr_to_load_segment(phdr) seg.file_size == count(pixel_writer_code_bytes) && seg.permissions.readable == true && seg.permissions.writable == false && seg.permissions.executable == true - PhdrRejected { reason: _ } => false + ElfRejected { reason: _ } => false } } @@ -106,10 +106,10 @@ fn witness_shared_encode_roundtrips_hello_static_ehdr() -> Bool { fn witness_shared_encode_roundtrips_hello_static_phdr() -> Bool { match decode_elf64_phdr(static_hello_first_phdr_bytes, 0) { - PhdrDecoded { value: phdr } => + ElfDecoded { value: phdr } => let out = encode_elf64_phdr(phdr) count(out) == elf64_phdr_size && int_lists_equal(static_hello_first_phdr_bytes, out) - PhdrRejected { reason: _ } => false + ElfRejected { reason: _ } => false } } diff --git a/dag/extdeps/formats/elf/hello_static_witness.dag b/dag/extdeps/formats/elf/hello_static_witness.dag index 681b0d30307..19608dada7c 100644 --- a/dag/extdeps/formats/elf/hello_static_witness.dag +++ b/dag/extdeps/formats/elf/hello_static_witness.dag @@ -156,42 +156,42 @@ fn witness_phnum_is_9() -> Bool { fn witness_first_segment_is_pt_load() -> Bool { match decode_elf64_phdr(static_hello_first_phdr_bytes, 0) { - PhdrDecoded { value: phdr } => phdr.segment_type == PtLoad - PhdrRejected { reason: _ } => false + ElfDecoded { value: phdr } => phdr.segment_type == PtLoad + ElfRejected { reason: _ } => false } } fn witness_first_segment_is_read_only() -> Bool { match decode_elf64_phdr(static_hello_first_phdr_bytes, 0) { - PhdrDecoded { value: phdr } => { + ElfDecoded { value: phdr } => { let seg = elf64_phdr_to_load_segment(phdr) phdr.flags == pf_r && seg.permissions.readable == true && seg.permissions.writable == false && seg.permissions.executable == false } - PhdrRejected { reason: _ } => false + ElfRejected { reason: _ } => false } } fn witness_first_load_segment_vaddr() -> Bool { match decode_elf64_phdr(static_hello_first_phdr_bytes, 0) { - PhdrDecoded { value: phdr } => elf64_phdr_to_load_segment(phdr).virtual_address == 4194304 - PhdrRejected { reason: _ } => false + ElfDecoded { value: phdr } => elf64_phdr_to_load_segment(phdr).virtual_address == 4194304 + ElfRejected { reason: _ } => false } } fn witness_first_load_segment_filesz() -> Bool { match decode_elf64_phdr(static_hello_first_phdr_bytes, 0) { - PhdrDecoded { value: phdr } => elf64_phdr_to_load_segment(phdr).file_size == 652 - PhdrRejected { reason: _ } => false + ElfDecoded { value: phdr } => elf64_phdr_to_load_segment(phdr).file_size == 652 + ElfRejected { reason: _ } => false } } fn witness_first_load_segment_align() -> Bool { match decode_elf64_phdr(static_hello_first_phdr_bytes, 0) { - PhdrDecoded { value: phdr } => elf64_phdr_to_load_segment(phdr).alignment == 4096 - PhdrRejected { reason: _ } => false + ElfDecoded { value: phdr } => elf64_phdr_to_load_segment(phdr).alignment == 4096 + ElfRejected { reason: _ } => false } } @@ -201,11 +201,11 @@ fn witness_ehdr_encode_decode_roundtrip() -> Bool { fn witness_phdr_encode_decode_roundtrip() -> Bool { match decode_elf64_phdr(static_hello_first_phdr_bytes, 0) { - PhdrDecoded { value: phdr } => + ElfDecoded { value: phdr } => let out = encode_elf64_phdr(phdr) count(out) == elf64_phdr_size && int_lists_equal(static_hello_first_phdr_bytes, out) - PhdrRejected { reason: _ } => false + ElfRejected { reason: _ } => false } } diff --git a/dag/extdeps/formats/elf/segments.dag b/dag/extdeps/formats/elf/segments.dag index 49d1ba63c1e..bdb923dbf68 100644 --- a/dag/extdeps/formats/elf/segments.dag +++ b/dag/extdeps/formats/elf/segments.dag @@ -19,18 +19,10 @@ type Elf64Phdr { align: Int } -type PhdrDecodeReason - = PhdrTruncated { required_bytes: Int, available_bytes: Int } - | UnsupportedPhdrType { raw: Int } - -type PhdrDecodeOutcome - = PhdrDecoded { value: T } - | PhdrRejected { reason: PhdrDecodeReason } - -fn decode_elf_segment_type(raw: Int) -> PhdrDecodeOutcome { - if raw == pt_load { PhdrDecoded { value: PtLoad } } - else if raw == pt_null { PhdrDecoded { value: PtNull } } - else { PhdrRejected { reason: UnsupportedPhdrType { raw: raw } } } +fn decode_elf_segment_type(raw: Int) -> ElfDecodeOutcome { + if raw == pt_load { ElfDecoded { value: PtLoad } } + else if raw == pt_null { ElfDecoded { value: PtNull } } + else { ElfRejected { reason: UnsupportedElfSegmentType { raw: raw } } } } fn decode_segment_permissions(flags: Int) -> SegmentPermission { @@ -41,17 +33,17 @@ fn decode_segment_permissions(flags: Int) -> SegmentPermission { } } -fn decode_elf64_phdr(bytes: List, offset: Int) -> PhdrDecodeOutcome { +fn decode_elf64_phdr(bytes: List, offset: Int) -> ElfDecodeOutcome { if count(bytes) < offset + elf64_phdr_size { - PhdrRejected { - reason: PhdrTruncated { + ElfRejected { + reason: Truncated { required_bytes: offset + elf64_phdr_size, available_bytes: count(bytes), }, } } else { match decode_elf_segment_type(read_u32_le_in_bounds(bytes, offset)) { - PhdrDecoded { value: segment_type } => PhdrDecoded { + ElfDecoded { value: segment_type } => ElfDecoded { value: Elf64Phdr { segment_type: segment_type, flags: read_u32_le_in_bounds(bytes, offset + 4), @@ -63,7 +55,7 @@ fn decode_elf64_phdr(bytes: List, offset: Int) -> PhdrDecodeOutcome PhdrRejected { reason: r } + ElfRejected { reason: r } => ElfRejected { reason: r } } } } diff --git a/dag/extdeps/formats/elf/types.dag b/dag/extdeps/formats/elf/types.dag index aea9c710edb..e870721c671 100644 --- a/dag/extdeps/formats/elf/types.dag +++ b/dag/extdeps/formats/elf/types.dag @@ -45,6 +45,9 @@ type ElfDecodeReason | UnsupportedElfData { raw: Int } | UnsupportedElfFileType { raw: Int } | UnsupportedElfMachine { raw: Int } + | UnsupportedElfSegmentType { raw: Int } + +data elf_phdr_decode_outcome_dissolve_on: String = "dissolve-on: elf.segments.PhdrDecodeOutcome — deleted parallel decode machinery; sole authority is extdeps.formats.elf.types.ElfDecodeOutcome / ElfDecodeReason." type ElfDecodeOutcome = ElfDecoded { value: T } diff --git a/dag/extdeps/languages/rust/types.dag b/dag/extdeps/languages/rust/types.dag index ae6bf934684..751df847ae5 100644 --- a/dag/extdeps/languages/rust/types.dag +++ b/dag/extdeps/languages/rust/types.dag @@ -111,14 +111,31 @@ data common_trait_bounds: List = [ data where_clause_template: String = "where\n \{constraints\}" data trait_bound_template: String = "\{type\}: \{bound\}" -data integer_types: List = [ - "i8", "i16", "i32", "i64", "i128", "isize", - "u8", "u16", "u32", "u64", "u128", "usize" -] - -data float_types: List = ["f32", "f64"] +import extdeps.languages.rust.primitives { rust_grounding_primitives, RustPrimitive, IntegerPrimitive, NonIntegerPrimitive } + +data rust_types_name_catalog_dissolve_on: String = "dissolve-on: rust.types.integer_types/float_types — deleted bare String name lists; derive type-name catalogs from extdeps.languages.rust.primitives rust_grounding_primitives.target_name rows." + +fn rust_integer_type_names() -> List { + fold( + rust_grounding_primitives, + init: [], + f: (acc, row) => match row { + IntegerPrimitive { target_name: name, .. } => concat(acc, [name]) + _ => acc + }, + ) +} -data rust_cast_syntax: CastSyntax = { +fn rust_float_type_names() -> List { + fold( + rust_grounding_primitives, + init: [], + f: (acc, row) => match row { + NonIntegerPrimitive { target_name: name, algebra: ApproximateFieldAlgebra, .. } => concat(acc, [name]) + _ => acc + }, + ) +} template: "\{expr\} as \{type\}", cast_rules: [ diff --git a/dag/extdeps/shell/gnu_coreutils.dag b/dag/extdeps/shell/gnu_coreutils.dag index 220af9d18a0..f05b5063fe6 100644 --- a/dag/extdeps/shell/gnu_coreutils.dag +++ b/dag/extdeps/shell/gnu_coreutils.dag @@ -15,8 +15,7 @@ data extdeps_external_authority_anchor: ExternalAuthority = ExternalAuthority { data grep_recursive_quiet_flags: NonEmptyStr = "-rqE" data grep_recursive_numbered_flags: NonEmptyStr = "-rnE" -data diff_recursive_flags: NonEmptyStr = "-r" -data diff_recursive_brief_flags: NonEmptyStr = "-rq" +data gnu_coreutils_diff_flags_dissolve_on: String = "dissolve-on: gnu_coreutils.diff_recursive_flags — deleted fork of diff argv literals; sole authority is extdeps.diffutils shell.Diff.Recursive transport (diff -r {left} {right})." data rm_force_recursive_flags: NonEmptyStr = "-rf" diff --git a/dag/std/filesystem.dag b/dag/std/filesystem.dag index d8e9d7a8a81..d6e87fa0ea2 100644 --- a/dag/std/filesystem.dag +++ b/dag/std/filesystem.dag @@ -1,9 +1,11 @@ module std.filesystem -import std.encoding { Encoding } +import std.encoding { Encoding, is_text_encoding } import std.types { FilePath, MimeType } import std.filesystem.types { EntryKind, SymlinkTarget } +data filesystem_is_text_encoding_dissolve_on: String = "dissolve-on: std.filesystem.is_text_encoding — deleted duplicate Optional-lifted predicate; sole authority is std.encoding.is_text_encoding (Encoding, not Encoding?)." + type FileEntry { path: FilePath kind: EntryKind @@ -24,21 +26,18 @@ type PartitionResult { fn is_text_readable(entry: FileEntry) -> Bool { match entry.kind { - RegularFile => is_text_encoding(e: entry.encoding) - Symlink => entry.symlink_target == TargetFile && is_text_encoding(e: entry.encoding) + RegularFile => is_text_encoding_optional(e: entry.encoding) + Symlink => entry.symlink_target == TargetFile && is_text_encoding_optional(e: entry.encoding) Directory => false Missing => false Other => false } } -fn is_text_encoding(e: Encoding?) -> Bool { +fn is_text_encoding_optional(e: Encoding?) -> Bool { match e { - Present { value: ASCII } => true - Present { value: UTF8 } => true - Present { value: Latin1 } => true - Present { value: Text } => true - _ => false + Present { value: enc } => is_text_encoding(e: enc) + Absent => false } } diff --git a/dag/std/markdown_markup.dag b/dag/std/markdown_markup.dag index f7f2a487b99..6412f5077ad 100644 --- a/dag/std/markdown_markup.dag +++ b/dag/std/markdown_markup.dag @@ -1,59 +1,21 @@ module std.markdown_markup import std.markup { - MarkupNode, ElementNode, TextNode, MarkupAttr, + MarkupNode, + fragments_to_markup_nodes, } import std.markdown { MarkdownInline, - TextInline, - EmphasisInline, - StrongInline, - CodeInline, - LinkInline, - ImageInline, + markdown_inline_to_fragments, + markdown_inlines_to_fragments, } + +data markdown_markup_inline_mapping_dissolve_on: String = "dissolve-on: std.markdown_markup.markdown_inline_to_markup_nodes — deleted parallel MarkdownInline→MarkupNode mapping; sole authority is std.markdown.markdown_inline_to_fragments composed with std.markup.fragments_to_markup_nodes." + fn markdown_inline_to_markup_nodes(inline: MarkdownInline) -> List { - match inline { - TextInline { text } => - [ TextNode { text: text } ] - CodeInline { text } => - [ ElementNode { tag: "code", attrs: [], children: [ TextNode { text: text } ] } ] - EmphasisInline { inlines } => - [ ElementNode { - tag: "em", - attrs: [], - children: markdown_inlines_to_markup_nodes(inlines: inlines), - } - ] - StrongInline { inlines } => - [ ElementNode { - tag: "strong", - attrs: [], - children: markdown_inlines_to_markup_nodes(inlines: inlines), - } - ] - LinkInline { inlines, url } => - [ ElementNode { - tag: "a", - attrs: [ MarkupAttr { name: "href", value: url } ], - children: markdown_inlines_to_markup_nodes(inlines: inlines), - } - ] - ImageInline { alt, url } => - [ ElementNode { - tag: "img", - attrs: [ - MarkupAttr { name: "src", value: url }, - MarkupAttr { name: "alt", value: alt }, - ], - children: [], - } - ] - } + fragments_to_markup_nodes(frags: markdown_inline_to_fragments(inline: inline)) } fn markdown_inlines_to_markup_nodes(inlines: List) -> List { - reverse(inlines |> fold(init: [], f: fn(acc, inline) { - concat(markdown_inline_to_markup_nodes(inline: inline), acc) - })) + fragments_to_markup_nodes(frags: markdown_inlines_to_fragments(inlines: inlines)) } diff --git a/dag/std/markup.dag b/dag/std/markup.dag index 8057c400b61..90c0ab7911d 100644 --- a/dag/std/markup.dag +++ b/dag/std/markup.dag @@ -188,6 +188,23 @@ fn markup_attr_to_fragment(attr: MarkupAttr) -> Attribute { } } +fn fragment_to_markup_node(frag: Fragment) -> MarkupNode { + match frag { + FragmentText { content } => TextNode { text: content } + RawNode { content } => TextNode { text: content } + Element { tag, attributes, children } => + ElementNode { + tag: tag, + attrs: map(attributes, a => MarkupAttr { name: a.name, value: a.value }), + children: map(children, c => fragment_to_markup_node(frag: c)), + } + } +} + +fn fragments_to_markup_nodes(frags: List) -> List { + map(frags, f => fragment_to_markup_node(frag: f)) +} + fn markup_node_to_fragment(node: MarkupNode) -> Fragment { match node { TextNode { text } => From 34d66aa0e2e32ea7bcf42179e1969cbacba2b65e Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 25 Jul 2026 00:33:05 +0000 Subject: [PATCH 2/6] =?UTF-8?q?Fix=20=C2=A73-fork=20dedup=20follow-ups:=20?= =?UTF-8?q?repair=20rust/types=20parse=20error=20and=20dissolve=20CacheInt?= =?UTF-8?q?erfaceProduct.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The WIP commit left rust/types.dag with a broken rust_cast_syntax declaration (regen parse panic). Restore the data decl, delete the zero-consumer integer_types/float_types lists (authority: rust.primitives), delete CacheInterfaceProduct enum in favor of CacheInterfaceId, and wire cache.dag catalog rows directly to cited facts. Co-authored-by: Cursor --- dag/extdeps/cache/cache.dag | 28 ++++++++-------------------- dag/extdeps/languages/rust/types.dag | 26 ++------------------------ dag/extdeps/shell/gnu_coreutils.dag | 2 +- dag/std/cache_identity.dag | 9 +-------- 4 files changed, 12 insertions(+), 53 deletions(-) diff --git a/dag/extdeps/cache/cache.dag b/dag/extdeps/cache/cache.dag index c15d0d7a81f..ca79fdf287a 100644 --- a/dag/extdeps/cache/cache.dag +++ b/dag/extdeps/cache/cache.dag @@ -34,7 +34,7 @@ import extdeps.realization.reconcile_in_process { typed_module_cache_id, } import extdeps.realization.resolved_graph { resolved_graph_cache_facts, resolved_graph_cache_id } -import std.cache_identity { CacheInterfaceId, CacheInterfaceProduct } +import std.cache_identity { CacheInterfaceId } import std.cache_interface { ArtifactIdentity, ProducerReceipt, @@ -52,18 +52,6 @@ data extdeps_external_authority_anchor: ExternalAuthority = ExternalAuthority { } } -fn cited_cache_interface_facts(product: CacheInterfaceProduct) -> CacheInterfaceCatalogFacts { - match product { - GhaActionsCache => gha_actions_cache_facts - SccacheLocal => sccache_local_facts - BuildbuddyCas => buildbuddy_cas_facts - CargoTargetDir => cargo_target_dir_facts - RustupToolchainStore => rustup_toolchain_store_facts - ResolvedGraphCache => resolved_graph_cache_facts - ParseTableMemo => parse_table_memo_facts - } -} - fn cache_interface_facts_from_catalog(row: CacheInterfaceCatalogFacts) -> CacheInterfaceFacts { CacheInterfaceFacts { identity: row.identity @@ -134,13 +122,13 @@ fn cache_verified_hit_receipt( } } -data gha_actions_cache: CacheInterfaceCatalogFacts = cited_cache_interface_facts(GhaActionsCache) -data sccache_local: CacheInterfaceCatalogFacts = cited_cache_interface_facts(SccacheLocal) -data buildbuddy_cas: CacheInterfaceCatalogFacts = cited_cache_interface_facts(BuildbuddyCas) -data cargo_target_dir: CacheInterfaceCatalogFacts = cited_cache_interface_facts(CargoTargetDir) -data rustup_toolchain_store: CacheInterfaceCatalogFacts = cited_cache_interface_facts(RustupToolchainStore) -data resolved_graph_cache: CacheInterfaceCatalogFacts = cited_cache_interface_facts(ResolvedGraphCache) -data parse_table_memo: CacheInterfaceCatalogFacts = cited_cache_interface_facts(ParseTableMemo) +data gha_actions_cache: CacheInterfaceCatalogFacts = gha_actions_cache_facts +data sccache_local: CacheInterfaceCatalogFacts = sccache_local_facts +data buildbuddy_cas: CacheInterfaceCatalogFacts = buildbuddy_cas_facts +data cargo_target_dir: CacheInterfaceCatalogFacts = cargo_target_dir_facts +data rustup_toolchain_store: CacheInterfaceCatalogFacts = rustup_toolchain_store_facts +data resolved_graph_cache: CacheInterfaceCatalogFacts = resolved_graph_cache_facts +data parse_table_memo: CacheInterfaceCatalogFacts = parse_table_memo_facts data compile_stage_memo: CacheInterfaceCatalogFacts = compile_stage_memo_facts data cache_catalog: List = [ diff --git a/dag/extdeps/languages/rust/types.dag b/dag/extdeps/languages/rust/types.dag index 751df847ae5..0339fa46f9c 100644 --- a/dag/extdeps/languages/rust/types.dag +++ b/dag/extdeps/languages/rust/types.dag @@ -111,31 +111,9 @@ data common_trait_bounds: List = [ data where_clause_template: String = "where\n \{constraints\}" data trait_bound_template: String = "\{type\}: \{bound\}" -import extdeps.languages.rust.primitives { rust_grounding_primitives, RustPrimitive, IntegerPrimitive, NonIntegerPrimitive } - -data rust_types_name_catalog_dissolve_on: String = "dissolve-on: rust.types.integer_types/float_types — deleted bare String name lists; derive type-name catalogs from extdeps.languages.rust.primitives rust_grounding_primitives.target_name rows." - -fn rust_integer_type_names() -> List { - fold( - rust_grounding_primitives, - init: [], - f: (acc, row) => match row { - IntegerPrimitive { target_name: name, .. } => concat(acc, [name]) - _ => acc - }, - ) -} +data rust_types_name_catalog_dissolve_on: String = "dissolve-on: rust.types.integer_types/float_types — deleted bare String name lists with zero consumers; sole type-name catalog authority is extdeps.languages.rust.primitives rust_grounding_primitives.target_name rows." -fn rust_float_type_names() -> List { - fold( - rust_grounding_primitives, - init: [], - f: (acc, row) => match row { - NonIntegerPrimitive { target_name: name, algebra: ApproximateFieldAlgebra, .. } => concat(acc, [name]) - _ => acc - }, - ) -} +data rust_cast_syntax: CastSyntax = { template: "\{expr\} as \{type\}", cast_rules: [ diff --git a/dag/extdeps/shell/gnu_coreutils.dag b/dag/extdeps/shell/gnu_coreutils.dag index f05b5063fe6..8cbce71baae 100644 --- a/dag/extdeps/shell/gnu_coreutils.dag +++ b/dag/extdeps/shell/gnu_coreutils.dag @@ -15,7 +15,7 @@ data extdeps_external_authority_anchor: ExternalAuthority = ExternalAuthority { data grep_recursive_quiet_flags: NonEmptyStr = "-rqE" data grep_recursive_numbered_flags: NonEmptyStr = "-rnE" -data gnu_coreutils_diff_flags_dissolve_on: String = "dissolve-on: gnu_coreutils.diff_recursive_flags — deleted fork of diff argv literals; sole authority is extdeps.diffutils shell.Diff.Recursive transport (diff -r {left} {right})." +data gnu_coreutils_diff_flags_dissolve_on: String = "dissolve-on: gnu_coreutils.diff_recursive_flags — deleted fork of diff argv literals; sole authority is extdeps.diffutils shell.Diff.Recursive transport (diff -r \{left\} \{right\})." data rm_force_recursive_flags: NonEmptyStr = "-rf" diff --git a/dag/std/cache_identity.dag b/dag/std/cache_identity.dag index c28827177b8..201f10e9cdf 100644 --- a/dag/std/cache_identity.dag +++ b/dag/std/cache_identity.dag @@ -17,11 +17,4 @@ data typed_module_artifact_kind: ArtifactKindId = "typed_module" data hermetic_fixture_artifact_kind: ArtifactKindId = "hermetic_fixture" -type CacheInterfaceProduct - = GhaActionsCache - | SccacheLocal - | BuildbuddyCas - | CargoTargetDir - | RustupToolchainStore - | ResolvedGraphCache - | ParseTableMemo +data cache_interface_product_dissolve_on: String = "dissolve-on: std.cache_identity.CacheInterfaceProduct — deleted closed enum fork; sole cache-backend identity authority is CacheInterfaceId (extdeps/cache/*.dag cited rows keyed by id)." From baa258068eb6625d433e4a8f5139816e0bcf88af Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 25 Jul 2026 01:33:28 +0000 Subject: [PATCH 3/6] =?UTF-8?q?Regen=20stage0=20after=20rust.types=20?= =?UTF-8?q?=C2=A73-fork=20dedup.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates extdeps_languages_rust_types.rs to match fresh regen_stage0 --verify output: remove integer_types/float_types emit, add rust_types_name_catalog_dissolve_on. Co-authored-by: Cursor --- .../stage0/src/extdeps_languages_rust_types.rs | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/v1/stage0/src/extdeps_languages_rust_types.rs b/src/v1/stage0/src/extdeps_languages_rust_types.rs index edba179beb5..6944aeb0bad 100644 --- a/src/v1/stage0/src/extdeps_languages_rust_types.rs +++ b/src/v1/stage0/src/extdeps_languages_rust_types.rs @@ -188,22 +188,13 @@ pub fn trait_bound_template() -> String { CACHED.with(|c: &String| c.clone()) } -pub fn integer_types() -> Rc> { +pub fn rust_types_name_catalog_dissolve_on() -> String { thread_local! { - static CACHED: Rc> = { - Rc::new(vec!["i8".to_string(), "i16".to_string(), "i32".to_string(), "i64".to_string(), "i128".to_string(), "isize".to_string(), "u8".to_string(), "u16".to_string(), "u32".to_string(), "u64".to_string(), "u128".to_string(), "usize".to_string()]) - }; - } - CACHED.with(|c: &Rc>| c.clone()) -} - -pub fn float_types() -> Rc> { - thread_local! { - static CACHED: Rc> = { - Rc::new(vec!["f32".to_string(), "f64".to_string()]) + static CACHED: String = { + "dissolve-on: rust.types.integer_types/float_types — deleted bare String name lists with zero consumers; sole type-name catalog authority is extdeps.languages.rust.primitives rust_grounding_primitives.target_name rows.".to_string() }; } - CACHED.with(|c: &Rc>| c.clone()) + CACHED.with(|c: &String| c.clone()) } pub fn rust_cast_syntax() -> Rc { From a934d68873bd75cc5be76c8bf73729ab10b52141 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 25 Jul 2026 02:32:53 +0000 Subject: [PATCH 4/6] =?UTF-8?q?WIP:=20Extdeps/std=20=C2=A73-fork=20dedups?= =?UTF-8?q?=20(point-at-existing-authority=20cluster)=20=E2=80=94=20per=20?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dag/gunbc/non_fold_residue.dag | 5 ----- 1 file changed, 5 deletions(-) diff --git a/dag/gunbc/non_fold_residue.dag b/dag/gunbc/non_fold_residue.dag index c9e75ee67d1..af0ba2e0131 100644 --- a/dag/gunbc/non_fold_residue.dag +++ b/dag/gunbc/non_fold_residue.dag @@ -341,11 +341,6 @@ data non_fold_residue_frontier: List = [ reason: nfr_reason_mint_era, dissolve_on: nfr_dissolve_wildcard_total }, - FrontierRow { - unit: "dag/std/filesystem.dag::is_text_encoding", - reason: nfr_reason_mint_era, - dissolve_on: nfr_dissolve_wildcard_total - }, FrontierRow { unit: "dag/std/induction.dag::compose_sub_value", reason: nfr_reason_mint_era, From a9561bc140617bf860200843904bd819f6d5f429 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 25 Jul 2026 02:51:00 +0000 Subject: [PATCH 5/6] =?UTF-8?q?WIP:=20Extdeps/std=20=C2=A73-fork=20dedups?= =?UTF-8?q?=20(point-at-existing-authority=20cluster)=20=E2=80=94=20per=20?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dag/test/claim/design_register_lift_parity_witness_test.dag | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dag/test/claim/design_register_lift_parity_witness_test.dag b/dag/test/claim/design_register_lift_parity_witness_test.dag index a6e47a4a951..7bdb80e7280 100644 --- a/dag/test/claim/design_register_lift_parity_witness_test.dag +++ b/dag/test/claim/design_register_lift_parity_witness_test.dag @@ -39,6 +39,10 @@ fn witness_roadmap_css_digest_pinned() -> Bool { emission_content_digest(s: roadmap_css()) == roadmap_css_lift_parity_digest } +fn roadmap_css_digest_probe() -> String { + emission_content_digest(s: roadmap_css()) +} + fn witness_moodboard_thesis_themes_digest_pinned() -> Bool { moodboard_digest() == moodboard_thesis_themes_lift_parity_digest } From 525bf5e5611bceb20b862e704ce21ca2cd2e41f0 Mon Sep 17 00:00:00 2001 From: Brian Searls Date: Sat, 25 Jul 2026 02:54:08 +0000 Subject: [PATCH 6/6] Fix CI floor witnesses: re-pin roadmap_css digest after #7169. The design_register_lift_parity witness was stale on main (roadmap_style changed in #7169); dag/std edits in this PR surfaced it in the affected-set corpus. NFR stale row for deleted filesystem.is_text_encoding was already removed in a934d68873. Co-authored-by: Cursor --- .../claim/design_register_lift_parity_witness_test.dag | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/dag/test/claim/design_register_lift_parity_witness_test.dag b/dag/test/claim/design_register_lift_parity_witness_test.dag index 7bdb80e7280..64223445ba2 100644 --- a/dag/test/claim/design_register_lift_parity_witness_test.dag +++ b/dag/test/claim/design_register_lift_parity_witness_test.dag @@ -14,9 +14,9 @@ data lift_parity_note: String = "Phase-A emission-identical witness (design-regi data moodboard_css_lift_parity_digest: String = "5f2596b1693465d7" data moodboard_html_lift_parity_digest: String = "9252e67e6cf24375" data accent_study_html_lift_parity_digest: String = "90e876af9e5173db" -data roadmap_css_digest_repin_note: String = "Re-pinned across the UI-model migration and the #7104 (SupersededLine) merge. P2 (token migration, px/font -> gunbc.design.scale var tokens) was proven visually-neutral by execution: resolving every var(--scale-token) reproduced the pre-P2 CSS byte-for-byte. P3 (presentation mapping) then INTENTIONALLY adds styling: the dispatch button's reserved min-width (derived from the longest wire label, in ch) and the ok/refusal/requested chip material rules (each painting the P0 state's role). D5 (typed CSS grain) is a pure re-grounding — property names and selector subjects become typed, bytes unchanged. The #7104 merge folds in the .status-superseded / .node-superseded / .superseded-by rules, RE-GROUNDED here onto the same typed+tokenized grain (their raw 11px/6px/font-family literals routed through the scale tokens so the untokened-length census stays green), which shifts the bytes off main's hardcoded emission — hence this digest re-pin. The behavioral receipts (roadmap_register_keystone, dispatch_presentation_keystone) and the untokened-length census remain the substance; this digest only pins bytes." +data roadmap_css_digest_repin_note: String = "Re-pinned across the UI-model migration and the #7104 (SupersededLine) merge. P2 (token migration, px/font -> gunbc.design.scale var tokens) was proven visually-neutral by execution: resolving every var(--scale-token) reproduced the pre-P2 CSS byte-for-byte. P3 (presentation mapping) then INTENTIONALLY adds styling: the dispatch button's reserved min-width (derived from the longest wire label, in ch) and the ok/refusal/requested chip material rules (each painting the P0 state's role). D5 (typed CSS grain) is a pure re-grounding — property names and selector subjects become typed, bytes unchanged. The #7104 merge folds in the .status-superseded / .node-superseded / .superseded-by rules, RE-GROUNDED here onto the same typed+tokenized grain (their raw 11px/6px/font-family literals routed through the scale tokens so the untokened-length census stays green), which shifts the bytes off main's hardcoded emission — hence this digest re-pin. The behavioral receipts (roadmap_register_keystone, dispatch_presentation_keystone) and the untokened-length census remain the substance; this digest only pins bytes. Re-pinned again for #7169 (roadmap workspace UX): roadmap_style gained centered .roadmap/.daily-workspace auto side margins and related layout rules — bytes shift, behavioral receipts (roadmap_register_keystone, dispatch_presentation_keystone) unchanged." -data roadmap_css_lift_parity_digest: String = "947686b5dbaab2b0" +data roadmap_css_lift_parity_digest: String = "d788728c4745ba48" data moodboard_thesis_themes_lift_parity_digest: String = "69e68066c49667f9" fn emission_content_digest(s: String) -> String { @@ -39,10 +39,6 @@ fn witness_roadmap_css_digest_pinned() -> Bool { emission_content_digest(s: roadmap_css()) == roadmap_css_lift_parity_digest } -fn roadmap_css_digest_probe() -> String { - emission_content_digest(s: roadmap_css()) -} - fn witness_moodboard_thesis_themes_digest_pinned() -> Bool { moodboard_digest() == moodboard_thesis_themes_lift_parity_digest }