Fabric governance shifted before my seal finished.
block 918441
The console flashed the height before the task even showed up. Looked routine. Another parameter sweep rolling quietly through the system.
The compliance panel blinked once. Hash rotated.
I had already dispatched.
task_authorization_contract: validated
compliance_hash_at_dispatch: 0x4e2…
Green across the panel.
The actuator arm was already inside the corridor when block 918441 finalized.
block 918442
network_compliance_parameters: updated
Same contract.
Different rule.
Sweep angle tightened by a fraction.
I refreshed the interface. Wrong panel. Back again.
Now the hash read 0x7b9…
The arm had already crossed midpoint.
abort: would_fault_zone
corridor_interrupt: unsafe
Hovering over abort felt pointless.
Motion doesn't roll back.
The sweep kept moving.
proof_of_execution: broadcast
distributed_action_validation: routing
status: waiting_for_quorum
Acceptance was still referencing 0x4e2…
Certification expected 0x7b9…
Same verification task ID.
Two hashes.
That's the split.
Fabric can certify compliance under parameters the actuator never saw, simply because governance moved in the space between authorization and seal.
Trace logs confirmed it.
No rollback boundary.
No correction window.
Just clean execution lines with the wrong timing.
The servo locked at the end of the arc—normal click.
Inside tolerance.
That normal sound was the unsettling part.
Settlement didn't finalize immediately.
block 918444
seal_event: emitted
certificate_pointer: 0x7b9…
Not the hash used at dispatch.
Replay showed it clearly.
Acceptance — 918440
Governance — 918441
Seal — 918444
Three blocks apart.
One motion in between.
If torque had shifted a degree further, the ledger would have sealed non-compliance under rules introduced after the actuator committed.
Not bad execution.
Bad provenance.
Next mission queued.
I realized I hadn’t been snapshotting governance state at dispatch.
Usually unnecessary. Governance had been quiet.
Background noise.
Until it wasn’t.
Proposal log confirmed it.
Two validators flipped late on the Fabric agent protocol vote.
Margin thin.
Change enough.
So I tested the obvious fix.
Pre-motion governance read.
Latency added: +94ms
Small delay.
Big consequence.
Seal moved into the next settlement window.
settlement_window_id: +1
The robot doesn't care which settlement bucket records the action.
I do.
Rewards and accountability live in that label.
I removed the read.
Paused.
Added it again.
Removed it.
Cursor blinking inside the authorization contract.
compliance_hash_at_dispatch: pending_read
The Fabric actuator waited idle. Cooling fans humming louder than usual. Maybe they always were.
Block height ticking upward.
Another governance proposal entered discussion.
Velocity limits for restricted zones.
Not active.
Yet.
Hash unchanged.
Dispatch window open.
The read still hasn’t returned.
And the command still hasn’t been sent.