compass(docs): pin 16's first CPU-tier census and 08's Revised paragraph to their commits - #349
Conversation
…paragraph in 08 to their commits 16_execution_plan.md, P0.1's per-task CPU-tier bullet: - The 130 of 189 files and 4030 / 0 / 149 / 3, rc=0, are pinned to 105ca41, P0.1's head. That is the branch column of PR #6's gate table, and 105ca41^{tree} == 4c16792^{tree} (fbcb036). - The clock spread is now the one the record pins: six runs at d737f15 and 7ff80cc (commit 8c0ee37). The wider 25.4-31.7 s range came from seventeen runs across ten commits that the record does not name. - 3956 is pinned to the base 042aad9, the control column of the same table. - 3925 and 4022 were never recorded against a commit, so they are dropped. 4005 at 3afcb48 stays. The 49 -> 74 growth is stated as +17 and +8. - "Green is not exercised": the 22 files are pinned at 105ca41. The skip decomposition is pinned to b963c94, where P0.2 measured it, and carried forward because tests/ and atom/ differ between the two commits only by the two tests/compass files, which skip nothing. - The trigger-file header counts are pinned at fada742, the commit the header itself names. 08_validation_protocol.md: - In the Revised paragraph, 189 / 29 of 159 / 30 are pinned at fada742. The driver claim was re-measured there on node 18, xiaobizh_n18_cpu, one file per process. All 28 GENERATED entries fail collection with "Get GPU arch from rocminfo failed". test_lmcache_offload_disk_integration.py fails 2 tests with "hipHostMalloc failed: 100" and then does not exit. tests/plugin collected alone gives the same "153 tests collected, 7 errors in 1.45s", rc=2, as at 236abfd. - The Measured result cell names bdd244c, where #345 read GATE_CPU_RC=0 (r4087085010). - The paragraph under the table keeps only its test_dp_* / test_forward_mode sentence (r4087085189, net -2). Closes #344 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
| whole-suite denominator the figure is at least 32 of 189**, because `tests/plugin/` is not | ||
| purely a packaging problem: collecting it alone at `236abfd9a` in `xiaobizh_n18_cpu` gives | ||
| purely a packaging problem: collecting it alone at `236abfd9a`, and again at `fada7424e`, in `xiaobizh_n18_cpu` gives | ||
| `153 tests collected, 7 errors in 1.45s`, rc=2, and those 7 decompose as **3 `rocminfo`** |
There was a problem hiding this comment.
Non-blocking. Principle 8 ("Every claim carries its measurement. A number without a source is a defect").
This sentence attaches one wall time, 1.45s, to two runs: one at 236abfd9a and one at fada7424e. I ran the same collection on node 18, in xiaobizh_n18_cpu, on a git archive of fada7424e, with atom.__file__ = /tmp/pr349r1-gates/fada/ATOM/atom/__init__.py. python -m pytest -q --collect-only tests/plugin gave rc=2 and 153 tests collected, 7 errors in 1.41s. The 7 errors split the same way the text says: 3 rocminfo, 1 No module named 'sglang' and 3 cannot import name 'fused_gdn_gating'.
The counts and the rc reproduce. The time is noise, so it cannot be a reading of both commits. Either drop in 1.45s, or say it is the 236abfd9a reading. For example: "gives 153 tests collected, 7 errors, rc=2 (1.45 s at 236abfd9a)".
| `test_vllm_deepseek_v4_proxy_state_arena_layout.py`), **1 `ModuleNotFoundError: No module | ||
| named 'sglang'`**, and **3 `ImportError: cannot import name 'fused_gdn_gating' from | ||
| 'atom.model_ops.attention_gdn' (unknown location)`** — a module left half-initialised by the | ||
| first three, not a fourth cause. 29 + 3 = 32 is a floor: the other 23 plugin files collect |
There was a problem hiding this comment.
Non-blocking. Principle 7 ("Never report an aggregate without its decomposition").
This PR narrows the numerator to "the 29 … that cpu_gate_exclude.txt lists". The PR body gives the reason: "two tier files also reach rocminfo when run alone". I measured both at fada7424e on node 18, in xiaobizh_n18_cpu, on a git archive with atom.__file__ under /tmp/pr349r1-gates/fada/ATOM. Each was run alone:
tests/test_postprocess_width.py: rc=2,1 error in 0.76s,Get GPU arch from rocminfo failed.tests/test_v4_checkpoint_slot_copy.py: rc=2,1 error in 0.94s, the samerocminfoerror.
So the per-file figure measured at fada7424e is 29 + 2 + 3 = 34 of 189. "At least 32" is still true. But this sentence explains the floor by pointing at the 23 unrun plugin files alone, and leaves out a part that has been measured. Suggestion: "29 + 3 = 32, plus the 2 tier files the table below names, so at least 34; the other 23 plugin files …". Or keep 32 and name the 2 as a known excess.
| captured before any pipe. The 4030 at `105ca4197` is **3956 ATOM tests + 74 `tests/compass/` tests**, | ||
| stated as its parts because a single total cannot show which half moved (principle 7). The | ||
| file count moves 128 → 130 and the test count 3956 → 4030 because this tree adds | ||
| 3956 is the same gate at the base, `042aad97d`, which has no `tests/compass/`. The |
There was a problem hiding this comment.
Non-blocking. Principle 8, and ponytail shrink:.
The citation is correct. #6's gate table has 042aad97d in its control column: 3956 passed, 0 failed, 149 skipped, 3 xfailed, rc=0. That control was not the base tree as it stands, though. #6's body says: "Control is fork/feature/atomcompass_new at 042aad97d with only scripts/compass/ copied in". git ls-tree 042aad97d scripts/ has no scripts/compass/, so a reader who checks out 042aad97d finds no gate to run. The words "the same gate" are only literally true.
shrink: L126-129. This sentence and the one that ends at L129 ("the P0.2 readings above are the same suite without them") make one point twice: the 3956 half has no tests/compass/. One sentence can carry the pin and the control's construction. For example: "The 3956 is #6's control, 042aad97d with #6's scripts/compass/ copied in and no tests/compass/, as in the P0.2 readings above; 105ca4197 adds tests/compass/test_cpu_gate_exclude.py and tests/compass/test_gate_gpu_surplus.py, so the file count moves 128 → 130." That is -1 line.
|
Review cycle 1: APPROVE at head No finding is blocking. There are 3 inline comments, all non-blocking: r4087445424 ( Before reviewing, I read the eight design principles in Citation by citation
N1 (non-blocking, no line). 3925 and 4022 can be attributed, and the 3925 decomposition that was removed was wrongThis falls under principle 8. Dropping both figures is allowed by the brief ("pin … or" drop), so the tree is right. The PR body's reason for dropping them is wrong, though, and #350's scope repeats that reason.
Action: no commit is needed here. Please post a correction on #350: Driver spot-check at
|
| file (run alone) | rc | result |
|---|---|---|
tests/test_dcp_topk.py (GENERATED) |
2 | 1 error in 0.63s, Get GPU arch from rocminfo failed |
tests/test_eplb_module_c.py (GENERATED) |
2 | 1 error in 0.69s, rocminfo |
tests/model_ops/test_balance_router_logits.py (GENERATED) |
2 | 1 error in 0.68s, rocminfo |
tests/plugin --collect-only |
2 | 153 tests collected, 7 errors in 1.41s: 3 rocminfo, 1 No module named 'sglang', 3 cannot import name 'fused_gdn_gating' |
tests/test_postprocess_width.py (tier) |
2 | 1 error in 0.76s, rocminfo |
tests/test_v4_checkpoint_slot_copy.py (tier) |
2 | 1 error in 0.94s, rocminfo |
The wording "the 29 … that cpu_gate_exclude.txt lists reach the driver" is exactly true, and it is right to qualify it. The last two rows show that 2 more files reach it too. That affects the "at least 32" explanation at 08:39 (r4087445580). The plugin time was 1.41 s, not 1.45 s (r4087445424).
Grep and sweep
git grep -n -E "4030|130 of" <rev> -- atom/compass/design/, at bothf8b2b2deband the merged tree6ee3a6c07, finds 3 lines:16:117,16:124and16:127. Each one names105ca4197.130 of 189,3925and4022give 0 hits.- I swept both files at the head for
N passed|failed|skipped|files|testsand forN stimings:- In the changed regions, every figure names a commit. The one exception is the
1.45sshared by two commits (r4087445424). - The
16:115"(30 files) … the 29" lead-in is pinned by the same sentence's105ca4197, and it also holds at the tip. 16:193's "30 paths" holds at105ca4197and at the tip.- Outside the changed regions, the only unpinned count is
08:65, "gives 4 passed in the GPU container", which is already filed as compass(docs): scripts/compass/README.md still says the 4030 row has no commit, and lists 3925 / 4022 unpinned #350. 08:64and08:68("no tests ran", "1 skipped") are pinned at83daf636dby08:76-77.
- In the changed regions, every figure names a commit. The one exception is the
ponytail-review
16_execution_plan.md L126-129: shrink: "The 3956 is the same gate at the base…" and "the P0.2 readings above are the same suite without them" say "3956 has no tests/compass" twice. One sentence, and it names the control's copied scripts/compass (r4087445720).
net: -1 lines possible.
Gate: merged tree, one run
- Tip read again just before posting:
f21492580525601f8e6e76efcd4e89b9e95eda1a. The PR head isf8b2b2deb, still a draft, with no labels. git merge-tree --write-tree f21492580 f8b2b2deb=6ee3a6c07354b990444184a4edabd41b49d42cbf. That is clean, and the same as the developer's.- Stamp:
git commit-tree 6ee3a6c07 -p f21492580 -p f8b2b2deb=824151dce. No ref was created..compass-commit=824151dce…..compass-changedholds the 2 doc files.
- Staged with
git archive+docker exec -i … tar -xinto/tmp/pr349r1-gates/merged/ATOM, with matching tar md5 at both ends.atom.__file__=/tmp/pr349r1-gates/merged/ATOM/atom/__init__.py. The tree's ownscripts/compass/gate_cpu.sh --junitxml=…ran undertimeout -k 10 1800, not piped, with load average about 31. - Printed
commit: 824151dce (stamp)andgpu: not required (.compass-changed stamp). - 5258 passed, 155 skipped, 3 xfailed, 189.98 s;
GATE_CPU_RC=0. The junit has 5416 test cases, 0 failures and 0 errors. This equals the developer's control (f21492580) and branch counts exactly. - No timing class failed, so none needed a re-run:
TestTheRegionIsNotCopiedPerChunk,TestNoSizeAtWhichACallStopsBeingOne::…[minimax]andtest_gc_utils.py::test_freezing_twice_is_additive_and_harmless.
Next task in this area should watch
#350 should work from N1's provenance rather than from this PR body's "unattributable". That means pinning 3925 at 83daf636d and 4022 at 71d2a1ac2 in scripts/compass/README.md:125-126, not dropping them.
Closes #344
Dev record
What was done. I chose to pin, not delete. Each figure in P0.1's CPU-tier bullets in
16, and in the "Revised 2026-09-20" paragraph in08, now names the commit it was measured at. Figures I could not tie to a commit are dropped. There is one commit,f8b2b2deb, ond96da1086. It changes 27 lines and removes 29, docs only.16_execution_plan.md105ca4197, 4030 passed, 0 failed, 149 skipped, 3 xfailed, rc=0"105ca4197with 4030 / 0 / 149 / 3 andGATE_CPU_RC=0. #6's reviewer reproduced the same counts at9664ed025.git ls-treeat105ca4197gives 189 test files: 30 intests/plugin/, 29 excluded, 130 in the tier.105ca4197is P0.1's head and landed as4c16792d9, the same tree"git rev-parse 105ca4197^{tree} 4c16792d9^{tree}givesfbcb03674twice.d737f15e7and7ff80cc4b, gave the same counts, and the clock read 25.6-30.8 s of pytest inside 31.6-36.9 s of wall"8c0ee374f's message and diff: "six runs, three at d737f15 and three at 7ff80cc … the same 4030 / 0 / 149 / 3 in all six". Both commits are pre-restack commits of #6's branch (git merge-base --is-ancestorfails for both; both resolve onjgong5/ATOM). The old 25.4-31.7 / 31.1-37.8 range came from "seventeen runs across ten commits" (#6's body), and no record names those commits, so it is replaced rather than pinned.105ca4197is 3956 ATOM + 74tests/compass/"; "The 3956 is the same gate at the base,042aad97d"042aad97d, 3956 / 0 / 149 / 3. #6's reviewer measuredtests/compassat 66 + 8 = 74 passed.3afcb4880, withtests/compassat 49 tests"; "+17 … the other 8"3afcb4880is unchanged text (commitb78e0bc97's message: "4005 … at 3afcb48 on node 18"). The arithmetic is 49 + 17 + 8 = 74. 3925 and 4022 are dropped.git log -Straces them tob78e0bc97and5ca21de2b, and neither commit names a tree for them. They survive only inscripts/compass/README.md, which is outside this file set.105ca4197, 22 collect no test at all"gpu_gate_triggers.txt's header at4c16792d9reads "Measured at fada742 … CPU tier 108 files collect >=1 test, 22 collect none".fada7424eand105ca4197have the sametests/(105ca4197only restamps that header).b963c9411, where the same 22 sat inside a 128-file gate whose 149 skips were 68 distinct reasons … Both carry to105ca4197: itstests/and code differ fromb963c9411's only by the twotests/compass/files above, which collect tests and skip none"4c16792d9^:16_execution_plan.mdstates the P0.2 bullet atb963c9411: 128 files handed, 22 collect none, 149 skips = 68 reasons.git diff --stat b963c9411 105ca4197 -- tests atomshows only the twotests/compass/files plusatom/compassdocs. There are 149 skips on both sides of #6's table.fada7424e: 189 test files, 130 CPU tier, …)"08_validation_protocol.mdfada7424ethere are 189 test files undertests/, and the 29 of the 159 outsidetests/plugin/thatscripts/compass/cpu_gate_exclude.txtlists reach the driver, each run alone: 28 at collection … plus 1 …hipHostMalloc failed: 100"git ls-treeatfada7424e: 189 / 30 / 29, so 159 are non-plugin. I re-measured the driver claim on node 18, inxiaobizh_n18_cpu, on agit archiveoffada7424ewithatom.__file__=/tmp/i344gates/fada/ATOM/atom/__init__.py. I ran onepytest <file>per process undertimeout -k 10 150. All 28 GENERATED entries give rc=2,ERROR collectingandRuntimeError: Get GPU arch from rocminfo failed.test_lmcache_offload_disk_integration.pycollects, gives2 failed in 5.69swithRuntimeError: hipHostMalloc failed: 100twice, and then does not exit, so the timeout killed it (rc=124). I wrote "thatcpu_gate_exclude.txtlists" rather than a bare "29 reach the driver" because two tier files also reachrocminfowhen run alone. The row at :49 already says so.236abfd9a, and again atfada7424e, inxiaobizh_n18_cpugives153 tests collected, 7 errors in 1.45s, rc=2"pytest tests/plugin --collect-onlygives rc=2 and153 tests collected, 7 errors in 1.45s. The errors are 3rocminfo(the same three files), 1No module named 'sglang'and 3cannot import name 'fused_gdn_gating'. That makes "at least 32 of 189" a reading atfada7424e.tests/pluginis the same tree object,fb7ee190d, at both commits.tests/plugin/'s 30 files atfada7424e"git ls-tree.GATE_CPU_RC=0, read atbdd244c57inxiaobizh_n18_cpu" (r4087085010)bdd244c57,GATE_CPU_RC=0.test_dp_*/test_forward_modesentence kept (r4087085189,shrink:)What was decided that the brief did not cover.
What surprised me.
scripts/compass/README.md:113says the 4030 row's "commit not recorded". It was recorded: #6's own gate table measured it at105ca4197. That README row, and its 3925 / 4022 paragraph, are outside this file set, so they are left undone here. They need a follow-up issue.Also left undone.
08:66("gives 4 passed in the GPU container") is a pass count with no commit. It is outside the issue's regions, and it needs a GPU-container reading to pin.Named result
grep -rn -E "4030|130 of" atom/compass/design/atf8b2b2debfinds 3 lines, all in16_execution_plan.md(117, 124, 127), and each carries105ca4197.130 of 189gives 0 hits, and3925/4022give 0 hits.Gate 1: ATOM's suite, unmodified, as a delta against a control
Node 18,
xiaobizh_n18_cpu, one run at a time. Each tree was staged withgit archiveinto/tmp/i344gates/{control,branch}/ATOMviadocker exec -i … tar -x. A content md5 of every staged file matched on both ends.atom.__file__was asserted under each root before its run. Each run used the tree's ownscripts/compass/gate_cpu.sh --junitxml=…undertimeout -k 10 1800, not piped..compass-changedholds this PR's 2 files on both sides.commit:printedGATE_CPU_RCf21492580(the tip moved pastd96da1086to #329 while I worked)f21492580 (stamp)6ee3a6c07, stamp43549daee(git commit-tree, parents tip + head)43549daee (stamp)TestTheRegionIsNotCopiedPerChunk,TestNoSizeAtWhichACallStopsBeingOne::…[minimax]andtest_gc_utils.py::test_freezing_twice_is_additive_and_harmless.git merge-tree --write-tree f21492580 f8b2b2deb=6ee3a6c07354b990444184a4edabd41b49d42cbf, clean. compass(runner): the speculative refusal reads its field with no default; refuse gpu_memory_utilization outside dict keys #329 touches onlyatom/compass/runner/overrides.pyand threetests/compass/files.🤖 Generated with Claude Code