Repository navigation
6848 cleanup - #6932
Closed
gunbai-bot[bot] wants to merge 273 commits into
Closed
6848 cleanup#6932gunbai-bot[bot] wants to merge 273 commits into
gunbai-bot[bot] wants to merge 273 commits into
Conversation
This reverts commit 485853c.
…ent-alias grounding (180 -> 154) TypeMismatch family root: nominal_call_arg_brand_mismatch compared authored name STRINGS, which broke two ways post-strip. (1) A qualified spelling on one side (extdeps.github.pulls.PullRequest formal vs PullRequest actual — the same decl) read as a brand conflict: names now compare by qualified_last_segment, which exactly restores pre-strip precision (bare-vs-bare). (2) Transparent primitive aliases (Timestamp = String) are brand-ERASING by design (is_transparent_primitive_alias_rhs), but census-path resolution grounds one side to the kernel type while the other keeps its authored spelling; a new brand_grounds_transparently_to exception treats a brand as equal to the kernel type its alias grounds to (both directions). kernel_value_declared_type_mismatch gets the same last-segment normalization. GUNBC_ARG_PROBE/GUNBC_PEEL_PROBE env-gated probes added (inert; removed before the re-land gate). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
# Conflicts: # dag/gunbc/srv3_install_media_fetch.dag # dag/std/effects.dag # dag/test/claim/effects_witness_test.dag # src/v2/std/effects.dag # src/v2/test/claim/create_if_absent_double_init_witness_test.dag
…iner dispatch Burndown 154 -> 149 (whole-tree compile-clean, honest corpus), net of the qualify-on-borrow landing (181 peak at the raw seed mirror): - type_name_compatible (00_core): both-dotted -> exact path equality; mixed bare/dotted -> last-segment (pre-migration precision, end-state precision when both sides qualify). Wired into node_type_compatible fallback, node_type_equals_core (all name arms), prefer_specific_type (join keeps the structured side over a name-compatible bare leaf). - module_path_segments + qualified_last_segment moved 04_env -> 00_core (single authority; 04_env re-exports for existing importers). - Container dispatch is qualification-invariant: canonical_template_name, is_declared_container_alias_spelling, node_is_set_collection normalize via qualified_last_segment before the container_template_algebra table (std.types.Map IS Map; -4 InternalError). - medium_fidelity_witness_test: qualify the 4 Medium<...> return annotations (bare Medium is census-ambiguous from test.claim.* -> correct tie-refusal; the D2 pass had qualified ctor heads but not annotations). - Probes GUNBC_VNF_PROBE / GUNBC_SIG_PROBE added (env-gated, removed before the reland gate). Known residue (measured, tracked): std.computation kernel_algebra_profile |> get pair (2, method-path, next lane); std.fermi |> first pair is pre-existing (visible pre-154); reference_deps generic-param leak family morphs (T-field rows). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Root cause was the inverse of the working theory: the 8 missing names
(nbd_proxy_serve_script, nbd_proxy_serve_program_statement_count,
nbd_proxy_serve_program_foreground_command_is_websocat,
nbd_proxy_serve_bash_emit_dissolution_trigger, install_media_fetch_script,
os_install_actuator_toolchain_ensure_script{,_uses_github_release_not_apt_for_websocat},
os_install_actuator_toolchain_ensure_is_privileged_gated_for_apt) were
deliberately deleted on main by the Shell->dag migration (#6587 8f57815,
#6596 c8169ef, #6629 9ffeb27, all ancestors of merge-base c2859a6),
with their consuming tests updated in the same PRs. The strip re-apply
(ab44ec2) clobbered 6 consuming files back to pre-migration content,
leaving dangling references. Re-adding the old decls would resurrect the
terminally-deleted bash sidecar (e06ea6a, operator ruling 2026-07-18).
Fix: restore the 6 consuming files to their merge-base c2859a6 content
(identical to merged-main tip 14c8d29), minus import blocks, plus the
8 qualification lines D1/D2 precedent requires (std.disposition.Terminal,
3x std.resources.Network, 3x gunbc.srv3_nbd_proxy_serve_intent.*,
extdeps.bmc.webui.nbd_proxy_serve.srv3_nbd_proxy_local_port).
Histogram: TOTAL_HARD 149 -> 136 (-13 = exactly the family sites);
all 8 family NAME rows gone; zero new SITE rows (site-level diff clean;
8 new NAME-table entries are top-50 truncation backfill, present as
baseline sites in untouched files).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ure unification 149 -> 123 whole-tree; witness roster 299 -> ~10 fatal. Two independent roots, one class: the strip re-apply (ab44ec2) resurrected pre-migration file content that main had since consolidated — a silent census poison (§3 forks by resurrection). - src/v2/std/algebra.dag: take main's (#6715 dissolved the v2 algebra tower onto std.algebra; the branch carried the old stacked fork, so flat literals in diagnostic/nat/logic refused, and after the first restore the stale stacked CONSUMERS integer.dag/seed_debt flipped red — both now main's). - src/v2/lens/{effect,idempotency,ownership,parallelism}.dag: take main's (lens-commons consolidation into algebraic_composition.dag; the branch had hand-cemented stub forks like `type EffectClassification {}`). - Cherry-pick a6e9f4f9cd: nbd/actuate/toolchain family — the 6 consuming files restored to merge-base-minus-imports (the decls were deliberately deleted on main by the Shell->dag migration; full provenance in that commit body). -13, exactly the family. - cli_run: extend_with_reference_closure extracted — the ONE reference- closure authority now serves BOTH the whole-tree walk and the per-entry claim/witness loader (was a §3 fork: the roster path missed reference-only deps entirely). - find_witness_project_to_core_controls + derivable_coercion_task_id: qualify one dotted reference per foreign module (Rule-1: references ARE the dep edges; a bare-only file has no closure) + Named->v2.std.node.Named (non-unique variant). Witness file 298 errors -> 5 (owned families). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…option (123 -> 89)
From the residue-classification agent's bucket list (all census-verified):
- Bucket (a) source qualifications: merge_admission Success/Failure ->
extdeps.github.checks.* (the borrowing-module alias path), review/review_codex
state Open -> extdeps.github.pulls.Open, upsert Absent (builtin-Witness
collision), srv3_install_media Present{observed_sha256} (bare Present hit
builtin Witness.Present), roadmap authored() -> gunbc.roadmap_authority
(nearest-ancestor picked the test sibling by design; source must qualify),
01_tokenize Empty/None/Accepted/Rejected -> std.algebra./v2.std.diagnostic.*,
coverage + grammar_coverage Empty.
- Bucket (b) stale strip-era copies -> origin/main content minus imports:
fleet_converge_cli (ProvisionBuildCache arm), falsifier_workflow test
(cadence rename + semantics), host_build_cache_provision test (rewritten on
main), behavioral.dag (DeterminismAxis -> std.determinism.Determinism, the
open-thread-E rename the stale hunk had reverted).
- Deliberately NOT qualified (reverted after measurement): 02_parse
OccurrenceIdAllocator/SpanIndex and grammar_coverage DeclFact/
whole_corpus_scope/normalize — those reference edges pull the v2-internals
subtree (occurrence_id/provenance/normalize -> compilers/sugar + standing_intent
closures) into the corpus: +75 latent debts and census uniqueness flips
(Accepted/Rejected aliases). That subtree opens as its own measured batch
with the witness-roster lane (Increment B), not as a side effect.
- env_with_type_variable_bindings extracted to 04_env (consolidates
resolve_item_types' inline type-param fold; no behavior change). The
borrowed-sig resolve-at-borrow experiment was REVERTED after measurement:
per-lookup resolve_node blows up wall-clock (>10min vs 103s) because the
borrower's env lacks the owner's recursive-type facts (FreeMonoid expands to
the depth bound per call). Needs the once-per-module hoist; benched.
Ordering/Equal/Less/Greater rows cleared for free with the algebra-fork
dissolution (previous commit), as the classifier predicted.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ier-invariant (89 -> 82)
Root (get-pair agent, proven by probe chain): the kernel algebra machinery is
keyed on raw canonical spellings ("Map"/"List") at MULTIPLE reads — the
profile lookup (enrich_kernel_type, lookup_structural_method), the
container_param_name table behind make_container_type/make_map_type, the
template-match compare (apply_type_substitution ContainerOf), and
is_container_type/container_expected_arity via receiver_name_str. A receiver
spelled by qualify-on-borrow (std.types.Map) or alias-expanded to its carrier
(FreeMonoid, std.algebra.FreeMonoid) sails past the invariant classifiers and
misses these reads; the method-pipe fallback then absorbs the miss by
returning the receiver type, surfacing two hops later as VariantNotFound
Present/Absent (std.computation kernel_algebra_profile |> get; std.fermi
|> first — the latter pre-existing with bare FreeMonoid).
Fix: container_kind_canonical(name) = last-segment, then carrier->canonical
inversion DERIVED from container_template_alias_rows (sorted fold, no minted
table) — applied at the profile lookup (kernel_profile_lookup) and every
authored-name entry into the kind-keyed tables. The interim
missing-kernel-container-profile guard rows this exposed (+66 at the halfway
point) confirmed the reads were reachable and are now all green.
Benched follow-up (own increment, own receipt): the method-pipe fallback's
final else still answers a dispatch miss with the receiver type — an
absorbing fallback to convert to a typed refusal; every currently-absorbed
miss becomes a counted diagnostic.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e per decl at owner position (82 -> 71) The census stored raw pre-typecheck fn nodes, so borrowed generic fns leaked bare type-param leaves (T/V/E) into consumers. Pass 2 (census_with_resolved_fn_sigs) resolves each borrowable generic sig's return ONCE at census build in a synthetic owner-position env (module_path = declaring module, symbol_index = completed pass-1 census, type params bound as TypeVariables via env_with_type_variable_bindings) — order-independent, once per decl (the per-lookup variant re-resolved recursive carriers to the depth bound per call, >10min), fail-closed staged: any resolution diagnostic keeps the raw binding (upgraded | raw is a typed frontier, not a widen). Wall-clock unchanged (~97s). Cleared: payload-on-V x8, refusals-on-T x2, facts-on-T x1. Remaining: service-op output family (~30, next increment widens pass 2 to services), T-family residue kept raw by the diagnostic gate (~19, diagnosing).
…-promotion, reexport control dissolution) coproduct wire x2: the missing-field presence wall now stops malformed InternallyTaggedObject literals at TYPECHECK (census-ambiguity absorbing skip closed); tests assert the typed refusal instead of the decode-time compile_error backstop, which remains for shapes the literal wall cannot see (bare naming-policy variants). variant_reexport red control: perturbation dissolved twice over - empty variant_surfaces+symbol_index resolve via the ancestry global_bare merge, and dropping the declaring module binds imported names declared-weak (L1 typed-debt deferral) - converted to purity witnesses + a documented RED-control debt pending the strict missing-name wall. tier2 census reachability pin (2 AmbiguousBare sites on extdeps_external_authority_anchor) parked on the non-required rust_tests lane for post-merge triage.
…fect-import class) A builtin that dispatches through a service (filesystem_read -> Filesystem.Read) needs the provider module loaded for its service registration, but contributes no name any census can resolve - the builtin identifier is the interpreters, not a modules. Under imports that edge was the name-less import extdeps.filesystem.filesystem_io; the strip removed it and NOTHING can re-derive it from names. This is the one genuine hole in the name-derived closure story, and it is now a declared table (BUILTIN_REQUIRED_SERVICE_KEYS) resolved through the same services census a dotted service head uses. Rows mirror the interpreters hard service REQUIREMENT gates only; the optional ones (Clock.UnixSecs, shell.Env.Get) fall back to a transport and create no closure obligation. A missing row never fabricates - the builtins own gate still refuses, typed and located, which is exactly how this row was found (CI 29722434993 batch 3, via interp_recorded_fixture nested replay). Verified: closure 1 module -> 7, witness_read_via_builtin_roundtrip PASS.
…ion is PRE-EXISTING, not a regression
An audit flagged the nullary-variant parent stamp for mis-emitting a standalone
struct literal whose name collides with a nullary variant arm of some coproduct
(fn make() -> Standalone emitting Coll::Standalone { a, b }). Reproduced it, then
tested the attribution: with the stamp redirect forced OFF (main-equivalent), the
emission is BYTE-IDENTICAL. The defect lives on the parent_enum/emit path
(lookup_variant_parent_enum feeding ExprRecordLit.parent_enum), which this branch
does not touch - it is pre-existing on main and belongs in its own typed row, not
here. The guard I had added therefore fixed nothing and is reverted; probes
(variant join, fold-lambda join, collision) all recompile clean without it.
…ing, CONFIRMED)
The nullary-variant parent stamp applied unconditionally, so a name that is a
GENUINE top-level declaration AND a nullary variant arm of some coproduct got
stamped as the coproduct. Reproduced with a main-parity control: type Color = Red |
Blue + type Red { hue: Int } + if f { Red { hue: 5 } } else { Blue } -> main REFUSES
(Product(Red) vs Coproduct(Color)); the branch emitted 0 diagnostics and invalid
Rust (Color::Red { hue } on a nullary arm, E0559, plus a duplicate pub struct Red).
My first attribution of this to a pre-existing emit path was WRONG - that probe used
a non-discriminating shape; the paired redirect-disabled control settles it.
Fix reuses the existing single authority rather than adding a second rule: the
redirect now fires only when binding_declares_name is FALSE for the literal's name -
exactly the predicate lookup_type_by_name already uses to decide declaration vs
variant-arm projection (04_env.dag). Both arms verified: the wall refuses again at
main parity, and the motivating variant-join probes (nullary-vs-payload if-join,
fold-lambda join) stay clean. Regen byte-stable, workspace builds, fmt clean.
Audited-by: adversarial workflow wf_cc7dd19e-87e (two independent reproductions).
…stored in credentials.dag while running the gcp_oauth discriminating control (the control was NEGATIVE - restoring the import does not fix the mock-key failure, so the strip is exonerated for that witness) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e the widen arm Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
# Conflicts: # dag/gunbc/host_identity_adopt.dag # dag/gunbc/host_identity_assimilation.dag # dag/gunbc/tools/review.dag # dag/test/claim/grounded_principal_witness_test.dag # src/v2/test/fixture/transport_script_scan/bare_string_literal/plant.dag # src/v2/test/fixture/transport_script_scan/let_bound_literal/plant.dag
…the shared tier caused Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
Author
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.
Auto-opened by session-dashboard for session
nimble-owl-658.Pushing to
namespace-wave1-relandadvances this PR.Worker attestation
Before flipping this PR to ready for review, confirm each item:
npm test,cargo test) and the result.Closes #Ndirective.Summary
TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.
Test plan