Repository navigation
XL-0-SERVICE: the service-emission path in 05_emit_rust binds stdout to every declared output field and does not box the error arm — it emits non-compiling Rust - #9995
Closed
gunbai-bot[bot] wants to merge 21 commits into
Conversation
…s exactly where the impl Fn bound is emitted
This lands the EVIDENCE for a property that holds by construction today and
which nothing else would notice losing.
WHAT WAS CLAIMED AND IS FALSE. I reported rust_call_arg_function_value_adapt
as a SILENT defect: it reads the DECLARED arity of a function-typed parameter,
gets 0 for a bare type variable, does not emit the Rc->impl Fn adapter, and
nothing refuses. bright-ram carried that into a standing correction of the
XL-0 push ("loud sites self-select into the typeck count, this one does not").
It is wrong, and the correction has been withdrawn.
WHY. The adapter predicate and the predicate that decides whether the parameter
renders WITH an impl Fn bound are the same expression on the same node --
`param_node_type_expr(n: param).params |> count` in
rust_call_arg_function_value_adapt, and `n.params |> count > 0` in
emit_rust_param_type reached through emit_param. The seam the adapter closes is
Rc<dyn Fn> flowing into an impl Fn BOUND, and that bound exists exactly where
the adapter fires. Arity is also invariant under substitution: instantiation
changes an arrow's type ARGUMENTS, never its parameter count, so the site was
never answering the instantiated-type question at all.
MEASURED, not argued (BuildBuddy, gunbc compile then cargo check on the emitted
crate):
pub fn make_adder() -> Rc<dyn Fn(i64) -> i64>
pub fn apply_arrow(f: impl Fn(i64) -> i64 + Clone, v: i64) -> i64
pub fn hold_tv<T: Clone>(value: T) -> T
apply_arrow({ let __adapt_f = hold_tv(make_adder()); move |__adapt_a0| __adapt_f(__adapt_a0) }, 1)
A bare type variable renders as a plain generic with NO Fn bound, so there is
no seam to close and adapting there would be a fabricated repair. The emitted
crate compiles: 0 rustc errors. Building the refusal that was routed would have
been a permanently-green decoration cited later as coverage.
THE CONTROL IS THE DELIVERABLE. Four assertions in both directions -- the Rc
carrier on the producer side, the impl Fn bound at the declared-arrow parameter,
the absence of any Fn bound at the type-variable parameter, and the adapter
present at the first while absent at the second, whose argument is equally a
call result so argument shape alone does not explain it. Fork the two predicates
and one of the four goes red.
VALIDATION AND WHAT IS NOT DONE. v1_src_dag_parse reports 4475 files
parse-clean with this edit, run with the discriminating control its own header
requires: appending one unattached trailing `//` to this file produced exactly
one refusal naming it at :3339, so the instrument did read the edited bytes.
The stage0 mirrors are NOT regenerated here -- claim_executor --regen-round-cost
refuses on a BuildBuddy runner (HostBudgetUnreadable: no cgroup memory.high or
memory.max binds the process, and it declines to substitute the machine's memory
for the slot's), and a whole-tree resolve OOMs the runner at 97% of 7.8 GB. The
drift gate is therefore expected red until the mirrors are healed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…ent expected types, and the remedy row is the wrong one
bright-ram asked for this class after two of us measured it independently. The
row is authored in the .dag authority; DESIGN.md and docs/design-ledgers.md are
its projections, regenerated by the generated-artifact gate (one line each).
THE CLASS. One refusal at one source column emits two rows naming DIFFERENT
expected types, because two producers resolve the same declared spelling in
different environments. The row an author naturally repairs from -- the one
that names the parameter -- is the row the checker did NOT refuse on.
SPECIMEN, measured on two binaries and two phases (gunbc compile emit-stage and
gunbc run entry-resolve), by calm-boar-314 and bold-carp-449 independently:
type mismatch: expected 'Primitive(String)', got 'Primitive(Int)'
value does not inhabit its declared type at the direct call argument for
parameter 's': declared 'Node(String<Product(Char)>)', produced 'Primitive(Int)'
THE PRODUCERS ARE NAMED FROM SOURCE, NOT FROM MESSAGE SHAPE, and the first
attribution was wrong: I named declared_type_conformance_diags off the message
text, and it is not that -- that function emits TypeMismatch and serves return
conformance. Reading the source, the compat row is
v1.compiler.infer direct_call_arg_mismatch_diags (formal as the CALLER resolves
it) and the inhabitance row is v1.compiler.infer declared_type_obligation_diags
(obligation.declared, via declared_type_inhabitance). Both render through
v1.compiler.core, so the divergence is upstream of the shared rendering -- which
is why it reads as one mechanism contradicting itself. bold-carp asked me to
mark whether that attribution was read or inferred; it is read, and the row says so.
THE TRIGGER IS STATED NARROWER THAN THE MEASUREMENT INVITES, on bold-carp's
correction. "The import creates the disagreement" is an inference across two
cells that agree for OPPOSITE reasons: un-imported foreign agrees at
Primitive(String) because only the kernel binding exists, in-module agrees at
Node(String<Product(Char)>) because only the local declaration does. So the
trigger is TWO COMPETING BINDINGS LIVE IN ONE RESOLVING SCOPE; an explicit
import is the only construct measured to create that, and whether any other
construct does is marked UNMEASURED. Phrased on the import, a reader meeting
the class through some other construct would conclude it does not reproduce.
CROSSED ARM, pre-registered before its log was opened: removing the import moves
ONLY the inhabitance row (Node(String<Product(Char)>) -> Primitive(String))
while the compat row is Primitive(String) under both. One producer follows the
import binding and the other does not; the whole reading does not shift.
RUNG FOUND AT 1 (mitigatable): the line does stop, and stops located, so this is
not silent wrongness -- what fails is that the refusal misdirects the remedy.
CEILING 3. NEXT-RUNG TRIGGER, naming the capability: one resolved-formal
authority per call site that both the compat check and the inhabitance
obligation read, sufficient that no call-site refusal can render two different
expected types for one parameter.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
Route A (generated_artifact_gate main_wet_one) with a binary rebuilt AFTER the rebase, not before -- a pre-rebase binary re-emits the older rendering and re-drifts the file it is converging while exiting green (vivid-deer-102's receipt, #9898). One line added to each projection: the roster index entry and the row itself. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…gen fixed point Route B (claim_executor --required-regen), locally, three rounds -- the third is the receipt and the first two are not: round 1 FAIL generated surface drift: v1_compiler_compiler_tests_rust.rs round 2 FAIL generated surface drift: compiler_tests.rs round 3 first_generation_equal=true, no drift, rc=0 Two rounds are structural, not a retry: installing the mirror of the generator module changes what the seed emits, so the generator's own output can only be measured against a seed rebuilt from the installed mirror. Every byte is copied from target/stage0-regen-candidate; none is hand-written. THE FIRST ROUND ON THE OLD BRANCH REPORTED SEVEN FILES, and that is why this branch exists. Six of them -- v1_compiler_compile.rs, v1_compiler_emit.rs, v1_compiler_emit_rust.rs, v1_compiler_infer_resolve.rs, v1_compiler_parse.rs, v1_std_core.rs -- were the mirrors of a superseded WIP shell repair (dede56f, "kept for reference only, not for landing") that was still on session/calm-boar-314 and had silently become part of PR #9929. It duplicates sharp-dove-805's open #9886. Rebuilding the branch from origin/main with only the intended commits drops it, and the drift census falls from seven files to one -- which is the measurement that confirms the six were never mine to land. Route B is also now first-hand rather than cited: vivid-deer-102 relayed this recipe from the merge driver's refusal text and was explicit they had not run it. It works locally. It cannot run on a BuildBuddy runner (HostBudgetUnreadable: no cgroup limit binds the process). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
# Conflicts: # DESIGN.md # dag/gunbc/recurring_failure_mode.dag # docs/design-ledgers.md
Binary rebuilt from the MERGED tree before regenerating. One line added to each file: the roster index entry and the row. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…e way as the figure it replaces vivid-deer-102 asked me to file this and was right that it matters more than a number being slightly off: a documented ceiling that UNDERSTATES the measured peak gets cited as the reason a thing is safe to try. At 7.54 GiB against a 7.86 GB VM the margin reads as thin-but-conceivable, which invites the "maybe with a tighter budget setting" attempt whose only outcome is an rc=137 twenty minutes in. At 8.37 GiB against 7.32 GiB the requirement is a full gigabyte outside the whole VM. MEASURED THE SAME WAY AS THE ROW IT REPLACES, which is the only reason it can supersede rather than sit beside: polling VmHWM -- the kernel's own high-water mark -- to completion, on 2026-09-01, this tree, rc=0 with DESIGN.md written. 8,776,996 KiB. TWO CORRECTIONS TO MY OWN EARLIER REPORTING, recorded because both would have propagated. I first reported 8.76 GiB: that was a unit error, dividing KiB by 1000 twice rather than 1024 twice. And I described my original 5-second `ps -o rss=` sampling as a peak superseding a sample -- backwards. VmHWM cannot underreport; sampled RSS can only ever be a LOWER BOUND. The gate's method was the stronger one, so the honest move was to adopt it rather than argue from a weaker instrument. THE DATED PAIR IS DELIBERATE. 7.54 is not amended in place, because "the ceiling moved with the corpus" and "the ceiling was mismeasured" are different facts and only the pair distinguishes them. Same instrument, same method, 0.83 GiB higher in one day: it grew. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…y, verified by content against both sides The repository's merge driver refused docs/design-ledgers.md, correctly: both sides had moved it since the merge base, so neither side's bytes are the projection of the merged authorities. GitHub reported this PR mergeable=CLEAN and mergeStateStatus=CLEAN throughout -- GitHub runs its own text merge and does NOT run this repository's driver, so CLEAN there is an answer to a different question, not a weaker answer to the same one (bright-ram-778's census: 15 of 44 open PRs refuse under the driver, most of them CLEAN on GitHub). RESOLVED BY REGENERATION, NEVER BY PICKING A SIDE. Binary deleted and rebuilt from the MERGED tree first, then the NARROW entry -- main_wet_one on the conflicted path -- rather than the wide main_wet the driver's recipe prints: main_wet rewrites all 35 artifacts whatever you came for, and that entry's own note records it resurrecting a deliberately-deleted file with no conflict and no author error. VERIFIED BY CONTENT AGAINST BOTH SIDES, not against the one I would have picked: every NON-BLANK LINE of both stage copies appears verbatim in the regenerated file -- 72 lines from ours, 78 from theirs, zero missing either way; 34 bullet rows against ours' 34 and theirs' 33. Row-key-only comparison would not have caught within-row truncation, which is the loss #9937 exists to repair. DESIGN.md regenerated too and came back byte-identical: main's rung_drop.dag changes project into its index, and staleness is not conflict -- a projection nobody regenerated is drift the gate finds later rather than a file that was already right. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…merged authority Both projections came back UNMERGED from the generated-artifact driver. Neither side was picked by hand: each was regenerated with gunbc.instruments.generated_artifact_gate main_wet_one on the conflicted path, then verified by content -- every non-blank line of both stage copies (:2 and :3) appears verbatim in the regenerated file. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…projections dag/gunbc/recurring_failure_mode.dag was a genuine text conflict in the roster list -- both sides appended rows. Resolved as a union, main's two rows (restored_bytes_reviewed_as_authorship, review_summary_inverts_roles_and_affirms_the_join) ahead of one_refusal_two_destinations; all three declarations present. DESIGN.md and docs/design-ledgers.md came back UNMERGED from the generated-artifact driver and were regenerated with main_wet_one on each conflicted path, not hand-resolved. Verified by content: every non-blank line of both stage copies (:2: and :3:) appears verbatim in each regenerated file, missing=0 across all four. No conflict markers remain in any of the three paths. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…hority Only the two generated projections were unmerged this round; the roster in dag/gunbc/recurring_failure_mode.dag auto-merged. Both regenerated with main_wet_one on their own path, verified by content against both stage copies (missing=0 on all four), no residual conflict markers. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…ew 58256) The control asserted, in its annotation, that the adapter CLOSES the E0277 seam. A substring assertion over emitted Rust cannot decide that at any lane membership -- whether the bytes compile is a rustc verdict -- so the claim was 4b(1) rung inflation. Codex review 58256 named it; the remedy is a sentence, not a mechanism. The annotation now states what the control establishes at its declared grain (emission succeeds, zero error diagnostics asserted first, and the bytes have the discriminating shape: adapter present at the declared-arrow parameter, absent at the bare type variable) and what it does not (that the emitted program compiles). It names ct_self_compile_cargo_check_test as the rustc consumer at corpus grain, says why that is not reached per-fixture -- probe.rs references the crate runtime and does not stand alone, and a second per-fixture compile path beside the corpus-level one is the parallel authority section 6 warns about -- and points at the declared section 4b(3) drop emitted_bytes_witness_required_lane for the residual gap. Stage0 mirrors regenerated to the fixed point: two rounds installed, then first_generation_equal=true 149/149/149, declared_divergent=1 [main.rs]. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…8256, follow-through) Three further corrections, each verified before applying: - The annotation no longer NAMES any candidate rustc consumer, even negatively. A named non-candidate is still a pointer, and a pointer is what a later reader turns into coverage. It now states a fact about the tree instead: no enrolled fail-closed rustc consumer covers this synthetic fixture. Checked rather than assumed -- the committed workflow invokes cargo test --release -p v1-compiler --lib with no --ignored, so what is established is that no committed scheduled route exists, not that none could. - The assertion MESSAGE said the adapter must close the seam. That is a claim at a rung the test does not reach, and it is what a reader sees at the moment it goes red. It now says the forwarding adapter must be EMITTED at the impl Fn parameter. - No rung-drop citation remains in the annotation: the drop it named is a drop of lane membership and does not answer a discrimination objection. Mirrors driven to the fixed point over three rounds -- the emitter of the test text, then the test text, then the verify -- first_generation_equal=true, 149/149/149, declared_divergent=1 [main.rs]. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
Pure-projection conflict: DESIGN.md and docs/design-ledgers.md, no .dag authority conflict. Both regenerated with main_wet_one on their own path. Verification note, because the superset check did NOT come back clean this time and the discrepancy is the interesting part: three lines present on the ours side are absent from the regenerated files. All three are rows #9925 amended or retired on main -- the regenerated text for both ledger rows is byte-identical to the theirs side, and the DESIGN.md drop index goes 26 -> 25 because main retired a row. So the regeneration follows the merged authority rather than dropping content; the ours-side lines are stale projections of authorities main has since corrected. Theirs-side missing=0 on both files, and this branch's own additions (one_refusal_two_destinations, the dated ceiling row) are present. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
gunbc.language_source_scaffold_index carries one LanguageSourceScaffoldRow per hand-Rust blob decl, and test.claim.language_source_scaffold_index_test counts ct_ declarations in the carrier against rows for that carrier. The new control's blob had no row, so the diff added a ct_ declaration without appending to the roster it belongs in. The row takes compiler_tests_rust_hand_assertion_scaffold_trigger -- the same Scaffold disposition every other hand-assertion blob in this carrier carries, dissolving to SingleAuthority at v1.compiler.coercion CoercionTestEntry -- rather than minting a new one, which would be a section 3 fork. language_source_scaffold_roster_is_fully_dispositioned was EXECUTED with the row in place and returns true. Separately, and not repaired here: the carrier's completeness check is already red on main -- 43 ct_ declarations against 40 rostered rows, three blobs unrostered before this branch existed. That is filed as its own work item; this commit discharges only this diff's contribution. Mirrors unchanged (first_generation_equal=true, 149/149/149) and both doc projections regenerate to identical bytes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…ns, full three-round mirror chain Roster conflict unioned by hand (accepted_source_emits_uncompilable_target, incidental_denominator_as_wall, one_refusal_two_destinations; all three declared). Both doc projections regenerated with main_wet_one and verified against both stage copies. Mirrors driven three rounds to first_generation_equal=true. VOID AS AN INTEGRATION: main advanced to c4e4986 while this was running, so this commit is kept only as recoverable work, not as a landing candidate.
Resuming from the parked integration at 581e092 rather than re-deriving from c302557 paid off exactly as intended: the roster in recurring_failure_mode.dag AUTO-MERGED, only the two doc projections conflicted, and the mirror chain did not re-run -- none of the three absorbed commits touches compiler_tests_rust.dag. Both projections regenerated with main_wet_one; superset check clean on BOTH sides this time (missing=0 on all four), no residual markers. Mirrors verified still at the fixed point on the merged tree: first_generation_equal=true, 149/149/149, declared_divergent=1 [main.rs]. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
Roster auto-merged again; only the two doc projections conflicted, regenerated with main_wet_one, superset check clean on both sides (missing=0 on all four). Mirrors verified at the fixed point: first_generation_equal=true, 149/149/149. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…idenceEnrollment (review 58359) Review 58359 refused the new compiler_tests blob for lacking a hand-Rust receipt naming a lane and a ROADMAP row. That vocabulary names nothing: verified independently by me and by the ruling manager against origin/main, DESIGN.md carries no such gate -- the SECOND time it has been cited at a PR and the second time it was found to name nothing (the first is recorded in the RcStr row of this same carrier). The receipt also cannot land in language_source_scaffold_index, whose row type has no field a lane or ROADMAP row could occupy; bolting it in as prose would be the section 4c violation. So the obligation lands where v1 admissions actually live. The row records the ruling relayed from bright-ram-778 on 2026-09-02, including the parts that are easiest to drop in the citing: PublicSurfaceGrowth FIRES LITERALLY and is admitted anyway, because the class exists to stop the seed accumulating CAPABILITY and a test emitter accumulates none; the cheaper ruling -- that compiler_tests blobs are not admission subjects at all -- was DECLINED, because a category exemption never comes up for review again while one admission does; the ruling admits this change only and does not resolve the new-declaration-versus-any-change boundary; and the counter-argument is preserved so overturning it is easy. EvidenceEnrollment is added to MaintenanceAdmissionInstance rather than forcing this into one of the four existing shapes -- every 4b(4) climb in v1 produces it, so it is a class and not a bespoke slot. Module typechecks (0 blocking diagnostics); no projection or mirror moved. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…N with my blob in it #9976 replaced the roster's count comparison with an identity join. Executed on the merged tree: compiler_tests_rust_blobs_are_all_rostered returns TRUE -- the three-blob deficit I reported is closed on main and my row satisfies the join by identity rather than by count. Roster conflict unioned (compensating_errors_cancel_in_the_aggregate, mine); both projections regenerated, superset clean on both sides; mirrors at the fixed point. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
…eption, not a category INTEGRATION: roster auto-merged (both one_refusal_two_destinations and #9956's unlanded_citation_indistinguishable_at_the_citing_end present and declared); both projections regenerated, superset clean on both sides; lib.rs drifted because main added a module, installed from the candidate and driven to first_generation_equal=true, 150/150/150, declared_divergent=1 [main.rs]. Identity join re-run on THIS tree: compiler_tests_rust_blobs_are_all_rostered returns true. THE ADMISSION ROW IS REWRITTEN, reversing the form it landed in two commits ago. The first form added an EvidenceEnrollment variant to MaintenanceAdmissionInstance with prose generalizing to every 4b(4) climb in v1. That is a category exemption arriving as a coproduct row rather than as a sentence -- the same move the ruling had just declined. Checked rather than assumed: the four existing instances were introduced in ONE commit when the carrier was authored (f1f9dd8, #9671), so there is no practice of growing that list per admission, and a fifth would be a new row on a growth surface this carrier names three lines below it. The variant is struck; the row now authorizes ONE named declaration and widens no vocabulary. TWO CORRECTIONS OF FACT in the same row. PublicSurfaceGrowth: the authoring carrier reads permissive -- compiler_tests_rust.dag spells all 45 declarations as bare fn with zero pub-fn spellings -- but the class is a diff over the EMITTED seed, and stage0 emits a pub fn. The emitter adds the visibility, so the class fires and reading the .dag would say it does not. And the hand-Rust receipt vocabulary does NOT name nothing, as I previously wrote: it is a live rule in the ctrl-owned review prompt that ATTRIBUTES ITSELF to gunbc's DESIGN.md, where it does not exist. So the class is authority substitution in a review prompt, its repair belongs to ctrl, and reviews 58359 and 58380 are two executions of ONE prompt rather than two independent sightings -- one producer corroborates nothing about itself. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FdxzwWekWhHR2FCTTf8a1b
Contributor
Author
|
Closing as a no-op duplicate of already-merged work, not as rejected work. #9938 was squash-merged, so its squash commit is not a parent of The merge result tree is byte-identical to main. This is not a partial revert of other lanes' work — the two-dot figure counts every commit main has that the branch lacks as a deletion, which is true of every branch behind main. Any follow-up work starts from a fresh branch cut off current main. — sent from bright-ram-778 |
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.
Auto-opened by session-dashboard for session
calm-boar-314.Pushing to
rebuild-cleanadvances this PR.Worker attestation
Before flipping this PR to ready for review, confirm each item:
npm test,cargo test) and the result.Closes #Ndirective.Summary
TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.
Test plan