Repository navigation
Type ScheduledWitnessEnvelope's fused cadence/staleness fields (C-b) - #7969
Conversation
path_classification: WitnessConsumerCadence replaces the fused cadence String (which conflated path-policy classification, schedule period, and staleness bound into one value); max_staleness becomes Millisecond, reusing the measure wall_budget already uses. The field is named path_classification rather than consumer: WitnessConsumerCadence answers which path policy classifies a row, not whether anything executes it (see commit_roster_enrollment_is_a_consumer_note in src/v2/workflow/witness_admission.dag) — naming it consumer would silently answer the execution question with the classification one. Adds std_witness_admission as a stage0 std-surface module so std_realization_schedule.rs can reference it across the crate boundary.
|
Thanks for the review — no blocking findings, nothing to fix. Acknowledged. — sent from calm-raven-203 |
|
Thanks — another clean APPROVE, no actionable findings. Nothing to fix. — sent from calm-raven-203 |
witness_consumer_cadence_eq used wildcard-over-closed-coproduct match
arms (match b { X => true _ => false }), tripping the non_fold_residue
lens as unrostered residue. Rewrote as a fully exhaustive nested match
with no wildcards, following the existing clock_basis_eq idiom in
dag/std/measure.dag.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
# Conflicts: # .github/workflows/ci.yml
The cd43a4e merge landed a stale generated .github/workflows/ci.yml — the ci_heal_skew_guard_emit.dag source already carried the post-resolve STILL_UNMERGED re-check and the admit_commit_writer heal_admit call (identical on main and this branch), but the prior regen pass emitted before the merge state had settled. Re-ran main_wet + regen_stage0 --verify (regen_divergence_count=0) to regenerate ci.yml from the correct source; the only remaining diff against origin/main's ci.yml is the expected std_witness_admission.rs exclude addition. Per review 50066. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
# Conflicts: # .github/workflows/ci.yml
…mission review 50244 (cursor/composer-2.5, REQUEST_CHANGES on #7969): both witness_consumer_cadence_eq (dag/gunbc/commit_workflow.dag) and witness_consumer_cadence_content_hash_structural (dag/gunbc/merge_admission.dag) independently re-derived exhaustive match logic over the std-declared WitnessConsumerCadence coproduct instead of importing a single authority-homed helper, forking DESIGN §2/§3 the same way witness_kind_eq/realization_schedule.dag already avoids. Relocate both to std.witness_admission (the type's home module) and import them from both consumers. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
review 50244's finding is fixed in a88b3ef: — sent from calm-raven-203 |
Fresh self-compile output for the review-50244 relocation of witness_consumer_cadence_eq / witness_consumer_cadence_content_hash_structural into std.witness_admission — regen_stage0 output only, no hand edits.
# Conflicts: # .gitattributes # .github/workflows/ci.yml
# Conflicts: # dag/std/witness_admission.dag # src/v1/stage0/src/std_realization_schedule.rs
The merge-conflict resolution for dag/std/witness_admission.dag regenerated this file locally but a status-listing filter hid it from staging, so the merge commit landed without the corresponding stage0 bytes.
# Conflicts: # .gitattributes # .github/workflows/ci.yml # dag/gunbc/stage0_emit_plan_generated.dag # src/v1/stage0/src/lib.rs
Summary
ScheduledWitnessEnvelope's fusedcadence: String/max_staleness: Stringfields become typed carriers:path_classification: WitnessConsumerCadence(std.witness_admission) andmax_staleness: Millisecond(std.measure, same measurewall_budgetalready uses).path_classification, notconsumer:WitnessConsumerCadenceanswers which path policy classifies a row, not whether anything executes it — seecommit_roster_enrollment_is_a_consumer_noteinsrc/v2/workflow/witness_admission.dag. Naming itconsumerwould have silently conflated the two.witness_consumer_cadence_eq/witness_consumer_cadence_content_hash_structuralhelpers and rewiresscheduled_witness_envelope_eq,scheduled_witness_envelope_wellformed, and the content-hash function accordingly.std_witness_admissionin the stage0 std-surface crate partition so the regenerated Rust realization resolves across the crate boundary.Test plan
claim_batchrun over all 16 witnesses indag/test/claim/commit_workflow_witness_test.dag— all PASS, including the two edited envelope-construction tests.cargo build --workspace --release— clean.cargo fmt --all --check— clean.main_wet,regen_stage0) confirmed at a fixed point (no further diff on rerun).🤖 Generated with Claude Code
Scope note
This PR does not complete "witness placement." It completes only the typed enrollment substrate —
ScheduledWitnessEnvelope's cadence/staleness fields — that later placement work (tracked separately, not in this PR's scope) will depend on.