Repository navigation
v0.2.34.0 feat: the recorded test output in the Application pane and the rebuilt test replay section (Cycle 0049, PR-B1 of 3) - #116
Merged
ryota-murakami merged 15 commits intoOct 22, 2026
Conversation
…y's selected step (Cycle 0049, PR-B1) The Application pane is now a test replay's one output surface (Design 3): one document per history, updated in place for each later moment, with the header `Recorded test output · <t> s` over the test's file and title path, `[stderr] ` marks, terminal and bidirectional controls removed, the Node inspector's lines folded into one muted line, the last 65,536 code points kept with the count of what is left out, the verdict at the result and the ended-early line otherwise. It follows the latest output until the learner scrolls up, and Jump to latest follows again. The Study pane's test replay section is reordered (DS16): status, the selected moment with its explanation in one polite live region, the not-recorded and unavailable-source lines, the sticky transport with Previous stop and Next stop first (DS12), the learning material drawn by the browser replay's sequence renderer with the selected step marked and the other steps of its moment reading `Same recorded moment` (Design 5, DS21), and the events in a collapsed list with humanized rows. Tests: output utilities, the Application document and its hostile markup, the section projection, stop moves, the workspace's in-place updates and stop navigation, the viewport's restore copy, and the Reader DOM case over both documents (keyboard path, three widths, an in-place update keeping scroll, selection and focus), red first on main's build. The browser replay's Learning summary markup is identical to its golden copy taken before the renderer was shared. Refs #107
…zes the Application pane (Cycle 0049, PR-B1) The document looked up each kept line with a query over the whole output, so an update of a replay whose kept tail held 32,768 short lines took 3.5 s in Chrome (local OCR review, critical: the pane hangs at every step). It now lists the kept lines by number once per update (61 ms for the same update). The Reader DOM case of a 32,768-line update fails on the earlier document (over 1 s) and passes on this one. Refs #107
…e (Cycle 0049, PR-B1) The script test that keeps every file the Reader DOM check reads beside the script did not list the golden markup fixture this pull request reads the same way (new URL relative to the script), so /ship's pre-gate failed on it. The list now names it, and the test carries its value card. The 32,768-line update case states why its time bound is no speed claim. Refs #107
…1-test-replay-output-and-summary
…1-test-replay-output-and-summary
…d the Study section (Cycle 0049 PR-B1)
…e Study section (Cycle 0049 PR-B1) - Show recorded output and Focus application open a closed Application pane again at the selected moment (was Restore, which failed with "The three retained Study panes are unavailable."; QA critical). - A learning step id `__proto__` keeps its action label (own data properties; the client reads own labels only). - The chosen step commits with the selection: a refused or failed selection keeps the learner's step, and a seek, Play or Inspect onto another event shows that event's first step. - The Application document keeps its follow choice and its latest view with the replay they belong to: another replay starts following, and a document the editor loads again shows the latest moment. - The retired replay's output index is released; the restore copy is written only when a replacement panel needs it; step labels use one Map. - Dead `state` field, unreachable status branch and stale docs removed; the end tolerance is a named constant.
…nt-skills docs (owner, 2026-10-22)
…rly line (Cycle 0049 PR-B1, Step 9 red team) The Application pane read the last event of a history this window is still recording as an early end. projectNodeTestApplication now takes the history's status and gives the ended-early line only to a history that has stopped recording.
…le 0049 PR-B1) - pnpm health failed with 15 findings beyond the measured baseline: the test replay's client renderers (transport, playhead, lines, events, event row, Inspect) and installNodeTestOutput are split into small helpers, each at most cyclomatic 9 (installNodeTestOutput itself 4). - The Application document wrote its whole view into webview state at every moment (20 a second during Play); writes are now joined, at most one per TEST_OUTPUT_STATE_WRITE_INTERVAL_MS, the learner's own follow choice at once, and the last moment when the document is left. - A move back to a shorter moment no longer turns following on: the scroll clamp is the document's own. - stripTerminalControls removes DEL, the C1 controls and the 8-bit CSI. - selectNodeHistoryEvent takes the step choice as an argument; dead inputs and stale docs removed; projectNodeTestApplication uses the selected entry. - Tests: restore copy cleared by another history, Focus application in a browser replay, a failed or overtaken step action, a background render, another replay's document, and five Reader DOM cases (closed pane row, older kept view, state writes, shorter moment, reload not following); each fails before its fix.
- A test replay that is opening reads as loading by its own marker, not by the loading flag a background render shares: a render that settled in the middle of an open made the Application pane say "No test output recorded up to this moment." of a replay whose first moment was still being shown. The open ends its marker before its last publish and publishes once more when a render already ended the loading state. - stripTerminalControls recognizes the 8-bit OSC (U+009D) and the 8-bit string terminator (U+009C): an OSC ended by U+009C swallowed the text and line feeds printed after it. - seconds() reads MILLISECONDS_PER_SECOND; two docstrings name their real meaning and callers. - Tests: a render that settles while a test replay opens, an OSC ended by U+009C and an 8-bit OSC, and a Reader DOM case for the state-write interval with held timers; each fails before its fix.
… cost and memory (Cycle 0049 PR-B1) - F134 (Codex structured review, P1, measured: 25 to 331 MiB): an unfinished output line is kept once, as chunks shared by the entries that continue it, not as one growing copy per entry. - F107, F108: the kept tail is assembled linearly from the end with each line's cost read from the index, and a long line is cut from its end only (cutTextToTail and the unfinished line's chunks). - F111: the Application view is projected once per shown moment; every 250 ms refresh assembled the tail again (about 0.5 s for 65,536 short lines, measured). - The opening marker of a test replay open is set inside its try, so a first publish that throws no longer leaves every later moment loading (a regression of 5359c28). - Node 24's inspector help line and its "Debugger ending on" line are folded with the other inspector lines. - Tests: one copy of an unfinished line, the tail's cost for 262,144 short lines and an 8 MiB line, the view reused for an unchanged moment, a failed first publish, Node 24's inspector lines; each fails before its fix.
…rreversible steps for the owner; installed skill names (Step 11 review)
…on pane and the rebuilt test replay section (Cycle 0049, PR-B1 of 3)
…unverified-stop line, the transport order and the reopened pane's limit)
28 of 126 tasks
ryota-murakami
deleted the
codex/cycle-0049-pr-b1-test-replay-output-and-summary
branch
October 22, 2026 13:33
6 of 8 tasks
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Cycle 0049's second pull request (PR-B1 of 3, Issue #107): a saved Vitest test replay shows its recorded test output in the Application pane, and the Study pane's Test replay section is rebuilt around the selected moment.
Recorded test output · <t> sover the test's file and title path,[stderr]marks, terminal, C1 and bidirectional controls removed, the Node inspector's own lines folded into one muted count (Node 24's included), the last 65,536 code points with the count of what was left out, the verdict or the ended-early line. It follows the latest output until the learner scrolls up (Jump to latest), keeps scroll position, selection and focus across moments, and keeps the follow choice and latest moment in webview state, written at most once per 500 ms. Moving through a long output costs about its kept tail: the index keeps an unfinished line once, assembles the tail linearly and is projected once per shown moment.aria-current="true") andSame recorded moment, events in a collapsed list, andThe Application pane is closed.with Show recorded output, which opens the pane again at the selected moment.Delivery state:
/shipdid not converge. Its three fixing cycles each found and fixed real defects (pass 1b: 3029b7d, 602a0fc; pass 2: 9bed4ac; pass 3: 5359c28), so it stopped withconverged:false. Under the owner's order this pull request merges after required CI, with the open Critical and Major defects recorded in the Issue (comment "/shipfor PR-B1 stopped unconverged") and every other finding carried there as a task (F105 to F154). Step 11's adversarial reviews found a P1 (F134, memory exhaustion on output without line feeds, measured 25 to 331 MiB), fixed with F107, F108 and F111 and two Medium findings in ef39b3e; Steps 9 to 11 were not repeated (the fixing cycles are spent), and the review records do not bind to one tree (Step 11.5 mismatch). The final tree is verified below and by required CI.Not observed natively. No native run of this version yet: the recorded-source slot, the transitions and the native round N49 in VS Code and Cursor come with PR-B2. Browser QA (Reader DOM) proves no native pixels.
Both from the Reader DOM check's fixture (a neutral job scheduler test), in Chromium.
Test Coverage
Pre-Landing Review
pnpm health's 15 findings beyond its baseline (a CI gate) and a wrong rowGate edits: 31 listed, 11 read, 0 findings (the RH-1 hunk is added test cases; the other read hunks move assertions to the Application pane's output or replace an interim-sentence test with stronger String-catalog tests).
Exploratory QA
Functional QA per pass: the Show recorded output and Focus application probes (failing in pass 1b, passing since 3029b7d), the PR-B1 unit files, the static checks;
pnpm healthexit 0 on 5359c28 (5,657 tests, 0 failed, no finding beyond the measured baseline).Plan Completion
Plan version 7 (Issue #107): C49-3 (recorded test output, AC5), C49-5 (one summary renderer with the selected step, AC7), C49-8 (the Reader DOM cases, red first) and the Study-section half of C49-6 are delivered here; C49-4 (recorded source, 4A and gap marks) and C49-9 (N49) come with PR-B2. Partial and not-done items of the audit are tasks F115 to F124.
Issues
Refs #107
Verification Results
On the final head
000e566(tree70621f47bf6f), macOS 26.7.1 arm64, Node 24.21.0, pnpm 12.4.2, fromextension/:pnpm testpnpm test:packagepnpm health(alone)format:check,typecheck,lint,health:static,dupes,dead-codenode --test .codex/restore-product-context.test.mjs--stage preflight)Load-dependent failures met on the Mac while the load average was 15 to 118, in files this PR does not change, each passing alone: F4, F5, F6, F135, F154 (Issue tasks).
Documentation
Status: updated. Three factual corrections in
extension/README.md; no blockers.Audited scope: base
068fec6bto HEAD3cbde22oncodex/cycle-0049-pr-b1-test-replay-output-and-summary(14 commits, 49 files; candidatec49-prb1-docs-220222, all 54 recorded hashes matched, nothing staged, unstaged or untracked). Docs: AGENTS.md, CHANGELOG.md (0.2.34.0 entry, read only), PRODUCT_GOAL.md (learning replay contract, read only), README.md, docs/agents/domain.md, docs/agents/issue-tracker.md, docs/agents/triage-labels.md, extension/README.md, extension/skills/codebook/SKILL.md. The changed source was read where needed to check the claims: the Study section and Application pane wording and the transport markup.Documentation health:
extension/README.md: Updated. The package check example now namescodebook-0.2.34.vsix; it said 0.2.33, while the package command writescodebook-<manifest version>.vsix. The Recorded walkthroughs section now names the lineRecorded source unavailable for this stop., because thecaptured source unavailablelabel this PR removed is gone. The Test replay paragraph now says Previous stop and Next stop come first in the transport, and adds the 0.2.34.0 entry's limit that a pane Show recorded output opens again can open beside the source.README.md: Current. It names 0.2.34.0, PR v0.2.33.0 feat: a Vitest test run the chat explained becomes a saved test replay (Cycle 0049, PR-A of 3) #113 as the delivered 0.2.33.0, and the three-PR plan.AGENTS.md: Current. The new owner rule and the Agent skills section match docs/agents; all five triage labels exist on GitHub.docs/agents/*.md: Current. They are new, reached from AGENTS.md, and gh 2.103.0 has--parentand--add-sub-issue.CHANGELOG.md: Current, not edited. The 0.2.34.0 entry matches VERSION,extension/package.json,EXTENSION_VERSIONand the package test. Each behavior the entry names now has a sentence in the packaged README, and every quoted string matches the source.PRODUCT_GOAL.md: Current, not edited. The recorded test output is labeled as recorded, andSource and debugger not recorded at this moment.matches 4A.extension/skills/codebook/SKILL.md: Current. Skill 1.0.46 is unchanged and holds no Application or Study pane claim.Documentation coverage (debt, not filled):
No saved explanation for the result.,Output up to this moment is in the Application pane.,No learning summary was saved for this test replay., the Application pane'sLoading recorded test output…,No test output recorded up to this moment.,No test output recorded.and its footer, the cut line's; the first line below is cutending, and the transport that stays in view while the summary scrolls.Diagram drift: none. No architecture diagram names a changed module; the file tree in docs/agents/domain.md is a generic example.
Banned terms: none (the repository keeps no list). Closing keywords: none in the added doc lines.
Test plan
pnpm test,pnpm test:packageandpnpm healthon the final head (above)red