Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
23f8c1b
Decompose the Set carrier: the predicate half names PointwisePower, a…
Aug 23, 2026
ad41d9a
Addendum: full read of the Map delegate population refutes the sample…
Aug 23, 2026
a2b1027
Correct the addendum: the Map lane is a decomposition, not the symmet…
Aug 23, 2026
f73f998
Put the grammar fixture's PointwisePower reference where the import d…
Aug 23, 2026
94ca909
Split PartialFunction, name the finite power set, and point both alia…
Aug 23, 2026
e036757
Actually move TotalMap and TotalPolicy: delete the source declarations
Aug 24, 2026
b0b122d
Merge remote-tracking branch 'origin/main' into session/silent-gull-867
Aug 24, 2026
c77f275
Merge branch 'session/silent-gull-867' into session/silent-gull-867-m…
Aug 24, 2026
c5e72e9
Complete canonical_container_names, and delete the caller-side patch …
Aug 24, 2026
7eb5895
Re-author the 90 open-delegate Map literals onto PartialFunction
Aug 24, 2026
b1f672d
Merge remote-tracking branch 'origin/main' into session/silent-gull-8…
Aug 24, 2026
feb47e8
Close the Map literal population: 25 finite fact maps, 8 empties, 21 …
Aug 24, 2026
4447768
Merge main after #9055: the alias retarget supersedes the note that n…
Aug 24, 2026
15fd7bc
Merge main after #9055: the alias retarget supersedes the note that n…
Aug 24, 2026
6f3cb5b
Merge remote-tracking branch 'origin/session/silent-gull-867-map-carr…
Aug 24, 2026
05d149d
Install the ten regenerated stage0 mirrors the carrier split drifted
Aug 24, 2026
a76d907
Install the ten regenerated stage0 mirrors the algebra split drifted
Aug 24, 2026
d7b7775
Merge remote-tracking branch 'origin/session/silent-gull-867-map-carr…
Aug 24, 2026
072b964
Regen round two: the mirrors the first round's own output moved
Aug 24, 2026
aa14a6b
Regen round two on this branch: compiler_tests.rs and std_types.rs
Aug 24, 2026
6656890
Merge remote-tracking branch 'origin/session/silent-gull-867-map-carr…
Aug 24, 2026
78f3ba5
The profile map keyed only the ALIAS spellings, so a carrier receiver…
Aug 24, 2026
8b8f73e
Merge remote-tracking branch 'origin/session/silent-gull-867-map-carr…
Aug 24, 2026
ee404f9
Regen the mirror, because the profile rows could not reach the compil…
Aug 24, 2026
86c0051
Merge remote-tracking branch 'origin/session/silent-gull-867-map-carr…
Aug 24, 2026
39229b5
PartialFunction resolves as a container, or its lookup cannot substit…
Aug 24, 2026
2e682fc
Merge remote-tracking branch 'origin/session/silent-gull-867-map-carr…
Aug 24, 2026
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
9 changes: 8 additions & 1 deletion dag/extdeps/languages/go/types.dag
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ data go_algebra_inhabitants: List<InhabitantDecl> = [
import_path: none,
is_copy: none },

