diff --git a/.project-docs/30-worklog/tasks/20260826-makelore-data-service-client-b72e4c19.md b/.project-docs/30-worklog/tasks/20260826-makelore-data-service-client-b72e4c19.md index b19bc34..e3fab2b 100644 --- a/.project-docs/30-worklog/tasks/20260826-makelore-data-service-client-b72e4c19.md +++ b/.project-docs/30-worklog/tasks/20260826-makelore-data-service-client-b72e4c19.md @@ -8,7 +8,7 @@ - Worktree: D:\Datas\OthersProjects\makelore-data-service-client-b72e4c19 - Base commit: f2456039230f68e3ecb2c8653fc3379c23bbe5ce - Owner: codex-root -- Status: In Progress (ML-01 through ML-08 integrated; ML-09/X-01 pending) +- Status: In Progress (ML-01 through ML-09 integrated; review/X-01 pending) ## Scope @@ -162,6 +162,19 @@ changes. The five required verification commands and their one known E2E failure are recorded below. The product HEAD immediately before this documentation update was `a981b07faaa64b20bf9aef6353218fef26695ca2`. +- Integrated ML-09 remediation source commit + `b5060f254bfdb3a748739b74b1f583cc0236fa7c` from its exact parent + `239e20d2cf2242d636f9d42684f76f5777d9d1ee` as coordinator product commit + `38843e091fbbe68ec934336b8ed3a08c955afb28`, with no cherry-pick conflict. + The eight accepted review findings are all represented in the coordinator: + normal Pi parent Data Service allowlisting; camelCase Skill input; + credential-free HTTP/HTTPS loopback Origins; browser-generation lifecycle + fencing; README/Skill workflow documentation; narrow shared route parsers; + removal of the unused Agent Browser `onLifecycle` option; and removal of the + unused `handleDataServiceRoute` alias. The foreign ML-09 task record was + deleted from this coordinator while its source record remains in + `D:\Datas\OthersProjects\makelore-ml09-data-service-remediation-5e7c2a91`. + The product frontier after this merge is `38843e091fbbe68ec934336b8ed3a08c955afb28`. ## Verification @@ -382,6 +395,48 @@ 20260826-makelore-data-service-client-b72e4c19` check passed using the configured bundled Python runtime. Test/build output remained ignored and the worktree was clean before this task-record update. +- ML-09 precondition: coordinator was clean at exact ML-08 HEAD + `239e20d2cf2242d636f9d42684f76f5777d9d1ee`; the remediation source parent + matched that HEAD exactly and cherry-pick produced product commit + `38843e091fbbe68ec934336b8ed3a08c955afb28`. +- ML-09 focused remediation ledger: the 10-file equivalent set + (`data-service-sdk-assets`, `data-service-server-registration`, + `pi-rpc-foundation`, `pi-worker-process-real`, `preview-data-session`, + `agent-browser-core`, `agent-browser-routes`, `data-service-routes`, + `pi-extension-bundle`, and `pi-extension-ui-projector`) passed with 142 + tests and 2 skipped; Vitest reported 16.45s. +- ML-09 adjacent regressions covering tool profile, Data Service client/routes, + preview/browser adapter, Skill resource, and Pi host paths: 8 files / 77 + tests passed; Vitest reported 6.75s. +- ML-09 `pnpm typecheck`: exit 0, passed, approximately 5.31s. +- ML-09 `pnpm lint:check`: exit 0, passed with 0 errors and the same 5 + existing warnings in `src/pages/Home/index.tsx` and + `src/pages/Makelore/index.tsx`. +- ML-09 `pnpm build`: exit 0, passed through Vite, staged Pi runtime, and + Windows Electron/NSIS packaging. Existing dynamic-import/chunk-size, + optional-resource, npm shell deprecation, absent optional resource, and + non-fatal NSIS patch/signing warnings remained visible. +- ML-09 `pnpm test:electron:windows`: exit 0, 2 files / 4 tests passed + (Vitest 1.04s; command approximately 2.28s). +- ML-09 affected E2E `pnpm exec playwright test + tests/e2e/project-configuration-skills.spec.ts --config=playwright.config.ts`: + exit 0, 1 test passed (2.9s). +- ML-09 affected Pi E2E `pnpm exec playwright test + tests/e2e/pi-coding-first-chat.spec.ts --config=playwright.config.ts`: + exit 1, 1 test passed and 1 failed (33.8s). The known failure remains at + `tests/e2e/pi-coding-first-chat.spec.ts:575`: `当前对话模型` resolves to a + disabled combobox and `selectOption` times out after 30s. It is not counted + as an E2E pass and no remediation diff evidence connects it to ML-09. +- ML-09 eight-item boundary checks all passed: the exact ten Data Service + names are used by the normal Pi parent default while child profiles remain + explicit and Data Service-free; Skill input uses only `injectProjectData`; + loopback Origin and generation guards are present; README/Skill docs are + present; both route modules use the narrow parser module while retaining + route-specific failures; `subscribeLifecycle` remains without + `onLifecycle`; and only `handleDataServiceRoutes` remains. The merged path + audit matched the expected 15 source paths with no extra or missing path, + and the added-lines scope scan found no Firebase, Redis, retry/cache, or + published-runtime expansion. ## Follow-ups @@ -395,13 +450,13 @@ and ML-07 consumes only that local capability while keeping ordinary arbitrary URL opens data-free. - The broader ML-00 through ML-09 coordinator task remains in progress; this - record now has ML-08 command verification but does not claim ML-09 review, - release proof, or live acceptance. The client/server draft PR promotion is - externally blocked in this environment because GitLab HTTPS credentials are - unavailable non-interactively and `gh`/`glab` are not installed; no draft PR - is claimed from this worktree. -- ML-09 remains pending for repository-local review and one remediation - implementer if findings require it. X-01 remains a TODO after both reviews: + record now has ML-08 and ML-09 verification but does not claim review + closure, release proof, or live acceptance. The client/server draft PR + promotion is externally blocked in this environment because GitLab HTTPS + credentials are unavailable non-interactively and `gh`/`glab` are not + installed; no draft PR is claimed from this worktree. +- ML-09 remediation is integrated; review closure remains pending, including + the known Pi model-combobox E2E deviation. X-01 remains a TODO after review: exercise real PostgreSQL with a signed-in MakeLore preview and record live acceptance separately; repository E2E results cannot substitute for it. diff --git a/.project-docs/30-worklog/tasks/20260827-ml09-data-service-remediation-5e7c2a91.md b/.project-docs/30-worklog/tasks/20260827-ml09-data-service-remediation-5e7c2a91.md deleted file mode 100644 index 58a5d0b..0000000 --- a/.project-docs/30-worklog/tasks/20260827-ml09-data-service-remediation-5e7c2a91.md +++ /dev/null @@ -1,130 +0,0 @@ -# Task: ML-09 data service remediation - -## Identity - -- Task ID: 20260827-ml09-data-service-remediation-5e7c2a91 -- Mode: Feature -- Branch: codex/20260827-ml09-data-service-remediation-5e7c2a91-ml09-data-service-remediation -- Worktree: D:\Datas\OthersProjects\makelore-ml09-data-service-remediation-5e7c2a91 -- Base commit: 239e20d2cf2242d636f9d42684f76f5777d9d1ee -- Owner: codex -- Status: Ready for Integration - -## Scope - -- ML-09 repository-local remediation on the exact ML-08 client head - `239e20d2cf2242d636f9d42684f76f5777d9d1ee`. -- Resolve every accepted Standards/Spec review finding in one focused pass: - normal Pi worker Data Service tool allowlist, Pi camelCase Skill input, - loopback preview Origin acceptance, browser-generation lifecycle fencing, - README/Skill documentation, narrow parser sharing, and removal of two - unused compatibility seams. -- Keep the remediation limited to existing Data Service, Pi, Skill, preview, - routing, and tests; do not alter the unrelated Pi E2E selector failure. - -## Intent And Constraints - -- Follow the MakeLore Data Service P0 specification sections 9.4, 10.1-10.3, - 11-13 and ticket ML-09 in the accepted ticket graph. Main remains the only - Works credential owner; preview capability remains explicit, exact-Origin, - data-only, loopback-bound, and generation-bound. -- Preserve child explicit profiles, existing Agent Browser abstraction, route - auth/error/response ownership, ten public Data Service operations, and the - fixed SDK/Skill protocol. Do not add a generic route/repository/wrapper, - Firebase compatibility, retries, broad CORS, or unrelated E2E changes. -- Confirmed facts: the client coordinator has integrated ML-01 through ML-08 - and is clean at the stated base; the server contract/ADR are the canonical - cross-repository inputs. The known full-E2E Pi model-combobox timeout is - pre-existing and outside this remediation unless red evidence ties it to - this diff. Review ledger accepted eight findings: allowlist, camelCase - Skill field, loopback Origin, generation equality, README, narrow parser - sharing, unused `onLifecycle`, and unused `handleDataServiceRoute`. -- Unverified external inputs remain signed-in live acceptance, deployed server - state, and production packaging; this task cannot claim them. - -## Planning Gate - -- Result: Passed on 2026-08-27. -- Concurrent gate ran `check_project_docs.py`, then `task_context.py start` - with an occupied coordinator as source, producing the isolated worktree and - matching Git-common ownership. `status --json` verified the task ID, feature - mode, absolute worktree, branch, and exact base. -- Read the active task record, project positioning, integrated current state, - decision index, system overview, architecture/domain/evidence/reflection/ - commitment/stale indexes, client coordinator scope, and the server's - canonical Data Service spec, ticket graph, integration contract, and ADR. -- Other active Data Service coordinator scope is read-only context; it owns - the parent integration worktree, while this task owns only this remediation - worktree. ML-01 through ML-08 source worktrees are released or integrated; - no semantic file-ownership conflict is unresolved. - -## Plan - -1. Inspect current Pi tool registration, Skill assets, preview session/server, - route modules, shared route helpers, and lifecycle wiring; add red tests for - each accepted finding before the smallest corresponding implementation. -2. Implement the eight fixes without widening P0 boundaries; run affected - focused suites after each cohesive group. -3. Run full unit (including pressure), typecheck, lint, build, Electron, and - affected E2E checks available in this environment; retain any real - prerequisite or pre-existing failure as an explicit deviation. -4. Run diff/doc-drift checks, update this task record with outcome and evidence, - commit once, and complete the Task Documentation Gate. - -## Outcome - -- Completed the eight accepted ML-09 remediation findings on the exact ML-08 - client head: - - Normal Pi parent workers now default to the exact ten Data Service tools - from the shared contract; read-only and coding child profiles remain their - original explicit arrays, and the packaged child proof rejects all parent - product tools including Data Service tools. - - The bundled Skill now uses Pi's camelCase `injectProjectData: true` open - input. The raw Host HTTP snake_case adapter remains separate. - - Preview sessions accept credential-free HTTP and HTTPS loopback Origins, - including default ports, while retaining loopback, exact-origin, no-path, - and no-credentials restrictions. Lifecycle invalidation is fenced to the - session's current browser generation. - - README now names the fifth opt-in `data-service` Skill and documents its - short inspect/confirm/configure/SDK/preview read-back workflow without - duplicating the protocol. - - Identical Data Service record/body/path/query/revision/data parsers now - live in the narrow `data-service-parsers.ts` module. Each route retains its - own parser failure type/messages, authentication, response projection, and - CORS behavior. - - Removed the unused Agent Browser constructor `onLifecycle` option and the - unused `handleDataServiceRoute` alias; production `subscribeLifecycle` and - `handleDataServiceRoutes` remain. - -## Verification - -- RED: the new allowlist, Skill, Origin/generation, README, and alias - assertions failed at the unfixed base as expected. -- Focused remediation suites: 10 files, 142 passed, 2 skipped. -- Full unit and pressure suites: 188 files, 1,612 passed, 2 skipped; pressure - suite 1 passed. -- `pnpm run typecheck`: passed. -- `pnpm run lint:check`: passed with five existing warnings in - `src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`; no errors. -- `pnpm run build`: passed, including Vite, staged Pi runtime, and Windows - Electron packaging. Existing chunk-size, optional-resource, and NSIS patch - warnings remained non-fatal. -- `pnpm run test:electron:windows`: 2 files, 4 passed. -- Affected E2E: `project-configuration-skills.spec.ts` 1 passed. The Pi chat - spec had 1 passed and 1 timeout on the known model-combobox selector; the - failure is the same pre-existing baseline issue and has no diff evidence, - so it was not changed. -- `git diff --check` and the project-docs ownership/drift checks passed. - -## Follow-ups - -- Parent integration must merge this single remediation commit into the client - coordinator branch, then run the cross-repository X-01 against real - PostgreSQL and a logged-in MakeLore preview. This task did not claim live - acceptance or server deployment state. - -## Promotion Candidates - -- None recorded; the remediation changes are repository-local and the - canonical cross-repository contract/ADR already describe the retained - boundaries.