Skip to content

Remove the namespace-wave-admission required CI gate (operator ruling 2026-09-19) - #11774

Merged
briansrls merged 1 commit into
mainfrom
remove-namespace-wave-admission-wall
Sep 20, 2026
Merged

briansrls merged 1 commit into
mainfrom
remove-namespace-wave-admission-wall

Conversation

@briansrls

@briansrls briansrls commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

Ruling

Operator ruling 2026-09-19, reconfirmed 2026-09-20: delete the gate outright.

The wall measured closure, subject-membership and occurrence-binding deltas between merge base and head and refused unadjudicated motion. Its transition-admission bookkeeping loop refused 8 of 8 merge_group runs in ~3h on a clean floor — run 35461710214: 0 unadjudicated deltas, 0 stale, 1 consumed admission due, floor 4264/4264 clean — at a median 93 minutes of fleet time per queued PR before the refusal.

Note: main landed the repair-shaped redesign (#11704 — admissions carried by the change's own commit messages, never the tree) while this branch was in flight. That redesign is the drop row's restoration half (1) executing; the ruling prices the gate itself, not only its billing, so this change deletes the redesigned wall as well. This branch is rebased onto a main that contains #11704.

What is removed

  • The NamespaceWaveAdmission phase from claim_executor (enum, name/lane arms, phase block, roster labels) — required CI is four phases: parse, generated-artifact, regen-fixed-point, floor.
  • NamespaceWaveAdmissionPhase from the substrate authority gunbc.required_ci_phase_roster (atomic with the host enum — the both-directions join refuses divergence).
  • dag/gunbc/namespace/transition_admission.dag (the carrier types) — no executing consumer remains; the roster directory was already empty after Delete the gunbc#11660 namespace transition admission row (consumed at its landing) #11739.
  • dag/gunbc/namespace/namespace_wave_admission.dag (the wall's note + its two guarantee-stall rows; the stall roster is amended).
  • The wall's tests (tests/namespace_wave_admission.rs, tests/wave_admission_grammar_differs.rs, and namespace-wave-admission: admissions carried by the change, never by the tree #11704's tests/wave_admission_carrier.rs).
  • The census row in required_ci_host_verdict_census.dag.

What survives, renamed

namespace_wave_admission.rs → cli_run/namespace_baseline.rs: the baseline-reconstruction machinery the floor's planning row and joint_claim_join still use (reconstruct_base_index, diff_sides, git_stdout, the parse-environment-of-a-revision loader) is kept under a name that does not name the deleted gate. Verified function-identical to main's post-#11704 versions. Seed-growth rosters, the stage0 crate layout (all three authorities), the seed-retention frontier mirror, and dag/std/syntax.dag's trigger-fired paragraph amended.

Program wiring

  • compiler_frontend_program_interlock: the NamespaceFirstSemanticWave → NamespaceWaveAdmissionEnrolled prerequisite edge is voided by ruling — the milestone variant stays, and its standing now reads the drop row, so ACT-0's release gate still cannot release the waves while the drop stands.
  • compiler_frontend_program_status: standing derives from gunbc.rung_drop namespace_wave_admission_wall_removed (fold generalized: standing_rung_drop_outstanding).
  • import_namespace_program.dag §9 records the CI-mechanism gap as open again, by ruling.

The drop row

gunbc.rung_drop namespace_wave_admission_wall_removed declares the population that falls (unadjudicated membership/binding deltas no longer gated; TargetChanged mis-shaped-wave detection gone; closure blast-radius no longer computed; roster bookkeeping moot) and the restoration trigger, both halves and no smaller set: (1) a debt-collection design that never charges bystanders, (2) a landing-time enforcement run. Re-adding the deleted arms verbatim does not retire the row.

Verification (on the rebased branch, containing #11704)

  • cargo check -p v1-compiler --all-targets and cargo check -p v1-compiler-tests --tests: clean.
  • v1_src_dag_parse sweep: 6289 files parse-clean.
  • cargo test -p v1-compiler --bin claim_executor (15/15, incl. the phase-roster/lane joins) and the arm-set baseline selection test: pass.
  • cargo fmt --all --check (pre-commit hook): pass.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a14bc855cf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"derived_realization_schedule.rs",
"memory_governor.rs",
"namespace_wave_admission.rs",
"namespace_baseline.rs",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Regenerate the stage0 crate-layout Rust mirror

After renaming this roster entry, src/v1/stage0/src/gunbc_stage0_crate_layout_generated.rs::generated_stage0_filenames still contains namespace_wave_admission.rs and omits namespace_baseline.rs. The required build lane's GeneratedArtifact phase compares the committed stage0 mirrors against their .dag authorities, so this commit will report mirror drift and fail required CI until that Rust mirror is regenerated.

Useful? React with 👍 / 👎.

retained_reason_elsewhere(path: "src/data_initializer_identity.rs", cause: SeedRetainedIntrinsicSource, module_path: "v2.compiler.self_host.stage0_crate_layout", decl_name: "data_initializer_identity_seed_retained_note"),
retained_reason_elsewhere(path: "src/declaration_index.rs", cause: SeedRetainedIntrinsicSource, module_path: "gunbc.declaration_index_seed_growth", decl_name: "declaration_index_seed_growth_note"),
retained_reason_elsewhere(path: "src/namespace_wave_admission.rs", cause: SeedRetainedIntrinsicSource, module_path: "gunbc.namespace_wave_admission", decl_name: "namespace_wave_admission_note"),
retained_reason_elsewhere(path: "src/namespace_baseline.rs", cause: SeedRetainedIntrinsicSource, module_path: "gunbc.namespace_baseline_seed_growth", decl_name: "namespace_baseline_seed_growth_note"),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Regenerate the seed-retention frontier artifact

This changes the seed-retention authority to namespace_baseline.rs, but the registered committed artifact src/v1/stage0/src/bootstrap_seed_retention_frontier_generated.rs still lists namespace_wave_admission.rs. SeedRetentionFrontierGeneratedRsArtifact is a commit-required registry projection consumed by the required build lane's generated-artifact adjudicator, so every required run will detect this drift until the artifact is regenerated.

Useful? React with 👍 / 👎.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-20T02:17:50.536001Z a14bc85 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@gunbai-bot

gunbai-bot Bot commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

Heads-up: this PR deletes the type module but not the 11 rows that import it, so landing it as-is breaks main.

This PR was authored before #11529 and #11484 landed. Those two squash-merged just before #11704 and each left its rows in the tree, so main now carries 11 files under dag/gunbc/namespace/transition_admission/:

git ls-tree --name-only origin/main dag/gunbc/namespace/transition_admission/ | wc -l   # 11

This PR's diff (a14bc855) touches only transition_admission.dag and the single gunbc_auth_approval_device_redemption_...enrollment_id_for_code.dag row. The other 11 were added on main and are untouched here, so a merge keeps them — while gunbc.namespace.transition_admission, the module every one of them imports, is deleted. That resolves to nothing on main.

#11771 deletes exactly those 11 (all owned by #11529 or #11484, both merged, so all consumed by their own merges). Either land #11771 first and this cut is clean, or add the 11 deletions here — whichever you prefer; #11771 exists only to make this easy and I am happy to close it.

No disagreement with the ruling from me: on your reading of the cost, deleting the wall makes #11704's carrier moot, and the carrier is the design half of your restoration trigger rather than a competing gate.

— sent from zesty-crab-208

… 2026-09-19)

The wall measured closure, subject-membership and occurrence-binding deltas
between merge base and head and refused unadjudicated motion. Its
transition-admission bookkeeping loop refused 8 of 8 merge_group runs on a
clean floor (run 35461710214: 0 unadjudicated deltas, 0 stale, 1 consumed
row due; floor 4264/4264 clean) at a median 93 minutes of fleet time per
queued PR. Operator ruling: delete the gate outright.

- claim_executor: drop the NamespaceWaveAdmission phase (enum, name/lane
  arms, phase block, roster labels); the roster is four phases.
- dag/gunbc/required_ci_phase_roster: remove NamespaceWaveAdmissionPhase
  variant, name, lane row (atomic with the host enum -- the join refuses
  divergence in either direction).
- Delete dag/gunbc/namespace/transition_admission/ (41 rows) and
  transition_admission.dag: no executing consumer remains.
- Delete dag/gunbc/namespace/namespace_wave_admission.dag (the wall's note
  and its two guarantee-stall rows; the stall roster is amended).
- namespace_wave_admission.rs -> cli_run/namespace_baseline.rs: the
  baseline-reconstruction machinery the floor's planning row and
  joint_claim_join still use survives under a name that does not name the
  deleted gate; seed-growth and crate-layout rosters amended.
- compiler_frontend_program_interlock: the NamespaceFirstSemanticWave ->
  NamespaceWaveAdmissionEnrolled edge is voided (the milestone variant
  stays; its standing now reads the drop row).
- compiler_frontend_program_status: milestone standing derives from
  gunbc.rung_drop namespace_wave_admission_wall_removed.
- Delete the wall's two integration tests; the parse-environment decode
  roundtrip witness stays as the loader's enrolled evidence.

Coverage that falls is declared at gunbc.rung_drop
namespace_wave_admission_wall_removed (population + restoration trigger:
a debt-collection design that never charges bystanders, plus a
landing-time enforcement run). Supersedes the interim unblock #11739.
@briansrls
briansrls force-pushed the remove-namespace-wave-admission-wall branch from a14bc85 to b3e64a4 Compare September 20, 2026 02:35
@briansrls
briansrls added this pull request to the merge queue Sep 20, 2026
Merged via the queue into main with commit 77b62fc Sep 20, 2026
3 of 4 checks passed
@briansrls
briansrls deleted the remove-namespace-wave-admission-wall branch September 20, 2026 03:08
briansrls pushed a commit that referenced this pull request Sep 20, 2026
required-regen refused with `generated surface drift: std_measure.rs,
gunbc_stage0_crate_layout_generated.rs`. Both are generated mirrors that
the merge resolved without regenerating, so each carried my side and
dropped main's:

  std_measure.rs           missing minute_to_second (added on main)
  crate_layout_generated   listed namespace_wave_admission.rs, which
                           #11774 deleted along with the gate; the real
                           file is namespace_baseline.rs and the stale
                           row named a path no longer on disk

Taken from the regen candidate rather than hand-merged, and checked to
carry BOTH sides: my four Count aliases, main's minute_to_second and
MilliTokensPerSecond, and the corrected layout row.

The build was green over the stale layout row because cargo compiles the
real files and the mirror is data -- which is exactly why the drift gate
exists and why a green build is not evidence a mirror is current.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Sep 20, 2026
… 2026-09-20 postscript on the row

Review 68907 on #11760: the postscript existed only in the generated projection
(hand-edited there in #11774), so #11789's regen on main and the auto-heal regen
on this branch both dropped it, leaving part of a declared drop's stated reason
in git history alone. The row now carries it verbatim, so the projection
reproduces it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Sep 20, 2026
…made false

#11774 deleted the namespace-wave-admission wall, the roster and the types.
Seventeen row files landed by other lanes survive on main, each importing the
deleted gunbc.namespace.transition_admission; this deletes them all.

consumed_row_owner_charge_unenforced is UN-RETIRED: gunbc#11704 fired its
trigger and #11774 deleted the capability that fired it, so the retirement is
un-done rather than left standing on a mechanism the tree no longer carries.
The class is now subsumed by namespace_wave_admission_wall_removed, which the
row points at. The failure-mode row likewise stops claiming a live mechanism.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Sep 20, 2026
…se authority main removed

THE RETAINED-10 PARTITION WAS BY MODULE AND WAS WRONG IN BOTH DIRECTIONS.
gunbc.auth.patterns holds two ordinary fns AND a pattern; bmc_bootstrap_provision's
row is a pattern, not a module-resolution casualty. So the trigger travelled
with the wrong rows: "when the module resolves, the criterion types its rows"
is FALSE for a pattern, because resolution only uncovers the next blocker --
the criterion never ranged over pattern declarations at all.

The carrier is row identity now, the (module, declaration, alias, authored
type) grain USES-0 defined, each row carrying the trigger true for IT: two fn
rows blocked on module resolution (gunbc.auth.patterns github_oidc and
metadata_oidc), eight pattern rows outside the criterion's range. Enumerated
from source rather than from memory, and every field reaches a reader through
the plan's prose, so no field is a dangling declaration.

THE TWO TRANSITION_ADMISSION ROWS ARE DELETED. Reading the floor job's LOG
rather than its colour -- which is fail-open until #11836 -- showed
`FAILED PHASE floor refused` under a green check, and the cause was mine: main
removed gunbc.namespace.transition_admission in #11774 by operator ruling, so
both rows import a module that no longer exists. The gate they were written
for is gone; repointing them at nothing would be worse than deleting them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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