Skip to content

generated-artifact is red on main two different ways: two artifacts were MOVED not deleted, and four projections predate the reorg - #9647

Merged
briansrls merged 1 commit into
mainfrom
session/calm-ram-380-artifact-paths
Aug 28, 2026
Merged

briansrls merged 1 commit into
mainfrom
session/calm-ram-380-artifact-paths

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

claim_executor --required-ci --required-lane build fails generated-artifact on origin/main with matches=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.dag and stage0_crate_partition_generated.dag into dag/gunbc/stage0/, while gunbc.generated_artifact still named directory: "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 a DUPLICATE-MODULE finding 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 ArtifactLocation directories move to dag/gunbc/stage0. No file generated, no file moved.

The four drifted projections

.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:

  • githook headers pick up their emitter's post-reorg path (dag/gunbc/githooks/…)
  • 41 docs/plans/*.md paths move from merge-driver-managed (.gitattributes) to ignored (.gitignore) — which is gunbc.plan PlanIsAuthorityOnly applied: 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

registry phase
main's 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.

Scope

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.

(Note for local reproducers: a local build lane also reports emit-compile failing on RUNNER_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

…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>
@briansrls
briansrls merged commit 2b7c332 into main Aug 28, 2026
0 of 3 checks passed
@briansrls
briansrls deleted the session/calm-ram-380-artifact-paths branch August 28, 2026 23:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant