{{ message }}
Repository navigation
row 178: a capability-equality cell's own test must run in CI, not only its root cell - #1476
Merged
Merged
Conversation
…o (row 178) #1306 held the root column of both ledgers to the build CI's test check runs. The capability-equality ledger's own column was still read as text: audit-chain x llm stayed proven by root/tests/plane_node.rs, a node-axis cell compiled under cfg(linked_axis_node), which no CI build enables (Law 10, docs/design/BUSBAR-1.6.0.md). - teller-steps:equality-root-cells now judges each proven cell's own test wherever it cites the composition root's build: a file its module tree reaches (door cells included), anything under crates/busbar/src/, or one of crates/busbar/tests/<name>.rs, resolved over that target's own tree and refused when its [[test]] required-features are off in CI's build. - RED plants: a cell's own test under cfg(linked_axis_node), and one in a target whose required-features CI lacks. Unit tests for the target and required-features reading. - audit-chain x llm is repointed to a new door-path cell, the_pools_door_seals_every_unit_served_or_refused_on_one_tamper_evident_chain: a served and a budget-refused unit seal two linked records, the window verifies, and a record altered after its seal breaks it.
…es no plane (row 178) The own-column check refused egress-auth x llm's cell under cfg(all(test, linked_every_auth)) as a cfg it could not answer. build.rs emits it when every row on the auths axis is enabled, which the default row does; ci_cfg now derives it the same way, with a unit test. The new audit-chain door cell named the plane twice (instance name and doc), growing busbar x plane's Law 0 count 350 -> 352; both words go.
…, driver-proofs cases included (row 178) The own column was judged only when it cited the composition root's build; citations into other workspace members (busbar-kernel, busbar-plane-llm) were skipped. CiView::judge now resolves a cited file in the target that compiles it: the root's binary, its integration-test targets (the hook_parity_driver target's generated driver_proofs.rs include is now followed to the plane crate's tests/on_driver/), and any other member's lib, bin and test targets, each under that crate's build (ci_cfg::CiBuild::of_member_manifest: cfg(test), the default and self dev-dependency closure as a floor, other features unknown). A workspace file no target reaches is a refusal. Pinned plugin repos' files stay with their own CI. RED plants: a kernel cell under a feature CI is not shown to enable, and a kernel file no target reaches. Module trees memoise file items by text so the per-plant walks stay inside the selftest budget.
… as a plant (row 178)
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.

Status row 178 (Law 10,
docs/design/BUSBAR-1.6.0.md"Law 10"): a proof ledger may only cite a test that runs in CI.What was left after #1306
#1306 held the root column of
qa/teller-steps.jsonandqa/capability-equality.jsonto the build CI'stestcheck compiles, usingxtask/src/ci_cfg.rs. The capability-equality ledger's own column was still checked as text bycrates/busbar/tests/capability_equality.rs. As a result,audit-chain×llmstayedprovenbycrates/busbar/src/root/tests/plane_node.rs::every_unit_the_node_answers_served_or_refused_seals_one_record_on_one_tamper_evident_chain. That file compiles only under#[cfg(all(test, linked_axis_node))](root/plane_node.rs:2973), which no CI build enables.The fix
teller-steps:equality-root-cellsnow also checks each proven cell's owntestwhen it cites the composition root's build:crates/busbar/src/(if nomodreaches it, that is a refusal);crates/busbar/tests/<name>.rs, resolved over that target's own module tree. It is refused when its[[test]]required-featuresare not in CI's default build.Every workspace crate, not only the root (cba5331)
The first cut skipped citations into other workspace members. 7 own-column citations into
busbar-kernelandbusbar-plane-llmwere never judged.CiView::judgenow resolves a cited file in the target that compiles it, under that target's crate's build:[[test]]paths and auto-discoveredtests/<x>.rs/tests/<x>/main.rs.libtest_pathnow followshook_parity_driver's generateddriver_proofs.rsinclude to the plane crate'stests/on_driver/, keyed by thedriver-proofsrow's feature;ci_cfg::CiBuild::of_member_manifest. Its build iscfg(test), plus the closure ofdefaultand of the self dev-dependency's features as a floor. Any other feature is unknown, because--workspaceunifies features. Nolinked_*cfg applies.A file of a workspace crate that no target reaches is refused. Files in pinned plugin repos (a2a, mcp, streaming) are left to those repos' own CI.
Module trees now cache file items by text, so the walks repeated for each plant stay inside the selftest budget.
RED plants (selftest)
cfg(linked_axis_node)turns the row red and names the cfg.required-featuresCI lacks turns the row red and namesrequired-features.Unit tests:
equality_target_tests,a_driver_proofs_include_reaches_the_rows_plane_crate_cases,a_member_build_is_its_default_and_self_dev_closure_and_other_features_are_unknown.GREEN twin
audit-chain×llmis repointed to a new door-path cell,serve_tests.rs::the_pools_door_seals_every_unit_served_or_refused_on_one_tamper_evident_chain(cfg(linked_driver_proofs), on by default). The test serves one unit and has a second refused because its budget is spent. That gives two records, contiguous and linked.AuditChain::verify_windowpasses on them and fails on a forged copy.Guarded files:
xtask/src/gates/teller_steps.rs,qa/capability-equality.json.