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
30 changes: 29 additions & 1 deletion dag/gunbc/instrument_targets.dag
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,14 @@ fn compile_clean_diagnostic_census_label() -> Label {
// `v2.compiler.compile` declares `SourceRootEvalDriver`, whose rendered main answers `census` and
// `adjudicate` and has no compile mode at all. That refusal is the honest next position and belongs
// in this instrument when a driver can reach it.
//
// WHAT IT NOW ALSO ESTABLISHES, ADDED RATHER THAN IMPLIED. The cargo green is no longer taken on
// its own: the preparation injects one type error into the entry's own emitted module and requires
// cargo to fail alone on a diagnostic naming it, so a fingerprint alias or a replayed cached
// verdict cannot stand in for a compile. And the built driver is STARTED -- `census` over one
// well-formed module must report no per-file refusal, and the same mode over the committed poison
// specimen must report one naming it. Until that pair ran, this instrument admitted an executable
// nothing had executed.
fn self_host_label() -> Label {
Label { package: instruments_package() target: TargetName { name: "self-host" } }
}
Expand All @@ -143,7 +151,27 @@ fn self_host_label() -> Label {
// `adjudicate` and has no compile mode. `v2.cli.compile_cli` is the entry that has one -- a
// `NativeCliDriver` whose `.dag` fold decides the verb, every refusal, what to emit and the process
// status, with a rendered main that only reads argv, walks the roots the PLAN named, writes stdout
// and sets the status. This instrument asks whether that door compiles.
// and sets the status. This instrument asks whether that door compiles AND whether its ENTRYPOINT
// EXECUTES -- which are different questions, and the second one was asked by nothing until the
// built binary was spawned. It is spawned twice over `fixtures/native_cli_door`.
//
// THE EXECUTING EVIDENCE IS THE REFUSAL ARM, not an emission. `emit --source-root <root>` with no
// `--entry` is admitted only when the process exits non-zero carrying `cli_no_entry`'s located
// sentence -- a cause only this program's own `.dag` fold produces, so reaching it establishes that
// the process started, read argv, parsed it, decided, rendered its own cause and set its own status.
//
// THE OTHER ARM EXPECTS RED, AND THAT IS A MEASURED FACT ABOUT THE DOOR RATHER THAN A WEAKENED
// CHECK. The built binary CANNOT EMIT A CLOSURE: over the fixture root it answers
// `infer_grounding_not_derived`, and over the real corpus a located `parse_g0_tokens_remain` at the
// `service ... { operation ... }` form. Those are limitations in the emitted front end, and
// `v2.cli.compile_cli` records the same shape measured at gunbc#11507 on three different entries.
// So the arm PINS that limitation by name: a crash, a spawn failure or any other refusal fails the
// instrument, and an exit 0 fails it too, with instructions to flip the probe into a regression
// control asserting the door emits. Deleting it instead would leave nothing to notice the day the
// limitation lifts (DESIGN section 4b(4)).
//
// What is still unclaimed is the second generation, and by a wider margin than a green would
// suggest: this door has never emitted anything.
//
// IT IS A SEPARATE LABEL BECAUSE IT IS A SEPARATE CLOSURE, not because the question is different.
// The two closures are DIFFERENT rather than nested, and neither contains the other's
Expand Down
2 changes: 1 addition & 1 deletion dag/gunbc/source_root_eval_driver_seed_growth.dag
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@ data source_root_eval_driver_seed_growth_justification: SeedGrowthJustification

trigger: "Delete this rendered main when a .dag driver function can receive the host operations above AS VALUES — argv, the walked and read source roots, the two clocks, the /proc reading, the two output sinks and the exit status — so that the rendered main becomes one call into that fold and the phase order, the refusal arms and the terminal marker are decided in .dag. That is the capability, and it retires the whole row. WHAT DOES NOT RETIRE IT, named because each is the tempting smaller artifact: migrating the TSV decode alone, which leaves the orchestration hand-authored; rendering the cost row from .dag alone, which is already half-done since the row set and the verdict are a .dag authority and only the JSON rendering is retained; and shrinking the template by moving Rust text into a second emitter helper, which relocates the hand-authored program without reducing it.",

current_boundary: "v1.compiler.emit_rust emit_source_root_eval_driver_main_rs -> the rendered main.rs of the emitted closure crate -> claim_executor --v2-native-route (v1_compiler.cli_run.native_lane_runner run_required_v2_native), which spawns that binary in census and adjudicate modes"
current_boundary: "v1.compiler.emit_rust emit_source_root_eval_driver_main_rs -> the rendered main.rs of the emitted closure crate -> claim_executor --v2-native-route (v1_compiler.cli_run.native_lane_runner run_required_v2_native), which spawns that binary in census and adjudicate modes; and gunbc test //gunbc/instruments:self-host (v1_compiler.cli_run.native_lane_runner walk_eval_driver_door), which spawns it twice in census mode as that instrument's accepting and refusing controls"
}
25 changes: 25 additions & 0 deletions fixtures/native_cli_door/door_probe.dag
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
module fixture.native_cli_door.door_probe

// THE V2-NATIVE CLI'S POSITIVE CONTROL, AND THE REASON IT IS ITS OWN SOURCE ROOT.
//
// `//gunbc/instruments:v2-native-cli` emits and BUILDS `v2.cli.compile_cli`; until the step that
// consumes this file landed, that was the whole instrument -- the door compiled and was never
// walked through, which DESIGN section 5 names as specification-without-execution: a green that
// establishes the closure typechecks and nothing about whether the program runs. This file is the
// argv the built binary is handed so that it does run: `emit --entry
// fixture.native_cli_door.door_probe --source-root fixtures/native_cli_door`.
//
// IT HAS NO IMPORTS, for the same reason `fixture.closure.rustc_green_probe` has none: the
// admission's subject resolves against the validated roots the ingest produced, so a module whose
// closure is itself is the SMALLEST subject that still walks argv parse, source-root read, ingest,
// resolution and emission end to end. A subject with imports would add nothing to what the door
// decides and would make a red attributable to the import graph rather than to the door.
//
// IT IS ITS OWN DIRECTORY AND NOT A FILE IN AN EXISTING FIXTURE ROOT, because the CLI's source
// root is walked RECURSIVELY for every `.dag` file under it; sharing a directory would make the
// control's ingest a function of what some other fixture's author adds next to it.
//
// THE DECLARED VALUE IS WHAT THE STEP READS BACK. The positive control requires the emitted text
// on stdout to name this declaration, so an emission that reached stdout but carried some other
// module's bytes is not admitted as this subject's emission.
data native_cli_door_probe_value: Int = 606060
Loading