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 a931328..ab44f07 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 and ML-02 integrated) +- Status: In Progress (ML-01 through ML-03 integrated) ## Scope @@ -84,6 +84,18 @@ tests, and identity E2E; no Main, cloud, session, or provisioning logic was added. The foreign ML-02 task record was deleted from this coordinator's net diff after cherry-pick; the source worktree retains its own record. +- Integrated ML-03 Main Data Service from the exact ML-02 frontier + `003fe210f49de37c7ddf49cf10acde38705bf8c3` with no cherry-pick conflict. + Implementer commit `10d8132cc34f1a69fafdd9e9f7ff3693888fc3fc` was + cherry-picked as feature commit `c19227a` (`feat(coding): add Main Data + Service Host adapter`). The delivered scope is limited to the Main-owned + cloud client, shared safe DTOs, `DataServiceOperations` coding composition, + fixed `/api/works/data-service` Host routes, route precedence before the + Works catch-all, and focused tests; no preview/Pi/Renderer credential or + unrelated transport logic was added. The foreign ML-03 task record was + deleted from this coordinator after cherry-pick; the source worktree retains + its own record. The ML-04 frontier is this integrated commit plus the + coordinator's cleanup/record commit. ## Verification @@ -124,12 +136,27 @@ tests and reproduced one pre-existing PI model-combobox failure at `tests/e2e/pi-coding-first-chat.spec.ts:575` on its direct rerun. This unrelated failure remains visible and is not masked by the focused passes. +- ML-03 focused tests: `pnpm exec vitest run + tests/unit/data-service-client.test.ts tests/unit/data-service-routes.test.ts + tests/unit/data-service-server-registration.test.ts --maxWorkers=1` — 3 + files / 17 tests passed. +- ML-03 regression tests: `pnpm exec vitest run + tests/unit/coding-core-routes.test.ts tests/unit/coding-project-identity.test.ts + tests/unit/host-api-proxy.test.ts tests/unit/works-routes.test.ts + --maxWorkers=1` — 4 files / 82 tests passed. +- `pnpm typecheck`: passed. +- `pnpm lint:check`: passed with 0 errors and the same 5 existing warnings in + `src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`. +- `git diff --check`: passed. +- Coordinator branch, clean state, exact ML-02 HEAD, and ML-03 commit parent + were verified before integration; cherry-pick completed without conflicts. ## Follow-ups -- ML-02 identity choice and legacy/independent-copy UX is integrated. ML-03 - must use - `requireActiveRealProjectWithIdentity()` for all Data Service callers. +- ML-02 identity choice and legacy/independent-copy UX plus ML-03 Main Data + Service are integrated. ML-04 must consume the `DataServiceOperations` seam + from the recorded ML-03 frontier and preserve its active-project identity + and trusted project-path constraints. - The broader ML-00 through ML-09 coordinator task remains in progress; this record does not claim full client-suite, build, review, or release proof. diff --git a/.project-docs/30-worklog/tasks/20260826-ml03-main-data-service-7c4e2b18.md b/.project-docs/30-worklog/tasks/20260826-ml03-main-data-service-7c4e2b18.md deleted file mode 100644 index ce9d865..0000000 --- a/.project-docs/30-worklog/tasks/20260826-ml03-main-data-service-7c4e2b18.md +++ /dev/null @@ -1,85 +0,0 @@ -# Task: Implement ML-03 Main cloud client and Host routes - -## Identity - -- Task ID: 20260826-ml03-main-data-service-7c4e2b18 -- Mode: Feature -- Branch: codex/20260826-ml03-main-data-service-7c4e2b18-ml03-main-data-service -- Worktree: D:\Datas\OthersProjects\makelore-ml03-main-data-service-7c4e2b18 -- Base commit: 5ac08d509f8962a3c2c0ec1b1afef84a435f116d -- Owner: codex-ml03 -- Status: Ready for integration - -## Scope - -- Implement the Main-owned Data Service cloud client and the fixed operational - Host routes from ML-03, including strict DTO/error projection, session token - refresh/replay, active durable-project resolution, destructive confirmations, - and route registration before the Works catch-all. -- Expose one `DataServiceOperations` adapter through the coding composition for - Host routes and the later Pi product-tool ticket. -- Add focused client/adapter/route/registration tests without changing preview - sessions, Pi tools, Renderer credential handling, or loopback transport. - -## Intent And Constraints - -- Base is the exact post-ML-01 commit `5ac08d509f8962a3c2c0ec1b1afef84a435f116d`. -- Keep Works Square session ownership in the existing Main session service. A - logical request may replay only once after an authoritative upstream 401; - timeout, disconnect, 5xx, and other ambiguous failures are never replayed. -- Derive owner/project identity from `requireActiveRealProjectWithIdentity()`; - caller-controlled owner, durable project ID, local path, token, and endpoint - inputs are not accepted. `listProjects` is the only owner-wide operation. -- Keep request and upstream response parsing bounded and strict, project only - documented fields, and return the safe Host envelope. Keep canonical project - memory unchanged in feature mode. -- Preserve existing Host dispatcher behavior and register Data Service before - `handleWorksRoutes`; do not add preview capability, generated SDK, Pi tools, - or unrelated retry/loopback changes in this ticket. - -## Outcome - -- Implemented the Main-owned Data Service cloud client, strict shared DTOs, and the - single `DataServiceOperations` adapter. Active operations resolve the durable ID - through `requireActiveRealProjectWithIdentity()`; owner-wide `listProjects` is the - only operation without active-project resolution. Request/upstream JSON is bounded, - remote DTOs and accepted error context are projected to safe fields, and only an - authoritative cloud 401 can trigger one refresh/replay. Ambiguous transport and - upstream failures are never retried or exposed. -- Added the fixed `/api/works/data-service` Host routes with strict bodies, query - allowlists, strong `If-Match` projection, literal destructive confirmations, and - no caller-controlled owner, durable project ID, local path, token, or endpoint. - Registered the handler before the Works catch-all and added a regression test for - that precedence. The owner-wide list supports the documented recovery sequence: - identify an orphan, explicitly bind a disposable local project in the UI, then - confirm removal while that project is active. -- Wired the adapter through coding composition for Host and the later Pi tool slice; - no preview sessions, Pi tools, Renderer credentials, second session store, or - loopback transport changes were added. - -## Verification - -- `pnpm exec vitest run tests/unit/data-service-client.test.ts - tests/unit/data-service-routes.test.ts - tests/unit/data-service-server-registration.test.ts --maxWorkers=1` — 3 files, - 17 tests passed. -- `pnpm exec vitest run tests/unit/coding-core-routes.test.ts - tests/unit/coding-project-identity.test.ts tests/unit/host-api-proxy.test.ts - tests/unit/works-routes.test.ts --maxWorkers=1` — 4 files, 82 tests passed. -- `pnpm typecheck` — passed. -- `pnpm lint:check` — 0 errors; 5 existing warnings remain in - `src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`. -- `git diff --check` — passed (only existing LF/CRLF normalization warnings on - modified files). - -## Follow-ups - -- Run signed-in cross-repository acceptance against the reviewed Works Square server - branch, including real PostgreSQL behavior and the UI bind/recovery flow. -- ML-04 should consume this `DataServiceOperations` seam for in-process parent-worker - tools and preserve the trusted project-path equality check when its context is - available. - -## Promotion Candidates - -- None recorded.