Repository navigation
Conversation
…, UserCacheRoot, occupancy rebuild
Lands the store-policy half of the M1.c compiled acquisition bridge (spec gunbc#12581
revision 3, section 4 "Store path", section 8 row L5a) as a DECLARED FRONTIER: every new
declaration is executed by a hermetic witness now, and its production consumers arrive in
named later landing units.
- extdeps.freedesktop.xdg_base_directory (new, scope carrier): the XDG Base Directory
Specification 0.8 as the cited authority for the user's cache home. XdgCacheHome is
sole_constructor, minted only by xdg_cache_home: an absolute non-empty XDG_CACHE_HOME
wins; an empty or relative one is ignored (and named on the result); the fallback is
$HOME/.cache; an unset, empty or relative HOME refuses (the one rule the spec is silent
on, stated as such). Enrolled in gunbc.extdeps_scope_frontier scope_carrier_paths.
- gunbc.materialization_store_capacity (new): the one home of the store's byte ceiling,
in apparent file bytes (the unit is the field's name). UserCacheRoot 2 GiB (Q11),
WitnessScratchRoot its fixture field, DurableHostVolumeRoot StoreCeilingUndeclared --
a stated departure from the spec's `-> StoreCeiling`, because no size is decided for
the unattached fleet volume and a borrowed number would be fabricated policy.
- std.materialization_store_grant: + UserCacheRoot { cache_home: XdgCacheHome } at
<cache home>/gunbc/materialization-store, DurableAcrossRuns, Read+Write granted at the
store root only; WitnessScratchRoot gains `ceiling` (13 sites, 3 files). The module's
invariant is rewritten and the section 3b divergence stated: an environment-derived
root answers durable in XDG's sense of the cache home.
- std.artifact_store::artifact_store_from_occupancy (new): observed rows in recency order
(least recent first) become ordinals 1..N; no per-row replay, so over-ceiling occupancy
is kept and the commit's ONE store_put evicts it, counted.
Frontier and triggers:
- xdg_cache_home's production reader and UserCacheRoot's constructor: L8's route root
reads XDG_CACHE_HOME/HOME and opens a UserCacheRoot.
- materialization_store_byte_ceiling and artifact_store_from_occupancy: L5b's
local_store_commit (census -> ceiling -> occupancy -> one store_put), and L5b's
catalog retention row naming the ceiling as its RuntimeDerivedLimit authority.
- the spec's 0700 directory-creation rule lands with its only consumer, L5b's first-use
initialization.
Touches no file #12401 edits.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…reaches eviction only as StoreCeiling Applies the adversarial review of cf1fd44. MAJOR -- no caller-supplied ByteSize sizes the occupancy store. - std.artifact_store: store_over_provider_resolved(provider, resolved: StoreCeiling) is the RuntimeDerivedLimit arm of the EXISTING construction path (store_over_provider_with threads an optional resolved ceiling through store_from_capacity and store_from_limit), so release policy, capacity unit and at_capacity are judged exactly as store_over_provider judges them. It admits the ceiling only for a provider whose authority is gunbc.materialization_store_capacity materialization_store_byte_ceiling_authority (CapacityAuthorityMismatch otherwise) and refuses a resolved ceiling beside an ExactLimit (ResolvedCeilingBesideExactLimit). - artifact_store_from_occupancy(ceiling: ByteSize, ...) is replaced by artifact_store_with_occupancy(store, occupancy): it seeds the store a StoreReady carried, keeps its budget, and continues its ordinal counter. ArtifactOccupancyRow.artifact_bytes is renamed apparent_file_bytes (the Q11 unit). - artifact_store_witness: the occupancy claims build their store as L5b's commit will (a witness root's ceiling from its one home, then the resolved door); 7 new resolution controls and 1 new seeding control. Minors. - std.materialization_store_grant: the durability divergence now rests on object-level preimage verification; the UserCacheRoot / DurableHostVolumeRoot path collision is an L5b obligation with both fixes named; the UserCacheRoot frontier sits directly above the root type. - extdeps.freedesktop.xdg_base_directory: xdg_base_join's comment names the four copies of the directory-child join; the absolute-path rule is cited to section "Basics"; the READ and git-grep receipts are removed (PR body); the frontier sits above xdg_cache_home. The version is held once, in the anchor's literal locator: the version row and the literal-agreement witness are deleted, and the scope subject is XdgCacheHome. A stated departure from the review's suggested mechanism (derive the locator from the version row): a derived locator projects `refused` on the corpus-cadence anchor projection behind corpus_live_clean_tree_wall_holds (observed), the constraint extdeps.pin and extdeps.posix.shell_command_language record. - gunbc.materialization_store_capacity: the transcribed 12.4 MB / ~170 figures are replaced by the instrument (the commit's census line); frontiers sit above the declarations they name. Consequence of the new import (std.artifact_store -> gunbc.materialization_store_capacity): v2.std.algebra enters its closure through std.effect_grant, so 19 unimported-bare-provider roster rows in 11 files no longer carry their pair; each is retired ImportsFixed, as the rule directs (observed by the entry-route judgment; the floor re-derives every ImportsFixed row per run). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…or checks, then answers it Lane decision (spec gunbc#12581 author) resolving the conflict between the review's routing and spec sections 2.6 and 9.1 Q11: - std.artifact_store artifact_store_for_ceiling(ceiling: StoreCeiling) -> ArtifactStore is the one construction of a store from a ceiling. It takes the sole_constructor StoreCeiling, never a ByteSize, and needs no CacheProvider or ProviderRetention, so L5b's commit can use it with artifact_store_with_occupancy without the provider door entering the R-D mirror set. - store_over_provider_resolved keeps every check it made (scope-released, unit, at_capacity LRU-only, authority match) and then answers StoreReady with exactly that construction. The store_ready_empty helper is deleted; the pre-existing ExactLimit arm builds from the provider's own stated number as it did on the base. - The leading comment of artifact_store_for_ceiling names the check the commit path relies on: test.claim.artifact_store_witness the_store_catalog_row_admits_exactly_the_ceiling_store, which runs the constant catalog row through the door. It is a declared frontier that lands in L5b with the row's retention: the row declares CapacityUnobserved today, truthfully, because nothing yet applies a ceiling to that store or evicts from it. Witnesses (test.claim.artifact_store_witness): the_ceiling_store_is_empty_and_sized_by_its_ceiling (the construction), the_resolved_door_answers_the_one_ceiling_construction (the door's answer equals the construction, compared whole; replaces a_ceiling_derived_provider_is_sized_by_its_resolved_ceiling), and the six occupancy claims now build their store the way the commit will, with artifact_store_for_ceiling and no provider. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
M1.c compiled acquisition bridge, unit L5a: the store policy the local per-user compiler store needs, declared ahead of its consumers.
gh pr diff 12401 --name-onlyagainst this diff: 0 shared files).What lands
extdeps.freedesktop.xdg_base_directory(new) is the cited authority for the per-user cache home. It follows the XDG Base Directory Specification 0.8:XDG_CACHE_HOMEwins.$HOME/.cache.HOMErefuses with its own cause. There is no substitute directory.XdgCacheHomeissole_constructor.gunbc.materialization_store_capacity(new) is the one home of the store byte ceiling.UserCacheRootgets 2 GiB, measured in apparent file bytes (manifest plus blobs).DurableHostVolumeRootanswersStoreCeilingUndeclared, because no size has been decided for the unattached fleet volume and borrowing 2 GiB would be fabricated policy.std.materialization_store_grant:UserCacheRoot { cache_home: XdgCacheHome }, rooted at<cache home>/gunbc/materialization-store;WitnessScratchRoota fixture ceiling;durability_is_the_arm_s_not_the_path_s, and rests on object-level preimage verification.std.artifact_store:artifact_store_for_ceiling(StoreCeiling)is the one construction of a store from a ceiling. It never takes a rawByteSize.store_over_provider_resolvedis the provider door: every existing provider check, then that same construction.artifact_store_with_occupancyseeds held rows in recency order, with no per-row replay.artifact_store_for_ceiling, thenartifact_store_with_occupancy, then onestore_put.Declared frontier (DESIGN §3c)
Every new declaration has a witness consumer now. Its production consumers land later, and each declaration's leading comment names its trigger:
artifact_store_for_ceiling,artifact_store_with_occupancyandmaterialization_store_byte_ceiling: L5b, which islocal_store_commit, the catalog retention and first-use initialization.xdg_cache_homeandUserCacheRoot: L8, where the route root opens the store.The catalog-row witness
the_store_catalog_row_admits_exactly_the_ceiling_storelands with the catalog's retention in L5b. Declaring that retention now would claim a ceiling and eviction that nothing applies yet (§4d).Controls
All runs used
claim_batch --hermeticbuilt at this head. Results are recorded on the merged head below.xdg_base_directory_witnessmaterialization_store_capacity_witnessmaterialization_store_grant_witnessartifact_store_witness, in fullmaterialization_store_witnessa_tampered_part_size_is_an_integrity_refusal, fails identically on clean mainmaterialization_store_local_wet_witness(--wet)/tmpresiduefilterrefusesUnimportedBareProvider Unrostered ...xdg_base_directory.dag#filterKnown limit. A second construction that is identical in value cannot be detected by a value-level witness. Any fork that diverges goes red on
the_resolved_door_answers_the_one_ceiling_construction.Roster retirements
19 rows in
src/v2/workflow/floor_unimported_bare_provider_debt_roster.dagmove fromActiveDebttoRetired { cause: ImportsFixed }.std.artifact_store→gunbc.materialization_store_capacity(forStoreCeiling) bringsv2.std.algebrainto those files' closures throughstd.effect_grant.std.effect_grant'sv2.std.algebraimport, and L4'sstd.artifact_store_providercarve. The floor refuses loudly if that is missed.Receipts
These are carried here rather than in the upstream module (DESIGN §3, External upstream decomposition; §4c):
XDG page, read 2026-09-29. https://specifications.freedesktop.org/basedir/0.8/ answered HTTP 200, and the older spelling
basedir-spec/0.8/answers 301 to it. Rules read from it:$XDG_CACHE_HOMEand the$HOME/.cachedefault, under "3 Environment variables";Version 0.8, published 08 May 2021.
No prior XDG authority. Before this change,
git grep XDG_CACHE_HOME -- '*.dag'matched only prose.Source of the 2 GiB policy. The per-compiler executable size behind it is M1.c compiled acquisition bridge: exact seed closure, emitter repairs, scoped exception (pre-merge-review spec, rev 3) #12581's U0 measurement. Its re-deriving instrument is the census line each L5b commit prints (entries, bytes, ceiling, evicted).
Stated departures from the spec text
materialization_store_byte_ceilingreturnsStoreCeilingResolution, withStoreCeilingUndeclaredforDurableHostVolumeRoot, as above.StoreCeiling.apparent_file_bytesrather than as a separate unit type, because the v1 seed reads a single-variant coproduct as a type alias.refusedon the corpus anchor wall.artifact_store_from_occupancy(ceiling)became the commit order above. M1.c compiled acquisition bridge: exact seed closure, emitter repairs, scoped exception (pre-merge-review spec, rev 3) #12581 §7.2 and §8 will be updated to match.Pre-existing reds in this closure, none caused by this change
materialization_store_witnessa_tampered_part_size_is_an_integrity_refusal.external_model_scope_witnesscarriers_declare_scope_on_diskandfrontier_rosters_are_disjoint, and the scope placement gate's freeze arm. All three come fromdag/extdeps/bmc/ipmi_boot_selection.dagbeing both a scope carrier and a frozen-manifest row.corpus_live_clean_tree_wall_holds, which is already expected-red.Obligations recorded for later units
UserCacheRootwithXDG_CACHE_HOME=/var/libhas the same store path as the fleet root, so one directory would carry two ceilings. The fix is either to put the root arm in the store marker, or to refuse a user root that equals or nests the fleet root.extdeps.filesystem.🤖 Generated with Claude Code