Repository navigation
Repoint the last ArtifactIdentity consumer at its new name - #8185
Merged
Merged
Conversation
#8177 renamed the self-host coproduct to GeneratedArtifactIdentity to end its collision with std.cache_interface's record. #8176 merged an hour earlier and added a consumer importing the old name, so neither PR could see the other and main went red on whole-tree compile-clean: dag/gunbc/self_host_artifact_materialization.dag:32:3: error: name 'ArtifactIdentity' not found in module 'v2.compiler.self_host.generation' Rename at the import, the return type, and the note that names the chain. Both witness families over the affected module pass by execution. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Aug 12, 2026
build and ci both refused with `expected expression, found EqEq`. The three roster-identity claims wrapped their comparison so that `== ContentHashEqual` began a line, and the .dag grammar does not continue an expression across that break. A line-leading `&&` does continue — the existing classify_normalize_diagnostics relies on it — so the shape is specific to the equality operator rather than to operators generally. Also merges origin/main, which had moved four commits ahead (#8180, #8164, #8185, #8189). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DBBegUkJygQyr1zMHiv2eK
briansrls
pushed a commit
that referenced
this pull request
Aug 12, 2026
* Prepare the frontend world once for the whole census instead of per member The census rebuilt the world fifteen times. classify_source called dag_lex_rules() and dag_grammar() itself, so every member revalidated the grammar and recomputed the FIRST/nullable analysis for a grammar that does not vary between members. The seam already existed and this reuses it rather than inventing one: 02_parse's prepared_grammar_carrier_note records that prepare_grammar exists so a K-module walk validates once instead of K times, with parse_module_prepared as the per-module half. take_frontend_census prepares once, classifies every rostered member through that one world, and reconciles the population before anything may read it as a census. THREE STATES, NOT ONE LIST. FrontendCensusReceipt is CensusTaken | CensusRefusedAtWorld | CensusRefusedAtReconciliation. A refused world is a fact about the world, not about any member — reporting it as fifteen ParseRefused stages would say fifteen members failed to parse when none was ever examined. CensusTaken is reachable only through the exact-reconciliation arm, so an unreconciled population cannot present as a census. classify_source keeps preparing LAZILY and now returns an Outcome. The laziness is a budget fact: a lex refusal is decided before any grammar is consulted, which is the only reason the LEX claim executes in the fast lane at all. The Outcome is because preparation can refuse and no FrontendStage honestly represents that. Roster identity is a structural hash fold over the paths in order, parameterized by the rows so discrimination is testable — an identity function that can only see the live roster is unfalsifiable. It does NOT cover labels: the only Symbol-to-text surface is symbol_lexeme, whose .dag body is a self-recursive host-intercepted stub, and grounding a provenance claim on that would be worse than the gap. Recorded as a known limit with the one case it cannot separate. NOT DELIVERED: the census still does not execute as a required gate. This removes a fifteen-times multiplier from a cost that may still exceed the budget alone, and I have not measured the result — there is no claim_batch binary in this container, so any figure would be invented. The enrollment decision is deferred to a measurement, not to an opinion. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DBBegUkJygQyr1zMHiv2eK * Bind the hash comparisons to a let: a line-leading == is a parse error build and ci both refused with `expected expression, found EqEq`. The three roster-identity claims wrapped their comparison so that `== ContentHashEqual` began a line, and the .dag grammar does not continue an expression across that break. A line-leading `&&` does continue — the existing classify_normalize_diagnostics relies on it — so the shape is specific to the equality operator rather than to operators generally. Also merges origin/main, which had moved four commits ahead (#8180, #8164, #8185, #8189). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DBBegUkJygQyr1zMHiv2eK * Route the six probes through an Outcome-matching renderer, per review 51409 REQUEST_CHANGES was correct and the finding is exact: classify_source now returns Outcome<FrontendStage>, and the six p_* wall-attribution probes still fed that straight into frontend_stage_label, which takes a bare FrontendStage. The witness was updated; the probes were not. Same six probes, same omission, second increment running — I changed a callee's type and did not check its callers. render_classified matches both arms. A refused world renders WORLD_PREPARATION_REFUSED rather than any stage word, because no stage was reached and borrowing one would be the conflation the receipt's three states exist to prevent, repeated at the presentation boundary. I then swept every symbol this PR added, renamed or retyped for surviving references. Two stale prose mentions of observe_roster now name take_frontend_census. The remaining mentions of count_stage and classify_normalize_reasons are deliberate — they are the notes recording why those were removed, and they should outlive the code. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DBBegUkJygQyr1zMHiv2eK --------- Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
Main is red on whole-tree compile-clean. This is merge skew between two green PRs, not a defect in either.
#8177 renamed the self-host coproduct to
GeneratedArtifactIdentityto end its collision withstd.cache_interface's record. #8176 merged an hour earlier and added a consumer importing the old name, so neither PR could see the other:Renamed at the import, at the
artifact_identity_ofreturn type, and in the note that names the chain. It is the only stale consumer left in the tree.Executed, not assumed: all 10 claims in
self_host_generation_identity_witness_testand all 10 inself_host_artifact_materialization_witness_testpass.Found while investigating a red on #8165, which is blocked behind it.