Skip to content

Design + model N-dimensional static resource envelope for CI floor scheduling: a Cost-style resource record (memory/compute/storage/energy), each axis a grounded Measure reconciled against its own cap; compile-time lens computes per-Runnable peak envelope from DECLARED input sizes; derive width per- - #6062

Closed
briansrls wants to merge 3 commits into
mainfrom
session/merry-koi-140

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session merry-koi-140.
Pushing to session/merry-koi-140 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 3 commits July 1, 2026 02:24
Document the compile-time envelope model, resource-scalar census, and
sequencing; remove premature substrate scaffold pending operator sign-off
on carrier shape before touching load-bearing scheduler files.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls marked this pull request as ready for review July 1, 2026 02:26
briansrls added a commit that referenced this pull request Jul 1, 2026
…t_min fallback-witness regression from #6059) (#6070)

* WIP: OOM kill on CI

* CI floor: plan spawn width = budget-responsive floor width (fix witness regression)

The int_min(floor, exec) form broke witness_floor_spawn_width_zero_budget_falls_back:
exec_w (execution_corpus_spawn_width) is computed from the fixed 8 GiB runner cap and
ignores the memory_budget param, so min(floor=4, exec=3)=3 != conservative_fallback(4)
on an unreadable budget. The int_max form OOM'd (width 3); the int_min form fails the
fallback witness. Neither is coherent because exec_w doesn't respond to the budget.

Make gunbc_ci_plan_spawn_width return only the budget-responsive floor width (pre-#5975
semantics): 1 at the 8 GiB cap (memory-safe, no OOM — floor peak RSS 5.4 GiB, cgroup
peak 7.6 GiB < 8 GiB in run 28488853720), conservative-fallback 4 on unreadable budget.
Rename the witness to assert plan_w == floor_w; drop the now-unused int_min import.

