Skip to content

DESIGN SKETCH ONLY (no code, returns to stern-moth-225 + operator for sign-off before any implementation): affected-set CI scoping for the floor. PROBLEM: heavy self-host execution witnesses (comprep_*/mvp1_*/*_round_trip, ~11 at 20s+, one was 537s) auto-discover into a FLAT SERIAL corpus, so every - #5992

Closed
briansrls wants to merge 27 commits into
mainfrom
session/merry-fox-653

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session merry-fox-653.
Pushing to session/merry-fox-653 advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

Brian Searls and others added 27 commits June 29, 2026 18:17
…ngs in ci_layer_roots.dag (§3 single authority)

- Add `witness_exclusion_substrings: List<String>` to `dsl/gunbc/ci_layer_roots.dag` — single authority for path-substring exclusions
- Add `exclude_substrings: List<String>` field to `RunnableDiscoveryBatch` in `dsl/std/realization_schedule.dag`; update all pattern-match sites and `runnable_eq`
- Wire `witness_exclusion_substrings` into `corpus_runnable()` in `ci_floor_plan.dag` via the new field
- Thread `exclude_substrings` through `DiscoveryCorpusOptions`, `discover_floor_corpus_rows`, `claim_executor`, `claim_batch`, and test call sites; plan-driven paths now read from the model value, not the Rust constant
- Mark `FLOOR_DISCOVERY_EXCLUDES` SCAFFOLD (dissolves when all callers use the model-derived path)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… pass

- floor_skip_discovery_host_test.rs: DiscoveryCorpusOptions struct literal
  missing new exclude_substrings field — use ..Default::default() to pick up
  the FLOOR_DISCOVERY_EXCLUDES-backed default
- claim_executor.rs: vec![] in None arm of exclude_substrings match was
  ambiguous — change to Vec::new() so rustc can infer the String element type
- cargo fmt --all pass (claim_batch.rs, cli_run.rs, pipeline.rs, wet_hermetic)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ed parallel width

- Move 5 execution witnesses (self_host/fixed_point, self_host/candidate_generation,
  self_host/compiler_closure_emit, fold_assembly/round_trip, complexity_gate/comprep_bridge)
  into src/v2/test/claim/execution/ with updated module declarations
- Add execution_corpus_node to ci_floor_plan.dag: RunnableDiscoveryBatch with
  discovery_scope_dirs scoped to execution/ dir and spawn_width_cap derived from
  gunbc_ci_runner_cgroup_memory_cap / 2 GiB per witness reservation
- Extend RunnableDiscoveryBatch type + Rust BatchUnit/DiscoveryBatch with
  discovery_scope_dirs and spawn_width_cap; apply cap at run_batch_unit level
- Add ci_exclusion_proof_test.dag to FLOOR_DISCOVERY_EXCLUDES (Rust mirror) to
  prevent regression on claim_batch pre-push path (sentinel already in .dag model)
- Update floor_nodes, floor_resource_anchor_node, runnable_for_node, floor_data_dependencies
  and the RunnableDiscoveryBatch pattern in floor_batch_heavy_gate_resolve_count

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tch_unit

BatchUnit::Discovery is matched on an owned BatchUnit, so spawn_width_cap is
usize not &usize — drop the * dereference at the cap application site.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- execution_corpus_spawn_width: wrap gunbc_ci_runner_cgroup_memory_cap with
  byte_size_count() before dividing by Int (ByteSize / Int is not defined)
- inert_lens_hygiene_tests / construction_justification_hygiene_tests: add
  FLOOR_DISCOVERY_EXCLUDES to use super:: imports — test functions reference
  it directly after discover_floor_corpus_rows signature added the param

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…VERY_EXCLUDES import

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…st enrolled rows

The execution corpus witnesses (src/v2/test/claim/execution/) are excluded from
the main corpus rows, but path_imports already contains their import graphs
(populated before the exclusion continue). Extend the inert_lens_modules seed
to include ALL *_test.dag paths found in the source tree so that execution-corpus
witnesses still count for lens coverage — matching the pre-Move-B behavior.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…lexity_gate/, drop stale execution copy

main renamed comprep_pipeline_bridge{,_test}.dag -> source_bridged_pipeline_bridge{,_test}.dag
and kept the test in complexity_gate/. My branch had moved the comprep test to execution/
but that source module no longer exists post-rename. Resolution: take main's file in
complexity_gate/ and remove the stale execution/comprep_pipeline_bridge_test.dag.
Execution corpus now has 4 witnesses (the 3 self_host + fold_assembly_round_trip).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…_cap enforcement

Finding 1: execution_corpus_spawn_width() divided the full 8 GiB runner cap by
the per-witness reservation (2 GiB = 4), but both corpora run concurrently in
batch-2 with no ResourceDependsOn between them. Delegates to
gunbc_ci_execution_corpus_available_width() in ci_floor_measurement.dag which
subtracts the floor corpus worst-case shard peak (~4.24 GiB) and executor base
overhead (~1.5 GiB) first — correct width under current measurements is 1.

Finding 2: DiscoveryCorpusOptions.spawn_width_cap documented as capping in-corpus
parallelism but run_discovery_corpus_with_options never enforced it — only
claim_executor.rs applied the cap before calling. Now enforced at the top of
run_discovery_corpus_with_options so any caller gets the cap regardless.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ery_corpus_with_options

run_discovery_corpus_with_options now self-enforces options.spawn_width_cap
(previous commit). Thread spawn_width_cap through run_discovery_batch_node
to DiscoveryCorpusOptions.spawn_width_cap instead of pre-capping spawn_width
in run_batch_unit. Eliminates the duplicate min() that was the §2/§3 second
representation flagged in cursor review finding 2.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…awn_width_cap)

The function was at the clippy limit (7 args) before this PR. Adding spawn_width_cap
as an 8th arg to thread the cap through to DiscoveryCorpusOptions.spawn_width_cap is
the correct §2/§3 single-authority fix; suppressing the lint on this internal function
is the right response rather than bundling unrelated args.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…y formula

Two issues addressed:
- execution_corpus_node co-ran with floor_corpus_node in batch-2, causing OOM
  (exit code 137 in CI). Fix: add ResourceDependsOn(floor → execution) so
  execution runs after floor finishes.
- runnable_excludes_corpus_co_residence gates (emit-host, regen) only waited
  for floor_corpus_node; can now co-run with execution corpus. Fix: add
  execution_corpus_node as second source in floor_corpus_exclusion_resource_edges
  so those gates wait for both.
- gunbc_ci_execution_corpus_available_width: removed floor_shard_peak subtraction;
  execution now runs sequentially after floor, so full (runner_cap - executor_base)
  is available → width = floor((8GiB - 1.5GiB) / 2GiB) = 3.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…plit

witness_source_ingest_serialized_after_corpus used skip(n:2) to find the
ingest layer, but execution_corpus_node (added in Move B) occupies batch 2
as it depends on floor_corpus_node. Ingest and other heavy gates now land
in batch 3 (they depend on BOTH corpora). Update skip to n:3.

Also fix the stale BoolWitness.entry in
emit_ingest_typescript_same_language_round_trip_test.dag which still
pointed at the old manual/ path after the file was moved to execution/.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Stale: created from the session/merry-fox-653 branch which carries pre-squash #5962 history. The design sketch is filed as a clean docs-only PR at #5994 (docs/affected-set-precompute-pruning-sketch). — sent from merry-fox-653

@gunbai-bot gunbai-bot Bot closed this Jun 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant