Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions dag/gunbc/ci_layer_roots.dag
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ data witness_exclusion_substrings: List<String> = [
"self_host_body_producer_behavioral_witness_test.dag",
"self_host_03_resolve_behavioral_witness_test.dag",
"self_host_program_assembly_behavioral_witness_test.dag",
"self_host_04_infer_behavioral_witness_test.dag",
"dag_collect_fingerprint_witness_test.dag",
"dag_compile_clean_perturb_receipts_test.dag",
"test/claim/diagnostics_test.dag",
Expand Down
6 changes: 3 additions & 3 deletions dag/gunbc/stage0_crate_layout_generated.dag
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import std.types { List, String }

data stage0_crate_layout_generated_note: String = "Generated by gunbc stage0_crate_layout_emit — do not hand-edit. Authority: v2.compiler.self_host.frontier; regen via dag/tools/generated_artifact_gate.dag main_wet."

data generated_pub_mod_block: String = "\npub mod v1_interpreter;\npub mod cli_run;\npub mod coproduct_reflection;\npub mod resolved_graph_cache;\npub mod shared_typecheck_store;\npub mod recorded_fixture;\npub mod memory_governor;\npub mod module_path_index;\npub mod usv_pilot_v2_std_algebra;\npub mod usv_pilot_v2_std_collection;\npub mod usv_pilot_v2_std_node;\npub mod v2_compiler_resolve;\npub mod v2_compiler_program_assembly;\npub mod v2_compiler_body_producer;\npub mod v2_compiler_target_carriers;\npub mod v2_compiler_discovery_enumeration;\npub mod v2_compiler_parse_engine_hooks;\npub mod v2_compiler_use_site_verdict;"
data generated_pub_mod_block: String = "\npub mod v1_interpreter;\npub mod cli_run;\npub mod coproduct_reflection;\npub mod resolved_graph_cache;\npub mod shared_typecheck_store;\npub mod recorded_fixture;\npub mod memory_governor;\npub mod module_path_index;\npub mod usv_pilot_v2_std_algebra;\npub mod usv_pilot_v2_std_collection;\npub mod usv_pilot_v2_std_node;\npub mod v2_compiler_resolve;\npub mod v2_compiler_infer;\npub mod v2_compiler_body_producer;\npub mod v2_compiler_target_carriers;\npub mod v2_compiler_discovery_enumeration;\npub mod v2_compiler_parse_engine_hooks;\npub mod v2_compiler_use_site_verdict;"

data generated_pub_mod_basenames: List<String> = [
"v1_interpreter",
Expand All @@ -19,7 +19,7 @@ data generated_pub_mod_basenames: List<String> = [
"usv_pilot_v2_std_collection",
"usv_pilot_v2_std_node",
"v2_compiler_resolve",
"v2_compiler_program_assembly",
"v2_compiler_infer",
"v2_compiler_body_producer",
"v2_compiler_target_carriers",
"v2_compiler_discovery_enumeration",
Expand All @@ -43,7 +43,7 @@ data generated_stage0_filenames: List<String> = [
"usv_pilot_v2_std_collection.rs",
"usv_pilot_v2_std_node.rs",
"v2_compiler_resolve.rs",
"v2_compiler_program_assembly.rs",
"v2_compiler_infer.rs",
"v2_compiler_body_producer.rs",
"v2_compiler_target_carriers.rs",
"v2_compiler_discovery_enumeration.rs",
Expand Down
9 changes: 9 additions & 0 deletions dag/test/claim/self_host_04_infer_behavioral_witness_test.dag
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module test.claim.self_host_04_infer_behavioral_witness

import tools.self_host_04_infer_behavioral_transport { i4_behavioral_receipt_holds }

data self_host_04_infer_behavioral_witness_doc: String = "Wet self-host behavioral receipt probe for Gate-A flip prep (04_infer): compares gunbc-emitted vs seed infer_arrow_domain_binding_heuristic_note (04_infer.dag module authority constant); --inject-fault perturbs emitted comparison (not driver flag). Full infer-tree walk deferred until emit surface greens (#6775). Live host effects — enroll when frontier flips SelfEmitted with binding."

test fn self_host_04_infer_behavioral_receipt_holds() -> Bool {
i4_behavioral_receipt_holds()
}
31 changes: 31 additions & 0 deletions dag/tools/self_host_04_infer_behavioral_transport.dag
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
module tools.self_host_04_infer_behavioral_transport

import tools.self_host_curated_seed_linked_harness { cssl_seed_linked_behavioral_receipt }
import v2.std.collection { List }
import std.logic { Bool }

data i4_doc: String = "Gate-A flip prep (04_infer self-emit): curated seed-linked behavioral receipt via tools.self_host_curated_seed_linked_harness (converged onto the shared cssl authority — DESIGN §3 — after #6791 was found to have clobbered it and #6801 restored it; do not re-fork a per-module copy). Emit ONLY v2.compiler.infer via gunbc compile --entry; runtime gunbc closure (empty shim_lib + shim_writes) — no committed frozen dep snapshots. Seed oracle: v1_compiler::v2_compiler_infer in src/v1/stage0 (hand-retained, independent of the emitted artifact). Behavioral bar: cargo-green witness pairs emitted vs seed on infer_arrow_domain_binding_heuristic_note (04_infer.dag module authority constant) with --inject-fault RED control, plus supplementary claim-run on pipeline_infer_add_fixture_relationship_green. NOTE (sharp-bee-290, cross-worker confirmed): gunbc --entry emits the WHOLE transitive closure, not entry-only, so a cargo refusal on a large closure (168 errors measured pre-convergence: missing generic params, duplicate std defs) is a HARNESS ARTIFACT of the current shim mechanism, not necessarily 04_infer's real Gate-A verdict — the real verdict awaits a generic seed-shim assembly (still-pike-676, in design) that auto re-exports every non-entry closure module against the seed crate. Frontier NOT flipped until a faithful rustc-green receipt exists — migration_trigger stays ^migrate_when_closure_self_emits_cargo_green (compiler_frontier_row_04_infer, src/v2/compiler/self_host/frontier.dag)."

data i4_seed_retained_note: String = "Seed oracle: v1_compiler::v2_compiler_infer in src/v1/stage0 (hand-retained, independent of emitted artifact). Dissolve-on: generic seed-shim assembly (still-pike-676) lands + #6775 Rc/Optional emit surface greens, giving a faithful cargo verdict; frontier flips SelfEmitted then."

data i4_source_rel: String = "src/v2/compiler/04_infer.dag"

data i4_test_entry_rel: String = "src/v2/test/compiler/pipeline/infer_stage_test.dag"

data i4_shim_driver_rel: String = "dag/tools/self_host_04_infer_shims/witness_main.rs"

data i4_scaffold_dissolution_trigger: String = "dissolve-on: dag/tools/self_host_04_infer_shims/witness_main.rs — hand-written equivalence driver. DISSOLVES WHEN a modeled self-host behavioral-equivalence harness producer emits the comparison driver without hand authoring (parallel to cssl_doc dissolution)."

data i4_receipt_pass_marker: String = "SELF_HOST_04_INFER_BEHAVIORAL_RECEIPT: PASS"

fn i4_behavioral_receipt_holds() -> Bool {
cssl_seed_linked_behavioral_receipt(
source_rel: i4_source_rel,
shim_lib_rel: "",
shim_writes: [],
driver_rel: i4_shim_driver_rel,
pass_marker: i4_receipt_pass_marker,
claim_entry_rel: i4_test_entry_rel,
claim_function: "pipeline_infer_add_fixture_relationship_green"
)
}
32 changes: 32 additions & 0 deletions dag/tools/self_host_04_infer_shims/witness_main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
use v1_compiled::v2_compiler_infer as emitted;
use v1_compiler::v2_compiler_infer as seed;

fn sym_eq(a: &str, b: &str) -> bool {
a == b
}

fn main() {
let inject_fault = std::env::args().any(|a| a == "--inject-fault");
let cases: [(&str, String, String); 1] = [(
"infer_arrow_domain_binding_heuristic_note",
emitted::infer_arrow_domain_binding_heuristic_note(),
seed::infer_arrow_domain_binding_heuristic_note(),
)];
let mut all_pass = true;
for (i, (label, e, s)) in cases.iter().enumerate() {
let e_cmp = if inject_fault && i == 0 {
"INJECTED_FAULT".to_string()
} else {
e.clone()
};
let ok = sym_eq(&e_cmp, s);
println!("{label} emitted_len={} seed_len={} eq={ok}", e_cmp.len());
all_pass &= ok;
}
if all_pass {
println!("SELF_HOST_04_INFER_BEHAVIORAL_RECEIPT: PASS");
std::process::exit(0);
}
println!("SELF_HOST_04_INFER_BEHAVIORAL_RECEIPT: FAIL");
std::process::exit(1);
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ pub const HAND_MAINTAINED_STAGE0_FILES: &[&str] = &[
"usv_pilot_v2_std_collection.rs",
"usv_pilot_v2_std_node.rs",
"v2_compiler_resolve.rs",
"v2_compiler_program_assembly.rs",
"v2_compiler_infer.rs",
"v2_compiler_body_producer.rs",
"v2_compiler_target_carriers.rs",
"v2_compiler_discovery_enumeration.rs",
Expand Down
6 changes: 3 additions & 3 deletions src/v1/stage0/src/gunbc_stage0_crate_layout_generated.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ pub fn stage0_crate_layout_generated_note() -> String {
pub fn generated_pub_mod_block() -> String {
thread_local! {
static CACHED: String = {
"\npub mod v1_interpreter;\npub mod cli_run;\npub mod coproduct_reflection;\npub mod resolved_graph_cache;\npub mod shared_typecheck_store;\npub mod recorded_fixture;\npub mod memory_governor;\npub mod module_path_index;\npub mod usv_pilot_v2_std_algebra;\npub mod usv_pilot_v2_std_collection;\npub mod usv_pilot_v2_std_node;\npub mod v2_compiler_resolve;\npub mod v2_compiler_program_assembly;\npub mod v2_compiler_body_producer;\npub mod v2_compiler_target_carriers;\npub mod v2_compiler_discovery_enumeration;\npub mod v2_compiler_parse_engine_hooks;\npub mod v2_compiler_use_site_verdict;".to_string()
"\npub mod v1_interpreter;\npub mod cli_run;\npub mod coproduct_reflection;\npub mod resolved_graph_cache;\npub mod shared_typecheck_store;\npub mod recorded_fixture;\npub mod memory_governor;\npub mod module_path_index;\npub mod usv_pilot_v2_std_algebra;\npub mod usv_pilot_v2_std_collection;\npub mod usv_pilot_v2_std_node;\npub mod v2_compiler_resolve;\npub mod v2_compiler_infer;\npub mod v2_compiler_body_producer;\npub mod v2_compiler_target_carriers;\npub mod v2_compiler_discovery_enumeration;\npub mod v2_compiler_parse_engine_hooks;\npub mod v2_compiler_use_site_verdict;".to_string()
};
}
CACHED.with(|c: &String| c.clone())
Expand All @@ -32,7 +32,7 @@ pub fn generated_pub_mod_block() -> String {
pub fn generated_pub_mod_basenames() -> Rc<Vec<String>> {
thread_local! {
static CACHED: Rc<Vec<String>> = {
Rc::new(vec!["v1_interpreter".to_string(), "cli_run".to_string(), "coproduct_reflection".to_string(), "resolved_graph_cache".to_string(), "shared_typecheck_store".to_string(), "recorded_fixture".to_string(), "memory_governor".to_string(), "module_path_index".to_string(), "usv_pilot_v2_std_algebra".to_string(), "usv_pilot_v2_std_collection".to_string(), "usv_pilot_v2_std_node".to_string(), "v2_compiler_resolve".to_string(), "v2_compiler_program_assembly".to_string(), "v2_compiler_body_producer".to_string(), "v2_compiler_target_carriers".to_string(), "v2_compiler_discovery_enumeration".to_string(), "v2_compiler_parse_engine_hooks".to_string(), "v2_compiler_use_site_verdict".to_string()])
Rc::new(vec!["v1_interpreter".to_string(), "cli_run".to_string(), "coproduct_reflection".to_string(), "resolved_graph_cache".to_string(), "shared_typecheck_store".to_string(), "recorded_fixture".to_string(), "memory_governor".to_string(), "module_path_index".to_string(), "usv_pilot_v2_std_algebra".to_string(), "usv_pilot_v2_std_collection".to_string(), "usv_pilot_v2_std_node".to_string(), "v2_compiler_resolve".to_string(), "v2_compiler_infer".to_string(), "v2_compiler_body_producer".to_string(), "v2_compiler_target_carriers".to_string(), "v2_compiler_discovery_enumeration".to_string(), "v2_compiler_parse_engine_hooks".to_string(), "v2_compiler_use_site_verdict".to_string()])
};
}
CACHED.with(|c: &Rc<Vec<String>>| c.clone())
Expand All @@ -41,7 +41,7 @@ pub fn generated_pub_mod_basenames() -> Rc<Vec<String>> {
pub fn generated_stage0_filenames() -> Rc<Vec<String>> {
thread_local! {
static CACHED: Rc<Vec<String>> = {
Rc::new(vec!["v1_interpreter.rs".to_string(), "cli_run.rs".to_string(), "coproduct_reflection.rs".to_string(), "resolved_graph_cache.rs".to_string(), "shared_typecheck_store.rs".to_string(), "recorded_fixture.rs".to_string(), "main.rs".to_string(), "phase_profile.rs".to_string(), "pre_push.rs".to_string(), "memory_governor.rs".to_string(), "std_lens_verdict.rs".to_string(), "usv_pilot_v2_std_algebra.rs".to_string(), "usv_pilot_v2_std_collection.rs".to_string(), "usv_pilot_v2_std_node.rs".to_string(), "v2_compiler_resolve.rs".to_string(), "v2_compiler_program_assembly.rs".to_string(), "v2_compiler_body_producer.rs".to_string(), "v2_compiler_target_carriers.rs".to_string(), "v2_compiler_discovery_enumeration.rs".to_string(), "v2_compiler_parse_engine_hooks.rs".to_string(), "v2_compiler_use_site_verdict.rs".to_string()])
Rc::new(vec!["v1_interpreter.rs".to_string(), "cli_run.rs".to_string(), "coproduct_reflection.rs".to_string(), "resolved_graph_cache.rs".to_string(), "shared_typecheck_store.rs".to_string(), "recorded_fixture.rs".to_string(), "main.rs".to_string(), "phase_profile.rs".to_string(), "pre_push.rs".to_string(), "memory_governor.rs".to_string(), "std_lens_verdict.rs".to_string(), "usv_pilot_v2_std_algebra.rs".to_string(), "usv_pilot_v2_std_collection.rs".to_string(), "usv_pilot_v2_std_node.rs".to_string(), "v2_compiler_resolve.rs".to_string(), "v2_compiler_infer.rs".to_string(), "v2_compiler_body_producer.rs".to_string(), "v2_compiler_target_carriers.rs".to_string(), "v2_compiler_discovery_enumeration.rs".to_string(), "v2_compiler_parse_engine_hooks.rs".to_string(), "v2_compiler_use_site_verdict.rs".to_string()])
};
}
CACHED.with(|c: &Rc<Vec<String>>| c.clone())
Expand Down
1 change: 1 addition & 0 deletions src/v1/stage0/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ pub mod v1_std_core;
pub mod v1_test_non_ascii_perf_fixture;
pub mod v2_compiler_body_producer;
pub mod v2_compiler_discovery_enumeration;
pub mod v2_compiler_infer;
pub mod v2_compiler_parse_engine_hooks;
pub mod v2_compiler_program_assembly;
pub mod v2_compiler_resolve;
Expand Down
9 changes: 9 additions & 0 deletions src/v1/stage0/src/v2_compiler_infer.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// Seed realization for v2.compiler.infer (Gate-A flip prep, curated seed-link scaffold).
// Hand-retained Rust oracle — independent of the self-emitted artifact under test.
// Dissolve-on: self-emit cutover retires this module when v2.compiler.infer
// is emitted-only and the behavioral harness is modeled (i4_scaffold_dissolution_trigger).

/// Mirrors `data infer_arrow_domain_binding_heuristic_note` in src/v2/compiler/04_infer.dag.
pub fn infer_arrow_domain_binding_heuristic_note() -> String {
"interim: infer_find_arrow_domain_type_in_tree DFS-walks the resolved tree for the first Arrow whose Conj domain names the atom-binding symbol — symbol-name collision across unrelated arrows picks first-visit order, not lexical scope. dissolve-on: namespace-only name resolution consumes containment-tree binding→domain (DESIGN open thread §namespace-only); delete this heuristic walker when SymbolIndex lookup lands.".to_string()
}
3 changes: 2 additions & 1 deletion src/v2/compiler/self_host/frontier.dag
Original file line number Diff line number Diff line change
Expand Up @@ -912,7 +912,8 @@ data seed_retained_scaffold_registrations: List<SeedRetainedScaffoldRegistration
SeedRetainedScaffoldRegistration { basename: "usv_pilot_v2_std_collection" },
SeedRetainedScaffoldRegistration { basename: "usv_pilot_v2_std_node" },
SeedRetainedScaffoldRegistration { basename: "v2_compiler_resolve" },
SeedRetainedScaffoldRegistration { basename: "v2_compiler_program_assembly" }
SeedRetainedScaffoldRegistration { basename: "v2_compiler_program_assembly" },
SeedRetainedScaffoldRegistration { basename: "v2_compiler_infer" }
]

fn intrinsic_pub_mod_basename_from_row(row: SeedRetainedIntrinsicRegistration) -> List<String> {
Expand Down
Loading