You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
JJF1Y39: housekeeping (README unslop, CI boot check, format pass) - #7
Speculum is kept as a light monitor service (un-archived 2026-10-12; berth takes new dashboard development). This PR readies the repo for that role. No feature work: no design-contract, state-shape, or collector-behavior lines touched; the windows CI job is byte-identical.
What changed
README.md (3 lines): removed three AI-slop tells (an em dash, "rides the proxy", "serves as"). All facts, the ToC, and the voice are intact.
.github/workflows/verify.yml (+15 lines, linux job only): the job now boots the collector headless (temp XDG_DATA_HOME, port 18792), hits /api/snapshot and /api/stream, and tears itself down via an EXIT trap. Written to pass under set -euo pipefail: no pipe into head on the snapshot line (EPIPE-safe past the 64 KB buffer), the stream check writes to a file with timeout 2 ... || true.
Proof (run in the worktree, branch JJF1Y39-housekeeping)
node smoke/ui-primitives.mjs ALL PASS (54 assertions)
node smoke/shell.mjs ALL PASS (119 assertions)
The exact CI step run under set -euo pipefail: green path exits 0 against a 97,604-byte snapshot; simulated boot-crash path exits 1 with the trap firing; port 18792 clear after every run, no orphan collector.
Not verified: an actual ubuntu-latest runner, ?demo browser mode (manual by design).
Review
Two rounds. Round 1 found three real defects in the CI step (F1 pipefail vs curl -m on the endless SSE stream, F2 json.tool | head EPIPE, F3 orphan on red paths); all fixed and re-verified by execution in round 2, which cleared the diff. Full records: handoffs run folder 2026-10-12-housekeeping (brief, plan, implement, review, review2).
Review round 1 (NInfer review stage) found three real defects in the new CI step plus one reporting inaccuracy: F1 set -o pipefail + curl -sN -m 2 ... | head on the endless SSE stream can never pass (curl exits 28); F2 json.tool | head reds on EPIPE once the pretty-printed snapshot passes the ~64 KB pipe buffer; F3 the red paths skip the kill and leave an orphan collector; F4 the implementation record overstated the proof. All fixed in fix(JJF1Y39), re-verified in round 2 by executing the exact YAML command sequence under set -euo pipefail on green and red paths (snapshot 97,604 bytes, stream check via temp file, trap fires, port clear). Round-2 verdict: diff clean, mergeable. Full records: run folder 2026-10-12-housekeeping (brief, plan, implement, review, review2).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Speculum is kept as a light monitor service (un-archived 2026-10-12; berth takes new dashboard development). This PR readies the repo for that role. No feature work: no design-contract, state-shape, or collector-behavior lines touched; the windows CI job is byte-identical.
What changed
README.md(3 lines): removed three AI-slop tells (an em dash, "rides the proxy", "serves as"). All facts, the ToC, and the voice are intact..github/workflows/verify.yml(+15 lines, linux job only): the job now boots the collector headless (tempXDG_DATA_HOME, port 18792), hits/api/snapshotand/api/stream, and tears itself down via anEXITtrap. Written to pass underset -euo pipefail: no pipe intoheadon the snapshot line (EPIPE-safe past the 64 KB buffer), the stream check writes to a file withtimeout 2 ... || true.Proof (run in the worktree, branch JJF1Y39-housekeeping)
python3 -m py_compile collector/*.pyPASSpython3 -m unittest discover -s collector -p "test_*.py"106 tests OK (skipped=3 platform gates)node smoke/ui-primitives.mjsALL PASS (54 assertions)node smoke/shell.mjsALL PASS (119 assertions)set -euo pipefail: green path exits 0 against a 97,604-byte snapshot; simulated boot-crash path exits 1 with the trap firing; port 18792 clear after every run, no orphan collector.?demobrowser mode (manual by design).Review
Two rounds. Round 1 found three real defects in the CI step (F1 pipefail vs
curl -mon the endless SSE stream, F2json.tool | headEPIPE, F3 orphan on red paths); all fixed and re-verified by execution in round 2, which cleared the diff. Full records: handoffs run folder2026-10-12-housekeeping(brief, plan, implement, review, review2).Ticket: JJF1Y39 (OME board "speculum").