Files
makelore/.project-docs/30-worklog/tasks/20260824-pi-release-proof-3e725ac7.md

9.5 KiB

Task: Implement PI-150 packaging, E2E, and performance proof

Identity

  • Task ID: 20260824-pi-release-proof-3e725ac7
  • Mode: Feature
  • Branch: codex/20260824-pi-release-proof-3e725ac7-pi-release-proof
  • Worktree: D:\Datas\OthersProjects\makelore-pi-release-proof-3e725ac7
  • Base commit: 977445ba45
  • Owner: codex-root
  • Status: In Progress (planner Spec review fixes required)

Scope

  • Implement and verify PI-150 — Packaging, E2E, and performance release proof from cumulative PI-140 delivery base 977445b.
  • Own final Pi production-closure staging, electron-builder wiring, artifact verification, actual packaged Pi/provider-shaped smoke, Coding Electron E2E, performance evidence, release note/runbook draft, and README current-state updates.
  • Produce Windows x64 and Linux x64 final-product artifact evidence available from this host. Keep canonical .project-docs updates for PI-160 Integration Gate; this feature record contains the task-scoped evidence and promotion candidates.

Intent And Constraints

  • Preserve Main-owned runtime/provider/credential boundaries, the exact pinned Pi package and pnpm versions, Makelore app identity, project-scoped state, and the single light product system.
  • Final artifact checks must prove Pi version/engine/entry/resources/production closure/get_state, extension and skill presence, no OpenCode production residue, and no development-machine absolute path.
  • smoke:pi:real means the actual Pi process seam from the final artifact using controlled loopback/provider-shaped endpoints. Real external Provider Accounts and real-provider two-worker turns are explicitly waived accepted risks, never Pass; every substitute report retains realTurnVerified=false.
  • The user explicitly skipped macOS validation. Do not manufacture or reuse static/cross-platform evidence for macOS x64 or arm64. Their missing final artifact, closure/native/resource, loopback, and performance evidence remains an explicit release blocker, so this task cannot claim cross-platform release-ready or PI-150 Done.
  • The canonical project memory at this base is stale and still describes OpenCode. Treat the planner-owned PI Spec/ticket and current source as the task authority; do not edit canonical memory in this feature worktree.
  • The main worktree is occupied by an older integration task. Remain rooted in this isolated worktree and do not inspect or modify peer uncommitted files.

Plan

  1. Audit the cumulative PI-140 tree against every PI-150 packaging, smoke, E2E, performance, release-note, and README requirement; reuse only verified existing seams and identify concrete missing behavior.
  2. Implement focused missing harnesses/wiring/tests with behavior-level regression coverage, then run typecheck and relevant unit tests.
  3. Run the full pinned validation set and build the Windows x64 final product artifact; run its verifier, actual packaged Pi/provider-shaped smoke, and required performance scenarios with structured statistics.
  4. Use WSL2 only if available to perform a frozen Linux x64 install, final product build, verifier/smoke, and performance run; label any environment or artifact limitation precisely.
  5. Record reproducible commands/results, accepted Provider risk, skipped macOS release blocker, release note/runbook, README delta, and PI-160 promotion candidates; complete the Task Documentation Gate without overstating release readiness.

Outcome

  • Candidate a795e0c970e6c9fac5609bea5ceda2517bf3ca48 contains the final-product Pi artifact verifier, packaged Pi/provider-shaped smoke, Spec 17.3 performance runner, expanded Electron E2E, release runbook, synchronized README, Linux package metadata fix, and Linux compatibility-executable fix.
  • Windows x64 and Linux x64 final unpacked products passed Pi 0.84.2 production-closure, resource, lifecycle, controlled provider-shaped, extension/subagent, concurrency/isolation, and performance qualification. Windows NSIS and Linux x64 AppImage/deb distributables were produced.
  • Product-owned OpenCode resource paths and development-machine path residue are empty. OpenCode-named files retained under the exact pinned upstream @earendil-works/pi-ai/dist/providers closure are reported separately because Pi statically imports them; deleting them would corrupt the pinned runtime.
  • The implementation is ready for PI-160 integration, but PI-150 remains blocked from Done and the product is not cross-platform release-ready because macOS x64/arm64 validation was explicitly skipped. QG-004/QG-005 also remain Explicitly Waived / Accepted Risk, with realTurnVerified=false.

