Land the TinySite speed and parallel-upload fixes, finish the CI-capacity fixes, and redeploy TinySite, filedrop and storage
Remaining: land FiledropEmbedded PR 19 (group commit), kompile-cli PR 192, TinySiteWui PRs 5, 6 and 7, FiledropEmbedded PR 22, FiledropApi PR 6, the UrlProtocol outbox fix and SFS PR 31, the buildtest CPU PRs and a BuildWatchdog stale-lease change; then publish filedrop-embedded and filedrop-api, bump FiledropServiceServer, deploy filedrop, TinySite and storage (approved) and prove an 8-file parallel publish, a 35 MB file served whole, and faster page loads. Folds in the large-file handoff (02:47 UTC). Six codex gpt-6.1-sol delegates running since 02:54 UTC; queue in the body. Open questions: deploy the handoff memory fix (service OOMed 02:54 UTC), stop 14 orphaned buildtest runs, rewrite one multi-process filedrop test.
Claimed by fable-code-2026-10-17
Handoff document
Markdown
Land the TinySite speed and parallel-upload fixes, finish the CI-capacity fixes, and redeploy TinySite, filedrop and storage
RE-VERIFY: this is a snapshot taken 2026-10-17 ~02:30 UTC. Re-check every PR before acting, using gh pr view <n> --repo CodexCoder21Organization/<repo> --json state,mergeStateStatus,statusCheckRollup,mergedAt. Check build-service capacity with curl -s https://buildtest.kotlin.build/api/health | jq .fleet. When the session that wrote this handoff stopped, Opus agents were still working on several open PRs, so heads may have moved since.
Mission
The owner's requests, in order:
Capture https://www.sazabi.com/ and its pricing page with the good-ui-designs skill. Done: Good-UI-Designs PRs 102–105 are merged.
"Update the skill to incorporate lessons … fix the gitignore of css and also make the uploads parallelized so we do like 8 concurrent uploads and also fix all the other issues." The skill and gitignore parts are done (claude-code-skills PR 159, Good-UI-Designs PR 102). Parallel uploads are in progress: they need the filedrop changes below to be deployed first.
"TinySite pages like https://tinysite.wasmserver.com/s/adc4c5e569/ load super slowly … requests should be parallelized … prefetch all assets of a site in parallel so they are ready as soon as the browser requests them." In progress.
"The tinysite management page for an individual tinysite should also keep track of two lists": site files that were never requested, or not recently relative to the site's other files; and recent requests under the site path that returned 404. "Both should show the three-component datetime as per https://github.com/CodexCoder21Organization/DocumentationRepository/blob/main/architecture/GOOD_DESIGN.md#displaying-date-and-time." In progress (TinySiteWui PR 5).
"We probably want to race with remote in order to ensure we can make forward progress if we're blocking on a build", following the runbook https://my.externalbrain.wasmserver.com/doc/github-builders-racing-remote-ci.md. Done for HandoffEmbedded, HandoffServiceServer and BuildTestProjectionJournal (see below).
Standing constraints from the owner:
Opus mode. Merge only when the final head is green, an Opus subagent's fresh adversarial review of that exact head is clean, and you are confident. Otherwise ask.
Deploys.
Pre-approved: TinySite, filedrop (FiledropServiceServer), simple-filesystem-vnext (the storage service) and ContainerNursery, after their merges. Always git pull main first.
Also pre-approved: kotlin-build-ci, redeployed after each merge to it.
Not approved: the handoff service and buildtest. Ask first.
Never:
raise timeouts;
weaken or skip tests;
use --delete-branch;
restart ContainerNursery via HCF launch;
put the TinySite review link in a PR.
References. Reference PRs by full URL.
What was found and done
TinySite slowness (root cause)
No single point serializes requests. Requests already run concurrently at every hop. TinySite → filedrop → storage (simple-filesystem-vnext), with each hop relayed through ContainerNursery.
Each GET of a small file costs about 60 storage round trips:
every call relayed twice through ContainerNursery, which opens a new backend TCP connection per call;
stream data sent as base64 inside JSON.
Total work per request is what caps throughput. Evidence: tcpdump showed 1,188 storage request/response pairs over 596 new TCP connections in 9 s of 20-way load. The thread dumps are in tinysite-latency/FINDINGS.md in the artifacts branch.
Fixes:
fewer storage calls per filedrop operation: FiledropEmbedded PR 18, merged;
single-round-trip small reads in storage: SimpleFileSystemServiceServer PR 31;
a TinySite per-site cache plus parallel prefetch: TinySiteWui PR 6.
Measurement: nothing has been deployed yet, so production speed has not been measured.
Parallel uploads (8 at once)
Cause of the serialization: a per-drop lock in FiledropEmbedded. The first lock-free attempt was worse: two whole-document compare-and-set writes of /listing.json per commit made conflicts grow as N² (N=32: 1,112 listing writes, 1,048 conflicts).
The redesign in FiledropEmbedded PR 19 (head 597b17b, version 0.1.23):
Group commit: one in-process publisher each for every manifest, the listing and the index. A leader folds all queued changes into one read and one write, and no lock is held during storage I/O.
Deletion and expiry are ordered inside the manifest's change sequence. A published commit is never undone.
Measured with a 10 ms per-call harness, commits into one drop:
Concurrent commits
Before
After
N=8
1,683 ms
390 ms
N=32
6,221 ms
969 ms
Local suite: 179/179.
The upload script (claude-code-skills PR 160) already does 8 concurrent uploads. Merge it only after the filedrop changes are deployed and a real 8-way publish is verified.
Dropped answers in the connection library (blocks storage PR 31)
What happens: PR 31's concurrency test fails in CI with RPC request '__stream_pull' failed: OUTBOX_FULL.
Mechanism: in UrlProtocol (foundation.url), once queued response bytes exceed 4 MiB per connection (8 MiB per process for libp2p, 16 MiB for TCP), a completed handler answer is replaced by OUTBOX_FULL and dropped. It is not replayed. See Libp2pHostFactory.kt ~395-421 and TcpServer.kt ~80-139.
It is not PR 31's fault alone. The unchanged main session path also fails: 32 concurrent 1 MiB reads gave 36/64 failures. PR 31 only makes it happen at lower load.
Fix in progress: branch fix/awaited-response-backpressure-2026-10-16 in UrlProtocol. The goal is backpressure (the answer waits for queue space) instead of dropping the answer. An older open PR, https://github.com/CodexCoder21Organization/UrlProtocol/pull/696 (wip/outbox1c-fix), is in the same area and must be reconciled with this work, not duplicated.
PR 31 must not have its test weakened. It lands after the library fix is released.
Build-service (url://buildtest/) CPU burn
Cause: projection-journal compaction rewrote the whole baseline far too often as history grew.
Fix: an amortized trigger, so compaction runs only when the tail reaches a ratio of the baseline.
Module: BuildTestProjectionJournal PR 8, head 0377f82.
Consumer: BuildTestEmbedded PR 1490, head 4707afb, which pins candidate buildtest-projection-journal:0.0.14-cpuamortize2-rc1 (SHA-256 317a281e393a48fd0505fa7e965d9541b3b96574c075aef11a2480528c3de3c9).
Review round 2 found that staging deltas were held fully decoded in heap. That is now streamed, with a fail-first heap test. Both PRs need a round-3 re-review.
A final module version must be chosen and published before merge. 0.0.11 has since been taken by another lane.
Do not deploy buildtest without the owner's OK.
Build-service capacity starvation, and the racing-CI rollout
Symptom: remote runs sat in PENDING for over 60 minutes with "Waiting for droplet capacity". That got PRs evicted from merge queues with checks_timed_out.
Cause: about 120 of the 200 droplets were held by 14 orphaned "workspace-snapshot" remote test runs from repos still pinned to kompile-cli 0.0.100. Versions ≤ 0.0.105 never renew a lease and never stop the remote run when the client is killed; 0.0.112 and later do both.
All relevant repos are now on kompile-cli 0.0.124.
The orphans expire at their 3-hour cap.
Evidence: buildtest-capacity/FINDINGS.md and kompile-orphan/FINDINGS.md.
Remaining client gap: when the race's remote side passed its 30-minute wait limit, the run was handed to --attach and left running unrenewed. Fixed in kompile-cli PR 192 (CI green, under review).
Server-side follow-up, not started: BuildTestEmbedded BuildWatchdog.kt should release a run's droplets once its lease goes stale. Constraint: only for runs that renewed at least once, because clients ≤ 0.0.105 never renew. The lease RPC is renewBuildLease {runId}, sent every 5 minutes.
Racing CI rollout (done): HandoffEmbedded PR 29, HandoffServiceServer PR 33 and BuildTestProjectionJournal PR 12 are merged. Each adds a bld-build workflow running --local-and-remote on kompile-cli 0.0.124. I then changed each repo's main ruleset to require bld-build instead of kotlin.build (remote). The original rulesets were saved as rs-<repo>.json in that session's scratch directory (not durable). To restore one, the only change is putting back {"context":"kotlin.build (remote)"} as the required check.
Agent ground rule now in force: always pass explicit --local to scripts/test.bash and scripts/build.bash. Never wrap --remote runs in timeout and never kill them.
Handoff-service memory fix (merged, deploy NOT done)
Change: archived handoff bodies moved out of state.json (held in heap) into per-handoff files, written atomically, fsynced, and checksum-verified on read. The rollback copy is .pre-archived-bodies, and it is atomic and format-aware.
Deploy needs the owner's approval (question below).
A slower residual leak (6–8 MB per 75 minutes, suspected to come from status-report uploads) is not investigated.
TinySite management lists (TinySiteWui PR 5)
Head cca41ba is on GitHub. The author lane has 2 newer local commits, pushed to wip/tinysite-usage-handoff-2026-10-17 (a3cdb9c): a README note plus a restored per-site Throwable catch.
Round 2 review (4 findings) was addressed in round 3:
tooltips clipped at 375 px;
shutdown waiting on storage;
non-site drops persisted;
tooltip times shown in UTC only.
Needs a round-3 re-review.
It conflicts with PR 6: both change the ServeSiteServlet constructor and answerMissingFile. Whichever lands second must still record every served file, including cache hits and 304s, and must not record prefetch reads.
TinySite prefetch (TinySiteWui PR 6)
9 review findings, being fixed on wip/tinysite-prefetch-r2-2026-10-16. The two that must be fixed:
a slow visitor holds the per-file fill lock (a second visitor waited 31 s);
a file replaced through filedrop gets served truncated, because size and ETag come from a listing up to 30 s old.
The reproducers are in the artifacts branch under review-ts6/repro/tests/.
https://github.com/CodexCoder21Organization/FiledropEmbedded/pull/20 (00:01Z): moves test pins to simplefilesystemservice-embedded 0.0.31. It fixes the flaky testUpdateDropRacingDeleteDropNeverResurrects.
handoffs/artifacts/2026-10-17-tinysite-ci/: every lane's FINDINGS.md, the ground-rules file, the queue, and review probe tests
Reference material
Local-only commits that were deliberately not pushed:
Review checkouts sitting on superseded PR heads: bf193eb (PR 28, pre-rebase), ea91580 (PR 31, older head) and 801363d (PR 1490, older head). All are superseded by the heads listed above.
The old pre-rebase history of PR 18 under bounded-storage-reads-per-call. Its content merged as PR 18.
Deployed or published but not merged:
Published candidates (test candidates only, not used by any deployed service):
buildtest.projection.journal:buildtest-projection-journal:0.0.14-cpuamortize2-rc1, built from 0377f82, which is not merged (PR 8);
the older 0.0.11-cpuamortize1-rc1…rc5, all unused.
Published and merged:handoff:embedded:0.0.39 is published (POM is served) and merged. It is not deployed: production handoff still runs the older build.
Nothing from this effort is running in production unmerged. The kotlin-build-ci deploy (kotlin-build-ci-857bd27e-20261016.jar) is built from merged main.
Re-check the deployed versions with the ContainerNursery CLI (list-routes / route details for tinysite, filedrop, simple-filesystem-vnext, handoff).
Open questions for the owner (asked, unanswered at write time)
Deploy the handoff memory fix to production? Plan: back up state.json and the current jar, build from main, deploy via the ContainerNursery CLI, then verify pages and archived handoffs. Recommendation: yes.
Stop the 14 orphaned buildtest runs to free about 120 droplets? Recommendation: yes. They expire within about an hour regardless, so this matters less now.
Rewrite testListingRebuildDoesNotOverwriteConcurrentPublication in FiledropEmbedded? It runs two processes on one storage root, which simplefilesystemservice-embedded ≥0.0.30 documents as unsupported. It is still pinned to 0.0.20 and passes there. Recommendation: rewrite it to test the same guard within a single process.
Next steps
Land the TinySite and filedrop changes:
(a) Finish the FiledropEmbedded PR 19 review, fix anything found, and merge.
(b) Publish one FiledropEmbedded release containing PRs 18 and 19, verifying its SHA-256.
(c) Bump FiledropServiceServer to that release, then redeploy filedrop from main (approved).
(d) Land TinySiteWui PRs 5 and 6, whichever is clean first; rebase the other and keep usage recording on the cache path.
(e) Redeploy TinySite (approved).
Storage speed: finish the UrlProtocol outbox backpressure fix, reconcile it with UrlProtocol PR 696, review, merge and publish. Then bump UrlResolver/consumers as needed, land SimpleFileSystemServiceServer PR 31, publish SFS client 0.1.9+, and redeploy the storage service (approved).
Measure: a real 8-file-at-once TinySite publish via the upload script (then merge claude-code-skills PR 160), and page load times for https://tinysite.wasmserver.com/s/adc4c5e569/ before and after.
Build-service CPU: run the round-3 review of BuildTestProjectionJournal PR 8 and BuildTestEmbedded PR 1490, choose a final module version and publish it, re-pin, then merge. Ask the owner before deploying buildtest.
Capacity: merge kompile-cli PR 192 after a clean review, then publish a kompile-cli release. Write the BuildWatchdog stale-lease reaping change, limited to runs that renewed at least once.
Handoff service: deploy once the owner approves.
Operational knowledge
Merging. The gh pr merge --auto flag is not allowed in these repos. Enqueue with the GraphQL mutation enqueuePullRequest(input:{pullRequestId:"<node id>"}).
Required checks. HandoffEmbedded, HandoffServiceServer, BuildTestProjectionJournal, FiledropEmbedded, SimpleFileSystemServiceServer, TinySiteWui, FiledropServiceServer and BuildTestEmbedded all require bld-build. The remote kotlin.build checks are informational there.
Dequeuing. A PR whose branch predates the bld-build workflow cannot be enqueued once the ruleset requires bld-build. Rebase it first with gh api -X PUT repos/<o>/<r>/pulls/<n>/update-branch -f update_method=rebase.
Machine limits. Only one full scripts/test.bash suite can run at a time on the /code box. The remote buildtest service may be saturated, so prefer --local for verification.
Headless Chromium on aarch64. Set LD_LIBRARY_PATH=~/.cache/chromium-deps/usr/lib/aarch64-linux-gnu:~/.cache/chromium-deps/lib/aarch64-linux-gnu. WebGPU needs SwiftShader flags.
HCF CLI. Certs are under ~/.config/hardware-control-fabric/. Run it with coursier, not cs. Never start long-lived processes via HCF launch, which puts them in a 512 MB cgroup.
Delegates. A good next-step decomposition is one agent per PR, each carrying its PR to clean review before taking the next. The lane notes in the artifacts branch hold the full prior context for each PR.
Folded-in effort (2026-10-17 02:58 UTC): the TinySite large-file fixes
The owner asked (02:47 UTC) to fold url://handoff/handoffs/hf-2026-10-17-land-the-tinysite-large-file-fixes-tinysitewui-pr-7-filedropembedded-pr-22-filedropapi-pr-6-deploy-them-and-prove-a-35-mb-file-serves-whole into this effort and drive it to completion. That handoff's body remains the detailed record (mechanism: TinySite read files in 4 MiB ranges, the sandboxed Filedrop client splits anything over 524,286 bytes into serial round trips inside one call, and UrlResolver abandons a call after 30 s, so a 35 MB file stopped at exactly 16 MiB under HTTP 200). Remaining, now owned here:
https://github.com/CodexCoder21Organization/TinySiteWui/pull/7 (head 1c8aefd, bld-build SUCCESS): independent review running (branch wip/review-ts7-2026-10-17 for reproducers). Must rebase over PR 5 and PR 6 when they land; the three PRs touch the same servlet.
https://github.com/CodexCoder21Organization/FiledropEmbedded/pull/22 (head f747fd0): queued. F1 replacement-length tests, F2 README/CHANGELOG, version 0.1.22+, full suite, re-review.
FiledropServiceServer: open a PR from download-range-uses-api-limit (c355de2) plus the T1 test on wip/t4-fss-concurrent-range-test (eb08d16), pinning FiledropApi 0.0.7 and the FiledropEmbedded release that carries PRs 18, 19 and 22.
Deploy filedrop-server and tinysite-wui (approved), then prove a >16 MiB file (ideally 35,125,250 bytes) uploads and serves byte-for-byte.
Content Decryption capture (Good-UI-Designs wip/content-decryption-zerotrillion, 346e4b3; review copy https://tinysite.wasmserver.com/s/f185e67226/ until 2026-10-23): needs the owner's approval before a PR.
Nothing from that effort is published or deployed (filedrop-api 0.0.7 and filedrop-embedded 0.1.21+ all return 404 at 02:50 UTC; live jars listed in that handoff).
Mode change (02:47 UTC)
The owner switched this session to Fable and asked that all delegates be codex gpt-6.1-sol. Every Opus delegate was stopped at 02:47-02:50 UTC; their checkouts were swept (only unpushed item: a kompile-cli fail-first test, now on wip/kc192-fix-r2-handoff-2026-10-17 @ 8793776). Six sol delegates were launched at 02:54:54 UTC; briefs are in the orchestrator scratchpad p/*.full.md and mirrored on the PlanRepository artifacts branch at the next status cycle. The queue is in /home/leslie/lanes/QUEUE.md (volatile) and in this body's Next steps.
Added requirement (owner, 2026-10-17 03:15 UTC): prove filedrop is working at the end
The owner asked: "This effort should also ensure at the end that filedrop is working (not down) since filedrop was touched throughout this effort." Completion therefore requires, after the filedrop deploy, a live end-to-end check and its evidence in the final report: (1) url://filedrop/ answers (ContainerNursery container RUNNING, no OutOfMemoryError or restart in its container log since the deploy); (2) an upload through TinySite's publish path and through the filedrop WUI/CLI succeeds; (3) the uploaded files download byte-for-byte through TinySite and through filedrop directly; (4) a drop listing and a delete work; (5) the 8-file parallel publish and the >16 MiB file checks from the mission. Also run the production health checks for filedrop and TinySite (production-health-checks skill) and record the results. If any check fails, filedrop is treated as down: investigate with the investigate-broken-service skill before any restart, and do not close the handoff.
Latest status report
18 reports
Runningfable-code-2026-10-1759325ee85 minutes ago
Status report: 2026-10-17 14:07 UTC
Original request: speed up TinySite page loads (with parallel prefetch), let TinySite take about 8 uploads at once, add the two management-page lists (unused files and recent 404s, with three-part timestamps), race GitHub-runner builds against the remote build service so slow remote builds cannot block merging, fold in the TinySite large-file effort (land its three pull requests, deploy them, prove a 35 MB file serves whole), and end by proving filedrop is working, since filedrop was touched throughout. Added 08:40: the owner delegated the five open decisions to me (constraint: never raise a container's keep-warm period beyond 5 minutes). Added 10:25: the owner reported https://tinysite.wasmserver.com/ showing an error. Added 13:09: the owner asked that merged changes be deployed as appropriate after each merge.
🟡 Status: RUNNING. Every remaining step is mine; no question is open.
Progress since the last report (13:34 UTC)
All six lanes finished between 13:35 and 13:45; six new ones started at 14:05. Outcomes:
Filedrop server pin bump is open and green on its branch: https://github.com/CodexCoder21Organization/FiledropServiceServer/pull/34 (server 0.0.27, every filedrop-embedded pin at 0.1.27, three new end-to-end proofs: a legacy drop summary costs exactly 2 storage calls on first read, repeated read and after restart; eight concurrent uploads publish every file and the exact listing while sharing bookkeeping writes; legacy reads never write). Full local suite 64/64; bld-build green. My own review of its production diff (the pin in build.kts and the README paragraphs) is clean; the independent review started 14:05. This is the PR whose merge triggers the filedrop redeploy, which is what fixes the ten-day-old sites and the slow first visit.
Externalbrain round 3 is pushed: https://github.com/CodexCoder21Organization/ExternalBrainWui/pull/58 now drives the 30-second startup deadline and the three-attempt bound through the injected clock, so the two scenarios that failed on the shared build service for lack of wall-clock time run in seconds; full local suite 75/75 in 117 s. The independent round-3 review started 14:05. My own review of the production diff found one defect to send back with that verdict: the new request router constructs a fresh page servlet per request, and that servlet re-reads index.html and re-runs two regular expressions each time, where it used to do so once per process.
Read-idle follow-up has a real regression (https://github.com/CodexCoder21Organization/UrlProtocol/pull/721): the review proved with the failure stack that releasing a permit for a queued answer after the event loop has stopped submits bookkeeping to that dead executor, so the public close result becomes "event executor terminated" instead of the documented I/O error naming the root (two tests fail 3/3 on the branch, pass on main). This also explains the remote and bld-all-tests failures on the PR. A fix lane started 14:05 with the mechanism and the reviewer's tests.
kompile-cli round 11 found one remaining exit blocker (https://github.com/CodexCoder21Organization/kompile-cli/pull/192): on SIGTERM after a remote submission, the exit hook joins the workspace close, and the pinned manager library's close reads the raw stop failure's message and cause synchronously, so a blocking getter still prevents exit and the final report (reproducer fails 6/6). The repair is upstream in the manager library plus a pin; a lane started 14:05 with authority for one candidate publication. Separately, the PR's bld-all-tests check failed twice on the same head with three tests (two 120-second exit timeouts with thread dumps captured, one retry fixture whose inner test times out at 1 s on the runner) while the author's local suite passed 327/327; a second lane is diagnosing those on its own branch with the thread dumps, without raising any limit.
Buildtest round 4 published candidate rc5 (byte-verified) and the journal PR https://github.com/CodexCoder21Organization/BuildTestProjectionJournal/pull/8 is 109/109 green; the consumer PR https://github.com/CodexCoder21Organization/BuildTestEmbedded/pull/1490 hit its local-suite cap and its 16-shard CI then failed four tests across three shards (compaction baseline, journal tail bound, a missing pages file at startup, an observer ordering). A lane started 14:05 to classify each as a changed contract, a candidate defect, or pre-existing, with authority for one further candidate if the journal is at fault.
TinySite cache persistence by configuration is refuted: the site cache deletes its own directory on stop and removes abandoned directories at start, by design and by test; the README line about surviving restarts refers to the separate bytecode cache. No production change was made. Making cached content survive a restart needs an application change (queued as the next lane; the home page does not use that cache, so it does not remove the first-visit failure).
TinySite first visit after idle still fails. Probes at 13:5x: home 503 after 33.8 s, then 502 after 7.1 s, then 200 after 35.6 s, then an old site's asset 200 in 11.8 s. That is the chained cold start through the old filedrop server (773 storage calls per old-drop read, plus a startup rebuild); it ends when the filedrop server redeploys with the pin bump above, and the read-idle fix removes the sibling-request cut.
UrlProtocol coordinate bump https://github.com/CodexCoder21Organization/UrlProtocol/pull/720 is still first in its merge queue; the queue's full-suite run has been in progress since 13:31.
Pull requests
✅ Merged this effort: https://github.com/CodexCoder21Organization/TinySiteWui/pull/7 (12:16 UTC), https://github.com/CodexCoder21Organization/FiledropEmbedded/pull/25 (12:12), https://github.com/CodexCoder21Organization/UrlProtocol/pull/718 (12:00), https://github.com/CodexCoder21Organization/FiledropServiceServer/pull/33 (11:58), https://github.com/CodexCoder21Organization/FiledropEmbedded/pull/19 (10:41), https://github.com/CodexCoder21Organization/TinySiteWui/pull/6 (09:59), https://github.com/CodexCoder21Organization/SimpleFileSystemServiceEmbedded/pull/38 (08:53), https://github.com/CodexCoder21Organization/FiledropApi/pull/6 (08:48), https://github.com/CodexCoder21Organization/FiledropEmbedded/pull/22 (06:18), https://github.com/CodexCoder21Organization/TinySiteWui/pull/5 (05:58), https://github.com/CodexCoder21Organization/HandoffServiceServer/pull/33, https://github.com/CodexCoder21Organization/HandoffEmbedded/pull/28, https://github.com/CodexCoder21Organization/FiledropEmbedded/pull/18, https://github.com/CodexCoder21Organization/FiledropEmbedded/pull/20, https://github.com/CodexCoder21Organization/HandoffServiceServer/pull/32, https://github.com/CodexCoder21Organization/HandoffEmbedded/pull/29, https://github.com/CodexCoder21Organization/BuildTestProjectionJournal/pull/12, and four challenge records (https://github.com/CodexCoder21Organization/PlanRepository/pull/11034, https://github.com/CodexCoder21Organization/PlanRepository/pull/11033, https://github.com/CodexCoder21Organization/PlanRepository/pull/11036, https://github.com/CodexCoder21Organization/PlanRepository/pull/11040). Published: filedrop-embedded 0.1.27, filedrop-api 0.0.7, simplefilesystemservice-embedded 0.0.32, projection-journal candidates rc4 and rc5. Deployed: TinySite bbce49a (13:14 UTC); handoff service 0.0.30.
CLEAN; merges after a verified 8-file parallel publish
Delegated work at a glance
⏳ Running - GPT 6.1-sol high - 2 minutes total time - under 1 minute since last update - Independent review of the filedrop server pin bump https://github.com/CodexCoder21Organization/FiledropServiceServer/pull/34 at 2f8ff4b: completeness of the pin, the three new end-to-end proofs (two storage calls per legacy read, eight concurrent uploads, reads never write), the rewritten fixtures keeping their lifecycle assertions, and a bounded side question on which connection-library coordinates the server actually ships. Next expected checkpoint: its verdict.
⏳ Running - GPT 6.1-sol high - 2 minutes total time - under 1 minute since last update - Round-3 review of https://github.com/CodexCoder21Organization/ExternalBrainWui/pull/58 at 0024696: whether the converted startup tests are deterministic on the injected clock, whether production still wires 30 seconds and three attempts, whether the permanent-error test change altered documented behaviour, and shutdown during a parked attempt. Next expected checkpoint: its verdict, to be combined with my per-request servlet finding.
⏳ Running - GPT 6.1-sol high - 2 minutes total time - under 1 minute since last update - Fixing the regression in https://github.com/CodexCoder21Organization/UrlProtocol/pull/721: a permit released after the event loop terminated must not submit bookkeeping to that loop, and the close result must stay the documented I/O error; porting the reviewer's three tests and its corrected idle-wave test; running the 73-file selection by file path. Next expected checkpoint: both failing tests passing, pushed, PR marked ready.
⏳ Running - GPT 6.1-sol high - 2 minutes total time - under 1 minute since last update - Closing the round-11 finding on https://github.com/CodexCoder21Organization/kompile-cli/pull/192: fixing the manager library's workspace close upstream so it classifies a cancellation from the failure's type rather than its message, publishing one candidate, pinning it, fixing the local close-error path, porting the reviewer's reproducer. Next expected checkpoint: upstream PR open and candidate published.
⏳ Running - GPT 6.1-sol high - 1 minute total time - under 1 minute since last update - Diagnosing the three bld-all-tests failures on https://github.com/CodexCoder21Organization/kompile-cli/pull/192 at b40845c on its own branch: starting from the thread dumps CI captured for the two exit timeouts, and from the retry fixture's inner 1-second test, checking whether each is the same exit-blocking class, a wall-clock dependence in the fixture, or pre-existing on main; it owns the local full-suite slot for this repository. Next expected checkpoint: mechanism per failure with evidence.
⏳ Running - GPT 6.1-sol high - 1 minute total time - under 1 minute since last update - Finishing consumer validation of https://github.com/CodexCoder21Organization/BuildTestEmbedded/pull/1490: reproducing the four failing shard tests locally five times each, classifying each as changed contract, candidate defect, or pre-existing, fixing at the cause, running the projection and journal packages. Next expected checkpoint: each failure classified with evidence.
⚪ Not running (finished/dead) - GPT 6.1-sol high - 48 minutes total time - 23 minutes since last update - Opened the filedrop server pin bump https://github.com/CodexCoder21Organization/FiledropServiceServer/pull/34 with three end-to-end proofs; 64/64 local; noted the old pin measured 772 calls here versus the library's 773. Nothing further is expected from it.
⚪ Not running (finished/dead) - GPT 6.1-sol high - 32 minutes total time - 22 minutes since last update - Externalbrain round 3: deadlines on the injected clock, three scenarios converted, 75/75 in 117 s, pushed to https://github.com/CodexCoder21Organization/ExternalBrainWui/pull/58. Nothing further is expected from it.
⚪ Not running (finished/dead) - GPT 6.1-sol high - 29 minutes total time - 26 minutes since last update - Round-6 review of https://github.com/CodexCoder21Organization/UrlProtocol/pull/721: NOT CLEAN with the stopped-event-loop regression proven by stack, nine lifecycle rows passing, tests pushed to its review branch. Nothing further is expected from it.
⚪ Not running (finished/dead) - GPT 6.1-sol high - 11 minutes total time - 25 minutes since last update - Round-11 review of https://github.com/CodexCoder21Organization/kompile-cli/pull/192: NOT CLEAN with the upstream close-path diagnostic read, reproducer 6/6, 62/62 targeted tests otherwise green. Nothing further is expected from it.
⚪ Not running (finished/dead) - GPT 6.1-sol high - 1 hour 35 minutes total time - 27 minutes since last update - Buildtest round 4: published rc5 (byte-verified), journal PR 109/109; consumer full run reached its cap without a result and the CI shards failed four tests. Replaced by the consumer-validation lane above. Nothing further is expected from it.
⚪ Not running (finished/dead) - GPT 6.1-sol high - 2 minutes total time - 32 minutes since last update - TinySite route configuration: refuted the premise with source evidence (the site cache deletes its run directory on stop and clears abandoned ones at start) and made no production change. Nothing further is expected from it.
How the fixes work
TinySite management lists, prefetch cache and large-file streaming (merged, deployed 13:14): every request updates an in-memory record written off the request path with per-entry generations; a bounded on-disk cache is filled in parallel by owned storage calls that stop interrupts and drains, one version per answer; files are served in 524,286-byte ranges from the published API constant, and the uncached path confirms size and upload time after every range.
Filedrop old-drop read, manifest read and group commit (merged, published; server pin bump in review): a serving read returns the drop's original complete metadata in two storage calls regardless of file count; one ranged read of the whole manifest; uploads touching the same bookkeeping document are batched so one leader does one read and one write per batch with no lock held during I/O.
Filedrop API constants (merged, published) and the server-side fix (merged): the download range and legacy limits are compile-time constants; the served client validates the caller's whole range before splitting and treats a padded part as terminal.
Storage library (merged, published): the manager's close interrupts and joins its trash-reclaim workers before releasing the root and refuses to join from inside a callback that holds a manager lock.
Connection library (merged, coordinate bump in the queue) and its read-idle follow-up (fix in progress): a completed answer that does not fit the response queue waits instead of being dropped; each paused answer has one owner-tracked deadline retired exactly once; separately, pending handlers count as activity so the idle check cannot close a stream under them, and bookkeeping for a permit released after the loop stopped must run inline or not at all.
kompile-cli (upstream fix in progress): the race's remote run is stopped on wait expiry or exit with a one-time fallback; every exit passes through one completion boundary that cannot itself fail; no code on the shutdown path, local or in the manager library's close, reads a failure's message before the outcome is published.
Buildtest CPU (consumer validation in progress): journal compaction does per-row bounded work and streams its staging delta; the startup row cache is bounded by the decoded footprint it retains.
Handoff service (deployed): report bodies are archived out of the live state file so the heap no longer grows per report.
ExternalBrainWui startup (round 3 in review): the HTTP server binds before any dependency is contacted; dependencies open lazily with at most three attempts, each cut at 30 seconds on the injected clock; each route is gated only on the dependency it uses.
Blockers
🟡 None; every item has a lane running or a brief ready for the next slot.
Landing parallelization sweep: both review gates (filedrop pin bump, externalbrain round 3) started the moment their heads were pushed and run alongside their CI; my own final reviews of both production diffs are already done, so each enqueue fires the instant its review returns CLEAN with green checks. The one idle item is the UrlProtocol queue entry, which waits only on the queue's own suite run.
Plan changes: TinySite cache persistence moves from a configuration change to an application change (queued behind the six running lanes); the kompile-cli work splits into an upstream fix lane and a CI-failure diagnosis lane on separate branches so neither blocks the other; the externalbrain PR gets one more author round for the per-request servlet construction.
Next steps: land the filedrop pin bump and redeploy filedrop, merge and publish the UrlProtocol bump then bump and redeploy the storage server, fix and land the read-idle, kompile-cli, externalbrain and buildtest PRs as their rounds come back clean and deploy what applies, make the TinySite cache survive restarts, then prove an 8-file parallel publish, old and new sites loading cold, faster page loads and a working filedrop.
Handoff
url://handoff/handoffs/hf-2026-10-17-land-the-tinysite-speed-and-parallel-upload-fixes-finish-the-ci-capacity-fixes-and-redeploy-tinysite-filedrop-and-storage, viewable at https://www.handoff.wasmserver.com/handoffs/hf-2026-10-17-land-the-tinysite-speed-and-parallel-upload-fixes-finish-the-ci-capacity-fixes-and-redeploy-tinysite-filedrop-and-storage; this report also reached the folded-in large-file handoff, whose remaining item is the filedrop server redeploy. Lane artifacts: https://github.com/CodexCoder21Organization/PlanRepository/tree/wip/tinysite-ci-handoff-artifacts-2026-10-17.
Top lessons
Read the lifecycle code before treating a persistent path as persistent data. A configuration-only "make the cache survive restarts" task was refuted in minutes once the delegate read the cache's start and stop methods: the application deletes its own cache directory on stop by design. Before proposing an environment or path change to preserve state, confirm from the owning code and its tests that the state is meant to outlive the process; otherwise the change costs a restart and proves nothing.
Verify a deploy against the first visit after idle, not only against a warm process. The TinySite deploy passed every check while warm, and minutes of idleness later the first visitor got a 30-second failure, because the cold path runs through dependencies the deploy did not touch. A deploy's verification must include stop, restart and first request, and must name which part of the first-request path the deploy actually changed.
When a review names a defect in a dependency, fix it there and pin the result, even mid-round. The kompile-cli exit blocker survived ten local rounds because its last instance lives in the pinned manager library's close path; patching around it locally would have hidden it from every other consumer. Route the fix to the owning repository with a fail-first test, publish a candidate, and bump the pin, and keep the downstream PR's round open until that lands.
Earlier reports
Runningfable-code-2026-10-1759325ee842 minutes ago