Skip to content

Reconcile feature/free-tier-fleet with main (+ instruction.test.ts $TMPDIR self-pollution fix) - #1520

Merged
jeonghun-jj-lee merged 9 commits into
feature/free-tier-fleetfrom
reconcile/free-tier-fleet-main
Sep 24, 2026
Merged

jeonghun-jj-lee merged 9 commits into
feature/free-tier-fleetfrom
reconcile/free-tier-fleet-main

Conversation

@jeonghun-jj-lee

Copy link
Copy Markdown
Contributor

Reconciles feature/free-tier-fleet with origin/main (brings in main's 7 commits: session-reliability fixes, Open VSX CI, app-bundle overlay work), plus a real engine-test-hygiene fix surfaced while verifying.

The merge

No regressions (the ask) — verified

Gate Result
Extension fast suite 286 files / 4807 pass / 0 fail (main's new tests + ours coexist green)
Extension typecheck clean
Boot smoke PASS (merged overlay boots; /event → 200)
Engine typecheck clean (only #1229 base-drift allowlisted)
Drift gate PASS (manifest ↔ overlay in sync)

Engine unit suite — 11 pre-existing failures triaged; the real one fixed

The non-blocking engine:unit lane (#1239) showed 11 failures. None are reconcile regressions:

  • 2× instruction.test.ts — a genuine self-pollution bug in our overlay test: it wrote AGENTS.md to path.dirname(tmpdirScoped()) === $TMPDIR, an unscoped file that never got cleaned and poisoned sibling tests (the loader walks up and finds it). Fixed (nest the secondary under its own scoped dir; findUp for a secondary stops at the dir itself, so no git root needed). Now 0 fail in isolation.
  • 6× skill.test.ts — environment artifact: OPENCODE_DISABLE_EXTERNAL_SKILLS=true (set by the Amicode terminal) leaked into bun test. In a clean env (as CI runs) → 17 pass / 0 fail.
  • 2× prompt.test.ts (loop/cancel) — Session-lineage spec conflict: legacy-parent aggregation vs 'Bug A fix' (auto-create) — tied to server-survives-rebuild #1239 cross-test-pollution/load flakes; 58 pass / 0 fail in isolation.
  • attention.test.ts error — a logged decode-failure inside an otherwise-passing test; 18 pass / 0 fail in isolation.

Clean-env full runs went 4 fail → 1 fail across identical invocations, confirming the residual is non-deterministic #1239 flakiness on the non-blocking lane — not a deterministic regression.

jeonghun-jj-lee and others added 9 commits September 23, 2026 15:53
* fix(packaging): enforce known fixes before CI advisory

* fix(app): #1466 restore parent Files Changed invalidation

* test(app): cover all #1466 file edit events

* fix(app): #1467 bound mirror and session warming

* fix(packaging): migrate #832 shared-state guard

* fix(app): guard session warm scheduler keys

* fix(app): repair #1466 review findings

---------

Co-authored-by: amicode-ci <ci@amicode.local>
* ci: publish release VSIXes to Open VSX Registry

* ci: decouple Open VSX publish from Marketplace step outcome
…h every real boot (current-main slice, manifest-clean) (#1473)

* fix(app): #1458 — the empty-workspace landing's titlebar portals rendered SessionChatsDropdown/StatusPopoverV2 (per-directory sync-context readers) at the "/" route, which never sits inside a SyncProvider; at real-boot timing the no-directory window renders the landing briefly on EVERY boot and the useSync() throw killed the whole route tree — including the reactive landing effect, so no draft was ever created and the app stayed frozen at "/". Portals removed, content kept; a guard test pins the landing module free of directory-scoped context components (the unit-suite trap: mocked contexts pass while the real boot crashes — caught live by the e2e rig). Manifest: files + classification updated (drift gate PASS).

* fix(app): #1458 follow-up — the guard test matched raw text and tripped on the fix's own explanatory comment (which names the removed components); assert the import graph instead. All green: 2 pass, drift gate PASS.

* fix(app): render empty landing without directory context

---------

Co-authored-by: amicode-ci <ci@amicode.local>
…59b, current-main slice) (#1474)

* fix(app): #1459b — retrying dynamic imports, the tunnel-truncation class (current-main slice). The fleet's ssh tunnel restarts on network transitions (launchd KeepAlive) and kills every in-flight tunneled response MID-STREAM; a lazily-imported chunk crossing a restart gets a cleanly-truncated body (observed live: 2,884 of 28,497 bytes) and Chromium's module map caches the failure FOR THE DOCUMENT'S LIFE — every later import of the same URL throws 'Failed to fetch dynamically imported module' WITHOUT a network request: the new-session launch frozen in the loading hold forever (live-verified root cause of the stuck-loading arc; the rig has no tunnel so it never sees the class). retryImport parses the failing URL, re-imports it cache-busted (fresh module-map key) with backoff 1s→2s→4s→8s→16s (~31s of transport-storm ride-out; observed watchdog windows last minutes — a single immediate retry drowned in the storm's first beat); chained busts strip the previous query. Wired at all 8 dynamic-import sites. Transient-only: real errors rethrow. 7 contract tests (importer injected — the engine's import() never runs in the suite). Manifest: files + classification registered, drift gate PASS.

* fix(app): bound dynamic import retries

---------

Co-authored-by: amicode-ci <ci@amicode.local>
* fix: preserve interrupted compaction output

* fix(app): localize compaction failure toast

* fix(core): surface compaction runner errors

* fix(engine): send final-step directive as user input

* test(engine): cover manual compaction runner request

* chore(app-bundle): refresh overlay manifest

* fix(server): map compact runner failures

---------

Co-authored-by: amicode-ci <ci@amicode.local>
Co-authored-by: amicode-ci <ci@amicode.local>
* fix: bound background session warming

* test: cover prewarmer batch scheduling

* refactor: share session prewarmer batching

* test: cover multi-row prewarmer batches

* fix: parallelize bulk lineage warming

* fix: release warm slots after prefetch

---------

Co-authored-by: amicode-ci <ci@amicode.local>
…leet-main

# Conflicts:
#	packages/app-bundle/manifest.json
The 'does not walk past a secondary directory' test wrote AGENTS.md to
path.dirname(tmpdirScoped()) === os.tmpdir(), an UNSCOPED file in the shared
$TMPDIR root that (a) was never cleaned up and (b) poisoned every sibling test
nesting tmp dirs under $TMPDIR — the loader walks up and finds it. Nest the
secondary under its own scoped parent so the 'above' AGENTS.md lands in an
auto-cleaned dir. findUp for a secondary dir stops at the dir itself (stop=dir),
so no git root is needed. Fixes 2 instruction.test.ts failures.
@coderabbitai

coderabbitai Bot commented Sep 24, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 3676f149-06b1-40ee-aa7c-1a0fe8ea7164

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@jeonghun-jj-lee
jeonghun-jj-lee merged commit 6b9dd59 into feature/free-tier-fleet Sep 24, 2026
12 checks passed
@jeonghun-jj-lee
jeonghun-jj-lee deleted the reconcile/free-tier-fleet-main branch September 24, 2026 02:07
jeonghun-jj-lee pushed a commit that referenced this pull request Sep 24, 2026
PR #1520 was squash-merged, which applied main's CONTENT but left main's 7
commits out of feature's ancestry — so GitHub kept showing 'feature 7 behind
main'. This is a real merge commit (2 parents) that makes those commits true
ancestors. Zero net content change: the merged tree is byte-identical to the
squash result (6b9dd59); drift gate PASS (manifest ↔ overlay in sync).
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.

3 participants