Skip to content
Merged
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
12 changes: 2 additions & 10 deletions dag/gunbc/ci_layer_roots.dag
Original file line number Diff line number Diff line change
Expand Up @@ -597,12 +597,6 @@ data witness_exclusion_frontier: List<WitnessExclusionRow> = [
classification: BinWitnessWet,
reason: excl_bin_wet_reason,
dissolution: excl_bin_wet_dissolve},
WitnessExclusionRow {
pattern: "test/fixture/walk_plan_stage/",
classification: FixtureExplicitRoster,
reason: "walk_plan_stage production-path fixtures at dir grain: Wet typed-service controls driven only by plan.dag claim_executor recipes, never hermetic discovery witnesses (walk_plan_stage_control_fixture_exclusion_note, witness_admission_fixture_note)",
dissolution: unbound_dissolution(description: "fixture-home policy changes (witness_admission_fixture_note); row deletes")
},
WitnessExclusionRow {
pattern: "frontier_probe_closure_matrix_integration_test.dag",
classification: FalsifierRehomedBinWet,
Expand Down Expand Up @@ -952,7 +946,7 @@ Local recipe: gunbc run --source-root src/v2 --source-root dag --entry src/v2/wo

Dissolve-on: the crate-layout artifact moves to host-driven generation with the index supplied at the boundary — then the hand rows, the parity witness, and this exclusion delete together."

data witness_admission_fixture_note: String = "Phase 0(b) admitted control fixtures excluded from tree-wide discovery at dir grain: their consumers are explicit rosters, never the discovery corpus. The floor_skip fixture home was deleted with affected-set selection itself (the rows it controlled no longer exist); walk_plan_stage remains. Dissolves when fixture-home policy changes."
data witness_admission_fixture_note: String = "THE 2026-07-11 FIXTURE-HOME RULING, KEPT AFTER ITS LAST POPULATION WENT AWAY: a control fixture whose consumer is an explicit roster is excluded from tree-wide discovery at DIR grain, never at file grain — a fixture that WANTS witness enrollment is mis-homed by definition, and a file-grain exclusion invites the next control fixture to repeat the mistake. BOTH homes the ruling was written for are now gone: floor_skip died with affected-set selection, and walk_plan_stage died with the claim_executor plan/walk surface it was driven by (2026-08-26). This row therefore carries a RULING and no rows, which is deliberate — the ruling is what the next control fixture needs, and deleting it with its last specimen would make the next author rediscover it by repeating the file-grain mistake. THE SUCCESSOR FIXTURE HOME DOES NOT NEED IT: src/v2/test/fixture/compile_clean_scope/ (tools.dag_compile_clean_scope scope_disposition_witness_roster_note) authors no test fn at all, so discovery has nothing to admit and no exclusion row exists for it — which is the stronger construction, since an exclusion is a policy someone must maintain and an absent test fn is not writable into the corpus by accident. Dissolves when a control fixture home authoring test fns exists again and needs a row, or never."

data known_red_probe_note: String = "Phase 0(b) quarantine probe cadence (module-identity-storage-binding): known-red frontier witnesses that EXPECT RED on main — the falsifier probe batch's designed shape runs them SelectionApplied; greening is a counted un-quarantine event (per-row dissolve_on on the authority). Distinct from falsifier_self_host_wet (green-only SelfEmitted receipts). SINGLE AUTHORITY (2026-08-03): the rows live at function grain in gunbc.explicit_witness_admission explicit_witness_admissions and BOTH consumers derive from them — this roster is the falsifier batch's projection, and v2.workflow.floor_discovery_producer drops exactly the same (entry, function) pairs from per-PR discovery. The former shape was a dual representation: a QuarantineProbeExpectRed WitnessExclusionRow removing the whole FILE plus a probe_red(entry, f) row enrolling one FUNCTION, reconciled by a check instead of by construction. Those pattern rows are deleted; a pattern row that re-states a quarantine is now refused by witness_exclusion_row_well_formed. CADENCE STANDING (2026-08-19, dashboard node adhoc-1eb1a9f9-ad9): 'runs them' describes the batch's designed ordering, not a currently running schedule — falsifier.yml was deleted at 611fd02770/#8283 (2026-08-15), so nothing currently runs this probe batch and witness_execution_standing_for_row derives DeclaredCadenceUnrealized for QuarantineProbeExpectRed rows too (see falsifier_substrate_long_lane_note)."

Expand Down Expand Up @@ -1685,9 +1679,7 @@ fn witness_long_eval_budget_entries() -> List<ScheduleWitnessEntry> {

data resolution_divergence_silent_pick_gate_retirement_receipt: String = "RETIREMENT (operator 2026-08-18, gentle-tern-815). WHAT THE GATE CLAIMED: closure-scoped resolution-divergence census plus join-filtered SILENT-PICK-GATE refusals on genuine silent picks (global_bare_lcp, global_bare_lcp_tie, fn_parent_first_hit). THE DEFECT IS PRECONDITION ORDER, NOT PERFORMANCE: the gate checked its cheap decidable precondition LAST — it performed a second strict whole-corpus resolve and only then asked whether parent-plan telemetry was captured. Had it asked whether capture was armed BEFORE acquiring anything, it would have refused in microseconds the day the floor cut landed, loudly and for free. That ordering defect would still be wrong if the resolve were fast; 526s and +2.66GB RSS are the symptom, not the cause. WHY CAPTURE NEVER ARMED (both halves independently fatal): claim_executor returns from run_required_floor before the --plan-entry branch; capture_begin lives only under plan_function == gunbc_falsifier_plan inside that branch; witnesses.yml invokes only --required-floor; and src/v2/workflow/ci_floor_plan.dag (gunbc_falsifier_plan entry) was deleted by the floor cut — so the global stayed None and every run paid the full resolve cost before the foregone parent plan telemetry was not captured refusal. ENROLLMENT HID THE DEFECT: expected-red held means merely not-Pass, so a row failing structurally was indistinguishable from a row failing for the reason it was enrolled for — hiding 43% of slow time for the entire life of the floor, not a small miss. Measured: 526.1s wall, 4.6x next module, +2.66GB RSS. DELETED end-to-end: witness, transport, resolution_divergence_census bin, walk_target_alias_plan bin and cli_run walk-target planner (same silent-pick investigation family; zero CI consumers), in-process builtin, cli_run census machinery, falsifier roster rows. PRESERVED: v1_rt silent-pick recording hooks (main.rs compile-path proxy). Silent-pick divergence detection is NOT covered by any enrolled witness today. REBUILD CONSTRAINT: do NOT substitute the calling witness InterpContext for a whole-corpus census subject — the floor evaluates each claim through claim_scope_for, which scopes to that module's transitive import closure, not the prepared subject; reusing _calling_ctx (the obvious cheap repair) would silently narrow coverage from the whole corpus to one witness closure, run fast, report plausible sites_checked, and cover almost nothing (empty-observation narrow: bottom-as-answer conflated with bottom-as-ignorance). A future census must take the prepared module list explicitly; terminal shape is a function over that list whose typed receipt a constant-time witness asserts — not a witness that acquires or inherits its subject at evaluation time."

data walk_plan_stage_control_fixture_exclusion_note: String = "test/fixture/walk_plan_stage/ is excluded from tree-wide discovery at DIR grain (the fixture-home ruling of 2026-07-11: a fixture that WANTS witness enrollment is mis-homed by definition, and file-grain exclusion invites the next control fixture to repeat the mistake): these are production-path stage-executor controls with Wet typed-service bodies (shell.Mkdir/Remove/Test, Filesystem.Read/Write, sleep.Delay) driven only through claim_executor --plan-entry/--plan-function recipes in plan.dag. As hermetic discovery witnesses they refuse at the effect boundary (no mock_response for Parents/Write/Read/RecursiveForce) or carry BY-DESIGN reds (failure_red_member_holds); inclusion turned every PR touching the import closure into 8 WitnessRed failures in discovery batch 3. Explicit plan-driven runs and walk_plan_stage_fixture.rs (#[ignore] integration) are unaffected."

data enforcement_coverage_exclusion_note: String = "The four enforcement inventory/coverage witnesses (enforcement/cost_coverage_witness_test.dag, enforcement/grammar_coverage_witness_test.dag, enforcement_live_witness_test.dag, enforcement_inventory_witness_test.dag) are operator-ruled OFFLINE (2026-07-11; enforcement_inventory_witness_test.dag added 2026-08-02 review 47569). Receipt: their *_live fns read the corpus as data (live-tree rosters), so the PR-A never-predict-skip rule for live-tree rows made them run on EVERY wide PR regardless of diff; the block cost 22.0 min (main run 29137081535, busy fleet) and 21.0 min (PR run 29142398465, quiet fleet) of the 60-minute floor budget - about 35 percent - and their allocation ramp feeds the ~15GiB slot memory.high throttle that turns the floor tail into swap-speed work. Their input is corpus-denominated (the InputEnvelope axis, not layer span): per-PR admission wants a declared bounded envelope, which these rows cannot declare today. Offlining required TWO edits (cursor review catch, same PR): the discovery exclusion rows here AND removing the explicit CommitCheckEnrollment for enforcement_live_witness_test.dag in gunbc.commit_workflow - explicit roster rows merge after discovery with no exclusion filter (cli_run.rs explicit_entries dedup), and that is correct: an explicitly declared row should run, so offlining one means deleting its declaration, never teaching exclusions to veto the roster (a second authority). Run them via the local recipe: claim_batch --source-root dag --source-root src/v2 --entry <entry> per fn (all pure reads, no --wet needed). THE RECIPE IS TYPED: gunbc.offline_local_recipe owns the invocation for these entries; this note keeps the rationale. Dissolve-on: witness rows declare InputEnvelope/CostEnvelope and the scheduled (nightly) lane admits corpus-input rows under its own budget - then re-enroll consciously through the floor owner's lane; the affected-set-falsifier cadence covers interim drift."
data enforcement_coverage_exclusion_note: String = "The four enforcement inventory/coverage witnesses (enforcement/cost_coverage_witness_test.dag, enforcement/grammar_coverage_witness_test.dag, enforcement_live_witness_test.dag, enforcement_inventory_witness_test.dag) are operator-ruled OFFLINE (2026-07-11; enforcement_inventory_witness_test.dag added 2026-08-02 review 47569). Receipt: their *_live fns read the corpus as data (live-tree rosters), so the PR-A never-predict-skip rule for live-tree rows made them run on EVERY wide PR regardless of diff; the block cost 22.0 min (main run 29137081535, busy fleet) and 21.0 min (PR run 29142398465, quiet fleet) of the 60-minute floor budget - about 35 percent - and their allocation ramp feeds the ~15GiB slot memory.high throttle that turns the floor tail into swap-speed work. Their input is corpus-denominated (the InputEnvelope axis, not layer span): per-PR admission wants a declared bounded envelope, which these rows cannot declare today. Offlining required TWO edits (cursor review catch, same PR): the discovery exclusion rows here AND removing the explicit CommitCheckEnrollment for enforcement_live_witness_test.dag in gunbc.commit_workflow - explicit roster rows merge after discovery with no exclusion filter (cli_run.rs explicit_entries dedup), and that is correct: an explicitly declared row should run, so offlining one means deleting its declaration, never teaching exclusions to veto the roster (a second authority). Run them via the local recipe: claim_batch --source-root dag --source-root src/v2 --entry <entry> per fn (all pure reads, no --wet needed). Dissolve-on: witness rows declare InputEnvelope/CostEnvelope and the scheduled (nightly) lane admits corpus-input rows under its own budget - then re-enroll consciously through the floor owner's lane; the affected-set-falsifier cadence covers interim drift."

data accumulator_copy_roster_gate_exclusion_note: String = "The three accumulator_copy_roster_gate*_test.dag witnesses are operator-ruled OFFLINE (2026-07-10: the gate is ~15m of serial interpreted resolve; run it via the claim_batch recipe in v2.lens.complexity_accumulator_copy.roster_gate; the typed rows are gunbc.offline_local_recipe). Excluded from discovery because the flip's selection cannot see them honestly either way: file_gate reads its roster targets via filesystem_read at runtime — a data dependency invisible to resolve-closure attribution — and the live-scan classifier reads only entry-file text, so the rows would be intermittently selected by lens/std-closure PRs (cost, against the ruling) while never firing on roster-target-only PRs (no enforcement). Dissolve-on: resolved-graph memoization receipts land AND G2 path-intersection (not G1 module-closure alone) is wired into floor admission axis (iv); then re-enroll consciously through the floor owner's lane."

Expand Down
51 changes: 0 additions & 51 deletions dag/gunbc/ci_spec.dag
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,6 @@ import gunbc.ci_layer_roots {
witness_discovery_scan_dirs
}
import gunbc.cli_invoke {
claim_executor_run_plan_shell,
PlanFunction,
CiFloorPlan,
CiPlanArtifactPlan,
plan_function_name,
claim_executor_verify_artifacts_shell
}
import v2.workflow.gunbc_invoke_step_emit {
Expand Down Expand Up @@ -401,52 +396,6 @@ fn ci_merge_base_diff_range(policy: DiffPolicy) -> String {
}
}

fn git_fetch_script(policy: DiffPolicy) -> String {
let parts = git_remote_ref_parts(ref: policy.base as GitRef)
git_fetch_no_tags_shell(remote: parts.remote, ref_name: parts.ref_name, ignore_failure: true)
}

data floor_plan_entry: String = "src/v2/workflow/ci_floor_plan.dag"
data plan_function_string_projection_note: String = "These two are the NAME PROJECTION of gunbc.cli_invoke PlanFunction, not a second authority. The coproduct is where the roster is closed; these exist because the floor's own policy predicates (v2.workflow.ci_floor_plan gunbc_ci_floor_plan_uses_batch_stop_policy, gunbc_floor_arm_time_budget_refusal_applies) compare a plan identity as a String, and the claim_executor side receives it as an argv token. Deriving them through plan_function_name keeps one authority (§3): a rename edits the coproduct's match arm and both the argv and these comparisons follow, where three independent literals were exactly the fork that let the falsifier's fifth target drift. They delete when those predicates take a PlanFunction instead of a String."

data floor_plan_function: String = plan_function_name(p: CiFloorPlan)
data plan_artifact_plan_function: String = plan_function_name(p: CiPlanArtifactPlan)

fn scheduler_invoke_with(spec: CiSpec, plan_function: PlanFunction) -> String {
claim_executor_run_plan_shell(
source_roots: witness_layer_roots,
plan_entry: floor_plan_entry,
plan_function: plan_function,
notice_title: Present { value: spec.notice_title },
rooted: true
)
}

fn scheduler_invoke(spec: CiSpec) -> String {
scheduler_invoke_with(spec: spec, plan_function: CiFloorPlan)
}

fn gunbc_ci_floor_only_script(spec: CiSpec) -> String {
concat(
concat("ROOT=", ci_repo_root_shell(), "\n"),
concat(
concat(
concat("# ", concat(ci_documentation_only_floor_shortcut_retired_note, "\n")),
concat(git_fetch_script(policy: spec.diff_policy), "\n")
),
scheduler_invoke(spec: spec)
)
)
}

fn gunbc_ci_workflow_run(spec: CiSpec) -> String {
gunbc_ci_floor_only_script(spec: spec)
}

fn gunbc_ci_floor_run(spec: CiSpec) -> String {
gunbc_ci_floor_only_script(spec: spec)
}

// Read-only srv1 tasks pre-apply observation (operator ruling 2026-08-09 on PR 8045;
// manager approval msg_03ec1f78): produces the ONE exact pre-apply receipt (effective
// TasksMax, pids.max, pids.current, ancestor limit, observer slot membership) via the
Expand Down
8 changes: 0 additions & 8 deletions dag/gunbc/cli_dispatch_surface.dag
Original file line number Diff line number Diff line change
Expand Up @@ -239,14 +239,6 @@ fn gunbc_cli_subcommands() -> List<CliSubcommandRow> {
realization: CliRetainedHostKernel,
emission: EmittedByEmitMainRs
},
CliSubcommandRow {
verb: "ci",
variant: "Ci",
doc: [],
options: [],
realization: CliDelegatesToHostFn { symbol: "run_verb" },
emission: AbsentFromEmitMainRs
},
CliSubcommandRow {
verb: "run",
variant: "Run",
Expand Down
Loading
Loading