Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
0705e76
WIP: extract generated CLI dispatch for BT-0A
Aug 30, 2026
ba290e1
Fix allocator annotation grain
Aug 30, 2026
7f0dcdf
Refuse impossible executor allocation failure
Aug 30, 2026
9f4b54d
Record dispatch binding collision rung
Aug 30, 2026
219afef
Regenerate CLI dispatch allocator emitter
Aug 30, 2026
92ea9fe
Repair generated CLI dispatch boundaries
Aug 30, 2026
6e8e3b4
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Aug 30, 2026
4e1836a
Install repaired generated CLI carrier
Aug 30, 2026
17f8513
Avoid binding refused build operands
Aug 30, 2026
6d3d3dc
Relocate CLI dispatch allocator authority
Aug 30, 2026
15aefb3
Enroll CLI allocator and qualified selection controls
Aug 31, 2026
78656b8
Enroll first divergence and preserve CLI allocator
Aug 31, 2026
cd79dc6
Merge main into BT-0 generated CLI work
Aug 31, 2026
9e87ce2
Generalize Rust dispatch binding helpers
Aug 31, 2026
23603af
Make bootstrap path isolation control discriminating
Aug 31, 2026
32e9bbe
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Aug 31, 2026
d660f35
WIP BT-0P ground materialized tree builds
Aug 31, 2026
312ef87
Clarify frozen build subject identity tag
Aug 31, 2026
f38f0c9
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Aug 31, 2026
3ea80ff
Model generated carrier as a generation subject
Aug 31, 2026
1590e6a
Merge origin/main into BT-0: regenerate the four refused projections …
Sep 1, 2026
d11ea31
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Sep 1, 2026
cd6ae2d
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Sep 1, 2026
ecfcc74
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Sep 1, 2026
71aa2c7
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Sep 2, 2026
9ea1a67
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Sep 2, 2026
fa15592
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Sep 2, 2026
9087392
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Sep 2, 2026
81a03f8
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Sep 2, 2026
917d357
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Sep 2, 2026
b734c24
Route the shipped CLI through generated dispatch
Sep 2, 2026
05e127a
Prove the shipped Build command reaches generated dispatch
Sep 2, 2026
797f510
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Sep 2, 2026
42ad30c
Remove the untyped retained-caller rung note
Sep 2, 2026
99d4c37
Merge remote-tracking branch 'origin/main' into session/quick-heron-173
Sep 2, 2026
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
38 changes: 38 additions & 0 deletions dag/extdeps/languages/rust/emit.dag
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,44 @@ data rust_reserved_escape_suffix: String = "_"

data rust_string_types: List<String> = ["String", "Secret"]

// RUST VALUE-BINDING ALLOCATION FOR GENERATED DISPATCH. The CLI authority supplies the lexical
// population; this target authority owns the legal Rust spelling and collision-free selection.
// The sole current consumer is v1.compiler.emit_rust. Dissolves into a general Rust identifier
// allocation authority when that capability exists.
fn rust_value_binding_candidate(prefix: String, index: Int) -> String {
concat(prefix, to_string(index))
}

fn rust_value_binding_name_absent() -> String? {
Absent
}

fn rust_value_binding_name_present(candidate: String) -> String? {
Present { value: candidate }
}

fn rust_value_binding_choose_unblocked(found: String?, candidate: String, blocked: List<String>) -> String? {
match found {
Present { value: _ } => found
Absent => if blocked |> any(local => local == candidate) {
rust_value_binding_name_absent()
} else {
rust_value_binding_name_present(candidate: candidate)
}
}
}

// Do not use terminal `first`: gunbc.cli_dispatch_surface
// cli_dispatch_rung_classes enrolls the interpreter-algebra Optional substrate split that
// makes its interpreted result disagree with emitted Rust.
fn fresh_rust_value_binding_name(blocked: List<String>, prefix: String) -> String? {
let first_n = enumerate(blocked) |> map(pair => rust_value_binding_candidate(prefix: prefix, index: pair.first))
let candidates = concat(first_n, [rust_value_binding_candidate(prefix: prefix, index: count(blocked))])
fold(candidates, init: Absent, f: fn(found, candidate) {
rust_value_binding_choose_unblocked(found: found, candidate: candidate, blocked: blocked)
})
}

data rust_struct_derives: String = rust_trait_derive_attr_from_traits(record_derive_traits_heap())

data rust_struct_derives_copy: String = rust_trait_derive_attr_from_traits(record_derive_traits_copy())
Expand Down
1 change: 0 additions & 1 deletion dag/extdeps/printing/bambu_studio.dag
Original file line number Diff line number Diff line change
Expand Up @@ -124,4 +124,3 @@ data bambu_studio_platform_support: List<PlatformSupportClaim> = concat(
bambu_studio_spec_sheet_platforms,
bambu_studio_release_artifact_platforms
)

50 changes: 50 additions & 0 deletions dag/gunbc/bootstrap_operation_seed_growth.dag
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
module gunbc.bootstrap_operation_seed_growth

import std.decl_ref { DeclarationRef, WholeDeclaration }
import gunbc.seed_growth { SeedGrowthJustification }
import gunbc.roadmap_model { RoadmapNodeId }

