Repository navigation
Conversation
|
Addressed all three findings in 95fc0a7 (fix commit):
Also, while in here: All witnesses re-run green by execution ( |
…lity lifts) claude-opus-4-7 #5866: == lifts over the HeavyComputeLaneSource coproduct (verified by execution), so the hand-rolled 2-variant equality predicate is the DESIGN §5 predicate-dissolution shape — replaced with l.source == source. Witnesses re-run green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Thanks for the approve. Both findings:
|
…d + BuildBuddy vendor scaffold
- lease_grant now rejects a duplicate lease_id (LeaseRejectedDuplicateId) instead
of silently double-booking a lane (DESIGN §5 fail-open -> fail-closed); fulfill
maps it to FulfillmentRejected{DuplicateLeaseId}. New discriminating witness
witness_duplicate_lease_id_rejected_fail_closed (2nd grant of same id -> rejected,
ledger still holds 1).
- ExecutorTarget BuildBuddyRemote: add buildbuddy_remote_executor_vendor_scaffold
(DESIGN §3, parallel to control_plane_agent_vendor_scaffold).
- All LeaseGrantOutcome / FulfillmentRejection matches made exhaustive over the new variants.
Witnesses re-run green by execution.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
CI note:
The breakage is in a recent main merge's domain (#5841 String-grounding / #5822 roadmap_spawn_request). This PR's CI will go green once |
…shape DERIVED from the .dag program, no heavy/workload/locality (replaces discarded #5866) (#5889) * WIP: Re-model compute_fabric as a namespace need<->opportunity connector; sha * Ground threads in HardwareThreadCount (std.measure), drop bare Int Addresses unit-modeling finding from review: HardRequirements.threads was a bare Int where HardwareThreadCount (Measure<Count,One,Nat>) is the single authority. shape_covers now uses measure_le; witnesses use hardware_thread_count/hardware_thread_count_value at construction/read sites. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Remove ProgramPreference: connector spec excludes preference/locality ProgramPreference was decorative (connect never read it) with no scaffold dissolution trigger — DESIGN §6 violation. The connector spec is 'no heavy/workload/locality'; preferences are locality. Removed ProgramPreference type, prefers field, example_pref_* data. Simplified witness_hard_requirement_unmet_is_unmet to only test the hard requirement path (threads=64 vs capacity=8 → Unmet). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Brian Searls <briansrls@gunb.ai> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Brian Searls <11205878+briansrls@users.noreply.github.com>
What
gunbc-side single-authority model for session compute allocation (ctrl design rev3, PR gunb-ai/ctrl#1838).
compute_fabricgains a request → fulfillment interface; pool/lane/conservation are private fulfillment internals.Interface (public):
SessionSubject { agent: ControlPlaneAgent = ClaudeCode | Codex | Cursor }— the light always-on session.ComputeRequest { requester, workload: ComputeWorkload, needs: ResourceEnvelope, locality }wherelocality = FulfillableRemotely | MustRunLocal. No heavy/pool/lane vocabulary at the interface.ComputeWorkload = ExecCommand { command } | GhaRunner { repo, labels }— a queued CI job is aComputeRequestof the same shape (one concept, every breadth — DESIGN §2).fulfill(...) -> Fulfillment = Fulfilled { executor: RemoteExecutorHandle } | FulfillmentQueued { lane_count, held } | FulfillmentRejected { reason }.Below the interface (private bookkeeping):
HeavyComputePool,LeaseLedger,lease_grant/lease_release,ledger_conserves(held ≤ lanes, construction-not-validation, DESIGN §5). Lane source is derived from the workload (GhaRunner → GithubCiRunner,ExecCommand → OnDemandSessionLease) so CI and on-demand exec draw from one ledger — the separaterunner_pooldissolves. Routable work → BuildBuddy executor;MustRunLocal→ a leased pooled lane.Semantics (12 witnesses, green by execution via
gunbc run --claim-run)work_demanddigest) — operator's "the same sessions".FulfillmentQueued(GitHub's own queue), not Reject; in-session exec exhaustion = fail-closedFulfillmentRejected.NeedsUnsatisfiable; pool conserves at capacity; release frees a lane.Scope / authority
heavy_compute_pool + session_pool + overhead + headroom ≤ host) remains infleet_host_budget/node_conserves(calm-carp lane).HELD for operator review — do not merge.
🤖 Generated with Claude Code