docs(handoff): end of session 2026-05-13 — v0.1 shipped #162
@@ -0,0 +1,158 @@
|
||||
# Handoff — 2026-05-13: v0.1 shipped
|
||||
|
||||
**Session window:** 2026-05-12 evening fan-out → 2026-05-13 morning merge sequence
|
||||
**Branch:** `develop`, clean
|
||||
**HEAD:** `f6637ec3` — `ci(actions): fix typecheck/build order + share webview artifact across jobs (#161)`
|
||||
**Open PR count:** 0
|
||||
**Repo visibility:** flipped from PRIVATE → **PUBLIC** at start of session
|
||||
|
||||
---
|
||||
|
||||
## What shipped
|
||||
|
||||
**v0.1 milestone is fully merged.** 9 lane PRs + 1 CVE fix + 1 Dependabot batch + 1 CI workflow fix = **12 PRs landed** since yesterday's `ba42b691`.
|
||||
|
||||
### v0.1 lane PRs (in merge order)
|
||||
|
||||
| Merge | PR | Lane | Closes |
|
||||
|-------|----|------|--------|
|
||||
| `5bb1e778` | [#150](https://github.com/KofTwentyTwo/Jarvis/pull/150) | F — webview chat scroll | #51 |
|
||||
| `223310aa` | [#154](https://github.com/KofTwentyTwo/Jarvis/pull/154) | I — GitHub Actions CI workflows | — |
|
||||
| `b6431597` | [#155](https://github.com/KofTwentyTwo/Jarvis/pull/155) | H — PR + dependency triage report | — |
|
||||
| `a6f91e6b` | [#151](https://github.com/KofTwentyTwo/Jarvis/pull/151) | D — Bus/HUD S1 | #40, #41 |
|
||||
| `05411f82` | [#152](https://github.com/KofTwentyTwo/Jarvis/pull/152) | E — Vision | #1, #2, #3 |
|
||||
| `f59f5d12` | [#153](https://github.com/KofTwentyTwo/Jarvis/pull/153) | B — Memory CRIT | #12, #13, #14, #15, #16 |
|
||||
| `4b1dd640` | [#158](https://github.com/KofTwentyTwo/Jarvis/pull/158) | A — Voice CRIT | #28, #29, #30, #31, #32, #33, #34, #36 |
|
||||
| `bc74494a` | [#157](https://github.com/KofTwentyTwo/Jarvis/pull/157) | C — MCP CRIT | #20, #21 |
|
||||
| `795c3bf5` | [#156](https://github.com/KofTwentyTwo/Jarvis/pull/156) | G — App UX surfaces | #87, #88, #89 |
|
||||
|
||||
### Post-v0.1 cleanup
|
||||
|
||||
| Merge | PR | Scope |
|
||||
|-------|----|-------|
|
||||
| `08095281` | [#159](https://github.com/KofTwentyTwo/Jarvis/pull/159) | CVE fix — vite + esbuild via `pnpm.overrides` + vitest@3 bump |
|
||||
| `a8c7f1a0` | [#160](https://github.com/KofTwentyTwo/Jarvis/pull/160) | Dependabot batch — fiber 9.6.1 + plugin-react 6.0.1 + jsdom 29.1.1 + vite 8.0.12 (closes #144, #145, #147, #148) |
|
||||
| `f6637ec3` | [#161](https://github.com/KofTwentyTwo/Jarvis/pull/161) | CI workflow fixes — typecheck order + webview-resources artifact shared across jobs |
|
||||
|
||||
### Closed without merge
|
||||
|
||||
- **PR #146** (TypeScript 6.0.3) — deferred to a focused v0.2 PR after CI typecheck order is verified.
|
||||
- **5 superseded Dependabot PRs** — auto-closed when #160 landed.
|
||||
|
||||
### Total issues closed today
|
||||
|
||||
22 v0.1 audit-finding issues (Memory/Voice/MCP/Bus/HUD/Vision/UX) + #51 B-06 chat scroll + #63 stash triage = **23 issues closed**.
|
||||
|
||||
---
|
||||
|
||||
## State you should verify
|
||||
|
||||
### CI status
|
||||
|
||||
Last CI run (on `f6637ec3`, post-CI-fix) is **in progress** at the time of writing. The fixes target two known bugs:
|
||||
|
||||
1. **Webview typecheck order** — `pnpm -r build` now runs before `pnpm -r typecheck` so `@jarvis/bus` emits `dist/index.d.ts` before TypeScript reads it.
|
||||
2. **SPM tests need the webview HUD bundle** — `swift-packages` matrix now depends on `webview` job and downloads the new `webview-resources` artifact to `App/Resources/webview/` so `BusTests` + downstream WKWebView-mounting tests find a real bundle.
|
||||
|
||||
**Verify after lunch:** `gh run list --branch develop --limit 4`. If still failing, the residual issues are likely macOS-15 runner specifics (Xcode toolchain mismatch, missing brew formulas) — fix in a follow-up.
|
||||
|
||||
### Local build
|
||||
|
||||
`bash scripts/check-app-builds.sh` passes against `f6637ec3` on your machine (verified mid-session).
|
||||
|
||||
### Stashes
|
||||
|
||||
```
|
||||
$ git stash list
|
||||
(empty)
|
||||
```
|
||||
|
||||
5 dropped, 1 preserved as branch [`wip/voice-log-menu-stash4`](https://github.com/KofTwentyTwo/Jarvis/tree/wip/voice-log-menu-stash4) — archival starting point for v1.1 #52 (Voice Log menu, B-07). The branch is based on old `d8983af` (pre-v0.1); reapplying onto current develop will need manual rebase since Lane A's #158 reshaped `WakeWordDAG`, `VoiceController`, and `AudioGraphOwner`.
|
||||
|
||||
### Worktrees
|
||||
|
||||
All agent worktrees from yesterday's fan-out removed via `git worktree remove --force` + `git worktree prune`. Repo is on a single worktree (the canonical clone).
|
||||
|
||||
---
|
||||
|
||||
## Three loose ends (none blocking)
|
||||
|
||||
### 1. CircleCI GitHub App integration
|
||||
|
||||
The CircleCI app is still wired at the repo level, but there's no `.circleci/config.yml` on `develop` (the stale `circleci-project-setup` branch was deleted today). Result: every PR shows a red ✗ "CircleCI Pipeline" status check with `No configuration was found in your project`.
|
||||
|
||||
**Fix:** un-wire at https://github.com/settings/installations (manual web step — can't automate via `gh`). With Lane I's GH Actions now canonical, CircleCI is redundant.
|
||||
|
||||
### 2. Dependabot security alerts
|
||||
|
||||
The 2 moderate alerts (Vite path traversal + esbuild dev-server) should auto-close on the next Dependabot scan now that #159 + #160 landed (`vite@8.0.10` pinned via `pnpm.overrides`, `esbuild` dropped from the tree).
|
||||
|
||||
**Verify:** Settings → Code security and analysis → Dependabot alerts. Expected within ~1 hour. If still open after that, run `gh api -X POST /repos/KofTwentyTwo/Jarvis/dependabot/alerts/{N}/dismiss --field state=dismissed --field dismissed_reason=tolerable_risk` per alert (but verifying-via-auto-close is the right outcome).
|
||||
|
||||
### 3. CI workflow may still need polish
|
||||
|
||||
PR #161 fixes the two known bugs but CI has only been validated against the workflow definitions themselves — actual end-to-end pass-on-develop is in flight. If anything else surfaces:
|
||||
- Cache misses → tune the cache key in `actions/cache@v4` block.
|
||||
- macOS runner Xcode version mismatch → adjust `sudo xcode-select` fallback path.
|
||||
- Real-hardware lane only runs on self-hosted runners (user doesn't have one yet) — gated correctly behind `workflow_dispatch.run_real_hardware=true`.
|
||||
|
||||
---
|
||||
|
||||
## What's next
|
||||
|
||||
### Top of v0.2 queue (23 audit punch-list issues — milestone "Observable + stable")
|
||||
|
||||
Pull live: `gh issue list --milestone "v0.2 — Observable + stable (audit punch-list)"`.
|
||||
|
||||
High-leverage starting points:
|
||||
- **Memory MED/LOW:** #17, #18, #19 (cleanup after the CRIT cluster landed).
|
||||
- **MCP MED:** #22 (token cache trigger), #23, #24, #25, #26 (confirmation panel multi-monitor — needs real hardware), #27.
|
||||
- **Voice MED/LOW:** #35, #37, #38, #39, #54, #55.
|
||||
- **Bus MED/LOW:** #43, #44, #45, #47.
|
||||
- **Build LOW:** #46.
|
||||
- **Live verify:** #62.
|
||||
|
||||
### M-0 substrate (v0.5 prerequisite)
|
||||
|
||||
Migration phase M-0 (10 sub-issues #90–#99) can start in parallel — it's all infrastructure (typed JarvisAPI surface scaffolding) and doesn't touch the running user-facing code paths.
|
||||
|
||||
### Deferred work
|
||||
|
||||
- **#146 TypeScript 6.0.3** — reopen as a focused PR once CI is verified green (the typecheck errors flagged by Lane H were almost certainly the build-order bug fixed in #161).
|
||||
- **Vitest 4.x major bump** — v0.2 issue per H' recommendation.
|
||||
- **Vitest@3's `esbuild` plugin-option → `oxc` migration** — v0.2 cleanup, currently a warning per test run.
|
||||
|
||||
### Empirical verification with real models (any time)
|
||||
|
||||
The agent fixes are CI-friendly with stub embedders, but the user-facing semantic memory loop needs the real env to verify. Quick smoke test:
|
||||
|
||||
```bash
|
||||
ollama list # confirm nomic-embed-text + qwen2.5-coder
|
||||
# Open Jarvis, have a conversation:
|
||||
# "remember that I prefer dark mode"
|
||||
# Close + reopen, then:
|
||||
# "what did I tell you I prefer?"
|
||||
# Should come back via search_memory.
|
||||
|
||||
sqlite3 ~/Library/Application\ Support/Jarvis/jarvis.db \
|
||||
"SELECT COUNT(*) FROM facts, facts_vec;"
|
||||
# Both counts should be non-zero and roughly equal.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Methodology notes worth remembering for next session
|
||||
|
||||
Three patterns that worked and one that didn't:
|
||||
|
||||
**Worked:** Worktree-isolated background agents with `isolation: "worktree"`. 10 lanes ran in parallel without stomping each other's state. Each agent pushed its own branch + opened a draft PR.
|
||||
|
||||
**Worked:** The H' "isolated tmp worktree per Dependabot PR" pattern. Lane H' tested 5 Dependabot PRs without polluting the main repo or any other lane's worktree.
|
||||
|
||||
**Worked:** Squash-merging with explicit `Closes #N` in the squash subject (or PR body) for auto-closure. The 22 issues I batch-closed today only need that because I'd used bare `(#N)` references in the subjects, not `Closes #N` keywords.
|
||||
|
||||
**Did NOT work:** Letting subagents run arbitrary `git` commands. Multiple lanes (Lane F, Lane G in particular) ended up mutating the main repo's HEAD because the agent ran `git checkout` / `git stash` operations from the main repo path rather than its worktree path. **For next session:** brief subagents with `**NEVER cd outside your assigned worktree**` as a hard rule.
|
||||
|
||||
---
|
||||
|
||||
*Authoritative state remains: `.planning/PROJECT.md` (project), `.planning/ROADMAP-2026-05-12.md` (milestone roadmap), GitHub Issues for live triage, GitHub Milestones for v0.2/v0.5/v0.8/v1.0/v1.1 scope. This doc is the day-summary, not the system of record.*
|
||||
Reference in new issue
Block a user