Skip to content

feat(workbench): download originals archives - #198

Merged
DamianReeves merged 26 commits into
mainfrom
DamianReeves/model-originals-archive
Oct 22, 2026
Merged

DamianReeves merged 26 commits into
mainfrom
DamianReeves/model-originals-archive

Conversation

@DamianReeves

@DamianReeves DamianReeves commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

#197 has merged as 04f64b1ff9cbb33b5d8095d8807235d3a549a18d. This PR now targets main and includes that actual squash commit through integration 226f1f4b489e147a37664d2f25baebfe2ea06cdc. Its complete source tree is identical to tested predecessor917a614. Normal squash queue only; no bypass is requested.

Connected Originals adds Download originals archive. The ZIP64 archive preserves exact original bytes, binary sidecars, empty files and explicit empty directories. Each download belongs to the current workspace and inventory revision, retires on Close or replacement, and clears pending state after page lifecycle retirement. Failed openings preserve the prior model.

The adapter validates the complete portable namespace before copying, snapshots originals privately, writes within checked fixed capacity and consumes each download output once. Shared bridge types remain DOM-free for worker type checking. The pinned zip.js dependency includes its license and provenance. Current head 226f1f4b489e147a37664d2f25baebfe2ea06cdc preserves the vendored license bytes across checkout. Git's core.autocrlf=true filter reproduces the mismatching CRLF bytes before the attribute, and restores the exact pinned package hash afterward. The version, hash check and byte comparison remain strict.

Editor and browser controls wait for the actual selected document key and CodeMirror's current draft to agree before replacing text. A delayed host echo does not block a settled editor. Source replacement uses CodeMirror's select-all command. Two real browser regressions cover a held selected-document reconciliation and a genuine user edit awaiting its host input event. Both retain their original oracles; the latter fails with the former echo requirement and passes when only that requirement is removed. Readiness failures report bounded state metadata without source contents or replacing the original error. The negative compilation/save control retains failed-compilation and exact saved-content assertions with a multi-character incomplete form, since a lone opening bracket intentionally wraps selected text.

The editor focus handler preserves select-all through CodeMirror's delayed focus notification. Connected worksheet controls retain the real source/revision report, result 42, rendered currentness and saved native bytes. The stack conflict resolution retains #197's project-creation helper and exact rendered result assertions alongside this PR's source/revision, late-save, cancellation and disposal checks.

The unrelated macOS endpoint-test failure reproduced locally from unchanged base code. Its 150 ms ACK deadline could expire during Node/TypeScript module startup before any Open frame. The control now selects its single original deadline after module import and before the factory opens either endpoint. Production code, the deadline duration and every assertion are unchanged. No opened producer receives an extension. Failure-only CLI transfer diagnostics also preserve bounded, redacted evidence.

Validation and source association:

  • Tested source 18206c561e9f53b5e4d342e857ff9bcef8d00ccf contains dependency head f76d664. It passes the full ordinary browser workflow, eight workspace-file browser tests, all 14 actual endpoint tests, type checking of 397 files across five projects, lint, MoonBit formatting, validation and the normal pre-push hook. The ACK control has a preserved local failing baseline and passing successor. Earlier editor regressions and their oracles remain intact. The only successor change is the byte-preserving license attribute; its Git-filter comparison and normal pre-push checks pass.
  • Fresh CI and three-platform headless qualification are pending on exact head226f1f4. Actual Windows package confirmation is pending. The normal pre-push gates pass on this integration. Complete tree equality to917a614 and landed dependency equality tof76d6644 were checked mechanically. Earlier checks retain their earlier source association. The older queue timeout's exact DOM state was unavailable; it is not claimed as a measured reproduction of the held-echo control.
  • Feature checkpoint 1e249ca6 passed 74 originals tests. Production encoding and independent extraction cover 100,064 directory-only and mixed entries, an exact 64 MiB binary original, empty files and empty directories.
  • A real connected browser fixture-host journey downloaded a 174,443-byte archive with exact BOM/CRLF YAML bytes and 1,001 explicit directories. Independent extraction and currentness checks passed. The separate parent checker accepts the captured bytes and rejects cause-specific corruptions. These feature results retain their recorded unchanged production-input association.

