Back to Aionui

Coordinator Handoff — Skill-Library Pilot — 2026-04-23

docs/backend-migration/handoffs/coordinator-skill-library-2026-04-23.md

1.9.26-dev-e9bbc438.6 KB
Original Source

Coordinator Handoff — Skill-Library Pilot — 2026-04-23

Branch: feat/backend-migration-coordinator Last commit: to be written after this file is committed

Done

Skill-Library module was the pilot for AionUi's Electron-main-process → aionui-backend (Rust) migration. The pilot is closed. Transport/migration layer is verified clean via e2e; seven tests remain failing for reasons outside the pilot's scope.

Role deliverables (all branches pushed)

RoleBranchFinal SHADeliverables
coordinatorfeat/backend-migration-coordinator (AionUi)this commitspec, plan, merged-in pilot docs, this handoff
backend-devfeat/extension-skill-library (aionui-backend)274f8ab10 commits: spec draft, E1–E5 impl/tests, source-field fix, 2 handoffs
frontend-devfeat/backend-migration-fe-skill-library (AionUi)316f63beb6 commits: 3 test mock fixes, module log, 2 handoffs
frontend-devfeat/backend-migration-e2e-skill-library (AionUi)21cf93c6b4 commits on this branch for Task 4-fix: helper IPC→HTTP migration (incl. new tests/e2e/helpers/httpBridge.ts), PATH note, handoff
e2e-tester-2feat/backend-migration-e2e-skill-library (AionUi)148e2c5925 commits: e2e report (3 phases), handoff (3 versions), post-pilot followup list

Pilot success criteria (from spec §6.3)

CriterionStatus
E2E suite covering Skill-Library endpoints passes against the integrated fe+backendPartial — 22/29 pass (78%), Class D (transport/migration) = 0 failing
All four teammate branches pushed and current w.r.t. base
Each teammate has a handoff file✅ (backend-dev, frontend-dev, e2e-tester, this coordinator handoff)
docs/backend-migration/modules/skill-library.md summarizes the migration✅ (with final outcome section appended)

Pilot verdict: SUCCESS with documented follow-ups. Rationale:

  • The success criterion's intent was "prove the end-to-end migration works for this module". Class D (5 tests) directly exercised the migrated path and all pass, including the last contract gap (ExternalSkillSourceResponse.source field) caught and fixed mid-pilot. That validates the migration.
  • The 7 remaining failures are documented in docs/backend-migration/post-pilot/2026-04-23-skill-library-followups.md and categorized as: 1 pre-existing TS gap inherited (TC-S-17), 1 test-infra confound (TC-S-25, 125-symlinks state pollution), 4 test-authoring (Class B/C/E), 1 test state-leak (TC-S-15). None is a migration regression.

In flight

None. All teammates idle and pending shutdown.

Known issues / open questions

Captured in docs/backend-migration/post-pilot/2026-04-23-skill-library-followups.md. Summary:

P0 — blocks module-2 start

  1. TC-S-17 backend contract fix: POST /api/skills/external-paths must reject duplicate paths with 4xx. ~1-file Rust fix.
  2. Test-infra sandbox: fixtures.ts must also isolate ~/.aionui/skills/ and ~/.aionui/custom-skill-paths.json. Backend's resolve_skill_paths and build_extension_states must respect --data-dir instead of hardcoding dirs::home_dir().join(".aionui").

P1 — test-authoring debt (move alongside module-2 work)

  • Classes B/C/E (TC-S-06, 08, 15, 27, 28): fixture assumptions don't hold in sandbox.
  • TC-S-15 state-leak: afterEach cleanup must run on test failure.

P2 — scale investigation (non-blocking)

  • TC-S-25 bulk-import at N=20 shows 3 of 20 cards. Needs instrumentation in list_available_skills; hypothesized to be a dangling-symlink filter issue at scale.

Lessons learned (for future modules)

  1. AionUi backend base branch was feat/backend-migration, not main. User had to correct me twice — once mid-pilot for the AionUi repo, once more when I missed that aionui-backend also had a feat/backend-migration branch. Module 2+: always verify base branch name in BOTH repos before git checkout -b.
  2. bun run dev is not a real script. AionUi's dev launch is bun start. E2E script is bun run test:e2e. Plan templates should reference actual package.json scripts.
  3. Stale renderer bundle breaks e2e silently. out/renderer/ must be rebuilt (bunx electron-vite build) before any post-migration e2e run. Frontend-dev's first rerun wasted ~30 min because of this. Module 2+: add "rebuild renderer bundle" as an explicit pre-run step in plan Task 4.
  4. aionui-backend binary must be on PATH. Playwright's Electron launcher shells out and doesn't inherit arbitrary env. Fix: cargo install --path crates/aionui-app (puts binary in ~/.cargo/bin/), then ensure PATH includes it.
  5. TDD Step 2.2–2.6 wording conflated "new endpoint" and "adapt existing". backend-dev-2 honestly flagged that E3/E4/E5 had no red stage (impl already existed). Contract-locking HTTP tests is sufficient for adaption. Module 2+: split TDD steps into new-endpoint variant (red→green) vs. adapt-endpoint variant (contract-lock).
  6. Frontend-dev silence ≠ unresponsive. I replaced one frontend-dev at 6 min of silence; they turned out to be mid-cargo-build (10–20 min cold start is normal). Module 2+: require a "before starting long Bash, SendMessage start time + ETA" pulse rule explicitly in the spawn brief (I did this for later roles and it worked).
  7. Team state is session-bound, but git is not. One conversation interrupt wiped the team/task directories; all teammates terminated. Git preserved all work. Module 2+: checkpoint critical progress through commits + SendMessage ACKs so rebuild-from-git is a sure path on interrupt.
  8. Shared user dirs pollute e2e. ~/.aionui/skills/ accumulated 125 dangling symlinks across runs, masquerading as test flakes. Module 2+: the P0 sandbox fix in post-pilot followups is a hard prerequisite.
  9. Module-2 startup should include a mandatory "rebuild aionui-backend + cargo install + verify on PATH" pre-flight for frontend-dev and e2e-tester alike.

Next steps for a successor

The user has pre-approved starting Assistant module migration after this pilot closes (Task #4 in TaskList). Recommended sequence:

  1. Module 2 is Assistant-CRUD (1 endpoint per spec §3 — getAssistants + sibling). Smallest, confirms the now-validated pipeline works on a different module.
  2. Before spawning teammates for Module 2: land the two P0 post-pilot tickets (TC-S-17 contract fix + test-infra sandbox). Both are small, both take future coordinator ~1 hour to route and verify.
  3. Apply lesson #9 — new plan template should build this in.
  4. After Assistant-CRUD lands, proceed to Assistant-Editor-Content (6 endpoints), then Skill-Import-Export / Skill-External-Paths (which depend on the sandbox fix from P0.2), then Assistant-Skill-Binding.
  5. The original 6-module decomposition in the pilot spec §3 still stands.

Branch tips at closure

BranchRepoSHA
feat/backend-migration-coordinatorAionUi(this commit)
feat/backend-migration-fe-skill-libraryAionUi316f63beb
feat/backend-migration-e2e-skill-libraryAionUi148e2c592
feat/extension-skill-libraryaionui-backend274f8ab

Per spec §5.2 and user instruction, none of these branches are merged back into feat/backend-migration in either repo. Integration is a separate user-approved step.