Skip to content

Actual Timer long-gap diagnostic and repair qualification

The real service/clock slice landed through PR222, merge 708da30a2492f2d0c0503de5e7ab4b6a208def2a, after22 enabled checks passed. This next diagnostic is not whole native Arcade or a repaired time contract.

The preserved first diagnostic pins own runtime source 07de1e4bbc0910a5f6b192df13c5df3a6fe467af, whose five-image build38465804291 passed. Actual core remains 2ed19d64ec3359143409a4b0a9758b4aeef3ee7d; Timer and clock implementations are unchanged for this first diagnostic.

The guest arms a real20 ms Event, masks interrupts, waits80 ms through actual DWT-based low-level captures, and reads Timer only before/after the gap. The pinned Timer narrows elapsed to16 bits. Its sigma and millisecond remainder are also16-bit; changing just the elapsed cast is not a sufficient repair. The actual diagnostic run38472304691 reproduced the exact failure in both profiles at9660466 steps: low-level elapsed80002 us versus Timer14474 us, no IRQ/Event/switch under the mask. The frozen original-log audit passed as expected bug reproduced after delayed official step metadata became available. Its initial metadata refusal and the sole original remain preserved; no audit rule was relaxed.

The existing eight cases retain their four-million-step bound. Only the new long case receives a separately named twelve-million-step bound. Both profiles must bind exact source/image/map/startup and actual architectural pending exception15 under PRIMASK, with no IRQ entry, Event or context switch. Guest COUNTFLAG is recorded separately from the architectural pending observation.

The first diagnostic accepts only guest assertion 0xe0000c35, with actual low-level elapsed80–81 ms and Timer elapsed lower by approximately65536 us within the source-defined overhead bound. Raw ordered stage/pending/time witnesses must support that exact outcome. Timeout, a different panic, architectural fault or arbitrary manufactured marker cannot qualify it. A passing diagnostic means expected bug reproduced, not correct time.

Preserve the actual first original before any Timer repair. Then review counter width/modular arithmetic, sigma and remainder together; qualify microseconds and milliseconds, overdue Event delivery and all original cases against the fixed source. No host clock advances, pending-bit mutation, injected Event or success stub. Default physical builds, historical image rejection, app pins, captures, acknowledgements and performance thresholds remain unchanged.

Separately named positive qualification — pending

The next fixture pins own runtime 0c95081222a840af0701b25417a8f73bf6842225, whose five-image clean build38478663383 passed. It records41 explicit inputs, including the attributed Timer-width patch and control/build/provenance scripts. Each image passed480 source-bound integer controls with six source-refusal controls. These cover declared counter widths, wrap and millisecond remainder arithmetic; they are not hardware/clock/compiler/guest qualification.

The repaired caller additionally records actual getTime() milliseconds. The positive host harness requires stage4 and 0x600d, restored80ms us/ms intervals, exactly one overdue Event from SysTick, one architectural IRQ entry/return pair, no assembly switch, and no final pending exception. Raw stage2 must still show pending SysTick under PRIMASK before any Event or entry. It uses separately named FIXED boundary/result records, preserving the old diagnostic source and original. Both profiles and all eight previous cases must pass exact-source guest qualification; the old bounds remain unchanged.

This fixture pin is not consumer/app adoption. No repaired guest result, whole-runtime admission, native Arcade frame/input/debugger or RTx outcome is established by the clean build or prospective assertions.