Note for the real fix (child B design PR #6062): the measured per-shard scalar is
4.24 GiB but run 28488853720 shows real per-shard peak 5.4 GiB at width 1 — the scalar
underestimates reality, confirming the tautology; width 2 would OOM at 8 GiB.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@briansrls briansrls closed this Jul 1, 2026
briansrls added a commit that referenced this pull request Jul 3, 2026
Revives docs/plans/static-resource-envelope.md (grounded design from
closed PR #6062, never merged) onto origin/main, re-verifies its §4.1/
§4.2 census against current main post dsl->dag rename, and folds in
three live-session deltas (§9): batch/streaming InputEnvelope
projection, provenance-as-metric, and cost-model single-authority
with the complexity lens.

Adds std.static_resource_envelope: StaticPeakDemand/ResourceCap
(4-axis: memory/compute/storage/energy, each a grounded Measure),
envelope_reconciled/derive_spawn_width (per-axis reconciliation, min
over axes), and DemandProvenance (StaticDerived/Measured/
ConvergedState/Fixture) with production refusing Fixture. Grounds a
new Storage Quantity + DiskSize alias in std.measure so the storage
axis doesn't fuse onto ByteSize/Memory (per #6062 §3 - memory bytes
!= disk bytes); Quantity is a phantom type tag never pattern-matched
in the corpus, confirmed safe to extend.

Synthetic-fixture witnesses only (dag/test/claim/
static_resource_envelope_test.dag) - no load-bearing consumer wired.
Per parent-session (sunny-newt-884) instruction, holding the actual
scheduler wiring (P2/P3) pending operator sign-off on #6062 §7's open
carrier-home/axis-set decisions; none of the four §4.1 load-bearing
files (ci_floor_measurement.dag, ci_floor_plan.dag, claim_executor.rs,
cli_run.rs) are touched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 3, 2026
…ut-cost-envelope-scheduling.md (#6186)

* WIP: floor-width-budget-source-a (STEP 1 of the bounded-input/cost-envelope d

* P1 static resource envelope carrier (model-only, synthetic witnesses)

Revives docs/plans/static-resource-envelope.md (grounded design from
closed PR #6062, never merged) onto origin/main, re-verifies its §4.1/
§4.2 census against current main post dsl->dag rename, and folds in
three live-session deltas (§9): batch/streaming InputEnvelope
projection, provenance-as-metric, and cost-model single-authority
with the complexity lens.

Adds std.static_resource_envelope: StaticPeakDemand/ResourceCap
(4-axis: memory/compute/storage/energy, each a grounded Measure),
envelope_reconciled/derive_spawn_width (per-axis reconciliation, min
over axes), and DemandProvenance (StaticDerived/Measured/
ConvergedState/Fixture) with production refusing Fixture. Grounds a
new Storage Quantity + DiskSize alias in std.measure so the storage
axis doesn't fuse onto ByteSize/Memory (per #6062 §3 - memory bytes
!= disk bytes); Quantity is a phantom type tag never pattern-matched
in the corpus, confirmed safe to extend.

Synthetic-fixture witnesses only (dag/test/claim/
static_resource_envelope_test.dag) - no load-bearing consumer wired.
Per parent-session (sunny-newt-884) instruction, holding the actual
scheduler wiring (P2/P3) pending operator sign-off on #6062 §7's open
carrier-home/axis-set decisions; none of the four §4.1 load-bearing
files (ci_floor_measurement.dag, ci_floor_plan.dag, claim_executor.rs,
cli_run.rs) are touched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* WIP: floor-width-budget-source-a (STEP 1 of the bounded-input/cost-envelope d

* WIP: floor-width-budget-source-a (STEP 1 of the bounded-input/cost-envelope d

* WIP: floor-width-budget-source-a (STEP 1 of the bounded-input/cost-envelope d

* WIP: floor-width-budget-source-a (STEP 1 of the bounded-input/cost-envelope d

* WIP: floor-width-budget-source-a (STEP 1 of the bounded-input/cost-envelope d

* gunbc.ci: correct stale 8GiB->24GiB runner cgroup cap; drop CI-concurrency scaffolding

The live actions-runner@ cgroup cap is 24GiB, not the 8GiB gunbc_ci_runner_cgroup_memory_cap
carried since PR-A's §3 de-conflation -- a future OOM investigation reading this constant as
ground truth would be misled by a ~3x-too-small figure. Corrected the constant and its
disposition prose.

Also drops the fleet-concurrency admission-budget scaffolding (job-level GHA concurrency
group, slot-compute job, yaml-emitter job.outputs/job.concurrency support) built earlier in
this branch in response to a co-residence OOM incident theory: the incident's later 5th
occurrence spanned two physical hosts, refuting co-residence as the necessary cause, and the
operator has since de-prioritized CI-concurrency work under a broader convergence. None of
that machinery had a consumer once dropped, so it is removed rather than left inert.

Also drops this branch's earlier, unrelated STEP-1 cost-envelope scaffolding
(dag/std/measure.dag Storage/DiskSize/measure_saturating_sub, docs/plans/static-resource-envelope.md)
per the operator's ruling to shrink this PR to the (C) cap correction alone and hold new
cost-envelope work; recoverable via git history if that thread resumes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* WIP: floor-width-budget-source-a (STEP 1 of the bounded-input/cost-envelope d

* Revert 8GiB->24GiB cap change: reviewer correctly found it conflates two distinct §3-split authorities

api-review (cursor/composer-2.5) on #6186 found this PR's premise was wrong: the live
actions-runner@ per-slot cgroup cap really is 8GiB today, not 24GiB. Verified directly:
- dag/gunbc/fleet_show_effective_read.dag: 4 live-probed runner-unit fixture rows
  (srv1-02, srv2-01, srv2-02, 2026-07-03) all read memory_max_raw = "8589934592"
- .github/fleet-converge.sh:278 actuates per-slot MemoryMax to "8589934592"
- dag/gunbc/ci_budget_tree.dag's own disposition prose (untouched by this branch)
  independently states "8 GiB, within-run OOM authority" for this same constant
- dag/gunbc/roadmap_authority.dag:150 lists "the 8GiB fleet slot contract" and "the 24GiB
  stopgap" as two different facts to de-conflate, not one fact to correct

The ~24GiB figure in gunbc_ci_footprint_granularity_disposition is the INTER-run whole-job
peak (gunbc_ci_job_peaks), a different granularity/authority than this WITHIN-run per-slot
cap by DESIGN §3's own deliberate split -- exactly the conflation that split exists to
prevent. Reverting the constant and its disposition prose to origin/main's original,
correct 8GiB. Both witnesses the reviewer flagged as going RED
(witness_derived_width_at_runner_cap_is_one, witness_parse_bytes_is_typed) pass again with
the revert, confirmed by execution.

Also folds four points of genuinely unique thinking from the retired
static-resource-envelope.md draft into the signed bounded-input-cost-envelope-scheduling.md
(N-axis width beyond memory+cpu, a DemandProvenance/static_derived_fraction metric, an
InputEnvelope streaming/rate-bounded projection, and the cost-model/complexity-lens shared
authority direction) per the §2 test that dropping a doc must reduce redundancy, not lose
information.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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