{ algebra: "BooleanAlgebra",
{ algebra: "FinitePowerSet",
template: "map[\{0\}]struct{}",
arity: 1,
identity_expr: "nil",
Expand All @@ -54,6 +54,13 @@ data go_algebra_inhabitants: List<InhabitantDecl> = [
import_path: none,
is_copy: none },

{ algebra: "FinitelySupportedFunction",
template: "map[\{0\}]\{1\}",
arity: 2,
identity_expr: "nil",
import_path: none,
is_copy: none },

{ algebra: "OrderedRing",
template: "int64",
arity: 0,
Expand Down
9 changes: 8 additions & 1 deletion dag/extdeps/languages/python/types.dag
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ data python_algebra_inhabitants: List<InhabitantDecl> = [
import_path: none,
is_copy: none },

{ algebra: "BooleanAlgebra",
{ algebra: "FinitePowerSet",
template: "set[\{0\}]",
arity: 1,
identity_expr: "set()",
Expand All @@ -53,6 +53,13 @@ data python_algebra_inhabitants: List<InhabitantDecl> = [
import_path: none,
is_copy: none },

{ algebra: "FinitelySupportedFunction",
template: "dict[\{0\}, \{1\}]",
arity: 2,
identity_expr: "{}",
import_path: none,
is_copy: none },

{ algebra: "OrderedRing",
template: "int",
arity: 0,
Expand Down
9 changes: 8 additions & 1 deletion dag/extdeps/languages/rust/types.dag
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ data rust_algebra_inhabitants: List<InhabitantDecl> = [
import_path: none,
is_copy: false },

{ algebra: "BooleanAlgebra",
{ algebra: "FinitePowerSet",
template: "BTreeSet<\{0\}>",
arity: 1,
identity_expr: "BTreeSet::new()",
Expand All @@ -64,6 +64,13 @@ data rust_algebra_inhabitants: List<InhabitantDecl> = [
import_path: none,
is_copy: false },

{ algebra: "FinitelySupportedFunction",
template: "HashMap<\{0\}, \{1\}>",
arity: 2,
identity_expr: "HashMap::new()",
import_path: none,
is_copy: false },

{ algebra: "OrderedRing",
template: "i64",
arity: 0,
Expand Down
9 changes: 8 additions & 1 deletion dag/extdeps/languages/typescript/types.dag
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ data ts_algebra_inhabitants: List<InhabitantDecl> = [
import_path: none,
is_copy: false },

{ algebra: "BooleanAlgebra",
{ algebra: "FinitePowerSet",
template: "Set<\{0\}>",
arity: 1,
identity_expr: "new Set()",
Expand All @@ -54,6 +54,13 @@ data ts_algebra_inhabitants: List<InhabitantDecl> = [
import_path: none,
is_copy: false },

{ algebra: "FinitelySupportedFunction",
template: "Map<\{0\}, \{1\}>",
arity: 2,
identity_expr: "new Map()",
import_path: none,
is_copy: false },

{ algebra: "OrderedRing",
template: "number",
arity: 0,
Expand Down
2 changes: 1 addition & 1 deletion dag/gunbc/plans/representation_minimization.dag
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ fn representation_minimization_body() -> List<MarkdownBlock> {
p(text: "Lever B attacks BYTES-PER-NODE; Lever C (item 2) attacks MODULES-HELD-AT-ONCE. The two axes are orthogonal and compose multiplicatively — neither blocks the other. Lever B is gated on emitter determinism (#5879) and lands in the v2/.dag realization. Lever C has no dependency on the emitter gate and is deferred to the v2 streaming-infer realization when v2 infer becomes the live path (see the Lever C disposition section; decision A3)."),
h2(text: "Lever C (item 2) disposition — design note (2026-06-28)"),
p(text: "Design-first investigation result. The §2 finding is real and verified by execution: the floor / claim-execution interpreter consumes only the resolved Node tree (module items + item_registry + source_indices), NEVER the per-module type_env/func_env (proven by a discriminating teeth control — evicting items/item_registry turns reflection witnesses RED, while evicting only type_env/func_env keeps the whole 1109-witness floor GREEN). The emit path (a separate process) genuinely consumes the envs and stays byte-identical."),
p(text: "Extend, do not fork (DESIGN §3): the v2 self-host compiler ALREADY models the consumed-core-vs-envs split — `03_resolve.dag` `ResolvedTree = Node` (env-free) versus `04_infer.dag` `InferredTree { root: Node, facts: Map<Node, InferredFacts> }`, where the facts side-map (grounding + termination descent) is v2's analog of v1's type_env/func_env. v1's monolithic `ResolvedGraph { Vec<TypedModule { type_env, func_env }> }` is the bootstrap-seed artifact that conflates what v2 already splits. No new resolve-output type is minted; Lever C aligns to the existing v2 types."),
p(text: "Extend, do not fork (DESIGN §3): the v2 self-host compiler ALREADY models the consumed-core-vs-envs split — `03_resolve.dag` `ResolvedTree = Node` (env-free) versus `04_infer.dag` `InferredTree { root: Node, facts: PartialFunction<Node, InferredFacts> }`, where the facts side-map (grounding + termination descent) is v2's analog of v1's type_env/func_env. v1's monolithic `ResolvedGraph { Vec<TypedModule { type_env, func_env }> }` is the bootstrap-seed artifact that conflates what v2 already splits. No new resolve-output type is minted; Lever C aligns to the existing v2 types."),
p(text: "The v2-surviving root is a RETENTION/EVICTION POLICY, not a type and not a fact-elimination: a module's inference facts are live only while it and its DIRECT dependents are processed (typecheck reads direct imports' facts; imported types are copied by value), so a module's facts evict once the dependency frontier passes — peak bounded by frontier width, not total modules (the #5867 shared-intern_table precedent: an algorithmic single authority). v2 `00_compile` today holds `InferredTree` WHOLE across infer→lens-gates→emit/eval, so this bound is genuinely OWED at v2 `00_compile`, unrealized."),
p(text: "Why this is a design note and not a modeled lens today (DESIGN §5/§6): v1 is hand-written bootstrap Rust that does NOT consume the .dag authority, so a .dag-modeled bound plus a hand-coded v1 frontier-evict would be parallel representation with no derivation link, and a lens asserting the bound over v2 infer would be inert (v2 infer is not the live path — no executing consumer). The bound is therefore recorded here, to be realized as v2 infer's streaming-infer when v2 becomes the live compiler. The interim bulk-eviction PR (#5886) was dropped: it trimmed only SUSTAINED interp RSS, not the per-shard resolve/infer PEAK that is the floor OOM axis (concurrency is peak-bound, #5867/CI-floor)."),
p(text: "Decision (MEASURED 2026-06-28): A3 — frontier-evict is NOT written into the doomed v1 typecheck seed; the ~4 GiB eviction prize is captured durably by the v2 streaming-infer realization of the frontier-bounded retention bound (the resolution-strategy fact above), when v2 infer becomes the live path. This was a data-gated decision and the data resolved to A3, robustly: the post-cutover floor measurement (claim_executor per-shard VmHWM × spawn_width=2, sccache excluded as a separate process tree) is co-resident 5.98 GiB — 1.82 GiB UNDER the ~7.8 GiB safety threshold below the 8 GiB host cgroup cap, only +0.7 percent above the 5.94 GiB pre-cutover baseline (noise). The cheaper fixes already in main — the floor alloc-clamp binding concurrency to the live cgroup limit, the shared intern_table, and the spawn-width-from-budget throttle — hold the floor comfortably under cap, and the cutover does not regress it. So v1 frontier-evict is NOT forced (the acute-pain justification that would have cemented doomed-seed Rust is absent). Its residual value at this margin is throughput-headroom (a lower per-shard peak permits a higher spawn_width), which belongs to the allocation lane (`docs/plans/resource-aware-scheduler.md`), not this representation lane. Verdict metric note: co-resident = per-shard VmHWM × spawn_width is a deliberately conservative upper bound (assumes simultaneous shard peaks), the correct fail-closed bias for a hard cap; the 1.82 GiB margin makes A3 robust rather than borderline. The flip-to-A1 trigger stays documented and re-auditable: if the corpus later grows enough that the post-cutover co-resident peak reaches ~7.8 GiB, A1 re-activates — implement frontier-evict on the claim-scoped `MultiEntryIndex.typed_module_cache` (eviction predicate fail-closed: a module's typed graph is evictable only once every module that imports it has been resolved, conservative-when-uncertain), gated on a consumer-completeness design read since that cache is load-bearing floor infrastructure. UN-tripped today at the measured 1.82 GiB margin."),
Expand Down
Loading
Loading