Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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/simd/kernel.dag
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,14 @@ data relu_mul_add_wire_op_codes: List<Int> = [

data simd_kernel_handler_roadmap_bind: String = "bind: docs/plans/accelerator-demo-roundtrip.md §6 item 2 (execution lane)"

data host_kernel_relu_mul_add_op_codes_scaffold_note: String = "regen-sync: src/v1/runtime_rust.dag RELU_MUL_ADD_OP_CODES must mirror relu_mul_add_wire_op_codes until feature:dag-kernel-realization-handler dissolves host literals into target_model emit; roadmap: simd_kernel_handler_roadmap_bind"
data host_kernel_relu_mul_add_op_codes_scaffold_note: Disposition = Scaffold {
dissolves_to: SingleAuthority,
bind: DeclarationRef {
module_path: "extdeps.languages.simd.kernel",
decl_name: "relu_mul_add_wire_op_codes",
field: WholeDeclaration
}
}

fn witness_relu_mul_add_wire_op_codes_are_locked_triplet() -> Bool {
if relu_mul_add_wire_op_codes.length() != 3 {
Expand Down
11 changes: 10 additions & 1 deletion dag/gunbc/commit_workflow.dag
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import gunbc.ci_gate {
import gunbc.generated_artifact {
GeneratedArtifact, CiYamlArtifact, GithooksPrePushArtifact, artifact_path
}
import std.disposition { Disposition, Scaffold, SingleAuthority }
import std.decl_ref { DeclarationRef, WholeDeclaration }
import std.realization_schedule {
string_list_eq, ScheduleWitnessEntry,
WitnessKind, CorpusWitnessKind, ExecutionWitnessKind, witness_kind_eq,
Expand Down Expand Up @@ -246,7 +248,14 @@ fn project_ci_regen_job_gates(roster: List<CommitCheckEnrollment>) -> List<Gate>
)
}

data ci_witness_optin_inversion: String = "CI witness enrollment is OPT-IN (operator inversion, 2026-07-04). Witness existence in the tree does not enroll it in CI: the tree-wide glob roster grows quadratically with the corpus (a witness is definable between any two pipeline segments) and had reached the point where the floor timed out - maximum cost, zero delivered signal. A witness gates CI exactly when a CommitWitnessClaim row on the GithubActionsCiJob surface declares it, projected by project_ci_floor_witness_entries into the floor plan's explicit entries (entry x check_fn). Tree-wide discovery remains the local path (claim_batch --roster-from-discovery). dissolve-on: affected-set selection (v2.lens.affected_set) plus floor memoization make per-PR selection-by-affectedness affordable; re-enroll the corpus through the affected set and dissolve this projection back into discovery."
data ci_witness_optin_inversion: Disposition = Scaffold {
dissolves_to: SingleAuthority,
bind: DeclarationRef {
module_path: "gunbc.commit_workflow",
decl_name: "project_ci_floor_witness_entries",
field: WholeDeclaration
}
}

fn witness_entries_from_enrollments(rows: List<CommitCheckEnrollment>) -> List<ScheduleWitnessEntry> {
fold(rows, init: [], f: fn(acc, row) {
Expand Down
21 changes: 18 additions & 3 deletions dag/gunbc/hand_lens_host_bridge_scaffold_index.dag
Original file line number Diff line number Diff line change
@@ -1,7 +1,22 @@
module gunbc.hand_lens_host_bridge_scaffold_index

import std.types { String }
import std.disposition { Disposition, Scaffold, SingleAuthority }
import std.decl_ref { DeclarationRef, WholeDeclaration }

data transport_script_position_host_bridge_dissolution_trigger: String = "dissolve-on: gunbc#5364 — host-fed transport_script_position_facts_for_path (cli_run.rs TransportScriptArgShape classify_*) folds into pure Node-tree reader; verdict authority is v2.lens.host_language_transport_script.dag"
data transport_script_position_host_bridge_dissolution_trigger: Disposition = Scaffold {
dissolves_to: SingleAuthority,
bind: DeclarationRef {
module_path: "v2.lens.host_language_transport_script",
decl_name: "TransportScriptPositionFact",
field: WholeDeclaration
}
}

data extdeps_external_authority_host_bridge_dissolution_trigger: String = "dissolve-on: gunbc#5364 — host-fed extdeps_external_authority_facts_for_qualified_name (cli_run.rs anchor projection from parsed module items) folds into pure Node-tree reader; verdict authority is v2.lens.extdeps_external_authority.dag"
data extdeps_external_authority_host_bridge_dissolution_trigger: Disposition = Scaffold {
dissolves_to: SingleAuthority,
bind: DeclarationRef {
module_path: "v2.lens.extdeps_external_authority",
decl_name: "ExtdepsExternalAuthorityModuleFacts",
field: WholeDeclaration
}
}
8 changes: 6 additions & 2 deletions dag/gunbc/hand_lens_host_bridge_scaffold_watchdog.dag
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ import gunbc.hand_lens_host_bridge_scaffold_index {
extdeps_external_authority_host_bridge_dissolution_trigger,
}
import std.types { List, String, Bool }
import std.disposition { Disposition, Scaffold, Terminal }

type HostBridgeScaffoldRow {
lens_module: String
host_seam: String
dissolution_trigger: String
dissolution_trigger: Disposition
}

data transport_script_position_scaffold_row: HostBridgeScaffoldRow = HostBridgeScaffoldRow {
Expand All @@ -30,7 +31,10 @@ data hand_lens_host_bridge_scaffold_roster: List<HostBridgeScaffoldRow> = [
]

fn scaffold_dissolution_trigger_nonempty(row: HostBridgeScaffoldRow) -> Bool {
row.dissolution_trigger != ""
match row.dissolution_trigger {
Scaffold { dissolves_to: _, bind: _ } => true
Terminal { reason: _ } => false
}
}

fn scaffold_dissolution_trigger_matches_authority(row: HostBridgeScaffoldRow) -> Bool {
Expand Down
1 change: 0 additions & 1 deletion dag/gunbc/tailscale_acl_phase2_credential.dag
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import extdeps.tailscale.acl {
operator_acl_security_spine_holds,
}

data tailscale_acl_phase2_design_status: String = "DESIGN_ONLY — operator sign-off required before tailscale_acl_upsert_wet lands; operator dispenses a 1hr ephemeral token per run and executes the live ACL write"

data tailscale_acl_ephemeral_token_secret_id: NonEmptyStr = "tailscale-acl-ephemeral-token"

Expand Down
2 changes: 0 additions & 2 deletions dag/std/algebra.dag
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,6 @@ type FreeMonoid<T>
= Empty
| Cons { head: T, tail: FreeMonoid<T> }

data free_monoid_coproduct_authority: String = "Structural authority = the coproduct (operator ruling 2026-06-22, dag-v2-defork-audit §3b): the record-of-methods surface this decl once carried is DERIVED from inhabitance (DESIGN §4 — ops from inhabitance, no per-type ops); the method-type table lives in free_monoid_scalar_templates/free_monoid_collection_templates, which never read this decl. The prior record form shadowed src/v2/std/algebra.dag's byte-identical coproduct on the unqualified name and silently dropped Empty/Cons variant bindings in any closure containing both trees (undefined variable: Empty — reproduced 2026-07-05)."

type PartialFunction<K, V> {
lookup: fn(K) -> Witness<V>
empty: PartialFunction<K, V>
Expand Down
2 changes: 0 additions & 2 deletions dag/std/computation.dag
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ import std.algebra {
kernel_algebra_profile
}

data subtree_size_rename_marker: String = "Constructor-owner ruling (§1c) collision fix: SizeBound's tree bound arm was named TreeSize, colliding with RankingDimension.TreeSize (std.termination) in this module's own scope once one arm name may have only one owner. Renamed to SubtreeSize — the more precise fact: a tree-descent bound measures the shrinking SUBTREE consumed per step. RankingDimension.TreeSize (the ranking-dimension taxonomy, ~12 sites in v1.complexity/induction) keeps the shared name."

type SizeBound
= CollectionSize { param: String }
| ParserStreamSize { witness: String }
Expand Down
11 changes: 10 additions & 1 deletion dag/std/interface_summary.dag
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
module std.interface_summary

import std.types { ContentHash, NonEmptyStr, List }
import std.disposition { Disposition, Scaffold, SingleAuthority }
import std.decl_ref { DeclarationRef, WholeDeclaration }
import std.content_hash { content_hash_atom, content_hash_combine, content_hash_tagged }

type InterfaceHash = ContentHash where brand("InterfaceHash")
Expand Down Expand Up @@ -29,7 +31,14 @@ type InterfaceSummary {
interface_hash: InterfaceHash
}

data interface_summary_v0_dissolution_trigger: String = "dissolve-on: semantic contract slot (FLAG D) populates per-seam as P formulas ground; signature-only v0 is the interim carrier. Per-declaration export grain + module rollup hash (FLAG B)."
data interface_summary_v0_dissolution_trigger: Disposition = Scaffold {
dissolves_to: SingleAuthority,
bind: DeclarationRef {
module_path: "std.interface_summary",
decl_name: "export_entry_fingerprint",
field: WholeDeclaration
}
}

fn signature_contract(signature: SignatureFingerprint) -> InterfaceContract {
SignatureContract { signature: signature }
Expand Down
4 changes: 0 additions & 4 deletions dag/std/measure.dag
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,6 @@ type Scale =
| Gibi
| Tebi

data sixty_scale_note: String = "Scale.Sixty is the sexagesimal time factor (60 seconds per unit); Minute = Measure<Time, Sixty, Nat> is distinct from Second = Measure<Time, One, Nat>. Conversion authority: time_scale_factor_seconds. scale_exponent refuses Sixty (none) — not a decimal 10^k exponent."

data scale_non_decimal_taxonomy_dissolution_trigger: String = "🟡 dissolve-on: Scale currently mixes decimal SI prefixes (Milli…Exa), binary memory prefixes (Kibi…Tebi), and sexagesimal time (Sixty). Each new non-decimal factor requires arms in time_scale_factor_seconds / memory_scale_factor_bytes / scale_exponent. DISSOLVES WHEN gunbc.plans.realization_measurement_loop Phase 0 \"Converge the time authorities\" splits per-quantity Scale at the type level (TimeScale vs DecimalScale vs BinaryMemoryScale) — ROADMAP plan row dag/gunbc/plans/realization_measurement_loop.dag § Phase 0; not blocking #6335 merge."

fn scale_exponent(s: Scale) -> Int? {
match s {
Atto => Present { value: -18 }
Expand Down
8 changes: 0 additions & 8 deletions dag/std/realization_schedule.dag
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,10 @@ type RealizationObjective {
goals: List<AxisGoal>
}

data witness_kind_note: String = "WitnessKind is the declared kind fact for enrolled witnesses (design: docs/plans/interface-summary-declared-use-arity.md section 4). v0 carries exactly the two kinds with a live scheduling consumer: the corpus/execution partition in v2.workflow.ci_floor_plan (formerly a path-prefix convention, now a declared fact). Further kinds (lens-unit, scanner) land only when a consumer projects them; the host-scaffold/live-tree axis stays on the floor:host_scaffold marker authority (v2.workflow.affected_set_floor_runner) and is NOT a kind. Partition consumers must discriminate by exhaustive match, never by equality: a missed kind stamp is Value-absent at runtime, and an exhaustive match refuses loudly where an eq would silently return false."

type WitnessKind
= CorpusWitnessKind
| ExecutionWitnessKind

data witness_span_note: String = "WitnessSpan declares which pipeline seam(s) a witness asserts (producer/consumer module-path pair grain). SpanUndeclared is the honest default for the existing population - typed absent, never fabricated. Consumers today: span well-formedness witnessing over the enrollment roster (gunbc.commit_workflow). The derivability/factorability refusal (a span witness derivable from the seam basis is redundant) waits on seam contracts (InterfaceSummary contract slots) and a segment-witness basis; until then span is a declared fact plus well-formedness, nothing more."

type WitnessSeam {
producer: String
consumer: String
Expand Down Expand Up @@ -197,8 +193,6 @@ type NodeFrontierSelection
| SelectionApplied
| SelectionPredictOnly

data node_frontier_selection_note: String = "Affected-set selection mode for a discovery batch (signed design: docs/plans/affected-set-differential-falsifier.md, 2026-07-05). SelectionOff: no diff observation, every row runs. SelectionApplied: would-skip is computed AND applied (unaffected rows skip assumed-green). SelectionPredictOnly: would-skip is computed and RECORDED per row but every row still runs cold — the falsifier cadence compares predictions against cold verdicts; a predicted-unaffected row that runs red is a counted divergence naming a missing selection edge. Formerly a Bool (skip_unaffected_node_frontier), which could not express predict-without-apply; two Bools would conflate the state space."

fn node_frontier_selection_eq(left: NodeFrontierSelection, right: NodeFrontierSelection) -> Bool {
match left {
SelectionOff => match right {
Expand Down Expand Up @@ -233,8 +227,6 @@ type Runnable
}
| RunnableKernelWorkload { fused_op_count: Int }

data runnable_kernel_workload_dissolution_trigger: String = "dissolve-on: execution lane attaches extdeps.languages kernel_surface rows to RunnableKernelWorkload when fused_op_count alone is insufficient; op_count is structural on substrate (not a string-label nickname)."

type Schedule = List<List<Runnable>>

type RealizationPlan<S> {
Expand Down
5 changes: 1 addition & 4 deletions dag/test/claim/tailscale_acl_phase2_design_witness_test.dag
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import gunbc.tailscale_acl_phase2_credential {
operator_bindings_admit_bmc_assimilator_sa,
tailscale_acl_credential_flow_uses_auth_patterns,
tailscale_acl_phase2_credential_design_holds,
tailscale_acl_phase2_design_status,
tailscale_acl_phase2_live_write_disposition,
acl_auto_upsert_refused,
acl_upsert_permitted,
Expand Down Expand Up @@ -158,9 +157,7 @@ fn witness_upsert_requires_valid_ephemeral_token() -> Bool {
}

fn witness_phase2_is_design_only_scaffold() -> Bool {
string_contains(s: tailscale_acl_phase2_design_status, pattern: "DESIGN_ONLY")
&& string_contains(s: tailscale_acl_phase2_design_status, pattern: "1hr")
&& match tailscale_acl_phase2_live_write_disposition {
match tailscale_acl_phase2_live_write_disposition {
Scaffold { dissolves_to: SingleAuthority, bind: _ } => true
_ => false
}
Expand Down
9 changes: 0 additions & 9 deletions src/v1/04_env.dag
Original file line number Diff line number Diff line change
Expand Up @@ -67,20 +67,13 @@ fn scope_push(scope: Scope, binding: ScopeBinding) -> Scope {

data ancestry_cache_sharing_dissolution_trigger: String = "🟡 dissolve-on: single-parent ancestry_str_bindings borrows parent.type_env_cache.str_bindings (Rc-shared visible surface) instead of map_merge(parent.ancestry_str_bindings, parent.str_bindings) per module — kills O(M²) SipHash/map_merge churn on import chains; full SymbolIndex authority is the follow-on (type-env-single-authority-design.md)."

data symbol_index_single_authority_dissolution_trigger: String = "🟡 dissolve-on: SymbolIndex + Scope replace TypeEnv.ancestry_str_bindings materialization — see docs/plans/type-env-single-authority-design.md §4–§5; gated on import-chain sub-quadratic scaling receipt (reference_carrier_witness_test) + whole-corpus compile-clean wall-clock baseline."

type TypeEnvCache {
deps_map: Map<String, List<String>>
str_bindings: Map<String, TypeBinding>
cycle_set_str: Map<String, Bool>
variant_locals: Map<String, TypeBinding>
}

data type_env_compositional_authority_dissolution_trigger: String = "🟡 dissolve-on: compositional TypeEnv.parents + ancestry_str_bindings rewire passes in stage0 — ground in v2 std.type_env when PerformanceReceipt subsumes type_env_work_count_profiling_dissolution_trigger."
data type_env_profiling_dissolution_trigger: String = "🟡 dissolve-on: host atomic profiling until PerformanceReceipt carrier lands (realization-measurement-loop Phase 0)."
data type_env_work_count_profiling_dissolution_trigger: String = "🟡 dissolve-on: build_type_env + merge_type_env_cache + rewire pass counters — fold into PerformanceReceipt at realization-measurement-loop Phase 0."
data type_env_cache_parallel_repr_dissolution_trigger: String = "🟡 dissolve-on: TypeEnvCache String-keyed str_bindings and cycle_set_str parallel to TypeEnv Int-keyed bindings and recursive_type_set — fold into single authority at v2 regen."
data type_env_cache_key_determinism_authority: String = "Cache-key determinism for resolved_graph disk tier: resolved_graph_cache::encode_cache_payload applies sort_json_value at serialization boundary (not merge_type_env_cache / build_type_env hot paths). B2 de-fork: Rust seed must match this .dag plain map_merge authority."
data visible_bindings_invariant: String = "B1 build_type_env populates ancestry_str_bindings for import chains; lookup_binding_by_name is fail-closed on miss (str_bindings then ancestry_str_bindings then intern+bindings only; 6de571f3 reverted in 80ab63a). flatten_visible_bindings and merge_envs are DELETED (2026-07-06 operator ruling: the parent-recurse counter was a parallel representation guarding a fallback; the fallback is now unwritable by construction — no whole-env flatten exists to call). Visibility reads are one-level: local str_bindings/ancestry_str_bindings, or a fold over parent.str_bindings only (see collect_unit_variant_phantom_matches). Dissolve-on: namespace-as-sole-authority ruling — env maps become a derived projection of namespace reachability."

fn empty_type_env_cache() -> TypeEnvCache {
Expand All @@ -92,8 +85,6 @@ fn empty_type_env_cache() -> TypeEnvCache {
}
}

data type_env_counter_dissolution: String = "The 2026-07-04 use-site inference pathology instrument (env-amplification counters) dissolved with the pathology it measured: the record_* statement calls and their stub fns were deleted (they were also the only corpus instances of a statement-then-expression block the Rust emitter mis-renders — that emitter deficiency is ledgered with the emit-stage work). 2026-07-06: the getter stubs, their hand-injected AtomicU64 realization in the generated seed, the phase_profile heartbeat reads, and the counter-equality witness tests are deleted together (operator ruling: counter witnesses are a parallel representation). The live scaling witnesses are the time-based import-chain tests in src/v1/tests/src/type_env_scope_chain_test.rs."

fn merge_type_env_cache(base: TypeEnvCache, overlay: TypeEnvCache) -> TypeEnvCache {
TypeEnvCache {
deps_map: map_merge(base.deps_map, overlay.deps_map),
Expand Down
8 changes: 0 additions & 8 deletions src/v1/04_infer.dag
Original file line number Diff line number Diff line change
Expand Up @@ -495,8 +495,6 @@ fn lookup_variant_parent_enum(scope: InferScope, name: String) -> String? {
}
}

data variant_owner_node_authority: String = "Constructor-owner ruling (DESIGN resolver-graph-major §1c, 2026-07-04): a constructor literal's owner is the BINDING EDGE — scope.locals binds the arm name to its owning coproduct node at env construction (local declaration or direct import), so owner lookup is O(1) map_get + dealias. No whole-environment scan, no expected-type owner-picking, no name round-trip through lookup_type_by_name (the owner node rides the binding even when the enum's name is not itself visible). Unbound constructor literal = UnresolvedType error; two visible owners for one arm name = VariantCollision at env construction."

fn variant_owner_node(scope: InferScope, name: String) -> Node? {
match map_get(scope.locals, name) {
Present { value: binding } =>
Expand Down Expand Up @@ -535,8 +533,6 @@ fn type_mismatch_error(expected: String, got: String, span: SourceSpan, module_n
make_error_node(diagnostic: TypeMismatch { expected: expected, got: got, span: span }, module_name: module_name)
}

data optional_coproduct_field_shape_predicate_dissolution_trigger: String = "🟡 dissolve-on: field_type_is_optional_coproduct + rejects_string_for_optional_coproduct_field — CardOptional+Disj Bool predicates over lookup_type_for-resolved shape; ground as inhabitable OptionalCoproduct in std_types at v2 regen."

fn rejects_string_for_optional_coproduct_field(expected: Node, got: Node, source_indices: Map<String, NewlineIndex>, env: TypeEnv) -> Bool {
let expected_resolved = match lookup_type_for(env: env, node: with_required_cardinality(n: expected)) {
Present { value: resolved } => resolved
Expand Down Expand Up @@ -2801,8 +2797,6 @@ fn expand_alias_chain_for_field_access(n: Node, env: TypeEnv, module_name: Strin
}
}

data expand_type_for_field_access_dissolution_trigger: String = "🟡 dissolve-on: parallel alias/inferred chase to expand_type_for_field_access — unify with 04_resolve.dag resolve_scrutinee_type_node once regen lands."

fn expand_type_for_field_access_with_seen(n: Node, env: TypeEnv, module_name: String, seen: Map<String, Bool>) -> Node {
if is_deferred_field_access_base(n: n, env: env) {
n
Expand Down Expand Up @@ -6703,8 +6697,6 @@ fn direct_import_exporter_count(m: TypedModule, name: String, index: Map<String,
) |> count
}

data local_authority_for_name_dissolution_trigger: String = "🟡 dissolve-on: single-exporter rewire canonical picks last TypedModule in compilation list (filter then last); multi-exporter names skip rewire and defer to merge_type_env_cache overlay-wins — ground on import-order authority at v2 regen."

fn rewire_inherited_str_binding(
type_name_index: Map<String, TypeNameExportFacts>,
module_index: Map<String, TypedModule>,
Expand Down
Loading