diff --git a/.project-docs/30-worklog/tasks/20260827-makelore-plugin-client-7d3a91c4.md b/.project-docs/30-worklog/tasks/20260827-makelore-plugin-client-7d3a91c4.md index b4908f2..0766c1c 100644 --- a/.project-docs/30-worklog/tasks/20260827-makelore-plugin-client-7d3a91c4.md +++ b/.project-docs/30-worklog/tasks/20260827-makelore-plugin-client-7d3a91c4.md @@ -8,7 +8,7 @@ - Worktree: D:\Datas\OthersProjects\makelore-plugin-client-7d3a91c4 - Base commit: eb5d15d68470b30ec181164f08f0d7b027ef0006 - Owner: codex-root -- Status: In Progress (ML-00/ML-02 integrated; ML-03 frontier pending) +- Status: In Progress (ML-00 through ML-03 integrated; ML-04 frontier pending) ## Scope @@ -104,6 +104,26 @@ downstream product frontier handed to ML-03 is `a0361a3cda08ab4d7454d35caa56a5a4304a9dca`. +- Integrated ML-03 from source task + `20260827-plugin-ml03-worker-materialization-9b2e6c41` and sole source commit + `945d6bd81016eec373a82f63182cf1f7cf0718f5`, whose exact parent was the + coordinator frontier `c4dd8923a0076920e8a7fd8820fdc01bdfde1760`. + The cherry-pick produced coordinator product commit + `fd891ff3bb87a29381a0a7006fb4618ec4fe144f` without conflict. The foreign + ML-03 task record was deleted from this coordinator while its source record + remains in + `D:\Datas\OthersProjects\makelore-plugin-ml03-worker-materialization-9b2e6c41`. + ML-03 owns exactly six Pi product files and five Pi-focused tests: one frozen + effective worker-resource snapshot, dynamic Skill/declaration/bridge/CLI + materialization, child-empty exposure, known-disabled/re-enabled assignment + behavior, old-worker refusal, and removal of the static Data Service worker + list. The source task execution briefly shared a worktree with an earlier + agent; that agent was interrupted when discovered, and the final commit was + then fully reviewed by serial takeover. This record does not claim that the + source task was never concurrently shared. The exact downstream product + frontier handed to ML-04 is + `fd891ff3bb87a29381a0a7006fb4618ec4fe144f`. + ## Verification - `git rev-parse HEAD` before the checkpoint returned exact @@ -178,12 +198,41 @@ consumer remains; every `data-service.v1` occurrence in `src/`, `electron/`, `shared/`, and `tests/` is the nested `payload_schema` contract. The ML-02 net change passed `git diff --check`. +- ML-03 precondition and merge: coordinator was clean at exact frontier + `c4dd8923a0076920e8a7fd8820fdc01bdfde1760`; source commit + `945d6bd81016eec373a82f63182cf1f7cf0718f5` had that exact parent and + cherry-picked without conflict as + `fd891ff3bb87a29381a0a7006fb4618ec4fe144f`. The merged change set contains + exactly six Pi product files and five named Pi tests, with no other Host, + Renderer, registry, preview, or P1 path; the source task record remains in + its worktree. The source execution's brief shared-worktree incident and + interruption were retained accurately; the merger's review and verification + were performed serially after takeover. +- ML-03 owned focused verification: + `corepack pnpm exec vitest run tests/unit/pi-resource-loader.test.ts + tests/unit/pi-extension-host.test.ts tests/unit/pi-extension-bundle.test.ts + tests/unit/pi-worker-process-real.test.ts tests/unit/pi-rpc-foundation.test.ts + --maxWorkers=1` — 5 files / 43 passed / 2 skipped (Vitest 7.65s; the skips + are staged-runtime gated). +- All Pi regressions: + `pi-*.test.ts` — 30 files / 169 passed / 2 skipped (Vitest 19.34s, one + worker). +- `corepack pnpm run typecheck` — passed. `corepack pnpm run lint:check` — + passed with 0 errors and the same 5 pre-existing warnings in + `src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`. +- `corepack pnpm run build:vite` — passed for Renderer, Main, Preload, and + utility bundles; only existing dynamic-import/chunk-size warnings were + emitted. The ML-03 changed files contain no static Data Service worker list; + dynamic declarations, bridge allowlisting, CLI agreement, child-empty + exposure, disabled/re-enabled assignment, and old-worker behavior are + covered by the owned focused suite. `git diff --check` passed. ## Follow-ups -- ML-03 may consume the policy/capability registry, bounded capability envelope, - Data Service adapter, and Pi product-tool delegation from exact product - frontier `a0361a3cda08ab4d7454d35caa56a5a4304a9dca`. +- ML-04 may consume the effective plugin worker-resource snapshot, dynamic Pi + declarations/bridge/CLI materialization, and child-empty behavior from exact + product frontier `fd891ff3bb87a29381a0a7006fb4618ec4fe144f`; ML-04 owns its + Host/Renderer composition changes. - The legacy `resources/coding-skills/data-service` path is intentionally removed by ML-01; any unowned downstream reference must be migrated by its owning ticket. This merger made no such downstream edit. diff --git a/.project-docs/30-worklog/tasks/20260827-plugin-ml03-worker-materialization-9b2e6c41.md b/.project-docs/30-worklog/tasks/20260827-plugin-ml03-worker-materialization-9b2e6c41.md deleted file mode 100644 index fcb00c8..0000000 --- a/.project-docs/30-worklog/tasks/20260827-plugin-ml03-worker-materialization-9b2e6c41.md +++ /dev/null @@ -1,120 +0,0 @@ -# Task: Implement ML-03 Pi worker resource materialization - -## Identity - -- Task ID: 20260827-plugin-ml03-worker-materialization-9b2e6c41 -- Mode: Feature -- Branch: codex/20260827-plugin-ml03-worker-materialization-9b2e6c41-plugin-ml03-worker-materialization -- Worktree: D:\Datas\OthersProjects\makelore-plugin-ml03-worker-materialization-9b2e6c41 -- Base commit: c4dd8923a0076920e8a7fd8820fdc01bdfde1760 -- Owner: plugin_ml03_worker_materialization -- Status: Ready for integration - -## Scope - -- Implement ML-03 dynamic Pi worker resource materialization from exact coordinator - frontier `c4dd8923a0076920e8a7fd8820fdc01bdfde1760`. -- Own only the Pi resource loader, extension host, runtime, worker process, - subagent child, `makelore-runtime` extension, the five named Pi-focused tests, - and this task record. -- Resolve one worker-resource snapshot before Skill materialization and extension - registration; carry effective Skills, frozen catalog revision, tool declarations, - allowed names, bridge allowlist, write-lease membership, and explicit CLI tools. -- Preserve core tools/Skills, keep child plugin catalog empty, remove the obsolete - static Data Service CLI allowlist, and prove disabled/re-enabled/old-worker and - child-denial behavior. - -## Intent And Constraints - -- Follow implementation spec sections 7.2-7.3 and 10.2, ticket ML-03, and detailed - design sections 8.5-8.7. The server catalog and ML-02 registry/envelope are the - authoritative upstream contracts; do not duplicate or alter them. -- Parent plugin exposure is the intersection of valid package, project selection, - selected Skill grant, permitted role, and verified policy. Known-disabled Skill - assignments remain in config/UI but do not enter the effective snapshot; truly - unknown assignments retain existing invalid-configuration behavior. -- A worker run freezes its catalog. Main-side invocation remains authoritative and - rechecks current selection; declarations are never authority. Child workers get - no plugin Skills/tools and no permission broadening. -- No Host, Renderer, preview, adapter, registry, P1 billing, generic endpoint, - arbitrary code/MCP/hooks, or static Data Service list changes. If an upstream - interface is semantically insufficient, stop and report to the coordinator. -- Test-first. Use the exact pinned pnpm version. Keep the worktree isolated and - clean; return one implementation commit with sole parent the exact base. - -## Project Context Loaded - -- Task ID/mode/branch/worktree/base match the Git-common owner record exactly. -- Concurrent Task Gate passed: `check_project_docs.py` succeeded and - `task_context.py start`/`status --json` show this task owns the isolated worktree. -- Planning Gate passed on 2026-08-27 after reading the required entry documents, - current integrated snapshot, accepted Pi runtime decision, relevant architecture, - domain/evidence/reflection/commitment/stale indexes, and peer task records. -- Other active local tasks include the client coordinator and historical/unrelated - planning tasks; the coordinator owns only its integration record/branch and no - ML-03 implementation files. No unresolved semantic conflict or ownership overlap - affects this ticket. The integrated memory predates the plugin work; the frozen - implementation spec, ticket graph, and exact ML-02 frontier control this task. - -## Plan - -1. Inspect the exact ML-02 frontier's Pi seams and existing tests without changing - files; map current resource/extension/worker/child contracts to the frozen ML-03 - requirements. -2. Add failing focused tests for one-snapshot effective resource resolution, - declaration/bridge/CLI agreement, disabled and re-enabled assignments, old - worker refusal, child denial, and unchanged core behavior. -3. Implement the smallest cohesive changes within the owned files, preserving the - existing Pi 0.84.2 product contracts and project write-lease semantics. -4. Run owned focused tests plus relevant Pi regressions, typecheck, scoped/full - lint as appropriate, and diff/doc gates; investigate and fix only failures in - owned scope. -5. Update this record with exact outcome/evidence/follow-ups, run task-aware doc - drift, and complete task_context to `ready_for_integration` on a clean one-commit - worktree. - -## Outcome - -- Implemented the ML-03 effective worker snapshot flow. Parent and child openers - resolve the capability registry once before materialization/registration and - pass the resulting effective Skill entries, catalog revision, and plugin tool - definitions through resource-loader and extension-host. Plugin Skill paths now - resolve from the fixed bundled package roots; disabled assignments therefore do - not reach the worker while the assigned configuration remains untouched. -- Pi extension contexts carry the frozen revision, effective Skill IDs, exact - declarations, dynamic bridge names, and `projectWriteLease` names. The bundle - registers only the declarations in that context and applies leases from the - declaration metadata. Child registrations force empty plugin tool exposure. -- Pi CLI defaults contain only the fixed core profile. Parent runtime workers - explicitly pass the fixed core profile plus the registration's plugin names; - the static Data Service CLI list was removed. Bridge requests accept bounded - string tool names but reject names outside the worker's frozen plugin set, - while retaining the fixed core product bridge tools. -- Owned tests cover plugin Skill resource roots, catalog metadata, dynamic - declaration/schema materialization, bridge denial for an unregistered tool, - dynamic lease metadata, core-only defaults, real Pi declaration/CLI agreement, - and enabled-to-disabled-to-re-enabled worker materialization without rewriting - the retained Agent assignment. - -## Verification - -- Owned focused (maxWorkers=1): - `tests/unit/pi-resource-loader.test.ts`, `pi-extension-host.test.ts`, - `pi-extension-bundle.test.ts`, `pi-worker-process-real.test.ts`, and - `pi-rpc-foundation.test.ts`: 43 passed, 2 skipped (staged-runtime gated). -- All `tests/unit/pi-*.test.ts` regressions with one worker: 30 files passed, - 169 passed, 2 skipped. -- `pnpm typecheck`: passed. -- `pnpm lint:check`: passed with five pre-existing warnings in - `src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`; no errors. -- `git diff --check`: passed. - -## Follow-ups - -- Coordinator ML-04 must wire the already-optional capability registry into - the production composition and keep its own Host/Renderer ownership; this - task intentionally did not edit composition or product-tools files. - -## Promotion Candidates - -- None.