// ENUMERATED BOOTSTRAP RESIDUE, at declaration grain. This is reducible debt, never host physics.
// Purpose: cross the frozen seed/successor import-closure boundary without importing or mirroring
// the successor operation. Realization: the retained v1 resolve/eval engine, in process. Public
// exposure: none; argv exposes only `build PROGRAM`. Forbidden growth: no devboot semantics,
// producer selection, transport logic, or v2 types may enter the seed. This narrowly supersedes
// target_invocation_seed_growth only for BootstrapSuccessorOperation; OrdinaryTargetProducer
// remains ineligible for interpreter execution.
data bootstrap_operation_seed_growth_justification: SeedGrowthJustification = SeedGrowthJustification {
hand_authored_declarations: [
DeclarationRef {
module_path: "v1_compiler.cli_run",
decl_name: "run_bootstrap_dag_operation",
field: WholeDeclaration,
},
DeclarationRef {
module_path: "v1_compiler.cli_run",
decl_name: "bootstrap_invocation_receipt_path",
field: WholeDeclaration,
},
],
reason: "PURPOSE admission serves the v2 self-host program. Classified against the five refused v1 classes: NewLanguageBehavior -- no compiler semantics change; NewCompatibilityObligation -- no predecessor route is retained; NewEscapeHatchOrAdmissionRow -- no, the binding is closed to BootstrapSuccessorOperation and every missing fact refuses; SeedFeatureCompletion -- no; PublicSurfaceGrowth -- yes, one modeled build verb. The successor operation transitively imports v2 and cannot enter the frozen seed closure, while mirroring it would duplicate its semantics. One generic in-process launcher therefore consumes only modeled source/declaration identity, named String bindings, an internal receipt channel, and ProcessExit. It names no product operation, host, transport, cache, provider, or interpreter selector.",
owning_dissolution_lane: "BT-5-product-bootstrap-promotion" as RoadmapNodeId,
trigger: "Delete this declaration and justification as soon as a promoted non-v1 gunbc artifact executes the same product-build operation without the v1 interpreter on its production path: run `gunbc build gunbc` through that promoted product with the v1 interpreter unavailable and observe the same cold production, warm reuse, digest verification, executable readback, and typed refusal distinctions. BT-7 is the hard outer bound, not a retention target.",
current_boundary: "src/v1/stage0/src/cli_run.rs run_bootstrap_dag_operation; modeled only by gunbc.cli_dispatch_surface CliInvokesBootstrapDagOperation; no import-reachable edge from src/v1 to gunbc.devboot or v2.*",
}

// The carrier, grammar, dispatch envelope, realization selection, and executor-name construction
// are generated. The existing host arm bodies remain hand-retained behind this one thin host
// boundary, and shipped main performs one generic delegation. The impl is not separately citable
// until std.decl_ref grows an impl-block identity; RetainedCliHost is its exact declaration owner,
// and this sentence keeps that uncitable residue explicit rather than silently dropping it.
data cli_dispatch_host_boundary_seed_growth_justification: SeedGrowthJustification = SeedGrowthJustification {
hand_authored_declarations: [
DeclarationRef {
module_path: "v1_compiler.main",
decl_name: "RetainedCliHost",
field: WholeDeclaration,
},
],
reason: "PURPOSE admission serves the v2 self-host program by moving the complete shipped CLI grammar and realization selection onto the installed generated carrier. Generated: CLI grammar, dispatch envelope, realization selection, and collision-free executor-name construction. Hand-retained: existing host arm bodies, the RetainedCliHost trait impl that exposes them to the carrier, and one generic delegation in the already-existing main function. No command identity or build route is selected in hand Rust.",
owning_dissolution_lane: "BT-7-cli-hollowing" as RoadmapNodeId,
trigger: "Delete RetainedCliHost, its impl, this justification, and the main.rs divergence row when retained host bodies are themselves emitted or removed, the shipped main is fully produced by the admitted generated boundary, and candidate main.rs is byte-identical to committed main.rs.",
current_boundary: "src/v1/stage0/src/main.rs RetainedCliHost and its CliDispatchHost impl; generated gunbc_cli_dispatch_generated.rs is the sole grammar and realization-selection carrier",
}
20 changes: 20 additions & 0 deletions dag/gunbc/build_identity.dag
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
module gunbc.build_identity

import std.types { String }
import extdeps.git { TreeObj }
import extdeps.git.object_store {
GitObjectId,
git_object_type_wire_name,
}
import gunbc.merge_admission_subject { render_git_object_id_wire }

// A MATERIALIZED TREE HAS CONTENT PROVENANCE, NOT AMBIENT CHECKOUT HISTORY. The tree tag keeps
// the value distinct from a commit of the same width; the Git object-format family keeps SHA-1
// and SHA-256 identities distinct. Both the producer-to-build-script binding and the product
// --version projection consume this one spelling.
fn materialized_tree_build_identity_text(tree: GitObjectId) -> String {
join([
git_object_type_wire_name(object_type: TreeObj),
render_git_object_id_wire(oid: tree),
], ":")
}
Loading
Loading