The squash integration encountered the same workspace browser-test history conflict. Restoring the already-resolved current file yields an exact full-tree match to917a614, with all dependency fixes preserved. There are no changed application/test inputs requiring a duplicate local browser run. Current-head CI and complete review/queue checks remain required before the normal squash queue.

Tracked by morphir-etg2.22.2. Its complete HTML design and done/pending checklist are stored in beads. These checks establish product and format behavior. Maintained browser/checker binding, full connected MCK/platform qualification and browser back/forward-cache acceptance remain open campaign work.

Keep kit, suite and report semantics in the canonical MCK while the
MoonBit CLI owns explicit backend selection and process supervision.
Qualify opaque argv, canonical verdicts, actual model operations and
adapter cleanup through built and installed CLI entry points.

Refs: morphir-ukvn.5.64.22, morphir-ukvn.5.64.23
Write native stderr with its UTF-8 byte length so embedded NULs cannot truncate canonical diagnostics. Exercise built and installed CLI text channels with NUL and Unicode process fixtures.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-21T16:53:26.864860Z e4f111c PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Worksheet autosave can replace the shared status after evaluation. Check the retained exact result after the save instead.

A transfer deadline can expire before dispatch. Permit zero or one generation and cover pre-dispatch timeout without publication.
@DamianReeves
DamianReeves added this pull request to the merge queue Oct 21, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 21, 2026
Synchronize CodeMirror focus before browser select-all so its delayed focus update cannot restore the previous caret during replacement. Retain the real focus/replacement regression and both original workspace controls.
Verify the actual matching report and saved source across independent save replies. Tie pending fixture waits and observer disposal to test cancellation and real resource cleanup.
Capture bounded redacted timeout reports and host events before fixture disposal removes evidence needed to classify early deadline failures.
The worksheet click can return while the editor still holds compiled
source. Reconciliation during browser insertion clears select-all and
leaves the worksheet sample behind. Wait for the intended document and
rendered editor state before replacing its text.

Signed-off-by: Damian Reeves <[email protected]>
@DamianReeves
DamianReeves added this pull request to the merge queue Oct 22, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 22, 2026
Playwright sent Ctrl+Shift+z with key "z". A real keyboard reports key "Z".
CodeMirror looks up Ctrl-z first for a lowercase character key, so the redo
press ran undo whenever history remained. That happened when the filled
text and the trailing space became separate history events, which is
timing dependent and occurred under CI load on Linux.

Reproduced in the Playwright 1.64.1 Linux image: 5 of 24 runs failed at the
redo wait, and the logged keydown events showed the second undo. With the
space forced into its own history event, key "z" failed 6 of 6 runs and
key "Z" passed 6 of 6.

Claude-Session: https://claude.ai/code/session_01Uqbs1b3vn3y3B5Cn9JPsNQ
Pin the six published v0.4.0-beta.10 archives by SHA-256, with source and
fixture revision 477e3ce7d86ad447c85fc2bfcb64832b387a4be7. The headless
gate acquires the prebuilt backend for its host with mck-release.mbtx and
requires MCK qualification on every platform. It also retains the
acquisition receipt and runner pin. The old-source authenticated host and
installed producer builds keep their existing pin.

Claude-Session: https://claude.ai/code/session_01Uqbs1b3vn3y3B5Cn9JPsNQ
Wait for the actual source document and rendered editor before replacing text. Use CodeMirror select-all so the editor owns the replacement selection, and retain a real imported-document ordering regression.

Use a multi-character incomplete form for the negative compile/save control. A lone opening bracket intentionally wraps the selected text; the failed compile and exact saved-content checks remain.

