Repository navigation
generated-artifact is red on main two different ways: two artifacts were MOVED not deleted, and four projections predate the reorg - #9647
Merged
Conversation
…s were MOVED not deleted, and four projections predate the reorg `claim_executor --required-ci --required-lane build` fails its `generated-artifact` phase on origin/main with `matches=23 drifted=4 absent=2`, so no open pull request can reach green: a pull_request run compiles refs/pull/N/merge, which carries main's tree. THE TWO ABSENT ARTIFACTS WERE NEVER MISSING, AND REGENERATING THEM WOULD HAVE BEEN WORSE THAN THE RED. #9637's reorganisation moved `stage0_crate_layout_generated.dag` and `stage0_crate_partition_generated.dag` into `dag/gunbc/stage0/`, while `gunbc.generated_artifact` still named `directory: "dag/gunbc"`. Both files exist and both declare their modules. Writing them at the registry's stale path would have produced a SECOND file declaring `gunbc.stage0_crate_layout_generated`, trading this red for a DUPLICATE-MODULE finding and burying two live files under stale copies. DESIGN records this exact trap on this exact gate: a drift gate makes what it adjudicates binding, so an absent artifact can be one that was removed on purpose, and "the stale half is the REGISTRY ROW and not the missing file". Here the row is not even wrong about existence, only about the directory. Two lanes independently flagged the danger before touching it (bold-stag-16, sharp-crab-95); establishing what the absence MEANT before producing anything is what this repair records. FIX ONE, the two absent: the registry's two `ArtifactLocation` directories move to `dag/gunbc/stage0`. No file is generated and no file is moved. FIX TWO, the four drifted: `.gitignore`, `.gitattributes` and the two githooks are regenerated by their own authorities via the recipe the gate itself prints (`dag/tools/generated_artifact_gate.dag` `main_wet`), not hand-edited. The content change is coherent and self-explaining: the githook headers pick up their emitter's post-reorg path, and 41 `docs/plans/*.md` paths move from merge-driver-managed generated artifacts (`.gitattributes`) to ignored (`.gitignore`) -- which is `gunbc.plan` `PlanIsAuthorityOnly` applied, the ruling that a plan's markdown is not a committed artifact. Checked: 0 of those 41 paths are tracked, so ignoring them is consistent rather than a silent untracking. VERIFIED BY EXECUTION for the half that a measurement can settle: main's registry -> matches=23 drifted=4 absent=2 with fix one -> matches=25 drifted=4 absent=0 The four drifted are then written by their authority's own producer at exit 0. This repairs one of four phases red on main. declarations is #9645; regen (`v1_rt.rs`, declared_divergent=1 [main.rs]) and the floor's strict-preparation diagnostics are untouched here. 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.
claim_executor --required-ci --required-lane buildfailsgenerated-artifacton origin/main withmatches=23 drifted=4 absent=2. No open PR can be green while that stands.The two "absent" artifacts were never missing — and regenerating them would have been worse than the red
#9637's reorganisation moved
stage0_crate_layout_generated.dagandstage0_crate_partition_generated.dagintodag/gunbc/stage0/, whilegunbc.generated_artifactstill nameddirectory: "dag/gunbc". Both files exist on main and both declare their modules.Writing them at the registry's stale path would have produced a second file declaring
gunbc.stage0_crate_layout_generated— trading this red for aDUPLICATE-MODULEfinding and burying two live files under stale copies.DESIGN records this trap on this exact gate: a drift gate makes what it adjudicates binding, so an absent artifact may be one deleted on purpose, and "the stale half is the REGISTRY ROW and not the missing file". Here the row isn't even wrong about existence — only about the directory. Two lanes (bold-stag-16, sharp-crab-95) independently flagged the danger before touching it; establishing what the absence meant before producing anything is what this repair records.
Fix one: the two
ArtifactLocationdirectories move todag/gunbc/stage0. No file generated, no file moved.The four drifted projections
.gitignore,.gitattributesand the two githooks are regenerated by their own authorities, via the recipe the gate itself prints (dag/tools/generated_artifact_gate.dagmain_wet) — not hand-edited. The content change is coherent and self-explaining:dag/gunbc/githooks/…)docs/plans/*.mdpaths move from merge-driver-managed (.gitattributes) to ignored (.gitignore) — which isgunbc.planPlanIsAuthorityOnlyapplied: a plan's markdown is not a committed artifactChecked: 0 of those 41 paths are tracked, so ignoring them is consistent rather than a silent untracking.
Verified by execution
matches=23 drifted=4 absent=2matches=25 drifted=4 absent=0The four drifted are then written by their authority's own producer at exit 0.
Scope
Repairs one of four phases red on main.
declarationsis #9645;regen(v1_rt.rs,declared_divergent=1 [main.rs]) and the floor's strict-preparation diagnostics are untouched.(Note for local reproducers: a local build lane also reports
emit-compilefailing onRUNNER_TEMP is unset. That is the phase correctly refusing a host-shared temp dir, not a main-side defect — it will not appear in CI.)— sent from calm-ram-380