Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
375 commits
Select commit Hold shift + click to select a range
3b09f0e
docs(waitable-queues): state the doorbell guarantee one-sidedly, as t…
Sep 1, 2026
cdf7603
fix(placement-probe): assert what the build could determine, not that…
Sep 1, 2026
521d6f8
test(waitable-queues): cover the capability traits, which nothing exe…
Sep 1, 2026
5952167
docs: record how to run cargo-mutants here, and why -j 2
Sep 1, 2026
da1ed75
test(file-watcher): cover the standing carve-out, and queue the dead …
Sep 1, 2026
da1d082
docs: record the feature-flag trap that invalidated 60% of two mutati…
Sep 1, 2026
7fd00aa
docs(waitable-queues): record SH-1.5, a bound on Reserving::Reservati…
Sep 1, 2026
81737ff
test(file-watcher): cover directory.rs's pure helpers, and pin down w…
Sep 1, 2026
e5f0a94
docs(file-watcher): record that a reopened handle rejects the watcher…
Sep 1, 2026
ff1de58
test(waitable-queues): give the error module the tests it never had
Sep 1, 2026
fa14b12
test(waitable-queues): cover the Parked protocol on every shape
Sep 1, 2026
afd89c8
test(file-watcher): read case sensitivity from a real case-sensitive …
Sep 1, 2026
79de46a
test(waitable-queues): assert is_full and the capacity ceiling in bot…
Sep 1, 2026
a6e598f
test(waitable-queues): assert the Debug renderings say something
Sep 1, 2026
da8fe04
test(file-watcher): assert the opaque queue handles name themselves
Sep 1, 2026
b697312
feat(waitable-queues)!: mark PushError non_exhaustive and disclose th…
Sep 1, 2026
4a4cb26
feat(waitable-queues)!: bound Reserving::Reservation so a generic cal…
Sep 1, 2026
6dcb04b
test(waitable-queues): prove the blocking wait waits, and close the p…
Sep 1, 2026
6bb6801
test(waitable-queues): reach the consumer's own outstanding-reservati…
Sep 1, 2026
c37b998
chore(tools): wrap cargo-mutants so a crashing mutant cannot wedge th…
Sep 1, 2026
608d671
test(file-watcher): cover the notification categories nothing exercised
Sep 1, 2026
9b4be93
docs(waitable-queues): record why the lost-race branch reads as remov…
Sep 1, 2026
7b9bab3
docs: record what a cargo-mutants timeout means in a crate of blockin…
Sep 1, 2026
bc28a4f
fix(tools): put cargo-mutants' features where they actually take effect
Sep 1, 2026
d234749
docs(file-watcher): rule out a shipping bug behind the access violati…
Sep 1, 2026
46d2c13
chore(tools): harden the mutants wrapper against the stall, with the …
Sep 1, 2026
0b26eb2
chore(tools): derive the mutation timeout from the baseline, since ti…
Sep 1, 2026
e7352b0
test(ioring): close the eight survivors from a default-features mutat…
Sep 1, 2026
2d0f757
test(file-watcher): make the queue's waits bounded, so a broken wake …
Sep 1, 2026
f653ad3
test(file-watcher): finish the bounded-wait sweep in queue/tests.rs
Sep 1, 2026
065a8e8
test(thread-ambient): close capture_set.rs and declared.rs mutation gaps
Sep 1, 2026
3d2d13f
test(thread-ambient): close error_mode.rs mutation gaps
Sep 1, 2026
dccd980
test(thread-ambient): close transaction.rs mutation gaps, and record …
Sep 1, 2026
bf68c43
test(thread-ambient): close state.rs mutation gaps, the last file in …
Sep 1, 2026
97ddc46
test(file-watcher): close the queue.rs gaps bounded waiting exposed
Sep 1, 2026
279013a
test(thread-ambient): close CaptureError's own gap, and correct a wro…
Sep 1, 2026
4a94658
fix(file-watcher): replace StandingHold::drop's dead release path wit…
Sep 1, 2026
57f9e19
test(wtf-string): close mutation gaps
Sep 1, 2026
944fe6c
fix(file-watcher)!: remove the reopen-by-id fast path, root-caused as…
Sep 1, 2026
580e001
refactor(file-watcher): drop the write-only canonical_path, keep the …
Sep 1, 2026
742e4db
fix(waitable-queues): repair the PR #56 review findings
Sep 1, 2026
dbcf932
docs(file-watcher): record D-85, paths are the caller's verbatim
Sep 1, 2026
eb00572
fix(waitable-queues): repair the PR #56 second review round
Sep 1, 2026
b371b95
fix(ioring): make DROP_RUNS's comment a plain one, not a doc comment
Sep 1, 2026
8fdcdcc
docs: record why two crates treat paths oppositely, and flag the enum…
Sep 1, 2026
a4db985
test(file-watcher): guard D-85's path pass-through against a helpful …
Sep 1, 2026
e7b3c4f
test(file-watcher): cover canonical_path's regrow, and settle its two…
Sep 2, 2026
052efa3
fix(placement-probe): repair the PR #56 suppressed review findings
Sep 2, 2026
2eea4a8
test(file-watcher): isolate the last notification-filter categories
Sep 2, 2026
8c55538
test(file-watcher): assert the arming contract instead of crashing in…
Sep 2, 2026
d9665c5
fix(waitable-queues): clamp the length gauges, and honour reservation…
Sep 2, 2026
f9b57db
fix(placement-probe): publish atomically, discover once, and build on…
Sep 2, 2026
068548b
fix(waitable-queues): correct spsc's remaining, which the last round …
Sep 2, 2026
06f4ca0
test(file-watcher): lower NOTIFY_TIMEOUT to 5s, measured rather than …
Sep 2, 2026
8c56647
fix(waitable-queues): bound the recorded depth, and state what high_w…
Sep 2, 2026
0994c2e
Merge origin/main into mikegrier/deferred-namespace-ops
Sep 2, 2026
10c0e12
test(file-watcher): bound the loop, not just the wait inside it
Sep 2, 2026
c4a666d
Merge remote-tracking branch 'origin/mikegrier/deferred-namespace-ops…
Sep 2, 2026
69289a8
fix: repair the two CI failures the merge surfaced
Sep 2, 2026
03b9ae0
fix(placement-probe): refuse to invent placement for uncovered proces…
Sep 2, 2026
84b3eb6
fix(placement-probe): survive a stale temporary, and stop two tools b…
Sep 2, 2026
0d26546
test(file-watcher): cover monitor mutation gaps
Sep 2, 2026
80bfaa3
fix(placement-probe): count every online processor in the fingerprint
Sep 2, 2026
f71f792
fix(placement-probe): stop a record splicing two machines, and route …
Sep 2, 2026
4cfd7dd
refactor(platform-probes): route the two new probes through one outpu…
Sep 2, 2026
0599a5d
fix(waitable-queues)!: widen slotwise_mpsc positions to 64 bits on ev…
Sep 2, 2026
24718ca
docs(waitable-queues): state the wait protocol's terminal step everyw…
Sep 2, 2026
07882f0
test(file-enumeration): close mutation gaps in the error and path sur…
Sep 2, 2026
49019f2
test(file-enumeration): close reservation-accounting gaps, and record…
Sep 2, 2026
9a9163c
test: close accessor and boundary mutation gaps across three crates
Sep 2, 2026
a07b50c
test(namespace-request): close accessor and error-surface mutation gaps
Sep 2, 2026
c16845c
test(guard-alloc): split seed parsing from the environment read so it…
Sep 2, 2026
b791418
test(guard-alloc): pin identify's ordinal bound, and record two equiv…
Sep 2, 2026
40bc19d
test(waitable-queues): pin the usize clamp that only matters on a 32-…
Sep 2, 2026
47dfa18
test(placement-probe): pin the plan's arithmetic and the median's rates
Sep 2, 2026
e198b8a
test(topology): exercise the deserializer's refusal paths, and record…
Sep 2, 2026
1baea9b
style(guard-alloc): apply cargo fmt to the seed-parsing tests
Sep 2, 2026
527864d
docs: preserve the 2026-09-02 mutation sweep and queue its remaining …
Sep 2, 2026
590a940
fix(waitable-queues)!: make the capacity ceiling a capacity that is a…
Sep 2, 2026
166d7c1
docs: repair four intra-doc links broken by this branch's own edits
Sep 2, 2026
1cedcbe
docs: plan the claim-protocol prototype (M15), parking the non-blocki…
Sep 2, 2026
2f86201
docs(waitable-queues): record the claim-protocol prior art as D-34
Sep 2, 2026
7c76ad8
docs(waitable-queues): amend D-18 -- outcome stands, reasoning replaced
Sep 2, 2026
67edf36
feat(waitable-queues): add the experimental permit-claiming MPSC (arm A)
Sep 2, 2026
c5e5b1c
feat(probes): measure the permit claim against the shipping shapes (D…
Sep 2, 2026
a5fc191
docs: re-plan M15 -- SH-15.6 was a false binary, and add SH-15.8
Sep 2, 2026
cf6d759
docs(waitable-queues)!: disclose SH-14.1's item-loss defect before 0.1.0
Sep 2, 2026
817dae9
docs(waitable-queues): ship the claim word in two widths (D-37, super…
Sep 2, 2026
d33d690
feat(waitable-queues): widen the permit ticket to u64, and simplify D…
Sep 2, 2026
a43b6a8
refactor(probes): route the remaining twelve probes through the repor…
Sep 2, 2026
5b01b63
docs: re-plan SH-2.2 -- the ioring release it demanded is not needed
Sep 2, 2026
d35f5c1
docs: record SH-2.2's blocker and split its work by who owns each pin
Sep 2, 2026
dcdc402
docs: re-plan the ship checklist so it says what is actually open
Sep 2, 2026
986f1d7
chore: never publish either probe crate to a registry, and delete the…
Sep 2, 2026
cab0bb7
chore(placement-probe): version the tool by date, not by semver
Sep 2, 2026
f1fc4eb
chore(ioring): drop the topology dev-dependency's version, closing SH…
Sep 2, 2026
e90985d
docs: fix an ordering that put the PR review after the merge that clo…
Sep 2, 2026
e167337
docs: record M16, the SH-3.1.1 diff review, and its seven findings
Sep 2, 2026
3f4cc7a
fix(topology): stop counting a cache domain over no processors as a p…
Sep 2, 2026
0cf3cdc
fix(waitable-queues): give Reservation::send the acquire edge its slo…
Sep 2, 2026
4593b33
ci: skip a versionless sibling in the publish wait instead of timing …
Sep 2, 2026
ea733d2
fix(file-watcher): wait for the cancelled read instead of freeing it …
Sep 2, 2026
f1d1ad6
fix(ioring): probe the deep end of the NUMA spike's filler, not the s…
Sep 2, 2026
a6dbb6e
test(thread-ambient): name the transaction restore test for what it c…
Sep 2, 2026
f164972
docs: open a design session on the cache-locality model, blocking SH-…
Sep 2, 2026
e061c60
docs: record the settled direction on the locality model, and two fin…
Sep 2, 2026
5b3b78d
docs: settle provenance placement, absence, and the object-level scalar
Sep 2, 2026
39aa2bf
docs: fold the locality-model work into PR #56, correcting five stale…
Sep 2, 2026
3b64042
docs: settle the concreteness bar, and find the field that proves it
Sep 2, 2026
afcd789
docs: file the execution-domain planner as its own component
Sep 3, 2026
0ef8554
docs(execution-plan): state the shard-set query, and find a sentinel …
Sep 3, 2026
901a05e
docs(execution-plan): state the proximity query, and correct its own …
Sep 3, 2026
2065baf
docs(execution-plan): state the residency query, and correct two clai…
Sep 3, 2026
417f344
docs: ungate and split SH-16.10, whose gating premise was wrong
Sep 3, 2026
473cc84
feat(topology)!: read CPU sets, as a second observation rather than a…
Sep 3, 2026
467a378
docs(topology): record D-13 and D-14, and audit every Option against …
Sep 3, 2026
313a790
docs: hand the planner's requirements to the session, and block EP-1.…
Sep 3, 2026
9f6a1d6
docs: record the two-component architecture, which answers who measures
Sep 3, 2026
36e397d
refactor(topology)!: rename Topology to MachineMemoryTopology
Sep 3, 2026
6584ff9
docs(topology): open the MMT plan to reshape the machine memory topology
Sep 3, 2026
a2edb9a
docs(topology): decide MMT-1.1 on measurement -- a set, by way of mem…
Sep 3, 2026
6b1f762
chore(topology): restore LF endings in DESIGN-NOTES.md
Sep 3, 2026
d8d0654
chore: ignore tpu-mcp .bak files, and untrack one that slipped in
Sep 3, 2026
81f87b9
docs(topology): pin down what MMT-1.2 actually has to decide
Sep 3, 2026
9f26b62
docs(topology): correct an overstated concern in MMT-1.2
Sep 3, 2026
7c8539d
docs(topology): retire the non-atomic-read case from MMT-1.2
Sep 3, 2026
e6de7d6
docs(topology): D-16 -- collect again, and retry is the discriminator
Sep 3, 2026
c826248
docs(topology): drop MMT-1.2's first question, which was never a deci…
Sep 3, 2026
7b2b16e
docs(topology): D-17 -- incoherence is expected in the field, not exotic
Sep 3, 2026
87bc3c8
docs: split recording from reporting, and give reporting to the probe
Sep 3, 2026
4554ca9
docs(topology): close MMT-1.2 with D-18 -- an observation is (subject…
Sep 3, 2026
3497c2f
docs(topology): name the two conflict shapes instead of labelling the…
Sep 3, 2026
9c9db70
docs(topology): present a unified view when the sources align (D-19)
Sep 3, 2026
14ac8a5
docs(topology): the Win32 boundary decides distances (D-20)
Sep 3, 2026
f9a772b
feat(topology)!: remove MachineMemoryTopology::distances and the Dist…
Sep 3, 2026
8f55e2e
docs(topology): record the four-part architecture and settle the crat…
Sep 3, 2026
14036d0
docs(topology-planner): settle the component layout and rename the co…
Sep 3, 2026
d9d0dae
docs(topology): the crate publishes a refined view of the platform (D…
Sep 3, 2026
a96ef78
docs(topology): re-plan M2 on execution -- two items already describe…
Sep 3, 2026
b3f8de4
feat(topology): order granularities by observed inclusion, with a top
Sep 3, 2026
867b47d
feat(topology): add Observed<T>, absence with its reason attached (M2…
Sep 3, 2026
ede72b1
docs(topology): re-plan M3 -- M3+.3's premise is wrong, and M3+.1 was…
Sep 3, 2026
098764c
docs(topology): say what Provenance actually records (M3+.3)
Sep 3, 2026
896b821
docs(topology): split M3+.1 into three sub-steps on execution
Sep 3, 2026
a11c4e2
feat(topology): record which source reported each relation (M3+.1.1)
Sep 3, 2026
7caf3f4
feat(topology): fold CPU Sets into the relation set (M3+.1.2)
Sep 3, 2026
4e73fe1
test(topology): assert the two Provenance properties at the relation …
Sep 3, 2026
b9e0c35
feat(topology)!: remove Domain::id in favour of per-observation label…
Sep 3, 2026
cbfd72e
feat(topology): record per-processor attribute conflicts (M3+.1.4)
Sep 3, 2026
a425779
feat(topology): pairwise proximity and an inclusion-ordered partition…
Sep 3, 2026
a746235
feat(topology): the shard-set and residency surfaces, without sentinels
Sep 3, 2026
997eb18
docs(topology): the CPU-set AllFlags byte is not populated on this bu…
Sep 3, 2026
26a38c0
refactor(topology): the partitioning rule has one implementation (M5+.3)
Sep 3, 2026
0300f39
feat(topology)!: adopt Observed<T> for memory capacity and cache plac…
Sep 3, 2026
bea613a
docs(topology): archive the completed MMT plan (M1-M5)
Sep 3, 2026
f3ccb42
docs: discharge the six SH-16.x items the MMT plan superseded
Sep 3, 2026
be64f17
fix(topology)!: check the record size before reading its Type field
Sep 4, 2026
0ff242d
docs: close SH-3.1.1 and assign the draft promotion as SH-3.1.2
Sep 4, 2026
bd9c573
docs: record the dependency-containment analysis for PR #56
Sep 4, 2026
ee0d9f3
docs(topology): rule on the two record walks (D-24), and replan M6
Sep 4, 2026
b4fad3b
feat(topology)!: one shared record walk, and no panic on a malformed …
Sep 4, 2026
e221bd0
test(waitable-queues): repair three stale sabotage patterns (SH-3.3)
Sep 4, 2026
8ab48c7
docs: correct the predicted release-please bumps for PR #56
Sep 4, 2026
4965b4c
docs: record how to keep a cross-crate breaking commit path-clean (SH…
Sep 4, 2026
e378bc7
chore: detect cross-crate release poisoning at commit time
Sep 4, 2026
cdce13b
docs(ioring): pin the next release to 0.2.1, and record what that obl…
Sep 4, 2026
44171f0
chore: guard a Release-As pin against a later breaking change
Sep 4, 2026
bf26ef0
docs: record the ioring 0.2.1 decision (SH-3.4.2)
Sep 4, 2026
a1820e9
chore(waitable-queues): start the crate at 0.0.1 so its first release…
Sep 4, 2026
9668bd7
docs: compile every published crate's README, and refresh the topolog…
Sep 4, 2026
e00f1ea
fix(topology): qualify four intra-doc links that dangled from domain.rs
Sep 4, 2026
b2e5603
fix(topology): three defects from the PR #56 Copilot review
Sep 4, 2026
5360035
fix(topology): name the current process for CPU sets, and stop claimi…
Sep 4, 2026
25f1c99
docs: state a tested Windows baseline for windows-topology-sys
Sep 4, 2026
75e230c
docs: queue four findings from the PR #56 review that need decisions
Sep 4, 2026
b5b778e
fix(tools): stop inject-mutant reporting a non-compiling mutant as ca…
Sep 4, 2026
9b80cbc
docs: queue the remaining PR #56 review findings (SH-4.8, SH-4.9)
Sep 4, 2026
931d8a4
test(file-watcher): treat ERROR_IO_PENDING as a queued read, not a fa…
Sep 4, 2026
0b726b1
fix(waitable-queues): stop mixing relaxed with acquire/release on one…
Sep 4, 2026
01de0bb
fix(topology): refuse to serialize an unrecognised kind named after a…
Sep 4, 2026
2830f09
fix(placement-probe): never report an unobserved cache relationship a…
Sep 4, 2026
4d8f075
fix(platform-probes): put the host banner in the report instead of on…
Sep 4, 2026
2381d88
fix(ci): let a broken NUMA spike fail the build again
Sep 4, 2026
9d75714
fix(ioring): stop ring_copy reporting a remote run that measured a lo…
Sep 4, 2026
4622d59
docs(placement-probe): say what the build marker actually proves
Sep 4, 2026
e9d85a2
ci(placement-probe): attest released binaries with GitHub build prove…
Sep 4, 2026
15a242f
fix(file-enumeration): assert the default buffer is whole pages, not …
Sep 4, 2026
f62363d
docs(guard-alloc): stop overstating what the parse_seed split made re…
Sep 4, 2026
a9969ed
feat(topology)!: implement D-16's bounded coherence retry, which was …
Sep 4, 2026
0da95a3
fix(topology): reject a float at 2^64 instead of saturating it to u64…
Sep 4, 2026
a3d52a3
fix(placement-probe)!: refuse a processor no memory domain names, nev…
Sep 4, 2026
9257928
docs(file-enumeration): correct the page rationale, which over-claime…
Sep 4, 2026
c45c948
docs(file-enumeration): correct the second copy of the page-alignment…
Sep 4, 2026
9c166ad
docs(file-watcher): say that long-path opt-in does not lift MAX_PATH …
Sep 4, 2026
92bd9e8
docs(file-watcher): correct the relative-path long-path note, which I…
Sep 4, 2026
13171f6
docs(file-watcher): stop the long-path note asserting behaviour nobod…
Sep 4, 2026
91f4796
feat(platform-probes): measure the long-path opt-in instead of docume…
Sep 4, 2026
05b908b
fix(platform-probes): emit the host fingerprint from the three probes…
Sep 4, 2026
1f37988
fix(waitable-queues)!: stop permit_mpsc losing a reserved item to a d…
Sep 4, 2026
cdc82c3
fix(ioring): stop ring_copy calling a node remote when the local one …
Sep 4, 2026
c072a8a
fix(topology)!: stop proximity panicking on a publicly constructible …
Sep 4, 2026
e78154b
docs(topology): say that a CPU-set-only processor is reported, not li…
Sep 4, 2026
f30682d
docs: record that PR #56 is out of draft (SH-3.1.2)
Sep 4, 2026
3cb0272
fix(placement-probe): floor a submitted record's timestamp to the min…
Sep 4, 2026
e451b40
feat(placement-probe)!: withhold the secondary metadata unless the ru…
Sep 4, 2026
9a7393a
docs(placement-probe): say in the README what redaction costs
Sep 4, 2026
dad5ce4
fix(topology): spell Coherence's serialized variants in snake_case
Sep 4, 2026
c8fc721
feat(placement-probe): report a topology disagreement and offer a way…
Sep 4, 2026
14217d5
refactor(placement-probe): say what a result can be traced to, not ho…
Sep 4, 2026
116d4e6
fix(placement-probe): correct release notes and node-zero docs, and c…
Sep 4, 2026
bfc7971
fix(probes): name the host in every probe report, and correct the cra…
Sep 4, 2026
cdb7a21
fix(topology): retry a size-and-fetch pair when the buffer grows unde…
Sep 4, 2026
4833c4b
fix(placement-probe): stop linking into a feature-gated module from u…
Sep 4, 2026
5ad082c
fix(topology): stop the long-path probe leaking, and refuse anomalies…
Sep 4, 2026
231750b
fix(topology): count the long path in UTF-16 units, and make the Prov…
Sep 5, 2026
8270342
docs: record SH-4.13 and SH-4.14 from the PR #56 review threads
Sep 5, 2026
8f8faa4
Merge remote-tracking branch 'origin/main' into mikegrier/deferred-na…
Sep 5, 2026
269ee84
feat(platform-probes): measure the reserving claim word's apportionme…
Sep 5, 2026
d201c06
docs(platform-probes): record rollover times for candidate claim-word…
Sep 5, 2026
ed6cadd
docs(platform-probes): decide to offer claim-word layouts as document…
Sep 5, 2026
80184a1
docs(platform-probes): disambiguate CW-1.6 as the duplicate implement…
Sep 5, 2026
bdd0ad5
docs(platform-probes): unpark M2 and reopen D-36, whose premise the m…
Sep 5, 2026
1f7bb75
docs(platform-probes): merge CW-2.1 and CW-2.2, which cannot be verif…
Sep 5, 2026
7c1c775
refactor(waitable-queues): widen the reserving position to 64 bits
Sep 5, 2026
0016682
feat(waitable-queues)!: make the reserving claim-word layout caller-s…
Sep 5, 2026
44139f0
docs(platform-probes): check off CW-2.1
Sep 5, 2026
eac9d2f
docs(platform-probes): correct CW-2.3, which framed the 128-bit choic…
Sep 5, 2026
45dcd8e
feat(waitable-queues): add an opt-in dwcas feature and the Wide claim…
Sep 5, 2026
5c413bf
docs(platform-probes): record the CW-2.3 decision and its effect on C…
Sep 5, 2026
950dccc
docs(waitable-queues): restate the wrap hazard as a layout choice, su…
Sep 5, 2026
fab14fe
refactor(platform-probes): measure the shipping layouts, deleting the…
Sep 5, 2026
ea333d8
docs(platform-probes): archive the completed claim-word-layout checklist
Sep 5, 2026
e52236a
docs: document the claim layouts and the dwcas feature in the crate R…
Sep 5, 2026
ceb2b83
Merge origin/main, taking the released windows-waitable-queues
Sep 5, 2026
61c6c80
Merge origin/main, taking the released topology reshape
Sep 5, 2026
02e2241
Merge origin/main into mikegrier/deferred-namespace-ops
Sep 5, 2026
1f06f51
fix(placement-probe): restore four blank separators dropped in the merge
Sep 5, 2026
00d3775
Merge origin/main into mikegrier/deferred-namespace-ops
Sep 6, 2026
dbeb77c
Merge origin/main into mikegrier/deferred-namespace-ops
Sep 6, 2026
db58932
Merge origin/main into mikegrier/deferred-namespace-ops
Sep 6, 2026
611cfcd
docs: remove the 0.2.1 release pin, which events overtook
Sep 6, 2026
221d604
Merge origin/main into mikegrier/deferred-namespace-ops
Sep 6, 2026
a0faf50
Merge origin/main into mikegrier/deferred-namespace-ops
Sep 6, 2026
e695424
Merge origin/main into mikegrier/deferred-namespace-ops
Sep 7, 2026
7b9901a
Merge origin/main into mikegrier/deferred-namespace-ops
Sep 8, 2026
fa37bce
fix(tools): guard run-numa-spikes against PowerShell 5.1's terminatin…
Sep 8, 2026
8e2c475
feat(tools): share the native-command guard as dot-sourced tools/comm…
Sep 8, 2026
0df58be
feat(tools): report which Copilot reviews are still outstanding, and …
Sep 8, 2026
e1501f2
fix(platform-probes): correct four probe measurements and archive thr…
Sep 8, 2026
90e1910
Merge origin/main into mikegrier/deferred-namespace-ops
Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,40 @@ jobs:
run: cargo run -p windows-platform-probes --bin probe-ioring --locked
- name: probe magnitudes (completion port)
run: cargo run -p windows-platform-probes --bin probe-completion-port --locked
# Printed on every build on purpose. Hosted runners are a heterogeneous
# fleet, so accumulating this across builds turns ordinary CI into a slow
# survey of what real machines look like -- and the negative result, that
# cloud runners are consistently single-node, is itself evidence for how
# the execution-domain design should size itself by default. The probe
# emits one `x-probe-topology` JSON line so the results can be mined out
# of logs mechanically rather than read by eye.
- name: probe magnitudes (topology)
run: cargo run -p windows-platform-probes --bin probe-topology --locked
# `--release` on the next two, and ONLY on those two, because they are the
# only probes here that report nanoseconds. Everything above measures
# BEHAVIOUR -- what an API refuses, what a handle reports, which errors
# appear -- and that does not change with the optimisation level, so those
# keep the dev profile and the build time it saves.
#
# These two do not have that luxury. They compare operations a few tens of
# nanoseconds apart, and in an unoptimized build the loop, the closure
# indirection, and the request construction around each measured call
# carry overhead that does not shrink uniformly across them. The RATIOS
# are what the design reads -- "a doorbell is x% of a submit", "a captured
# handle costs Nx a built request" -- and a ratio of two figures each
# inflated by a different amount is not the shipping one.
#
# Decides how much machinery the two-layer ring's doorbell needs. Its
# park-and-wake handshake is bounded rather than INFINITE on purpose: the
# first version of it deadlocked, because an auto-reset event does not
# count signals and the waiter's count never caught up. A probe that can
# hang is a probe that can hang a build.
- name: probe magnitudes (doorbell cost)
run: cargo run -p windows-platform-probes --bin probe-doorbell-cost --locked --release
# Read with the doorbell probe above: together they say whether the
# queue's mechanics or the request's own cost deserves the attention.
- name: probe magnitudes (request cost)
run: cargo run -p windows-platform-probes --bin probe-request-cost --locked --release
# Both halves of the long-path pair, deliberately. Either alone says
# nothing: the finding is the *difference* between two executables that
# differ only in whether `build.rs` embedded the `longPathAware` manifest,
Expand Down
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,17 @@ target

# Scratch / diagnostic output (git-ignored per repo instructions)
.scratch/

# windows-placement-probe writes its backup record into the working directory,
# so running the tool from inside a checkout leaves one of these behind. Ignored
# because `git add -A` will otherwise sweep a machine's measurements into a
# commit, which has already happened once.
placement-probe-v*.json
.vs
.vscode/settings.json

# tpu-mcp writes <file>.bak beside any file it repairs. Those are transient
# backups of a repair that has already been verified and committed, so they are
# never wanted in history -- and being adjacent to the file they back up, they
# are easy to sweep up with `git add -A` without noticing.
*.bak
842 changes: 842 additions & 0 deletions CHECKLIST-io-domains.md

Large diffs are not rendered by default.

745 changes: 745 additions & 0 deletions CHECKLIST-placement-tool.md

Large diffs are not rendered by default.

1,473 changes: 1,473 additions & 0 deletions CHECKLIST-ship-topology-and-queues.md

Large diffs are not rendered by default.

85 changes: 85 additions & 0 deletions CHECKLIST.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,91 @@ be settled rather than discovered later.
completion, then submits the query. A compound entry is reserved for a measured performance argument
and would be a fusion of these two entries rather than a capability they lack. Depends on M21.3.

## M34 -- Tooling

Numbered M34 rather than M22 because the three root-level checklists share one milestone space:
[CHECKLIST.md](CHECKLIST.md) holds M19-M21, [CHECKLIST-thread-ambient.md](CHECKLIST-thread-ambient.md)
M22-M29, and [CHECKLIST-io-domains.md](CHECKLIST-io-domains.md) M30-M33.

- [x] **M34.1** -- Promote the ad-hoc sabotage harness into a reusable tool. -> [completed 2026-08-31](COMPLETED-CHECKLIST.md#m341)

- [ ] **M34.3** -- **Archive the completed bodies in
[CHECKLIST-io-domains.md](CHECKLIST-io-domains.md)**, which holds twelve checked items still
carrying their full write-ups. The completed-item rule moves a large one to
[COMPLETED-CHECKLIST.md](COMPLETED-CHECKLIST.md) immediately and leaves a one-line anchored stub, so
the active file stays a list of what is *left*. Raised in review 5072735803 on pull request #56,
where it was noted that the problem recurs throughout that file rather than at the one line cited.
[M34.1](COMPLETED-CHECKLIST.md#m341) is the worked example of the shape: `### <a id="..."></a>` in
the archive under a dated group, a stub with a completion link in its place.
Bookkeeping with no bearing on correctness, which is why it is queued rather than folded into a
branch already under review -- but it is 757 lines of checklist that a reader currently has to scan
past to find the open work, so it is not cosmetic either.

- [ ] **M34.2** -- **Route every tool's output through one sink, per the repository's own rule**: never
call `println!`/`eprintln!` from more than one site in a tool; introduce a writer trait, sink or
formatter at the first occurrence and route everything through it.
**Updated 2026-09-04 (second pass): every probe now leads its report with the host line.** The
banner had reached only the seven binaries this item named plus the shared long-path renderer,
which left **eight** probes -- `cancel_io`, `completion_port`, `device_map`, `error_mode`,
`handle_state`, `ioring`, `pool_growth`, `worker_context` -- composing a report that named no
machine. `pool_growth` was the sharpest case: it printed "every number here is from this host and
this Windows build" while giving a reader no way to tell which host that was. The rest are
behavioural findings about what *this* Windows does, which is equally uninterpretable unattributed.
All eight now emit `banner_line()` as the first line of the returned text, verified by running each
binary rather than by reading the diff. Raised by Copilot at review `5118237348`.
**Updated 2026-09-04: the conversion is done; what remains is the capture test.** The item said
"seven binaries violate this today" and named them, from review 5072622803 on pull request #56.
Five had already been converted when a later review round re-checked, and the last two --
[queue_contention.rs](crates/windows-platform-probes/src/bin/queue_contention.rs) and
[peer_index_cache.rs](crates/windows-platform-probes/src/bin/peer_index_cache.rs) -- were fixed in
that pull request, so all seven now compose their whole report as text and hand it to a sink at one
place. Verified by counting, not by reading: no probe binary contains a direct `println!`/
`eprintln!` at all. The two survivors were the *banner*, which those two rendered by calling a
helper that wrote to stdout itself -- so a captured report was missing the one line naming the
machine that produced it, and the banner also emitted mid-`render`, ahead of the body, making the
order on a terminal luck rather than construction.
**The stdout-writing banner helpers are gone rather than documented against.** `print_banner` and
`print_banner_with` were removed and `banner_lines_with` returns the string instead, because three
call sites had each grown a comment warning about them -- a rule restated three times instead of a
hazard removed once. The defect class is now unreachable by construction: there is no
banner helper that writes to a stream.
**The PowerShell tools are NOT part of this item, because they are already done.** A later review
round on the same pull request observed that the inventory above named only Rust binaries while five
scripts emitted from many sites, so those were converted in that pull request rather than queued
here: [inject-mutant.ps1](tools/inject-mutant.ps1),
[check-publishable.ps1](tools/check-publishable.ps1),
[run-numa-spikes.ps1](tools/run-numa-spikes.ps1), [run-mutants.ps1](tools/run-mutants.ps1) and
[run-sabotage.ps1](tools/run-sabotage.ps1) each now route everything through one `Write-Report`
sink. They were small enough to convert in place, which is exactly why they did not need deferring.
(`run-sabotage.ps1`'s `Exit-WithMessage` is deliberately outside its sink: that path writes to
stderr and exits, and there the destination is part of the meaning.)
**What remains is the capture test, and it has a structural obstacle worth naming.**
The point of the rule is that output becomes testable, so this item is not checked off on the
refactor alone -- an abstraction introduced without a capture-based test spends the cost and skips
the benefit. `Captured` exists in [report.rs](crates/windows-platform-probes/src/report.rs) for
exactly that purpose, and `banner_line` is already asserted directly.
**The obstacle: each probe's `render()` lives in its own `bin` target, which nothing can import.**
That is precisely why the two banner defects survived every test -- there was no reachable seam to
assert against. Closing it means moving each `render()` into the crate's library and leaving `main`
as the one place that names the stream, which is a real refactor rather than a test to write.
Decide the seam once and apply it uniformly.
A PowerShell sink is a function whose destination can be swapped, but this workspace runs no
PowerShell test harness in which to assert against it, and inventing one to cover five diagnostic
scripts is not a cost this item is willing to spend without deciding to adopt such a harness first.
Start with `placement_probe`: its output is a published artifact that strangers paste into a
discussion thread, so "can this be captured and asserted end to end?" has real value there rather
than being architectural tidiness.

- [x] **M34.4** -- Share the native-command guard through a dot-sourced `tools/common.ps1`, route
every capture site through it, and prove it on both PowerShell hosts.
-> [completed 2026-09-07](COMPLETED-CHECKLIST.md#m344)

## M35 -- Measure what the long-path opt-in actually does

- [x] **M35.1** -- Measure whether the long-path opt-in lifts `MAX_PATH` for a relative path, and
whether it does so without re-parsing it. It does both, and the regularize-then-prefix hypothesis
is falsified. -> [completed 2026-09-04](COMPLETED-CHECKLIST.md#m351)

## M-inf -- Parked

Ungated work with no identified predecessor deliverable.
Expand Down
Loading