Verification

  • Exact pnpm 10.33.4 frozen install passed on Windows (997 packages) and WSL2 Ubuntu 24.04 x64 (999 packages); lockfile remained unchanged.
  • Candidate-final Windows checks passed: pnpm run typecheck; pnpm run lint:check with 0 errors and five pre-existing warnings; pnpm test with 178 files, 1504 passed and two skipped; pnpm run test:e2e with 24/24; production Vite/Electron build passed as part of packaging and E2E.
  • pnpm run package:win passed. NSIS Makelore-2.0.0-win-x64.exe is 211,835,138 bytes with SHA-256 0DB9D811058595E91BED9FFE4FFF1E94D170FDAC411D1D54CD9F6856FCA60521. The existing packaged-runtime verifier passed for Electron 43.4.0, Node 24.18.1, bundled Python/uv/npm, native modules, and Unicode copy behavior.
  • Windows final-product Pi artifact verifier passed with five samples: 130 applicable production packages, six assets, four packaged Skills, no missing or relocated packages, no product-owned OpenCode paths, no development path residue, cold/warm ready p95 653/628 ms, and exit p95 20 ms.
  • Windows packaged smoke passed all coverage flags for session, prompt, tool, abort, settle, reopen, two-worker overlap/isolation, provider abort isolation, subagent, and shutdown. Each of the four controlled protocol shapes issued four image requests; real Provider verification remained false by waiver.
  • Windows Spec 17.3 performance report passed all ten scenarios and all budgets at clean commit a795e0c: cold/warm RPC p95 626/627 ms, Composer p95 6 ms, Renderer first-commit p95 33.8181 ms (max 54.6524 ms), exit p95 20 ms, RSS p95 126536 KiB, and 100 runtime patch items transported in 20 batches/21 SSE frames/20 Renderer transactions.
  • Linux x64 final product was built under WSL2 kernel 6.6.87.2-microsoft-standard-WSL2. AppImage SHA-256 is 8b5a23de48670bd6edfac93ef74c5ebd58645c609ccd2a504d0d94ce04a18b06; deb SHA-256 is d6f5b08dec3ffc39c1944aeb38b1e8fa6fb7e1c6fcb72092c66d7c918a5590c5. The Linux compatibility executable is intentionally niancode, preserving the project identifier contract; the verifier default and unit test now match the actual electron-builder output.
  • Linux final-product artifact verification and packaged smoke passed with five samples and the same coverage/waiver contract. The 131-package/six-asset closure had no missing/relocated package, no product-owned OpenCode path, and no development path residue. Cold/warm ready p95 was 447/445 ms in artifact verification and 467/463 ms in smoke.
  • Linux Spec 17.3 performance report passed all ten scenarios and all budgets at clean commit a795e0c: cold/warm RPC p95 452/474 ms, Composer p95 5 ms, Renderer first-commit p95 27.5318 ms, exit p95 8 ms, and RSS p95 169668 KiB. This is WSL2 final-product/CLI/Electron-probe evidence, not an independent Linux desktop-compositor GUI acceptance run.
  • The aggregate package:linux command initially hit transient GitHub EOFs; retry produced x64 AppImage/deb. Its rpm sub-target did not complete because the isolated Ubuntu environment lacked rpmbuild; an attempt to install the standard rpm package was stopped after the Ubuntu mirror stalled. No x64 rpm artifact is claimed. This does not invalidate the qualified unpacked product, AppImage, or deb, but a later RPM release must run on a prepared Linux builder.

Follow-ups

  • Planner review of 977445b..a795e0c returned Standards Pass / Spec Needs Fix and requires direct final-ASAR composition smoke, distinct cold/warm prompt milestones, live 4-parent/4-child UI pressure plus cleanup proof, ASAR path enumeration for OpenCode residue, and the declared Linux x64 RPM target.
  • PI-160 should integrate candidate a795e0c and this task record, then perform canonical project-memory reconciliation in an integration-owned worktree.
  • Keep missing macOS x64/arm64 artifact/runtime/resource/performance evidence as a release blocker; do not promote a cross-platform release-ready or PI-150 Done conclusion without independent macOS execution.
  • If RPM distribution is required, rerun the x64 rpm target on a Linux builder with rpmbuild installed; do not infer rpm validity from AppImage/deb.
  • Real Provider Account and real-provider concurrency/credential/protocol compatibility remain accepted risk unless the user explicitly revokes the waiver and supplies provider access.

Promotion Candidates

  • PI-160 should promote the current Pi runtime/Conversation state from README and docs/pi-runtime-release-runbook.md into canonical project memory after integration review.
  • PI-160 should record QG-004/QG-005 as Explicitly Waived / Accepted Risk, with realTurnVerified=false; this is not a Pass.
  • PI-160 must preserve the macOS x64/arm64 missing-evidence blocker unless a later task supplies independent final-product evidence.