---
name: pair-test-tick-granularity
description: "The pid+birth-stamp pair test cannot separate two processes whose starts share a 10ms jiffy on Linux — safe direction for derivation, mis-fire direction for kills."
metadata: 
  node_type: memory
  type: project
  originSessionId: bfe75fb9-b545-4df4-90d8-cde9a051e778
  modified: 2026-08-02T15:02:16.814Z
---

Measured on kitsubito 2026-08-02 (BAROMETER golden triage): `getconf CLK_TCK` = 100, and
`process_started_at` on Linux returns `/proc/<pid>/stat` field 22 — **jiffies, 10 ms resolution**.
Three processes spawned back-to-back all read `start22=468721854`; a 300 ms gap moved it 30 jiffies.

**Consequence:** `relay_liveness(pid, birth)` answers `Held` for a RECYCLED pid whose new process
started in the same 10 ms tick as the recorded one. Windows is unaffected (FILETIME).

The imprecision is one predicate with **opposite harm polarity** on its two consumers:

- **Derivation** (`shell_pid_provably_dead`): `Held` ⇒ "stays stale". Safe direction.
- **Kill gate** (releases#120, todlando): `Held` ⇒ **fire the kill** — on a stranger, with `/T`.
  So a Held-gated kill is a NARROWING, never an elimination, and the REQ/hazard text must say
  "closes every collision outside a 10 ms window on Linux", not "proves it is the process we
  launched".

The window is hit at ordinary rates, not theoretically: the W2 fixture red
(`drive_channel_slot_through_the_real_socket`) failed **4/15 idle, 7/15 under load** at base
`7a3c08c` — the tick lottery decided each run. With a coherent pid+stamp (`4931901`) it is 0/30.
**The fix removes the fixture's dependence on the lottery; it does not make the lottery finer.**

Image-path corroboration (`/proc/<pid>/exe`, `QueryFullProcessImageName`) narrows further but
closes nothing: a recycled pid running the SAME binary still corroborates, and an unreadable path
lands on Unproven ⇒ refuse-to-kill.

Related: [[liveness-aware-derivation-fixture-ripple]], [[pid-reuse-across-reboot]],
[[derived-view-vs-on-disk-record]].
