Repository navigation
.ci/predev.yaml oracle: the first move onto dev (v1.5.5, no pin) is judged by the backend-installed busbar-oracle, never the candidate's pin - #1025
Conversation
…o oracle data) is judged by the backend-installed busbar-oracle, said in one line; never by the candidate's own pin `modernci call measure --check oracle` on predev 4f9a948 died before judging: `fatal: path 'testing/shadow-oracle/oracle-rust.pin' exists on disk, but not in 'a71b21e9fa'`. dev is v1.5.5 until predev first lands on it, so the judge pin read from the target cannot exist. judge() names the judge from the TARGET only: - the target holds oracle-rust.pin: exactly as before (its sha256 for this arch, checked against $BUSBAR_ORACLE_RUST_BIN); - the target has no testing/shadow-oracle at all (only before the first 1.6.0 move): the backend-installed $BUSBAR_ORACLE_RUST_BIN (queue rule 11), one ORACLE-PIN line naming it and its sha256; - the target has oracle data but no pin, or is not in the checkout: no judge, RED. judge_selftest proves the six arms on a throwaway repo before the real target is judged; two mutations (drop the oracle-data-without-pin arm; never read the pin) each turn it red. golden-guard is unchanged: run locally with the 4c47cad0385d judge, `--base a71b21e` (dev, no golden) `--head` predev reports "add-only holds" (golden_repo.rs reads an absent path as empty). The check now `requires: [git-history]` (merge-base and `git show <target>:`). Scanned the rest: gates' XTASK_CEILING_BASE=$MODERNCI_TO_SHA resolves to the dev merge-base (the v1.5.5 commit), which the base-relative rules already read as a base that predates the ledgers (kind_isolation base.rs registry_present=false -> minted_rows reads nothing; matrix.rs base_ledger "an absent ledger reads as the empty ledger"; census.rs reads the base's ceilings only when present; matrix.rs:156 holds the 1.5.5 scan to its own count); XTASK_SHIP_TARGET=dev is not a release line. verify-done and q128-audit read no target ref. No other change.
|
Closed per the coordinator's ruling (2026-10-14, withdrawing the 10:54Z bootstrap ruling). The owner ruled at 02:42Z that there are no hand-installed tenant tools, and ModernCI has removed $BUSBAR_ORACLE_RUST_BIN, so this PR's middle branch names a judge the backend does not have. #909 lands instead: with #911, bin/oracle fetches busbar-release's published busbar-oracle for the BASE pin and verifies its sha256 and .sig. On the first move only, when dev holds no pin, it uses the tree's own pin, which on a predev->dev move is predev's, changed only through judged lane PRs (rule 11). The golden-guard finding (an absent golden reads as all-added) matches #909's guard. The judge_selftest is not ported, because #911 carries its own fetch-selftest. |
Blocks DEV-GREEN.
modernci call measure --repo GetBusbar/busbar --from predev --check oracleon predev 4f9a948 failed before judging anything:fatal: path 'testing/shadow-oracle/oracle-rust.pin' exists on disk, but not in 'a71b21e9fa…'.devis the v1.5.5 commit until predev first lands on it, and that commit has no pin. So the first predev→dev move can never pass.Fix (
.ci/predev.yamloracle).judge()names the judge from the target only, never from the candidate:oracle-rust.pin: exactly as before. The target's sha256 for this architecture is checked against$BUSBAR_ORACLE_RUST_BIN.testing/shadow-oracleat all (only before the first 1.6.0 move): the judge is the busbar-oracle ModernCI installed on the backend (queue rule 11). OneORACLE-PIN:line names it and its sha256.judge_selftestproves the six arms on a throwaway repo before the real target is judged. RED proof:Locally, against the real
a71b21e9fa, it prints the bootstrap line.golden-guard. Unchanged and still run. I ran the 4c47cad0385d judge locally with
--base a71b21e9fa --head origin/predevand it reportsadd-only holds:golden_repo.rsreads absent golden files as empty, so every cell counts as added and nothing is refused. The check nowrequires: [git-history], because it uses merge-base andgit show <target>:.Scan of the rest of the file. Nothing else assumes the target is a 1.6.0 commit:
XTASK_CEILING_BASE=$MODERNCI_TO_SHAresolves to the dev merge-base (v1.5.5). The base-relative rules already handle a base that predates the ledgers:kind_isolation/base.rssetsregistry_present=false, sominted_rowsreports nothing.matrix.rsbase_ledgerreads an absent ledger as empty.census.rscompares floors only when the base has the ceilings file.matrix.rs:156holds the 1.5.5 scan to its own count.XTASK_SHIP_TARGET=devis not a release line.$MODERNCI_COMMITonly.Overlap: #909 edits the same hunk. #909 (
lane-retire-brel-dev-absolute, open, not a draft) rewrites this oracle block, and it reads this tree's own pin when dev holds none. That is the candidate picking its own judge, which this ruling refuses. This PR is opened as a draft under rule 20 (same hunk), so the coordinator can choose between the two.