Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6d2668d41e
ℹ️ 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".
| here.push(path); | ||
| } | ||
| } | ||
| files.extend(derived_row_roster::acquire_dir_files(dir, here)?); |
There was a problem hiding this comment.
Route standalone corpus walkers through roster acquisition
When bootstrap_witness runs ci_full_dag or the documented type_occurrence_binding_census dag runs after a normal compiler walk, their private walkers in src/v1/stage0/src/bin/ still enumerate and read only on-disk PathBufs before compiling the corpus. Those corpora import gunbc.recurring_failure_mode.roster and gunbc.rung_drop.roster; because this change stops materializing those files and only callers of acquire_dir_files receive the virtual modules, these binaries now compile an unresolved corpus and fail in the intended file-free steady state. Update the standalone walkers to consume AcquiredDag sources through the shared acquisition boundary as well.
Useful? React with 👍 / 👎.
…ane; typed resolve refusal for a legacy roster The changed-witness gate admits a hermetic route gap only when the same identity has a wet terminal on this candidate (HermeticRouteGapHeldAndWetPassed), so the wet witness is scheduled in local_repo_wet_terminal. resolve_entry_graph uses the fallible shared index, so a legacy physical roster is a typed exit 1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Central claim
Source acquisition no longer mutates the checkout, and deploy candidate admission needs no roster exception. This is a prerequisite for the srv1 dashboard rollout.
Before this change, every source walk wrote gitignored
roster.dagfiles (gunbc.recurring_failure_mode.roster,gunbc.rung_drop.roster) into the checkout it read. So everygunbcinvocation left its own checkout dirty, andgunbc.live_deploy.candidaterefused it (CandidateCheckoutNotClean ... ignored-deployed=dag/gunbc/rung_drop/roster.dag). The earlier fix exempted one of the two files indeployed_tree_excluded_derived_files.What changed
derived_row_roster::acquire_dir_filestakes a directory's own.daglisting and returnsAcquiredDagsources. For a ledger row directory it also adds the roster rendered byrender_rosterfrom the same sibling bytes it just read. Selection is unchanged:declares_rowpicks rows by declared type, helper modules are never members, order is sorted, androstered_row_join'sDeclaredNotRosteredis still the authority.AcquiredDaghas noDeref<Target=Path>, so the compiler rejects any consumer that tries to read a derived module from disk.ensure_if_row_dir,ensure_if_row_dir_or_panic,ensure_derived_roster,write_atomically,row_stems.collect_dag_files_result,collect_dag_files_tolerant(now returns a located refusal instead of swallowing roster failures),run_dag_parse_sweep,main.rs collect_dag_files,compiler_tests collect_dag_recursive(its .dag authority and stage0 mirror were regenerated), and every path-then-read_to_stringconsumer downstream of them. That covers module indexing (try_build_module_index,try_index_source_root_into_module_index,for_each_parsed_module_binding), import/reference discovery,entry_source_from_index_or_disk(an entry naming a derived roster is answered from the index),decl_facts_corpus_walk,decls_parse_only_from_disk, and the rostered-row join's source accounting. Source roots and their precedence are unchanged.namespace_baselinestill reads a base revision's committedroster.dagas source and does not synthesize a competing module. Absent and present-empty are still distinguished (roster_from_path_listing).deployed_tree_excluded_derived_filesexemption. All candidate gate categories are kept, and no rung-drop or deploy-time regenerate step was added. Corrected the staledeployed_tree_scope/candidateexplanations that said the deploy rsyncs the working tree: convergence is git-native.gunbc.repo_workspacerows with reasonSupersededAuthority(still ignored).repository_converge_wetrunsretire_superseded_workspace_filesafter the reset. Its population is derived from the file-grainSupersededAuthorityrows, so no new list was added. Each file is deleted and then read back absent throughfilesystem_exact_read. A failure is the typed outcomeConvergenceSupersededFileNotRetired.gunbc.derived_row_roster_seed_growthhas been re-stated for the new boundary. The declaration-value-binding trigger is still outstanding.Evidence (on the committed head, with binaries built from it)
cargo test --release -p v1-compiler --lib -- derived_row_roster rostered_row_join namespace_baseline entry_resolve coproduct_reflection: 38 passed. This includes new controls for:cargo test --release --test declaration_index_integrity --test dag_parse_sweep_refusal_location: 36 passed.cargo clippy --all-targets -- -D warnings: clean.cargo fmt --all --check: clean.claim_executor --required-ci --source-root dag --source-root src/v2 --required-lane build: OK (first_generation_equal=true).claim_executor ... --required-lane witnesses:rostered-row-joinmatched both ledgers (RFM 624/624, RungDrop 118/118).floor_route_gaplike its seven siblings, but the lane was not re-run after that commit.claim_batch --wet ... repository_convergence_wet_witness_test --functions a_legacy_derived_roster_file_is_retired_and_read_back_absent,detached_primary_transition_...: both PASS.observe_candidate_checkouton this clean checkout:git status --ignoredshowed onlytarget/, and no roster file exists.dag/gunbc/rung_drop/roster.dag, loading refused and named the path, and the file was left intact.🤖 Generated with Claude Code