Signed-off-by: Damian Reeves <[email protected]>
Three browser fills raced a render that the previous step had queued:

- The project folder follows the name in a later render. When that render
  arrived between fill's select-all and insert, the folder became
  "quotespackages/quotes", so packages/quotes/morphir.toml was never written.
  The loose root-manifest regex still matched the corrupted member.
- The worksheet and an opened file replace the editor document after the
  click. A fill that starts first keeps its text in front of the new
  document, for example "33(define (identity value) value)\n".

fillNewProject now waits for the derived folder before it types the folder,
and checks the exact typed value. The editor fills wait for the shown
document. The root-manifest assertions now match the exact members entry.

Reproduced in the Playwright 1.64.1 Linux image with a Linux native owner
and 8 parallel loops: 7 of 48 runs failed, including the CI ENOENT at
workspace-files-browser.test.ts:74 and the connected savedText failure seen
on main. After the change, 64 of 64 runs passed under the same load.

Claude-Session: https://claude.ai/code/session_01Uqbs1b3vn3y3B5Cn9JPsNQ
@DamianReeves
DamianReeves added this pull request to the merge queue Oct 22, 2026
Windows CI ran the released-backend cancellation for the first time. It
failed with "Real adapter did not start" after the fixed 25 second wait.
The leftover job request showed the helper still on its second preflight
runner call (kit status), so the canonical command had not started yet.
Each supervised runner call on Windows starts a PowerShell job.

Receipts now record the duration of every delegated and direct call. The
summary line reports the count, total and slowest delegated call. The
cancellation phases wait up to 150 seconds for the real adapter and name
any pending supervised runner calls when it does not start. The deadline
phase takes its budget from the slowest observed start, so the deadline
still expires while the real adapter hangs. The adapter-removal and
report-refusal assertions are unchanged.
Readiness follows the mounted document key and current CodeMirror draft. The host rendered value can lag a valid edit.

Signed-off-by: Damian Reeves <[email protected]>
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 22, 2026
On Windows CI the deadline phase ended with exit 1 instead of 124. The
hanging adapter reached the canonical runner's own per-request timeout
(run --timeout, default 30000 ms) before the bridge deadline. The runner
then completed with a failed case.

The cancellation phases now pass run --timeout 60 s beyond the bridge
budget, so only the bridge's cancellation or deadline ends the adapter.
The canonical session timeout default (1800000 ms) is already longer.
Under a stripped host environment, every supervised Windows job took about
22 seconds before its command started. PowerShell command autoloading for
Get-Item, ConvertFrom-Json and Add-Type searched PSModulePath. Windows
PowerShell inserts the all-users Program Files modules directory, and on
CI runners that lookup took about 22 s. Windows probe runs 39715632034 and
39718454509 timed ConvertFrom-Json at 22-23 s whenever that directory was
on the effective path, and at 0.3-0.9 s otherwise.

windows-job.ps1 now disables module autoloading and imports
Microsoft.PowerShell.Management and Microsoft.PowerShell.Utility by
absolute $PSHOME paths, so it never searches PSModulePath. The launcher
and model environments are unchanged. The supervision test starts a job
from a stripped host. It requires the job to start within 8 s, and the
model environment to receive no PSModulePath.
@DamianReeves
DamianReeves changed the base branch from main to DamianReeves/mck-runner-bridge October 22, 2026 04:16
Prevent Windows checkout conversion from changing the vendored ZIP notice. Keep the dependency hash and exact byte comparison unchanged.

Signed-off-by: Damian Reeves <[email protected]>
@DamianReeves
DamianReeves changed the base branch from DamianReeves/mck-runner-bridge to main October 22, 2026 04:44
@DamianReeves
DamianReeves added this pull request to the merge queue Oct 22, 2026
Merged via the queue into main with commit 419f144 Oct 22, 2026
40 checks passed
@DamianReeves
DamianReeves deleted the DamianReeves/model-originals-archive branch October 22, 2026 06:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant