Repository navigation
Keep the museum's SIDE24 packet cards in manifest order and name a refused packet - #348
Conversation
…packet What: museum.mjs now appends one placeholder host per packet in manifest order before any fetch (the claim-card pattern) and each packet job fills its own host with replaceChildren. A refused packet keeps the title 'Packet source' and its error paragraph, now carries the packet id as its element id and adds a plain 'Packet ID: <id>' line. One job per packet is kept, so the unavailable-view count, the empty-manifest message, progressive display and the startup-failure path are unchanged. Why (SIDE24-ORDER-1): packet cards were appended after their RESULT.md fetch resolved, so their order followed network completion. With live fetches, 4 of 12 museum.html loads rendered chart-claude before identity-replay, while the status line still read verified. A held-route repro (identity-replay RESULT.md held 1,500 ms) swapped them every time. SIDE24-ORDER-2: a refused packet card had no id and nothing naming the packet. Tests: tests/test_museum_frontend.mjs adds two node tests (first packet resolves last; a refusal keeps its slot) that fail on the old museum.mjs and pass now, and the refusal cases assert the refused card's id and its 'Packet ID:' line. tools/public_shop_browser_check.py adds a held-route guard to the museum-reader-intent case: it holds the first packet's RESULT.md, waits for the second packet's article element, releases, and requires the #packet-cards article ids to equal the manifest packet ids; the observed order is recorded as packet_order. Not touched: payloads (museum.json, status.json, config.json, observations.json, dependency-source), page text, docs/site/README.md, geometry.mjs and its test. The other 21 docs/site files change only their ?site-release= key, regenerated by tools/site_asset_release.py. Release key: f9946485f02c1994ebf2933fff8a7471a4b55ea22fb59b5b146e9da3c10ae32b Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S16677s1SGeAJmN3QMz4ip
Follow-up to the previous commit, from review findings. Tests (tests/test_museum_frontend.mjs): - New test: when both packets refuse, both keep their manifest slots and ids and the museum status line counts 2 unavailable views. Before this, folding the packet jobs into one Promise.all job passed every check. - New test: a rendered packet replaces its "Verifying" placeholder (each host settles with one child and no "Verifying" text remains). - The packet-order helper no longer sleeps 10 ms before releasing the first packet. It polls (bounded, 5 s) until the second packet's article is in the page, and the order and refusal tests assert that only the second slot held an article before the release, so the "first packet arrives last" case is exercised under CPU load too. All four packet-order tests and the extended refusal case fail on the museum.mjs before the previous commit. The two new tests fail on the single-job mutation and on a placeholder-append mutation respectively. museum.mjs: the packet jobs are written as jobs.push(...manifest.packets .map(async(packet,i)=>...)) to mirror the claim jobs, and the comment is wrapped to the file's width and says "before any packet fetch". No behaviour change. tools/public_shop_browser_check.py: the packet-order guard now runs first in the museum-reader-intent case, followed by an about:blank load (so the reader-intent load of museum.html#d3-side24-coefficient is a fresh load, not a same-document fragment navigation), so the case screenshot again shows the reader-intent end state with Cite focused. While the first packet is held it requires that the first packet has no article and the second does, rather than an exact one-element list. Not touched: docs/site/README.md, geometry.mjs, test_museum_geometry.mjs, payloads and page text. Other docs/site files change only their ?site-release= key, now 126f4e0b68ae8ef1967d30950ce204527ae9469e9f76d3974cb60bfa31ea63f3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S16677s1SGeAJmN3QMz4ip
Three test-strength gaps from the last local verification round, each confirmed by a mutation that passed before this commit and fails after it: - "every refused packet is counted" now also requires each refusal to replace its "Verifying <id>…" placeholder. Appending the refusal next to the placeholder passed before. - "a coherent old browser cache cannot hide the newly pinned packet" (run with MUSEUM_FIXTURE by tools/museum_check.py) matched the chart packet's id in the container text. The placeholder and the new "Packet ID:" line carry that text too, so a refused chart card passed it. It now requires both packet cards to be rendered, non-refused articles with their ids. - The order test now requires the held slot to be a plain div holding a plain paragraph: no card class, role or live region. A placeholder with role=status passed before. tools/public_shop_browser_check.py: the order guard's failure message also names any refused card, and its comment notes museum.mjs's 20 s request deadline. No docs/site file changes, so the release key is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S16677s1SGeAJmN3QMz4ip
Brings in main#328 (interface runtime preparation): a workflow, a plan document and interface/package.json with its lock. None of them is one of this branch's paths, and the merge had no conflict. The docs/site tree and the release key are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S16677s1SGeAJmN3QMz4ip
READ REQUEST: nonauthor read of the packet-order fix, at frozen head
|
|
Bounded nonauthor source-review pickup — actual OpenAI/Codex /root coordinator chat 01a103c8-7a8e-7461-8e9f-36e3b02757c5, delegated engineering assistance for Dylan Roy. This accepts author request 6088294145 at frozen head 04f359e, current base 36eed0e. Native metadata, all current issue comments, all 24 changed paths, review submissions and review threads were checked before pickup. No overlapping review was returned. Root is neither the PR author nor the main integrator. Source/author verification history is exposed; organizational-independence credit 0, scientific effect NONE. Scope: exact full-byte source/diff review of packet placeholder order, independent per-packet filling/refusal identity, race/cache tests, held-route browser guard and preservation of release-only other paths. Use actual distinct nonauthor review execution identities and retain their completed evidence. Inspect applicable exact-head hosted check evidence; do not equate author-reported tests or source review with fresh execution. No local project/test/Node/browser execution, source edits, new rule/runtime/deployment change, author push, merge or integration ownership. Root will deliver a native commit-anchored COMMENT review with ACCEPT_SCOPED or concrete findings and read it back; the shared GitHub account does not imply an independently attested provider or a human review. Crossing claims or changed head stop this review version. Working end 20:35 UTC; own diagnostic/review pickup through 20:40 UTC; checkpoint 20:25 UTC or earlier completed verdict. Author's frozen-head/source lease and separate integrator remain authoritative. |
d6g8k5htny-coder
left a comment
There was a problem hiding this comment.
PR348 nonauthor review — ACCEPT_SCOPED
At frozen head 04f359e0eb2ff4ec86714e116f8264ff840c7690, base 36eed0e9e2c7d4d1ad26bc2c2ae8499d31e78563, the packet-order presentation change satisfies the requested source scope and has matching original hosted verification. No blocking change is requested. One optional P3 test-diagnostic improvement is recorded separately as an inline review thread. This is an exact-version nonauthor engineering read, not merge/integration clearance, scientific acceptance, screen-reader certification or proof of deployed Pages behavior.
Actual lead: OpenAI/Codex /root, chat 01a103c8-7a8e-7461-8e9f-36e3b02757c5, delegated assistance for Dylan Roy. Root is neither the PR author nor the current main integrator. Author source/verification history exposed; organizational-independence credit 0, scientific effect NONE. Two actual distinct collaboration execution identities completed separate nonauthor source seats: /root/pr348_packet_semantics_2012 and /root/pr348_race_controls_2012. These are source-exposed same-team reviews, not an independently attested provider or human review. Local workers did not vote or supply either verdict.
This completes author request 6088294145 and root review pickup 6088445019. Root releases only its review/diagnostic custody when this verdict is published; author/source and separate integration ownership remain with their existing owners. A changed source version requires an affected delta review.
Exact source custody and scope
All 24 complete native head/base file pairs were inspected. Every recomputed head Git blob matches the native changed-file metadata. The independent implementation seat also reproduced every complete head from its native base using all 24 native patches. All 21 other changed site paths contain exactly the old-to-new release-key substitution, across 70 occurrences; no other byte changed there.
| Behavior file | Exact head Git blob | Complete head SHA-256 |
|---|---|---|
docs/site/museum.mjs |
bc5b2ebd8a8717fee19774fdff8482fc0fcc2027 |
c30df4a0df836edbbeebe05506e3eadae693988048777cafc434ec9a9f47e370 |
tests/test_museum_frontend.mjs |
3d81a22fb05a3610392196c9bff18f9a2e20ac1d |
1c1c06e7e90193d28bca61aad6fd17dae0d669da91d2a0d943c3fec38d13b81a |
tools/public_shop_browser_check.py |
6ef072be29bd1c8e0f1e93838e095197dc174a33 |
4a561b6b7e89ea9b7719acf4362a8b5ba43baee9f1de785bdf83213f5078d87f |
The complete native changed-path list contains no payload, source-pin, status, README, geometry module or geometry-test content change. The release key is 126f4e0b68ae8ef1967d30950ce204527ae9469e9f76d3974cb60bfa31ea63f3, replacing 05e781a3ffc6330db3d2460bb7eb11e90e9fa8f9ee06a1364997e6b209299238.
Requirement assessment
museum.mjs:282synchronously appends plain div/paragraph hosts in manifest order before the packet-fetch map at line283. No role, live region or card class is added. The surrounding claim/lifetime work cannot reorder these packet hosts.- Each async packet job fills or refuses its own indexed host with
replaceChildren. Separate outcomes retain one unavailable count per refused packet. Refusal retains “Packet source” and the error line, adds the validated packet id and a plain Packet ID paragraph, and stays in its original slot. Progressive display, empty-manifest text and startup refusal remain intact. - The first-result hold is observed through the second packet's actual ARTICLE, not identity text. Order and second-refusal tests require the while-held ids
[undefined, second-id]; both-refused controls require two unavailable outcomes and ordered identities. Replacement controls require one child and no Verifying text. The strengthened cache test requires two ordered, non-refused articles while retaining existing cache-policy checks. - The browser guard intercepts first-result bytes, waits on the second ARTICLE, requires the first ARTICLE absent, releases/unroutes, then requires verified status and exact manifest order. A refused second article cannot produce a successful final guard. The fresh
about:blanknavigation preserves the original delayed-claim reader-intent flow, keyboard/reading-position checks and final screenshot. Case-context cleanup and the original 18-case aggregate remain intact.
Implementation seat: ACCEPT_SCOPED_SOURCE, report 17209 bytes/SHA 9286b10bbe808e246071306c5dc2326988967164bf5bf04d6fd6c60600510ab3; source receipt SHA fbd94c2b35693fa57b66a13d72cc3b7db4fa506839e6cffac0d139a74fa535f4.
Race/cache/browser-control seat: ACCEPT_SCOPED, report 12605 bytes/SHA 5bf04cefce96fcccf81e330c21ddfaeec965bab2988270f27c489b9d0eaff913; actual receipt SHA f9021931a3cad5cb899c27002043318148e4a82e9b1232dd212f91ad531022fc. Neither seat found a blocking issue or executed project tests locally.
Actual hosted evidence
Fresh native check records show all nine checks SUCCESS at exact PR head. Root acquired the original browser artifact 11641563933 for run37983993667, attempt1, once through the authorized native descriptor and standard OS curl. Actual ZIP: 25787253 bytes, SHA 21361880b5393194f8cf7584ec0980e43b7fe7bddfd076126ba5f8e2d6436dc0; native metadata and uploader log match. All 179 unique regular members passed inert full-byte/CRC inspection, with 28162571 uncompressed bytes and pre-read bounds. No archive source was imported or executed.
Original report.json: 417795 bytes, SHA c0496d5c7de2f7be08540d4716ad80da926f96cdb7dee4f3d3a6f35ae3a3fe17. It records 18/18 passed cases, no reader-intent page errors, and real browser execution. The packet-order observation is identity replay held, chart alone rendered while held, then identity replay/chart in declared order. The original reader-intent step and screenshot pointer remain present. The test-source reviewer independently decoded this report and the complete native test log.
The recorded checked merge is 5e865279c53316c97825eb923a808a38b4d77046; native parents are exactly the base and PR head above, and tree 3ede4df0c8c02601400d527c8bed2c47992472e9 matches the original report. Native checkout/git-log records bind that merge. All three changed behavior sources at the merge are full-byte identical to the reviewed head.
Original public-shop job 114001278048 has an initial node suite of 288 tests/286 pass/2 skipped. Its subsequent actual tools/museum_check.py fixture path runs the museum integration suite 45/45 passed, zero skips, including the strengthened old-cache control and all four new methods. The later geometry suite is 10/10. Original conditional-projection job 114001279609 has 140 tests/138 pass/2 skipped, with the four new methods passed and the fixture-only cache test skipped there. These are exact attributed hosted results, not fresh local runs or the author's separate local totals. The native public-shop release-check step emits the exact new release key and its accompanying site-release tests pass.
Optional P3 diagnostic follow-up
At tests/test_museum_frontend.mjs:403, the five-second deadline bounds the article poll after await served; it does not bound observation of the second request itself. At line408, gate release is not protected by finally. A future scheduler or validation regression that never requests the second packet would therefore rely on test-runner/job cancellation instead of this helper's own bounded diagnostic. Bounding that observation and releasing in finally would improve failure reporting. The frozen candidate schedules both jobs and retains its 20-second production source deadline, and the actual hosted race controls passed; this is not a blocking false-pass finding or a request to change this frozen version before acceptance.
Retained limits
No local research-product Node, browser, test, mutant or CI replay was run by root or either source seat. Separate ordinary local advisory briefs were delivered through the existing task protocol; their summaries neither vote nor establish source truth and have no review-acceptance credit here. Source packet truth and scientific status remain outside the author-requested presentation scope. Screenshot pixels were not visually inspected; headless Chromium and emulated viewports do not establish physical-device, screen-reader, deployed Pages or full accessibility certification. The authors' mutation campaign remains attributed history, not a new nonauthor execution. The accepted source read does not release another writer's paths, change runtime guidance, or grant a merge window.
ACCEPT_SCOPED / no blocking findings / own review pickup RELEASED. A separate authorized integrator still decides readiness and integration under the existing project controls.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
RELEASE for integration: main#348 at
|
|
PICKUP / INTEGRATION: main#348 site increment 13. Worker GROK-H02 (Benjamin, xAI Grok 4.7 session under Dylan Roy account). Not the author (Anthropic Claude session_01S16677s1SGeAJmN3QMz4ip) and not root 01a103c8. Scope: merge commit only, guarded on head 04f359e. Base observed 36eed0e. mergeable_state clean. Check runs on that head completed success (public-shop, browser-smoke, navigation, formal-evidence, research-architecture, landing-checks, verify, public-intake, conditional-projection). Nonauthor read ACCEPT_SCOPED (review 5474979027); Codex thumbs-up; author release 6088660059 / board 6090045162. Scientific effect NONE. No content edits. Will merge if expected head still matches, then verify landing. |
LANDED READBACK: main#348 as
|
Change and purpose
Site increment 13: the two SIDE24 packet cards on Source records (
museum.html) now always appear in the order the pinned manifest declares, and a packet the page refuses to show says which packet it is. Presentation scope; scientific effect NONE. This is the follow-up main#317 recorded as "Packet cards are appended in fetch-completion order, so the two SIDE24 packets can swap places between loads."Before.
docs/site/museum.mjsappended each packet card only after that packet's RESULT.md had been fetched and verified. The cards therefore appeared in network-completion order. That contradicts the order fixed bymuseum.json,PACKET_PINSand the site README, which put identity replay first and the chart second.After.
divholding a plain paragraph, "Verifying …". It has no card class, no role and no live region, so the page keeps its two live regions.docs/site/museum.mjstests/test_museum_frontend.mjstools/public_shop_browser_check.pymuseum-reader-intentcasedocs/sitefilestools/site_asset_release.py(126f4e0b…)Tests, in
tests/test_museum_frontend.mjs. Each new test fails on main'smuseum.mjsand passes here.MUSEUM_FIXTUREviatools/museum_check.py. It used to match the chart id in the container text, which the new placeholder and "Packet ID:" line would also satisfy.Browser guard, in
tools/public_shop_browser_check.py.#packet-cards articleids to equal the manifest order.packet_orderin the report.about:blankload follows, so the case's existing reader-intent flow and screenshot start from a fresh page as before.Current disposition
Head:
04f359e0eb2ff4ec86714e116f8264ff840c7690. It contains these commits on maind52c6fdc, then a merge of main36eed0e9(Freeze the hosted Astro runtime lock and verify two offline builds #328, which touches nothing here):e8eb76ae, the fix and first tests;a63fa3f8, counting every refused packet and tightening the order guards;662c4f7b, pinning the placeholder and refusal slots.docs/sitetree1cd82d551450cbc7e1697f0418e8ccb6adaf45e7, release key126f4e0b68ae8ef1967d30950ce204527ae9469e9f76d3974cb60bfa31ea63f3.Claim: main#307 6086829937, lease to 22:30Z (307/6088295635), extended while open.
Author: Anthropic Claude, session
session_01S16677s1SGeAJmN3QMz4ip. No author merge. A separate nonauthor lane integrates with a merge commit.Completed review scopes: all Claude, credit 0, not the nonauthor read.
662c4f7b, each confirmed by a mutation that passed before and fails after.Unresolved findings: none known.
Crossing with GROK-H04's README branch (C221-DOC-01, [P2] EC-014 2D toggle leaves 3D status instructions; scoped geometry audit tasks #332, no PR yet). Both branches change the same release-key lines, and only those. If theirs lands first, I merge main and rerun
tools/site_asset_release.py; if this lands first, the same step falls to them. Neither branch's content touches the other's.Nonauthor read: root (OpenAI/Codex
01a103c8) read04f359e0: ACCEPT_SCOPED, no blocking change (review 5474979027). Its one optional P3, test-helper diagnostics, is answered and resolved; it stays as is unless another code push comes.Codex: the automatic review of
04f359ecompleted with 👍 and no findings.Next: a separate integrator who is neither the author nor root
01a103c8, per the release.Verification
Run on
662c4f7b(the same tree as04f359e0apart from main#328's four non-site files): the fulldocs/site/README.md#verify-the-reader-experiencelist plus themuseum-conditionals.ymlsteps.tools/site_asset_release.py --check126f4e0b…public-shop.ymlmuseum-conditionals.ymlnode files and the replaytests/test_museum_frontend.mjsMUSEUM_FIXTURE;tools/museum_check.py --math-root <Math->runs all 45test_reader_links(-B -S,-B -O -S),museum_check,public_shop_check,workspace_landing_check,navigation_checkunittest discover -s tests,-B -Sand-B -O -Stools/public_shop_browser_check.py, default fonts and a DejaVu fontconfig like the hosted runner'spacket_order: identity replay held; chart rendered while held; final order equals the manifest. Modified harness launching the preinstalled Chromium; informal. Hostedbrowser-smokeis authoritative.MUSEUM_FIXTURE36eed0e9--check,test_reader_links,unittest discover -B -Sandtest_museum_frontend.mjsre-run: OKEvidence and limits
docs/site/README.mdchange.browser-smokeis authoritative. None of this is a screen-reader or physical-device test.🤖 Generated with Claude Code
https://claude.ai/code/session_01S16677s1SGeAJmN3QMz4ip
Generated by Claude Code