docs: promote plugin marketplace Release A

This commit is contained in:
2026-08-30 15:36:52 +08:00
parent 40df677a31
commit 30f84fe973
8 changed files with 42 additions and 1439 deletions

View File

@@ -4,6 +4,9 @@
| Flow | Source | Destination | Notes |
|---|---|---|---|
| Marketplace catalog and Account Library | Signed-in Renderer intent | bounded Host API → Main Marketplace client/cache → Works Square catalog, Library, resolve, Admission, and download APIs | Main binds requests to the current Account and response generation. Free acquisition changes only Account Library; it does not install, enable a project, assign an Agent Skill, or authorize runtime execution. |
| Marketplace device installation | Account Library entry and explicit channel | Main resolve/Admission/download → descriptor/signature/archive/client compatibility verification → immutable Package Store index switch | Stable and explicit Beta remain distinct even when they resolve to the same immutable Release. Failed install/update retains the previous current release; explicit uninstall waits only for protecting worker/account references and completes after the final worker exits. |
| Effective Plugin worker snapshot | Installed trusted package + project selection + Agent assignments + current server policy | effective resolver → Registry/resource loader/Extension Host/tool catalog → parent Pi worker | One frozen snapshot supplies Skills, tools, package roots, and runtime authorization. Disable, account/project switch, logout, Renderer crash, Main shutdown, or worker generation change invalidates future actions without mutating persisted unknown assignments; child workers receive no Plugin projection. |
| 桌面认证生命周期 | Renderer 登录、刷新与注销请求 | Host API → Main Works Session → Works Square `/api/auth/{login,mobile-login,refresh,logout}` → one-feel auth | Main 加密持有并先持久化轮换 token客户端不携带 OAuth client secret连续 7 天未使用才清除会话,终止性 `400`/`401` fail closed |
| 用户模块入口策略 | 会话恢复 / 登录 / 刷新 | Electron Main → Works `/api/auth/me` → 四布尔安全投影 → Renderer auth store → 卡片/路由/provider gate | 缺失对象或字段默认 `true``design` 映射 `painting`;终止性 `401` 清理 Main/Renderer 会话;全局 `/settings` 不受 Code gate |
| 项目创建 | 新建项目对话框 | Host API → Main 项目初始化 | 创建时固定 `ProjectType`;小游戏/小程序原子生成受控模板,自定义只生成项目空间 |

View File

@@ -4,6 +4,10 @@
| Path | Responsibility | Owner Notes |
|---|---|---|
| `electron/coding-plugins/manifest.ts`, `release-descriptor.ts`, `signature-verifier.ts`, and `trusted-keys.ts` | Closed Plugin package/descriptor parsing, compatibility checks, canonical archive validation, and Ed25519 trust | Schema 1 bundled compatibility and schema 2 `skill_only`/declarative `platform_hosted` are parsed fail closed. The production trust store accepts no Marketplace package until the official public key is built in. |
| `electron/coding-plugins/account-plugin-cache.ts`, `marketplace-client.ts`, and `package-store.ts` | Main-owned Account Library cache, authenticated server client, and atomic immutable device installation store | Account acquisition and device installation are separate. Package bytes switch atomically only after descriptor, signature, archive, client-range, and provenance checks; failed updates preserve the prior current release. |
| `electron/coding-plugins/effective-resolver.ts`, `registry.ts`, `project-service.ts`, and `electron/coding-runtime/pi/**` | One effective installed-plugin projection and frozen parent-worker runtime snapshot | Project enablement and Agent Skill assignment are preserved independently. Only trusted, compatible, installed, policy-admitted resources enter a new parent worker; child workers remain empty and active workers retain frozen bytes until disposal. |
| `electron/api/routes/plugin-marketplace.ts`, `src/stores/plugin-marketplace.ts`, `src/pages/PluginMarketplace/`, `src/pages/MyPlugins/`, and `src/pages/ProjectPlugins/` | Bounded Main routes and Renderer projections for catalog, Library, device, and project actions | Renderer receives no Account token, filesystem path, Admission, package bytes, or signed download URL. Catalog/Library/device/project generations prevent stale A/B or cross-action results from replacing current state. |
| `src/components/works/ProjectPublishAction.tsx` | 可发布项目的一键提交、云构建轮询与用户可理解状态 | 只通过 Renderer API 提交非敏感元数据;绑定告警不终止轮询 |
| `src/lib/works-square.ts` | Renderer 侧 Works Square Host API 契约与安全错误映射 | 不接触 Token、ZIP、本地绝对路径或自动部署状态 |
| `electron/api/routes/works.ts` | Works Host API、Renderer capability 门禁、上游安全投影 | 发布凭据、打包、上传与本地绑定均在 Main 内完成 |

View File

@@ -4,6 +4,19 @@ This file is the integrated default-branch snapshot. Feature tasks record progre
## Integrated Through
- MakeLore curated Plugin Marketplace Release A source
`40df677a31ff7651f962151eb84b925987781c03` from task
`20260828-plugin-marketplace-client-5f8b3d72` is integrated by task
`20260830-integrate-plugin-marketplace-client-6e3b9d82`. Electron Main now owns
the authenticated Marketplace/Library client, immutable Package Store, trusted
release verification, effective installed-plugin resolution, and frozen Pi worker
materialization; Renderer exposes Marketplace, My Plugins, and Project Plugins
projections without receiving credentials, paths, Admissions, or signed URLs.
Data Service remains system-included and consumes zero Token Points. R7 Standards
and Spec reviews passed with zero findings, and XMA-01 passed all twelve live groups
against real PostgreSQL and a signed-in packaged Windows client. Production trust
activation remains HOLD until the official Ed25519 public key is built in; Release B
and hosted Provider runtime remain closed.
- Updater downgrade-prevention source commit `2e61800` from feature task
`20260826-fix-version-update-check-7c91a4` is integrated by task
`20260826-recover-pi-updater-integration-8f3a6c21`. Every automatic-update

View File

@@ -1,510 +0,0 @@
# Task: Implement MakeLore Development Data Service P0 client
## Identity
- Task ID: 20260826-makelore-data-service-client-b72e4c19
- Mode: Feature
- Branch: codex/20260826-makelore-data-service-client-b72e4c19-makelore-data-service-client
- Worktree: D:\Datas\OthersProjects\makelore-data-service-client-b72e4c19
- Base commit: f2456039230f68e3ecb2c8653fc3379c23bbe5ce
- Owner: codex-root
- Status: In Progress (implementation, review, and X-01 complete; draft PR publication externally blocked)
## Scope
- Coordinate the repository-local `implement-spec` run for client tickets ML-00
through ML-09 from post-Pi-integration base
`f2456039230f68e3ecb2c8653fc3379c23bbe5ce`.
- Deliver durable MakeLore project identity, Main-owned Data Service cloud/Host
operations, purpose-specific Pi tools, preview data sessions and CDP injection,
the thin generated SDK, bundled Data Service Skill, focused/full verification,
repository-local review, and one remediation pass when findings require it.
- Own the client implementation branch and merge only commits returned by isolated
ticket worktrees in dependency order.
## Intent And Constraints
- Follow the server repository's implementation specification, ticket graph,
canonical integration contract, and accepted ADR without reopening the frozen P0
product scope.
- Preserve the integrated Pi `0.84.2` hard cutover, product-neutral Snapshot/Patch
contracts, Main/Renderer trust boundary, current Host route ordering, and the
existing Agent Browser abstraction.
- `.niancode/project.json` owns the durable optional `projectId`; local project IDs,
Pi session/resource IDs, and the `opencode-projects` compatibility store name remain
local identities.
- Electron Main remains the only Works credential owner. Generated code receives only
an ephemeral exact-Origin data capability; no credential, owner, path, arbitrary
endpoint, or cloud project ID becomes a model-controlled input.
- Do not restore OpenCode, add Firebase compatibility, published-runtime support,
retries for ambiguous writes, a filesystem-copy engine, or a generic operation
multiplexer.
- The root `main` worktree remains clean and unowned. All writes stay in this isolated
coordinator worktree or ticket-specific linked worktrees.
## Planning Gate
- Result: Passed on 2026-08-26.
- Loaded MakeLore `AGENTS.md`, required project-memory entry documents, current state,
accepted auth and Pi decisions, relevant architecture/domain/evidence/commitment
material, the cross-repository Data Service spec/graph/contract, and the exact Pi,
Host API, project-storage, session, and Agent Browser seams at the recorded base.
- Registry review found 147 historical owners. Most are ready-for-integration and
represented in the selected base. Ten remain marked planning; nine have placeholder
scopes and therefore unknown coordination state, while one owns an unrelated AI
Design E2E file. No declared Data Service or owned-path semantic conflict exists.
- Real PostgreSQL, signed-in accounts, deployment inputs, and platform-specific E2E
prerequisites remain external acceptance inputs and will not be inferred as passed.
## Ticket Ownership
- ML-00: coordinator in this worktree.
- ML-01 through ML-07: isolated implementer worktrees from the exact merged frontier
commit, with the file ownership defined by the ticket graph.
- ML-08: repository-local merger in this implementation worktree.
- ML-09: read-only review followed by one isolated remediation implementer if needed.
- X-01: coordinated only after reviewed server and client branches are ready.
## Outcome
- Integrated ML-01 project identity from the exact integration frontier
`7e54b8fbda1899b73334d7c3e732ce8e73460ed8` with no cherry-pick conflict.
Implementer commit `274172ac9d7ea2468242448d4b0b19fd2205f8fb` was
cherry-picked as feature commit `43f58fc` (`feat(coding): add durable
project identity core`). The delivered scope is limited to identity core,
coding-project Host routes/composition and callback wiring, release-proof
fixtures, and focused tests. The implementer task record was removed from
this coordinator's net diff; the source worktree retains its own record.
- Integrated ML-02 identity UX from the exact ML-01 frontier
`5ac08d509f8962a3c2c0ec1b1afef84a435f116d` with no cherry-pick conflict.
Implementer commit `363660a81b3f79ffab4594763170932790f41299` was
cherry-picked as feature commit `ce8e210` (`feat(coding): add project
identity UX`). The delivered scope is limited to the Sidebar and Project
Configuration identity controls, Renderer facade/store projections, focused
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.
- Applied the ML-03 post-merge correctness correction from source commit
`0ecceef15d2e43190f835fd71a7a1478222f1ba8` onto coordinator frontier
`e15d8b7f51bea6b56558c981964082a4e76e523c`. The expected modify/delete
conflict was limited to the already-removed foreign ML-03 task record; it
was kept deleted, and the correction cherry-picked as feature commit
`6b36753` (`fix(coding): reject mismatched Data Service errors`). The Main
client now rejects known error codes paired with undocumented HTTP statuses
as `upstream_invalid_response`, with one focused regression test. The ML-04
frontier is `6b36753` plus this coordinator record commit.
- Integrated ML-04 from source commits
`e4fdeaea02cab216f4e7ff4543d57ca9e2aab33b` and
`93609d5890b6be4c51c083125d3d8ab7ebd3d02d` in the requested order as
coordinator commits `1d63233cd03425e9158b9c4868b3cfc0e508bc6f` and
`f61990f3a7f5ea417ca3eecc6702e71398f77d7f`. Git auto-merged the known
`data-service-client.ts` overlap without a conflict; the ML-03
`ERROR_STATUS_BY_CODE` ↔ HTTP-status validation remains alongside the ML-04
trusted `projectPath` authority seam. The ten parent-only underscore tools,
closed inputs, shared in-process `DataServiceOperations`, safe details and
literal confirmation behavior are retained. The foreign ML-04 task record
was removed from this coordinator after both cherry-picks; the source record
remains in `D:\Datas\OthersProjects\makelore-ml04-pi-data-tools-8d3c91a7`.
The ML-04 frontier is `f61990f3a7f5ea417ca3eecc6702e71398f77d7f` plus this
coordinator cleanup/record commit.
- Integrated ML-05 from source commit
`080b8801d29274b506700f94391339d98fb7aa0d` at the exact ML-04 frontier
`bec67082b3dade05e900911c13ad804e781309f6` as coordinator commit `e842dd4`
(`feat(coding): add preview data runtime session`), with no cherry-pick
conflict. The delivered scope is limited to the Main-owned ephemeral
preview session manager, exact `/api/runtime/data/v1` data-only routes,
early route precedence, trusted Data Service forwarding, lifecycle
invalidation wiring, and focused loopback coverage; ML-06 pre-document
injection was not included. The foreign ML-05 task record was removed from
this coordinator after cherry-pick; the source record remains in
`D:\Datas\OthersProjects\makelore-ml05-preview-data-session-5c8e2a71`.
The ML-06 frontier is `e842dd4` plus this coordinator cleanup/record commit.
- Integrated ML-06 from source commit
`992a0a68d743f766f19bc34c245adca4431ba321` at the exact ML-05 frontier
`14fec701086f60d78466b8e1cc3fb57ca8d7e200` as coordinator commit `38d63a9`
(`feat(agent-browser): add opt-in preview data injection`), with no
cherry-pick conflict. The delivered scope is limited to the explicit Agent
Browser preview-data opt-in, exact-Origin CDP pre-document script lifecycle,
child-session tracking/cleanup, and Main/session invalidation wiring; the
ordinary arbitrary-URL path remains data-free and no second BrowserWindow or
preload was added. The foreign ML-06 task record was removed from this
coordinator after cherry-pick; the source record remains in
`D:\Datas\OthersProjects\makelore-ml06-agent-browser-injection-2c7e91a4`.
The ML-07 frontier is `38d63a9` plus this coordinator cleanup/record commit.
- Integrated ML-07 from source commit
`d22ceef104b4f95e7a35888875dcb1c18245c190` at the exact ML-06 frontier
`552c6162a57894b713ea1f47d356fa48c0fc0cf1` as coordinator commit `549069d`
(`feat(coding): add generated Data Service SDK skill`), with no cherry-pick
conflict. The delivered scope is limited to the bundled Data Service Skill,
canonical TypeScript/JavaScript SDK assets, existing skill registry/display
registration, and focused SDK/install/workflow tests. The source commit and
coordinator range contain no root `task_plan.md`, `findings.md`, or
`progress.md` scratch files. The foreign ML-07 task record was removed from
this coordinator after cherry-pick; the source record remains in
`D:\Datas\OthersProjects\makelore-ml07-data-service-sdk-skill-6b4e91c2`.
The ML-08 frontier is `549069d` plus this coordinator cleanup/record commit.
- Completed ML-08 merge-and-verify on the exact clean product frontier
`a981b07faaa64b20bf9aef6353218fef26695ca2`, with fixed client base
`f2456039230f68e3ecb2c8653fc3379c23bbe5ce`. ML-01 through ML-07 are present
in dependency order through that product HEAD; this step made no product
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`.
- Final ML-09 repository-local review is complete over the fixed client review
range `f2456039230f68e3ecb2c8653fc3379c23bbe5ce`
`bb832c66660d993baa6147cf058078a5cd89fcb2`. Standards: PASS. Spec: PASS.
ML-00 through ML-09 product delivery, review, and the single remediation
pass are complete; this conclusion does not claim the external X-01 live
acceptance.
## Verification
- `pnpm exec vitest run tests/unit/coding-project-identity.test.ts
tests/unit/coding-projects-migration.test.ts
tests/unit/coding-core-routes.test.ts
tests/unit/coding-projects-schema-v2.test.ts`: 4 files / 48 tests passed.
- `pnpm typecheck`: passed.
- `pnpm lint:check`: passed with 0 errors and 5 pre-existing warnings in
`src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`; none are in
the ML-01 paths.
- `git diff --check`: passed.
- Cherry-pick parent, coordinator branch, and required integration frontier
were verified against `7e54b8fbda1899b73334d7c3e732ce8e73460ed8` before
integration; the cherry-pick completed without conflicts.
- ML-02 focused Renderer tests:
`pnpm exec vitest run tests/unit/coding-projects-facade.test.ts
tests/unit/project-config-store.test.ts
tests/unit/coding-workspace-store.test.ts --maxWorkers=1`: 3 files / 10
tests passed.
- `pnpm build:vite`: passed; generated the Main/Preload bundles required by
the Electron fixture.
- `pnpm test:electron:windows`: 2 files / 4 tests passed.
- `pnpm exec playwright test tests/e2e/coding-project-identity.spec.ts
--config=playwright.config.ts`: 2 tests passed after the Vite build.
- `pnpm exec playwright test
tests/e2e/project-configuration-skills.spec.ts
--config=playwright.config.ts`: 1 test passed.
- `pnpm typecheck`: passed.
- `pnpm lint:check`: passed with 0 errors and 5 pre-existing warnings in
`src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`; none are in
the ML-02 paths.
- `git diff --check`: passed; the net ML-02 path audit contains only Renderer
UI/facade/store and tests, with no `electron/`, `resources/`, or `scripts/`
files.
- Implementer-provided broader results (not rerun by this merger): `pnpm test`
passed with 183 files / 1554 tests and 2 skipped; the full E2E run passed 25
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.
- ML-03 correction focused tests: the same 3-file command passed 18 tests after
integrating `6b36753`.
- ML-03 correction `pnpm typecheck`: passed.
- ML-03 correction `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`.
- ML-03 correction `git diff --check`: passed.
- Correction cherry-pick was applied from the exact `e15d8b7` coordinator
frontier; only the expected foreign task-record modify/delete conflict
occurred, and the source record remains in the source worktree.
- The coordinator already had this task's Git-common ownership in feature mode
under `codex-root`; the required integration-mode resume was rejected by the
task gate, so the same task was resumed in its existing feature mode without
changing ownership, branch, or worktree.
- ML-04 Pi focused suite: `pnpm exec vitest run
tests/unit/pi-product-tools.test.ts tests/unit/pi-extension-bundle.test.ts
tests/unit/pi-extension-host.test.ts --maxWorkers=1` — 3 files / 23 tests
passed.
- ML-04 Data Service/projector + Pi focused suite:
`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
tests/unit/coding-conversation-contracts.test.ts
tests/unit/coding-conversation-timeline.test.tsx
tests/unit/coding-product-tools-facade.test.ts
tests/unit/pi-extension-ui-projector.test.ts
tests/unit/pi-product-tools.test.ts tests/unit/pi-extension-bundle.test.ts
tests/unit/pi-extension-host.test.ts --maxWorkers=1` — 10 files / 62 tests
passed.
- ML-04 `pnpm typecheck`: passed.
- ML-04 `pnpm 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`.
- ML-04 `git diff --check`: passed after the foreign task-record cleanup.
- ML-05 source focused/loopback suite:
`pnpm exec vitest run tests/unit/preview-data-session.test.ts
tests/unit/data-service-routes.test.ts tests/unit/coding-core-routes.test.ts
tests/unit/agent-browser-core.test.ts
tests/unit/coding-attachments-routes.test.ts --maxWorkers=1` — 5 files /
107 tests passed.
- ML-05 adjacent Data Service/client regressions:
`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
tests/unit/coding-conversation-contracts.test.ts
tests/unit/coding-conversation-timeline.test.tsx
tests/unit/coding-product-tools-facade.test.ts
tests/unit/pi-extension-ui-projector.test.ts tests/unit/pi-product-tools.test.ts
tests/unit/pi-extension-bundle.test.ts tests/unit/pi-extension-host.test.ts
--maxWorkers=1` — 10 files / 62 tests passed.
- ML-05 `pnpm typecheck`: passed.
- ML-05 `pnpm 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`.
- ML-05 `pnpm build`: passed Vite, Electron, Pi runtime, and Windows NSIS
packaging; the existing dynamic-import/chunk, optional dependency, and
absent optional packaged-resource warnings remained visible.
- ML-05 `pnpm test:electron:windows`: 2 files / 4 tests passed.
- ML-05 `git diff --check`: passed; the only coordinator deletion is the
foreign ML-05 task record, and the source worktree retains it.
- ML-05 exclusion scan over the merged diff found no
`injectProjectData`, `__MAKELORE_DATA__`,
`Page.addScriptToEvaluateOnNewDocument`, script-ID tracking, or navigation
injection markers.
- ML-06 was integrated from source commit
`992a0a68d743f766f19bc34c245adca4431ba321` at the exact ML-05 frontier
`14fec701086f60d78466b8e1cc3fb57ca8d7e200` as coordinator commit `38d63a9`
(`feat(agent-browser): add opt-in preview data injection`), with no
cherry-pick conflict. The change adds only the explicit Agent Browser
preview-data opt-in, exact-Origin CDP pre-document script lifecycle,
child-session tracking/cleanup, and Main/session invalidation wiring. The
foreign ML-06 task record was removed from this coordinator after
cherry-pick; the source record remains in
`D:\Datas\OthersProjects\makelore-ml06-agent-browser-injection-2c7e91a4`.
The ML-07 frontier is `38d63a9` plus this coordinator cleanup/record commit.
- ML-06 focused Vitest:
`pnpm exec vitest run tests/unit/agent-browser-core.test.ts
tests/unit/agent-browser-routes.test.ts tests/unit/pi-product-tools.test.ts
tests/unit/coding-core-routes.test.ts --maxWorkers=1` — 4 files / 122 tests
passed.
- ML-05 preview regressions after ML-06:
`pnpm exec vitest run tests/unit/preview-data-session.test.ts
tests/unit/data-service-routes.test.ts tests/unit/coding-core-routes.test.ts
tests/unit/agent-browser-core.test.ts
tests/unit/coding-attachments-routes.test.ts --maxWorkers=1` — 5 files /
120 tests passed.
- ML-06 `pnpm test:electron:windows`: 2 files / 4 tests passed.
- ML-06 `pnpm typecheck`: passed.
- ML-06 `pnpm 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`.
- ML-06 `pnpm build:vite`: passed for renderer, Main, preload, and utility
worker; existing dynamic-import and large-chunk warnings remained visible.
- ML-06 full E2E `pnpm test:e2e`: 25 tests passed and 1 existing test failed
at `tests/e2e/pi-coding-first-chat.spec.ts:575` because the `当前对话模型`
combobox remained disabled until timeout. A direct rerun of that test
reproduced the same timeout; this is not an ML-06 injection path and is not
counted as an E2E pass.
- ML-06 boundary checks passed: no new `BrowserWindow` or preload was added,
the ordinary arbitrary-URL path remains data-free, and the expected changed
path list contains only Agent Browser/session wiring, route/Pi propagation,
focused tests, and the task record.
- ML-06 `git diff --check`: passed after foreign task-record cleanup.
- ML-07 focused SDK/Skill assets:
`pnpm exec vitest run tests/unit/data-service-sdk-assets.test.ts
--maxWorkers=1` — after normalizing coordinator checkout line endings to the
source's canonical LF bytes, 1 file / 14 tests passed. The initial checkout
run had 13 passed and 1 frontmatter assertion failure caused solely by
CRLF; the normalized working files hash exactly to their committed blobs.
- ML-07 adjacent registry/display/resource/Pi suite:
`pnpm exec vitest run tests/unit/data-service-sdk-assets.test.ts
tests/unit/skill-display.test.ts tests/unit/pi-resource-loader.test.ts
tests/unit/pi-product-tools.test.ts --maxWorkers=1` — 4 files / 34 tests
passed. Packaged resource listing includes `SKILL.md`, `assets/`,
`assets/makelore-data.ts`, and `assets/makelore-data.js`.
- ML-07 full unit verification: the normal parallel runner had 1 Vitest fork
worker exit unexpectedly after 187/188 files and 1606 passed tests (2
skipped), with no assertion failure. The serial rerun
`pnpm exec vitest run --exclude tests/unit/coding-chat-pressure.test.tsx
--maxWorkers=1` passed 188 files / 1610 tests with 2 skipped, followed by
`pnpm exec vitest run tests/unit/coding-chat-pressure.test.tsx
--maxWorkers=1` — 1 test passed.
- ML-07 `pnpm typecheck`: passed.
- ML-07 `pnpm 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`.
- ML-07 `pnpm build`: passed Vite, Electron, Pi runtime, and Windows NSIS
packaging; existing dynamic-import/chunk, optional dependency, and absent
optional packaged-resource warnings remained visible.
- ML-07 `pnpm test:electron:windows`: 2 files / 4 tests passed.
- ML-07 affected E2E:
`pnpm exec playwright test tests/e2e/project-configuration-skills.spec.ts
--config=playwright.config.ts` — 1 test passed.
- ML-07 SDK static boundary checks found no cloud credential, external URL,
retry call, cache/offline storage, Firebase, or Works Square behavior; the
only Authorization/Bearer use is the injected local preview token required
by the contract. Skill checks confirmed inspect → explicit
`data_service_configure` → `agent_browser` → read-back → report ordering and
the exact-copy/no-op/conflict policy.
- ML-07 root-scratch and boundary scans passed; changed paths are limited to
the Data Service skill assets, registry/display registration, focused tests,
and the task record. `git diff --check` passed after foreign task-record
cleanup.
- ML-08 precondition: coordinator branch was clean at product HEAD
`a981b07faaa64b20bf9aef6353218fef26695ca2`, based on
`f2456039230f68e3ecb2c8653fc3379c23bbe5ce`; no product file was changed by
this verification step.
- ML-08 command ledger (run in this coordinator worktree):
`pnpm typecheck` — exit 0, passed, approximately 5.32s.
- `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`,
approximately 10.01s.
- `pnpm test` — exit 0, passed; main suite 188 files / 1610 tests passed / 2
skipped (Vitest-reported 42.86s), followed by the pressure suite 1 file / 1
test passed (1.77s). No assertion failure or worker exit occurred.
- `pnpm test:electron:windows` — exit 0, passed; 2 files / 4 tests passed
(Vitest-reported 1.02s; command approximately 2.34s).
- `pnpm test:e2e` — exit 1; its required `build:vite` phases completed
successfully, then Playwright ran 26 tests with 25 passed and 1 failed.
The failure is the known `tests/e2e/pi-coding-first-chat.spec.ts:575`
`locator.selectOption` 30s timeout because combobox `当前对话模型` remained
disabled; this is not an E2E pass and remains a release/acceptance deviation.
Playwright reported approximately 1.0m for the run. The build emitted only
existing dynamic-import and chunk-size warnings.
- ML-08 post-command hygiene: `git diff --check` passed; the first drift
invocation was unavailable because `python` is not on the PowerShell PATH,
then the same `check_doc_drift.py --task-id
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.
- Final ML-09 review ledger: fixed range
`f2456039230f68e3ecb2c8653fc3379c23bbe5ce` →
`bb832c66660d993baa6147cf058078a5cd89fcb2`; Standards PASS and Spec PASS.
ML-00 through ML-09 product/review scope is complete. This documentation
update changes no product files; the worktree remains held for X-01.
### X-01 cross-repository acceptance
- The installed Windows client used for final acceptance was staged from product HEAD
`c52a559b46f72273a02e2dba18e65a5f6c4224c9`, against reviewed server product
`13d4bc1b87c9d66cdd26b9a3c40f69d9c039a2e9`, disposable real PostgreSQL at Alembic
revision `20260826_0058_data_service`, and a disposable local signed identity
provider. Test identities were isolated aliases for account A, account B,
expired-session refresh, capacity quota, and mutation-rate cases; no production
credential or secret was used or persisted.
- Live acceptance exposed four client defects on the actual CDP path. The single
ML-09 remediation owner fixed them in committed product changes: preserve/defer the
exact target origin across initial `about:blank` injection (`0a4f526`, `afb5c10`),
enable the Page domain before installing root/child scripts (`23c49aa`), and bound
crashed-target cleanup so close/reopen cannot hang (`c52a559`). Each source task
added focused regression tests, passed its project-documentation gates, and was
integrated in order without editing the user root worktree.
- All 15 specification section 14 groups then passed through the packaged client:
lazy provisioning; configure plus preview write/read; restart and move; bind/raw
copy sharing; independent-copy separation; two-way owner isolation; one session
refresh; no-op/conflict/delete-recreate revision behavior; item/byte pagination and
cursor expiry; atomic quota/rate failures; collection/reset/orphan removal; exact
Origin and all ten lifecycle invalidations; external `runtime_unavailable`; and the
credential-absence ledger. Every invalidated preview endpoint became unusable, and
the data capability could not call general Host routes.
- Final product-head verification passed `pnpm typecheck`, `pnpm lint:check` with zero
errors and the same five existing warnings, `pnpm test` with 188 files / 1615 tests
passed and 2 skipped plus the single pressure test, and
`pnpm test:electron:windows` with 2 files / 4 tests. The packaged current-head build
was used for the successful live run. The earlier full Playwright run remains
accurately recorded as 25 passed / 1 existing unrelated model-selector timeout; it
is not relabeled as passed.
- Final post-X-01 review fixed the full committed product range
`f2456039230f68e3ecb2c8653fc3379c23bbe5ce` →
`c52a559b46f72273a02e2dba18e65a5f6c4224c9`. The independent Standards reviewer
returned PASS with no actionable finding, including the four CDP/lifecycle fixes
and all prior ML-09 remediations. The independent Spec reviewer returned PASS with
no actionable finding across specification sections 8 through 14, exact-Origin
installation/exposure, bounded crash cleanup, identity and Main-only credential
boundaries, SDK/Skill behavior, and the frozen P0 scope.
- The disposable client profiles and preview projects were removed by the harness;
local server/identity-provider processes were stopped, the PostgreSQL container was
removed, and all untracked operational scripts were deleted. No acceptance harness
is a product artifact.
- Go decision for implemented P0 behavior: **GO**, subject to publishing both draft
PRs once repository credentials/tooling are available. Rollout remains server-first,
and published works/external browser data runtime remain outside P0.
## Follow-ups
- GitLab HTTPS PR authentication remains unavailable non-interactively in this
environment and `gh`/`glab` are not installed; draft PR promotion remains
blocked and no draft PR is claimed from this worktree.
- The existing full E2E deviation remains: 25 passed / 1 failed at
`tests/e2e/pi-coding-first-chat.spec.ts:575` because the `当前对话模型`
combobox stays disabled until the 30s selector timeout.
## Promotion Candidates
- None recorded.

View File

@@ -1,523 +0,0 @@
# Task: Implement MakeLore Plugin Platform P0 client
## Identity
- Task ID: 20260827-makelore-plugin-client-7d3a91c4
- Mode: Feature
- Branch: codex/20260827-makelore-plugin-client-7d3a91c4-makelore-plugin-client
- Worktree: D:\Datas\OthersProjects\makelore-plugin-client-7d3a91c4
- Base commit: eb5d15d68470b30ec181164f08f0d7b027ef0006
- Owner: codex-root
- Status: Ready for Integration
## Scope
- Coordinate the repository-local `implement-spec` unit for ML-00 through ML-07
from exact accepted Data Service head
`eb5d15d68470b30ec181164f08f0d7b027ef0006`.
- Deliver the fixed bundled package, project selection, strict policy/capability
registry and envelope, dynamic Pi Skill/tool materialization, Host/lifecycle
integration, Plugin Center, packaged proof, verification, and fixed-range review.
- Own only this isolated client branch, repository-local integration, project task
record, client verification, and the client half of X-01 evidence.
## Intent And Constraints
- Preserve accepted Data Service project identity, Main-owned credential and typed
operation seams, exact-Origin preview lifecycle, SDK/Skill behavior, and Pi 0.84.2
hard-cutover contracts.
- Keep package availability, local enablement, Agent Skill assignment, backend
configuration, invocation, and billing policy independently observable.
- P0 scans only fixed bundled roots and adds no arbitrary code/MCP/hooks,
marketplace, download/update, generic invoke/config/ledger, Plugin Credits,
`plugin_charges`, publication coupling, or external-browser capability.
- Renderer cannot choose project authority, owner, credential, policy, price, or
request identity; child workers receive no plugin Skills/tools.
- All implementation tickets use exact-frontier isolated worktrees and one commit;
implementers are not alone in the repository and must not revert other changes.
- The user root `main` worktree is read-only. The user did not request publication;
no PR is claimed unless one actually exists.
## Project Context Loaded
- Task ID/mode/branch/worktree/base match the Git-common owner record exactly.
- Read `AGENTS.md`, the mandatory project-memory entry set, active task record,
positioning/current-state/decision/architecture/data-flow/domain/evidence/
reflection/commitment/stale material, the implementation spec, detailed-design
sections 6-9 and 14-17, ticket graph, and the accepted Data Service client peer.
- Other local owners: 149 including this task (12 planning, 137 ready for
integration). The only same-topic peer is the completed Data Service coordinator
whose exact evidence head is this task's base; it is not resumed or modified.
- Overlap assessment: no unresolved semantic conflict. ML-01 through ML-05 have
disjoint primary ownership and execute strictly in graph order; ML-02 waits for
both ML-01 and the exact WS-02 catalog DTO.
- Current integrated memory predates this unintegrated Data Service/plugin work;
accepted branch/task evidence and the frozen spec control this feature branch.
- Likely modules are the package/project-service, policy/capability registry,
Pi resource/runtime, Host composition/lifecycle, Renderer Plugin Center, and
packaged-proof paths named by the ticket graph.
- Gate result: Passed on 2026-08-27.
## Ticket Ownership
- ML-00, ML-06, and X-01 client evidence: coordinator in this worktree.
- ML-01 through ML-05: isolated implementers from exact frontier commits, with ML-02
waiting for WS-02's catalog shape.
- ML-07: fixed-range Standards/Spec reviewers; accepted findings go to one isolated
remediation owner before repeat review.
## Outcome
- ML-00 completed: the client coordination unit is isolated from exact accepted
Data Service evidence head, ownership/planning gates passed, and no product file
changed before the first implementation frontier.
- Integrated ML-01 from replacement source commit
`c092863ee600808e8a7c15440b3c370fd649a885` at the exact ML-00 frontier
`2ab1c51a2404086cbd688ac80154765d7c5d4662` as coordinator product commit
`422150d4fabdcc703952797875f88f239ca1e37a`, with no cherry-pick conflict.
The superseded `f83038d371888cca87f0f04d0e61906d499668eb` was not
cherry-picked. ML-01 adds the fixed bundled Data Service plugin manifest and
capability projection, atomic project plugin selection service, package-owned
Skill/SDK resource move, and core Skill registry projection. The coordinator
foreign ML-01 task record is removed in the docs checkpoint while its source
record remains in
`D:\Datas\OthersProjects\makelore-plugin-ml01-package-selection-8d3c7a21`.
The exact downstream product frontier handed to ML-02 is
`422150d4fabdcc703952797875f88f239ca1e37a`.
- Integrated ML-02 from source task
`20260827-plugin-ml02-policy-registry-3f7b2c91` and sole source commit
`0064043c8f1e0e80c0b73dd0064b3abe8ba30b01`, whose exact parent was the
coordinator frontier `d9c9a2b0dd8fd495c6aa5a0994598192ad9c8e58`.
The cherry-pick produced coordinator product commit
`a0361a3cda08ab4d7454d35caa56a5a4304a9dca` without conflict. The foreign
ML-02 task record was deleted from this coordinator while its source record
remains in
`D:\Datas\OthersProjects\makelore-plugin-ml02-policy-registry-3f7b2c91`.
ML-02 consumes the frozen WS-02 catalog DTO: schema version 1, one
`makelore.data-service` plugin, three capabilities/fourteen operations, and
`platform_metered` unavailable projected as `billing_unavailable`. The
coordinator-approved one-time ownership transfer covered only the
`ToolDetails` envelope discriminator/display branch in
`src/pages/Chat/CodingConversationTimeline.tsx`; no other Renderer,
worker, Host, preview, or P1 path was transferred or changed. The exact
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`.
- ML-04 and ML-05 are integrated through their exact dependency frontiers. ML-04
composes the bounded Main-owned project plugin Host projection and lifecycle;
ML-05 adds the project-level Plugin Center and typed Data Service settings without
moving project, credential, policy, or billing authority into Renderer.
- ML-06 completed from exact post-ML-05 checkpoint
`8fea40238fcb6431fd805c7dd0d717bef0cfd1bb`. Packaged-proof commit
`7141a91a2c1c00881b18702508d2be8a398a0823` verifies the bundled plugin
manifest, capability manifest, Skill, TS/JS SDK assets, adapter/tool catalog,
core coding resources, and final Pi runtime artifact. The implementation range
contains no arbitrary plugin execution, generic invoke/config/ledger,
marketplace, publication coupling, `plugin_charges`, Plugin Credits, or P1 code.
- The first ML-07 fixed-range review over exact `eb5d15d...9407c67` returned
Standards FAIL and Spec FAIL. Ten independent accepted root causes were assigned
to one isolated remediation owner; the package-parser duplication finding was
reported by both axes and counted once. Source remediation commit
`2492f8af5ba27d914b2c0b2789b46f78305c924d` had exact parent
`9407c67df21c2f0f50bb0362c826fcff643d9d5f` and was integrated without conflict
as coordinator product commit `cf13aa7`. The foreign remediation task record is
removed from this coordinator while remaining in its source worktree.
## Verification
- `git rev-parse HEAD` before the checkpoint returned exact
`eb5d15d68470b30ec181164f08f0d7b027ef0006`.
- The fresh worktree initially had no `node_modules`, so the first typecheck failed
only because `tsc` was unavailable. `corepack pnpm install --frozen-lockfile`
installed the locked 997-package graph with pnpm `10.33.4`; no source or lockfile
changed.
- `corepack pnpm run typecheck` then passed.
- The nine-file Data Service/Pi/package baseline (`data-service-sdk-assets`,
`data-service-server-registration`, `pi-product-tools`, `pi-extension-host`,
`pi-worker-process-real`, `coding-conversation-contracts`,
`preview-data-session`, `data-service-routes`, and `pi-product-artifact`) passed
`70 passed, 2 skipped` in 10.21s with one worker.
- No client product file changed; only this task-scoped record is committed by
ML-00. The root `main` worktree was restored clean at `f245603...` after an
initial task-context claim selected the clean root despite isolation arguments;
the generated record/claim were removed through the normal release path before
the successful isolated start from `eb5d15d...`.
- ML-01 precondition and merge: coordinator was clean at exact frontier
`2ab1c51a2404086cbd688ac80154765d7c5d4662`; replacement source parent matched
exactly; cherry-pick produced `422150d4fabdcc703952797875f88f239ca1e37a`
without conflict.
- ML-01 focused verification:
`corepack pnpm exec vitest run tests/unit/data-service-sdk-assets.test.ts
tests/unit/coding-plugin-manifest.test.ts tests/unit/project-plugin-service.test.ts
tests/unit/skill-display.test.ts tests/unit/pi-product-tools.test.ts
--maxWorkers=1` — 5 files / 45 tests passed (Vitest 3.15s).
- ML-01 `corepack pnpm run typecheck` — passed.
- ML-01 `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`.
- Scoped ESLint over ML-01-owned source/tests — passed with no output.
- The Skill and SDK resource move is byte-for-byte (`R100`). The ML-01-owned
`tests/unit/data-service-sdk-assets.test.ts` assertion now targets the
canonical package path and passed; this merger did not edit unrelated tests.
Any remaining consumer of the removed legacy
`resources/coding-skills/data-service` path must migrate under its owning
ticket, not this merger.
- ML-01 path/scope audit matched the source change set: package manifest/service,
existing Skill registry/shared definitions, plugin resources, and focused tests
only. No P1 policy/capability-invoke, Pi runtime, Host, Renderer,
marketplace/download/update, generic execution, pricing, or billing paths were
added. `git diff --check` passed.
- ML-02 precondition and merge: coordinator was clean at exact frontier
`d9c9a2b0dd8fd495c6aa5a0994598192ad9c8e58`; source commit
`0064043c8f1e0e80c0b73dd0064b3abe8ba30b01` had that exact parent and
cherry-picked without conflict as
`a0361a3cda08ab4d7454d35caa56a5a4304a9dca`. The source change set was
limited to the policy client, capability registry/Data Service adapter, Pi
product-tool delegation, bounded shared contracts, focused tests, and the
one approved timeline branch. No other Renderer, worker, Host, preview, or
P1 file was present; the source task record remains in its worktree.
- ML-02 focused verification:
`corepack pnpm exec vitest run tests/unit/plugin-policy-client.test.ts
tests/unit/coding-capability-registry.test.ts
tests/unit/data-service-plugin-adapter.test.ts tests/unit/pi-product-tools.test.ts
tests/unit/coding-conversation-contracts.test.ts --maxWorkers=1` — 5 files /
38 tests passed (Vitest 3.26s).
- Transferred timeline verification:
`corepack pnpm exec vitest run tests/unit/coding-conversation-timeline.test.tsx
--maxWorkers=1` — 1 file / 4 tests passed (Vitest 1.65s).
- Relevant adjacent regressions:
`coding-plugin-manifest`, `project-plugin-service`, `skill-display`,
`coding-chat-panel`, `coding-product-services`, `coding-product-tools-facade`,
`data-service-client`, and `data-service-routes` — 8 files / 57 tests passed
(Vitest 9.69s, 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`.
- Product contract audit passed: no `details.schema === 'data-service.v1'`
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.
- ML-04 precondition and merge: coordinator was clean at exact frontier
`a92cd904d33d4fa0b7c2413188186852a39eb6d4`; source commit
`1e925bc10ade8aed1a580362dfa65223993e3a24` had that exact parent and
cherry-picked without conflict as
`a18727ecf8f40c1d85e2d40922bcf3bc8d1a0ed3`. The product change set contains
four Main API files (`coding-composition`, `coding-product-services`,
`route-handlers`, and `routes/coding-plugins`), three new focused tests, and
one existing Data Service server-registration test update. There are no
changes to `project-service`, preview, Renderer, P1, `electron/api/context.ts`,
`electron/api/server.ts`, or `electron/main/index.ts`; the source task record
remains in its worktree.
- ML-04 focused verification:
`corepack pnpm exec vitest run tests/unit/coding-plugin-routes.test.ts
tests/unit/coding-plugin-composition.test.ts tests/unit/coding-plugin-lifecycle.test.ts
tests/unit/coding-product-services.test.ts tests/unit/data-service-server-registration.test.ts
tests/unit/coding-core-routes.test.ts tests/unit/coding-project-identity.test.ts
tests/unit/main-quit-lifecycle.test.ts --maxWorkers=1` — 8 files / 47 tests
passed (Vitest 4.73s). The route tests confirm exact GET
`/api/coding/plugins?projectId=...` and PUT `/api/coding/plugins/{plugin_id}`
bodies with Main-only authority; composition/lifecycle tests cover bounded
projection and `list`/`setEnabled`/`deactivate` wiring.
- ML-04 adjacent policy/capability/Data Service/Pi/preview regressions:
`coding-capability-registry`, `plugin-policy-client`,
`data-service-plugin-adapter`, `coding-conversation-contracts`,
`pi-product-tools`, `data-service-routes`, `data-service-sdk-assets`,
`pi-extension-bundle`, `pi-extension-host`, `pi-resource-loader`,
`preview-data-session`, and `pi-worker-process-real` — 12 files / 86 passed /
2 skipped (Vitest 8.37s, one worker; skips are staged-runtime gated).
- `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. `git diff --check` passed.
## ML-05 Integration
- Integrated ML-05 from source task
`20260827-plugin-ml05-plugin-center-6c1e9a42` and sole source commit
`379e575efba8cecb17b10e5e195f05924b827782`, whose exact parent was the
coordinator frontier `b6d9e6156fdc98aa792045692cc25fdce993a531`.
The cherry-pick produced coordinator product commit
`cb1fd2629ce861f72eada35a83e730986fb1c3d1` without conflict. The source
commit contained its source task record plus fourteen Renderer/product-test
files; the foreign task record was deleted from this coordinator in this
checkpoint while the source record remains in
`D:\Datas\OthersProjects\makelore-plugin-ml05-plugin-center-6c1e9a42`.
ML-05 adds the project-scoped Plugin Center, typed project-plugin client/store,
Data Service settings surface, and project navigation. It does not add Main
authority, worker, preview, policy, marketplace, or P1 behavior. The exact
downstream product frontier handed to ML-06 is the post-merge docs checkpoint
recorded below.
- ML-05 focused regression command (using the repository's actual singular
`coding-plugin-routes.test.ts` filename) passed 13 files / 75 tests in 8.64s
with 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 with only existing dynamic-import/chunk-size warnings. After this
required build, `corepack pnpm exec playwright test
tests/e2e/project-plugins.spec.ts --config=playwright.config.ts` passed 1/1
test in 1.7s. A preliminary direct Playwright invocation against stale
`dist-electron` timed out waiting for the new navigation test id; it is not
counted as a product failure because the repository E2E contract builds first.
## ML-06 Merge, Package Proof, And Verification
- Exact ML-06 base/checkpoint:
`8fea40238fcb6431fd805c7dd0d717bef0cfd1bb`; packaged-proof product head:
`7141a91a2c1c00881b18702508d2be8a398a0823`. The product commit changed only
`scripts/lib/pi-product-artifact.mjs` and
`tests/unit/pi-product-artifact.test.ts`; no semantic merge conflict or
ownership transfer occurred.
- `corepack pnpm exec vitest run tests/unit/pi-product-artifact.test.ts
--maxWorkers=1` — 1 file / 7 tests passed.
- `corepack pnpm run typecheck` — passed. `corepack pnpm run lint:check` —
0 errors and the same 5 pre-existing warnings in `src/pages/Home/index.tsx`
and `src/pages/Makelore/index.tsx`.
- `corepack pnpm test` — normal suite 200 files / 1,667 passed / 2 skipped,
followed by the isolated pressure suite 1 file / 1 passed. Combined result:
1,668 passed / 2 staged-runtime skips.
- `corepack pnpm test:electron:windows` — 2 files / 5 tests passed.
- `corepack pnpm test:e2e` rebuilt Renderer/Main/Preload/utility and completed
26 passed / 1 failed. The failure exactly reproduces the frozen baseline:
`pi-coding-first-chat.spec.ts` timed out after 30 seconds because the existing
`当前对话模型` combobox remained disabled at `selectOption`. The new
`project-plugins.spec.ts` passed. The failure is recorded, not converted to a
pass and not attributed to Plugin Center.
- A fresh `corepack pnpm run package:win` rerun could not reacquire fixed uv
`0.10.0`: GitHub first reset the connection and the one targeted retry timed
out before product packaging. The worktree remained clean. The already-built
Windows artifact was independently verified as current head rather than
assumed from its timestamp:
- `corepack pnpm run verify:artifact:win` passed and reported both
`gitCommit` and `verificationHead` as exact
`7141a91a2c1c00881b18702508d2be8a398a0823`, with packaged
Python, uv, npm, Electron, Node, and native modules present.
- `corepack pnpm run verify:artifact:pi` passed the outer product-artifact
contract and proved one `makelore.data-service` package, its manifest,
capability manifest, `data-service` Skill, both SDK assets, adapter, exact
ten-tool catalog, core coding resources, Pi closure, and packaged runtime
probe. The nested legacy runtime report remains `partial-pass` only for its
recorded cross-platform/real-provider waivers; no such waiver is promoted to
a Plugin Platform pass.
- `git diff --check eb5d15d...7141a91` passed. Full-range path/content review
found only canonical manifest/registry lists and negative unsupported-component
tests; it found no static Pi CLI Data Service allowlist, arbitrary execution,
generic ledger/config/invoke, marketplace/publication coupling, checksums, or
P1 implementation.
## ML-07 First Review And Remediation
- Fixed range `eb5d15d68470b30ec181164f08f0d7b027ef0006` through
`9407c67df21c2f0f50bb0362c826fcff643d9d5f`: Standards FAIL and Spec FAIL.
Accepted issues were production package-parser/static-definition duplication,
disabled Skill implicit activation, missing preview/exact operation policy join,
the direct Pi Data Service fallback, missing request/fault evidence, unbounded
policy fetch/body, ready-enable settings loss, unsafe Skill-ID typing,
out-of-order project-load commits, and stale README inventory.
- The sole remediation commit makes the parsed frozen package definitions the Main
authority; projects three capabilities/fourteen exact operations while keeping
preview non-tool; removes the second Pi direct path; makes disabled retained Skill
availability explicit; bounds policy refresh; preserves ready settings on enable;
uses `CodingSkillId`; guards A/B loads; and updates README.
- Source verification: focused 10 files / 60 tests; full 202 files / 1,680 passed /
2 staged-runtime skips; typecheck passed; ESLint 0 errors with the same 5 existing
warnings; full Windows build/NSIS passed; Pi artifact proof passed with four core
Skills plus the package-owned Data Service. Stable replay and one-401-refresh
request identity remains `pi:run-a:resource-a`; all ten tools traverse the real
adapter/registry/conversation parser with bounded quota, size, revision, and
Retry-After contexts.
- Repeat Standards and Spec review must use the unchanged base `eb5d15d...` and the
post-remediation coordinator documentation checkpoint as its exact head.
## ML-07 Repeat Review And R2 Remediation
- Repeat fixed-range review over exact `eb5d15d...29cf322` confirmed the first
remediation but returned Standards FAIL and Spec FAIL on four remaining issues:
the Data Service adapter still consulted a static tool-definition catalog; late
project-A mutations could overwrite loaded project B; persisted reconnect/replay
identity evidence was still a direct repeated invocation; and child/core-only
workers still waited on optional policy refresh.
- The same sole remediation implementer returned source commit
`278e53304a10a0336b8b737b85c158c5f2a40d84` with exact parent
`29cf322f1ac0500295c1afec076800aea3908eb3`; it integrated without conflict as
coordinator commit `f0ac7d7`. The foreign source task record is removed here and
remains in its isolated source worktree.
- The adapter now validates the parsed registry-supplied tool; project-scoped enable,
configure, reset, collection removal, and project removal all reject stale
generation/project completions; policy refresh occurs only for an assigned
server-backed parent; and the extension bundle test persists run/resource identity,
reconnects/reimports, replays the same resource through the authenticated bridge
and real registry, and preserves exact
`pi:persisted-run:persisted-resource`.
- Source verification: affected 8 files / 44 tests passed; typecheck passed; focused
ESLint clean and full lint 0 errors with the same 5 existing warnings; Windows
staged/unpacked build passed; Pi packaged artifact verification passed.
Coordinator `corepack pnpm test` passed 201 normal files / 1,685 tests with 2
staged-runtime skips, followed by the isolated pressure file 1/1 (202 files /
1,686 passed / 2 skipped total).
## ML-07 R3 Review And Remediation
- The third fixed-range Standards and Spec reviews over exact
`eb5d15d68470b30ec181164f08f0d7b027ef0006...405b9f64fd6872f6b4bd4c4429e6aaff2fa0b84a`
agreed on one remaining medium-severity root cause: a same-project manual refresh
could race enable/configure/reset/removal mutations, allowing an old GET to
overwrite a successful mutation or causing the successful mutation and its
authoritative reload to be discarded.
- The same sole remediation implementer returned source commit
`92bce15a7e70440e78b2ff8d90b2e57470d14d77` with exact parent
`405b9f64fd6872f6b4bd4c4429e6aaff2fa0b84a`; it integrated without conflict as
coordinator commit `e3e34d3`. The foreign source task record is removed here and
remains in its isolated source worktree.
- A per-project operation epoch now separates internal load flights by project and
epoch. Successful mutations advance the epoch before committing, so reads begun
before or during the mutation cannot win and post-mutation authoritative reloads
cannot coalesce with stale flights. The existing stable public pending key and the
latest-requested-project A-to-B guard remain intact.
- Source verification recorded the expected red failures for all supported race
orderings, then 13/13 store tests and 4 files / 22 expanded focused tests passed;
typecheck, scoped ESLint, full lint, diff, documentation drift, and task completion
gates passed. No UI, Main, Preload, package, or asset ownership was used.
- After integration, coordinator `corepack pnpm test` passed 201 normal files /
1,692 tests with 2 staged-runtime skips, followed by the isolated pressure file
1/1 (202 files / 1,693 passed / 2 skipped total). Coordinator typecheck passed;
full lint reported 0 errors and the unchanged 5 warnings in Home and Makelore.
## ML-07 R4 Review And Remediation
- The fourth fixed-range review over exact
`eb5d15d68470b30ec181164f08f0d7b027ef0006...07ea9da858b4a412191747a6c80f465cf2d46d45`
returned Spec PASS and Standards FAIL on one supported remaining load-ordering
case. With A1 pending, then B pending, selecting A again reused A1 before
renewing its generation, so B retained the only committable generation and
could leave the active A page displaying B's projection.
- The same sole remediation implementer returned source commit
`d0addfa743d97d4ac9c3385a1d364f94b1ccf6d5` with exact parent
`07ea9da858b4a412191747a6c80f465cf2d46d45`; it integrated without conflict as
coordinator commit `7fab721`. The foreign source task record is removed here
and remains in its isolated source worktree.
- Each keyed load flight now owns a mutable generation token. Reselecting that
same key/epoch after another project intent intervenes promotes the shared
flight to a new global generation before returning it; consecutive same-project
duplicate loads still share one request and one promise. B therefore loses
commit eligibility, while A completes without a manual retry and the stable
public pending key remains unchanged.
- Source red evidence was 2 new failures with 13 existing passes; after the fix,
store tests passed 15/15 and the expanded four-file suite passed 24/24.
Typecheck, scoped ESLint, full lint with 0 errors and the unchanged 5 warnings,
diff, project-documentation drift, and task completion gates passed. No UI,
Main, Preload, package, or asset ownership was used.
- After integration, coordinator `corepack pnpm test` passed 201 normal files /
1,694 tests with 2 staged-runtime skips, followed by the isolated pressure file
1/1 (202 files / 1,695 passed / 2 skipped total). Coordinator typecheck passed;
full lint reported 0 errors and the unchanged 5 warnings in Home and Makelore.
## ML-07 R5 Final Review And Cross-Repository X-01
- The final independent Standards and Spec reviews both PASS with zero
actionable findings over fixed range
`eb5d15d68470b30ec181164f08f0d7b027ef0006...78fb7d730731a7b0ebadf12418ca4c2eb6ef3310`;
the merge base is the exact accepted Data Service base and `git diff --check`
is clean. R5 reconfirmed the intent-aware A1/B/A2 shared-flight fix in both
completion orders, the R3 mutation epochs, the complete package-to-policy-to-
Pi-to-preview authority chain, and all P0 exclusions.
- Exact-head coordinator verification is 201 normal files / 1,694 passed / 2
staged-runtime skips plus the isolated pressure file 1/1, for 202 files /
1,695 passed / 2 skipped total. Typecheck passed; full lint has zero errors and
the unchanged five out-of-range Home/Makelore warnings. The reviewers did not
represent their dependency-free fresh worktrees as additional test passes.
- X-01 ran against this exact client head and server head
`e862a74532a1e57086659f3bf3201ea17e7b60a8`. The packaged Windows artifact was
independently verified at the exact client head; its installer SHA-256 is
`ED2C4BA9337E53446E73EFFC305B0082A4E1FE3C454238495EDA7B9A94F2D677`.
The Pi artifact proof contains one Data Service package, five fixed package
files, exactly ten tools, and four core Skills.
- The final live harness exited zero with all implementation-spec section 10.3
groups `1` through `12` passing against PostgreSQL 16.13 and the packaged,
normally initialized, signed-in application. The real parent provider request,
persisted worker context, and live Pi CLI all carried the same exact ten Data
Service tools; the real child carried none. All ten tools executed and produced
`makelore-capability.v1` details.
- Enable created only local selection. Configure created the backend and the Skill
installed the byte-exact packaged SDK. Exact-Origin preview put/get succeeded;
disable rejected an old-worker new invoke, invalidated preview, removed the Skill
from the next worker, and preserved cloud data; re-enable restored the retained
assignment/backend/data. Move, rename, raw copy, independent copy, bind-existing,
and a second signed-in owner with the same durable ID all matched the frozen
identity/owner-isolation contract.
- Live faults preserved quota `current=20/limit=20`, size
`actual=40011/limit=32768`, revision `current_revision=1`, and rate
`retry_after_seconds=46`. The size case used the server's supported isolated
32 KiB configuration so it could traverse the bounded 64 KiB Pi bridge; no
committed limit changed. Catalog first-failure/current/stale states, exact
three-capability/fourteen-operation join, and included-only billing all passed.
- Plugin Center showed `当前包含,不按单次调用扣点`; Data Service usage reached
120 documents while real Token Point transactions stayed `0 -> 0`. Preview
invalidation passed for disable, identity change, project switch, cross-Origin
navigation, Agent Browser renderer crash, logout, and Main shutdown.
- With 20 live instances/120 documents retained, server downgrade to `0063`
refused and left exact Alembic head `20260827_data_service_0064`; this is the
server-first rollback boundary, not a repository-test inference.
- Final cleanup stopped only the verified acceptance IdP helpers, removed the
exact disposable PostgreSQL container, and moved the exact X-01 temp directory
to the Windows Recycle Bin. All acceptance ports are closed; the container and
original temp path are absent. The recycled temp directory remains recoverable.
## Follow-ups
- None. No PR, push, publication, or user root-worktree mutation was performed.
## Promotion Candidates
- None recorded.

View File

@@ -1,406 +0,0 @@
# Task: Implement curated plugin marketplace Release A client
## Identity
- Task ID: 20260828-plugin-marketplace-client-5f8b3d72
- Mode: Feature
- Branch: codex/20260828-plugin-marketplace-client-5f8b3d72-plugin-marketplace-client
- Worktree: D:\Datas\OthersProjects\makelore-plugin-marketplace-client-5f8b3d72
- Base commit: 1ca8deb54b7b530ab8c5b6a5b7e613730c3b97ec
- Owner: codex-root
- Status: Completed
## Scope
- Coordinate the repository-local Marketplace Release A MakeLore unit from exact
completed Plugin P0 evidence head `1ca8deb54b7b530ab8c5b6a5b7e613730c3b97ec`.
- Deliver MLM-00 through MLM-06, the packaged-client half of XMA-01,
dependency-ordered integration, fixed-base review/remediation, package proof, and
exact final evidence on this isolated branch.
- Own only this coordinator worktree/branch, coordinator task record, merger/package
proof verification, and cross-repository acceptance ledger.
## Intent And Constraints
- Implement Marketplace Release A only: schema-v2 declarative parsing, code-owned
Ed25519 trust, Main-owned Works Marketplace/Library access, atomic Package Store,
one effective plugin snapshot, and Marketplace/My Plugins/Project Plugins UI.
- Keep acquisition, device installation, project selection, backend configuration,
Agent assignment, authorization, invocation, and billing separate. No UI action may
silently chain another state mutation.
- Preserve the completed Plugin P0/Data Service behavior: exact bundled schema 1,
project ID retention, ten typed tools, four preview operations, closed capability
envelope, child-empty workers, and zero Token Point transactions.
- Keep Release B closed: no hosted adapter, Provider endpoint/credential, Plugin
Charges, Plugin Credits, arbitrary local code/scripts/native/hooks/LSP/stdio MCP,
or generic invoke/config/ledger.
- Product trust accepts only code-owned official public keys. Tests may inject
ephemeral verifiers through service dependencies; no production private key or
arbitrary runtime public-key override may be committed.
- Use exact-frontier isolated implementers, disjoint ownership, one source commit per
ticket, one repository-local merger, read-only fixed-range reviewers, and one
remediation owner at a time. Implementers are not alone and must preserve others'
work.
- The user root `main` worktree, old P0 coordinator, live services, push, deployment,
publication, and PR fabrication are outside authority. No PR is created for this
local-only delivery.
## Project Context Loaded
- Concurrent and Planning Gates passed in the registered isolated worktree. Task ID,
owner, mode, branch, worktree, and exact base match the task-context owner record.
- Fully read `AGENTS.md`, the implementation specification, ticket graph, accepted
detailed design, project-memory startup set, relevant architecture/evidence/
commitment/stale material, completed Plugin P0 client record, and current manifest,
registry, project selection, effective Pi, Host composition, Plugin Center, tests,
and package scripts.
- Exact Git facts: HEAD is `1ca8deb54b7b530ab8c5b6a5b7e613730c3b97ec`;
reviewed product head `78fb7d730731a7b0ebadf12418ca4c2eb6ef3310` is an
ancestor. The remaining base delta is P0 evidence only. User root `main` is not the
source or implementation worktree.
- The completed P0 coordinator is read-only evidence. Other same-topic local owners
are completed implementers/remediators or read-only historical reviewers; no active
peer owns this new branch or has a semantic conflict with the Release A DAG.
- Canonical integrated memory predates the unintegrated P0 coordinator; its exact task
evidence and this frozen base/spec control Marketplace work.
- Likely modules are exactly the MLM-01 through MLM-04 ownership sets: schema-v2 and
signature primitives; Marketplace client/account cache/Package Store; effective
resolver/Main/Pi lifecycle; Renderer pages/stores/routes; and MLM-05 package proof.
## Ticket Ownership
- MLM-00, MLM-05, MLM-06 coordination, and XMA-01 client evidence: this coordinator.
- MLM-01 through MLM-04: exact-frontier isolated implementers in graph order. MLM-02
remains blocked until MLM-01 is integrated and the WSM-03/WSM-04 DTO is frozen.
- MLM-06 Standards and Spec axes: independent read-only reviewers. Accepted root
causes route to one isolated remediation implementer at a time before repeat review.
- MLM-01 source task `20260828-plugin-mlm01-5c8d1e4f` was dispatched from exact
coordinator frontier `4d8b1fcec0a751d2935effc7816c7e59f568ec65`, completed as
source commit `352a3b7280bb48854beb5281d2b4923b76793367`, and was integrated
without conflict as coordinator product commit
`898e2b7bdde4bdd77a5659d7b4e294d0607656e3`.
- MLM-02 source task `20260828-plugin-marketplace-mlm02-9b7c4e1a` was dispatched
from exact post-MLM-01 frontier
`c73fcf1d2d2e5dccea6f3b403a3b7c00bdc0b25a`, completed as source commit
`1b6f5aaccaf55fc98657fc93824015471818f6e6`, and was integrated without
conflict as coordinator product commit
`4052fa85cc4c9bfb0bed5b529dd6209007a65ef3`.
- Current client frontier contains the frozen MLM-02 Marketplace client/account
cache/Package Store contract. MLM-03 may now start from the documentation
checkpoint recorded after this integration.
- MLM-03 task `20260828-plugin-marketplace-mlm03-4c8e1a7d` was dispatched from
exact frontier `1d64b89499f68de721e0f1c845dad2c57f1a78ed`. Its original agent was
interrupted after becoming unresponsive; a serial finisher resumed the same
registered owner and preserved the dirty worktree with no concurrent writer.
The completed source commit `7ad6b8c66d9ca64b5778690667c91c424aae456a`
was integrated without conflict as coordinator product commit
`05917a789a9b9f30ed9500f4cd1210ec72119646`. Coordinator-transferred
Package Store ownership was limited to removing unconditional latest-Release
protection while preserving account-snapshot and active-worker protection.
- MLM-04 task `20260828-marketplace-mlm04-renderer-e4c7a2` completed from exact
frontier `8b6824a8ba08d8df98fc75af17e170bf3d8ed630` as source commit
`d61221d34da49f97dd4a9aeb1081fb3544cc6c86` and was integrated without
conflict as coordinator product commit
`97c9ad1aad2638609168a8e1901b61b5ba671def`. Three coordinator-approved
seam transfers remained minimal: joined safe Library/installation projection,
explicit project `unknownPluginIds`, and disable-only removal for an already
selected unknown ID. No Main route, registry, Pi, or Package Store source was
otherwise expanded.
- MLM-05 merger task `20260828-marketplace-mlm05-merger-c73a91e4` verified the
already integrated source/product ledger from exact frontier
`2c4f766b3b61d4540919495043322d438cc17ec3`. Its artifact-proof-only source
commit `3ab257d3f0226ecba40166f306b939319061e551` was integrated without
conflict as coordinator product commit
`43c464a556d32a1ac564a5bb79f92741c4d9d635`.
- MLM-06 fixed-range Standards and Spec review found eleven deduplicated roots.
The sole remediation task `20260828-marketplace-mlm06-remediation-6d3a9c82`
completed from exact frontier `8dfa5428606076b847966750134061de6fbe91ba`
as source commit `291b64ab0ef4779a44e09a386de31332abe1f57b` and was integrated
without conflict as coordinator product commit
`1614f7efc1fc81efc3b4d1c80827948976f1427b`.
- MLM-06 R2 fixed-range Standards and Spec review found eight remaining roots.
The same sole remediation owner completed task
`20260828-marketplace-mlm06-r2-remediation-6f4a2d91` from exact frontier
`2c3baf6dff975ce229d80a35450c5e79e271651b` as source commit
`f7d2dc148896bfbe0ee8a9e7f040f3e05c634b2e`. It was integrated without
conflict as coordinator product commit
`11d0af01663ad5b35a86fbe037c9277a5283f9a3`; the source/product trees are
identical after excluding the task-scoped handoff record.
- MLM-06 R3 review found eight actionable roots. After the user explicitly approved
recovery of the unresponsive owner, the coordinator force-released that owner and
adopted the existing task/worktree without stash, reset, clean, branch replacement,
or loss of its intermediate diff. Task
`20260828-marketplace-mlm06-r3-remediation-9e4c2a71` completed from exact frontier
`57962591de71fc0a9f142dbcd130e3308754e423` as sole source commit
`34341b932ac3a74788658bc0ed0a2732e140f72e`. It was integrated without
conflict as coordinator product commit
`3df794c2e736bde2c797c99aa8ad55b967e89ea6`.
- MLM-06 R4 fixed-range Standards and Spec review found three deduplicated roots:
trusted stale Library disabled local `skill_only`, content-derived resolve identity
prevented later channel/Admission progress, and Skill-owner collision remained
invisible to Project Plugins. The sole remediation task
`20260829-marketplace-mlm06-r4-remediation-b7e3c921` completed from exact frontier
`d04b031040a1c109a0c2c5ede2584bb0b75a3bb2` as source commit
`4465beabee4f6ff9e24a83e3e2a109a60fe37d1e`. It was integrated without
conflict as coordinator product commit
`227b8214a820e6a0a2b6758f89fb3bbfa65faf83`; the foreign task record remains
only on its source branch.
## Outcome
- Marketplace Release A MakeLore implementation and live acceptance are complete.
The final R6 source commit
`32f703e1f4e41b1e7314bd63c6a034c1e412c9fb` was integrated as product commit
`c56ddb9d3b14990f5dcd4f12eaa58d925e569292`; final reviewed documentation head was
`474c6f7688fb728641da5f567e42bbf05ad45117`.
- R7 Standards and Spec independently passed the fixed range
`1ca8deb54b7b530ab8c5b6a5b7e613730c3b97ec...474c6f7688fb728641da5f567e42bbf05ad45117`
with zero actionable findings. XMA-01 then passed all twelve Release A groups.
Production trust activation remains HOLD only because the official Ed25519 public
key has not been supplied; the packaged app correctly fails closed without it.
- MLM-00 completed. The coordinator unit is isolated from the exact accepted P0
evidence head, both documentation gates pass, semantic overlap is clear, and no
client product file changed before opening MLM-01.
- The official platform public key is not present and remains a production activation
input; the parser/signature implementation and injected-key acceptance still proceed.
- No push, PR, deployment, production key generation, or publication was attempted.
- MLM-01 delivered schema-1 compatibility, closed schema-2 `skill_only` and
declarative `platform_hosted` parsing, bounded JSON Schema validation, fixed release
descriptor bytes, Ed25519 verification, compatibility/provenance checks, and a
code-owned production trust seam. The official Ed25519 public key remains absent,
so the production activation hold is preserved and the default trust store fails
closed; no production private key or runtime key override was added.
- MLM-02 delivered the bounded authenticated Marketplace client, session/account
cache, and atomic immutable Package Store. Acquisition and download remain
separate from project enablement, Agent assignment, runtime authorization, and
billing; distributed packages are descriptor/signature/size/SHA/schema/client-range
verified before an atomic index switch, and install failure preserves the previous
release. Account A/B snapshots remain isolated and logout/account switch invalidates
them. The official public key activation hold remains unchanged.
- MLM-03 delivered one effective installed-plugin resolver, Main-owned Marketplace
routes, and a frozen parent-worker snapshot shared across resource loading,
Extension Host, tool declarations, CLI/context, and runtime authorization. Child
workers remain empty; active Releases are registered for Package Store cleanup;
old workers reject new plugin actions after invalidation. Unknown or uninstalled
Skill assignments remain in project/Agent configuration but do not enter runtime
projections, and automatically become effective again when the trusted package
source returns.
- MLM-04 delivered global Marketplace and My Plugins pages plus the joined Project
Plugins state. The four user actions remain distinct and call only their matching
Main route; fresh installation/account projection, stale/error states, retained
unknown project IDs, typed Data Service settings, account/project generation, and
mutation epochs are bounded in Renderer state. No account, filesystem path,
Release Admission, token, or signed URL authority enters Renderer.
- MLM-06 remediation paired every frozen Skill with its verified package root,
separated explicit device uninstall from Library removal, added exact Package
Store orphan recovery and current-Release selection, bounded whole-response
deadlines, and serialized same-account reads and cross-Plugin mutations by intent.
It also exposed explicit beta and bounded unavailable states through Main/Renderer,
made the packed trust proof read the real `app.asar`, and synchronized README.
Official-key absence remains a fail-closed production activation hold.
- MLM-06 R2 remediation closes source ownership collisions, per-Plugin mutation
ordering, protected-current uninstall projection, current-client compatibility
revalidation, installed-channel projection, same-account cache completion order,
reachable packaged trust proof, and the shared My Plugins E2E gap. Explicit Beta
remains on its selected channel; when the server's bounded Library authority changes
the current channel version, Renderer reports a truthful channel-change/unavailable
state without inventing a yanked field. Unknown assignments and incompatible packages
remain persisted but do not enter a new effective worker snapshot.
- MLM-06 R3 remediation reserves bundled Data Service and all other non-Marketplace
Skill IDs before Marketplace resolution; binds queued Package Store work to the
originating account; separates Library/device Renderer intents; distinguishes
explicit uninstall from background cleanup; enforces the canonical Skill-only
archive contract; projects client incompatibility and no-version unavailable
installations truthfully; and binds packed proof to package-main-reachable Main,
HTML, minified ESM, dynamic Renderer, and Marketplace chunks. No config/assignment
rewrite, hidden acquisition/enablement, Token Point path, Release B runtime, or
production trust override was added.
- MLM-06 R4 remediation keeps verified local `skill_only` resources effective under
trusted stale Library while hosted/server-backed definitions fail closed; separates
resolve content digest from per-logical-sync identity with explicit replay support;
and projects bundled/core/Marketplace Skill-owner collision as closed
`skill_owner_conflict`/`unavailable` state. Project and Agent assignments remain
preserved, and no new authority, compatibility layer, or Release B path was added.
- MLM-06 R5 remediation aligns schema-v2 execution mode with the canonical/server
`synchronous | job` contract; makes explicit device uninstall clear Package Store
current selection immediately while retaining only frozen active-worker bytes; and
preserves Beta channel/version identity in a bounded failed device mutation. A
released active-worker record is removable on the next explicit cleanup, while
background cleanup still refuses to guess a missing current selection. R5 Spec and
Standards reported the same three findings and no independent additional issue.
- MLM-06 R6 remediation completes explicit uninstall automatically when the last
protecting worker exits, while another account snapshot continues to block deletion
and an explicit reinstall cancels the pending cleanup. Same-Release Stable/Beta
selection now persists the requested channel without a redownload or worker hot swap.
My Plugins presents system-included Data Service as supplied with MakeLore and exposes
no package download/update/delete action, while retaining project enablement and Agent
assignment. R6 Spec and Standards deduplicated to these three roots and no fourth.
## Verification
- `git rev-parse HEAD` returned exact `1ca8deb54b7b530ab8c5b6a5b7e613730c3b97ec`;
ancestry of reviewed product head `78fb7d7...` passed. The only initial status entry
was this task record.
- `corepack pnpm --version` reported the repository-pinned `10.33.4`.
- This fresh worktree lacked dependencies, so `corepack pnpm install
--frozen-lockfile` restored the locked 997-package graph entirely from the package
store; no source or lockfile changed.
- `corepack pnpm run typecheck` passed.
- The ten-file manifest/capability-policy/project-selection/Pi/Host/Plugin Center
baseline passed `68 passed, 2 skipped` (`70` total) in 10.27 seconds with one
worker. The two skips are the existing staged-runtime gates.
- The run was proportionate: a type/parser/registry/Pi failure would have stopped
MLM-01 because schema-v2 primitives cannot safely extend a broken claimed P0 base.
- MLM-01 source verification passed the complete repository suite (`1713 passed`,
`2 skipped`) plus the single-worker pressure case (`1 passed`), typecheck, lint,
Vite build, documentation drift, and task-context completion. Source parent, clean
status, changed-file ownership, and `ready_for_integration` status were independently
verified before integration.
- MLM-02 source verification passed focused `14`, adjacent parser/contract `43`,
full Vitest `1727 passed, 2 skipped`, and the pressure case `1 passed`, plus
typecheck, owned/full lint (zero errors and five pre-existing warnings), Vite
build, diff/doc gates, and task-context completion. Its exact sole parent, five
owned paths, clean status, and `READY_FOR_INTEGRATION` state were independently
verified before cherry-pick.
- MLM-03 verification passed 142 focused/adjacent tests with two staged-runtime
skips, full Vitest `1738 passed, 2 skipped`, the pressure case, typecheck, lint
with zero errors and five unchanged warnings, Vite build, Windows package,
Windows and Pi artifact verification, publish-runtime verification, diff/doc
gates, and task-context completion. The Windows installer embedded exact source
HEAD `7ad6b8c...`; production signing, real Provider, macOS, and native Linux
activation evidence remain explicit external/platform holds rather than passes.
- MLM-04 verification passed 73 focused/adjacent tests across 12 files, typecheck,
lint with zero errors and five unchanged warnings, Vite build, two Marketplace/
Project Plugins Electron Playwright cases, six Windows Electron Vitest cases, and
documentation drift. Its task record also captured the actual interface-polish
Before/After changes: bounded hit targets, explicit transitions, wrapping, and
tabular dynamic values within the existing design system.
- MLM-05 verification passed 121 focused tests, 78 P0/Data Service/Pi/preview
regressions with two staged-runtime skips, nine packed-proof tests, full Vitest
`1761 passed, 2 skipped`, the pressure case, typecheck, lint with zero errors and
five unchanged warnings, Vite build, six Windows Electron tests, two targeted
Marketplace E2E cases, Windows package, and Pi artifact verification. The full
E2E run passed 27 cases; its sole failure was the unchanged
`pi-coding-first-chat.spec.ts` disabled-model-combobox timeout. The packed proof
found schema-2 `skill_only`, unknown-key fail-closed, Library/install/update/
effective routes, Renderer assets, and no private-key/runtime-key override.
Official public-key production trust remains HOLD.
- MLM-06 verification passed focused 82 tests, trust/contract 30 tests, adjacent 66
tests, complete single-worker Vitest `1779 passed, 2 skipped`, the pressure case,
typecheck, lint with zero errors and five unchanged warnings, Vite build, six
Windows Electron tests, and Marketplace E2E. Full E2E passed 27 of 28; the only
failure remained the unchanged disabled-model-combobox timeout. The four-worker
unit run reached 207/208 files and 1769 passes before one assertion-free worker
exit; the complete one-worker rerun is the product result. Windows x64 staging and
building passed; the aggregate `package:win` arm64 uv download hit an external
GitHub connect timeout. Both Pi and Windows artifact verifiers passed on the clean
final source commit, with embedded `gitCommit` and `verificationHead` equal to
`291b64a...`; the real packed trust source contains no private key and fails closed
while the official public key is absent.
- MLM-06 R2 verification passed six focused files / 69 tests, 39 adjacent tests,
complete single-worker Vitest `1789 passed, 2 skipped`, the pressure case,
typecheck, lint with zero errors and five unchanged warnings, Vite builds, six
Windows Electron tests, and both Marketplace E2E cases. Windows x64 staging and
unpacked building passed. The artifact unit suite passed 12/12 and the fresh
`release/win-unpacked` Pi verifier passed after following `package.json.main`
through the real Windows app.asar with native entry separators; Marketplace trust
remains official-key-absent fail-closed with no private-key material. XMA-01 was not
run and no full-E2E pass beyond the targeted Marketplace file is claimed here.
- MLM-06 R3 source verification passed six focused files / 73 tests, 28 adjacent
files / 229 tests, full Vitest `1799 passed, 2 skipped` plus pressure `1 passed`,
typecheck, lint with zero errors and five unchanged warnings, Vite builds, six
Windows Electron tests, and Marketplace/Project Plugins E2E 3/3. Full E2E passed
28/29; the sole failure is the same unchanged
`pi-coding-first-chat.spec.ts:575` disabled-model-combobox timeout. The Marketplace
auth test's own old-page/new-page bootstrap race was diagnosed from a 3/5 failing
loop and stabilized to 5/5 before the original target reran.
- The first real package proof exposed a genuine verifier gap: Vite's
`import{...}from"..."` edge was missing from the reachable graph. A realistic
ASAR unit went red 1/13 and green 13/13; the same real app.asar then verified
Marketplace trust/routes/Renderer assets successfully. Final x64 staging and
electron-builder/NSIS ran from clean source HEAD. The aggregate download wrapper
was retried after GitHub `ECONNRESET` and connect timeout; already verified x64
Python/uv were restored from the first successful package, then final x64 staging
and builder passed without changing tracked files.
- Final `verify:artifact:pi` passed with Marketplace `result: pass`, Data Service ten
tools, Pi 0.84.2, no closure gaps, and only the inherited real-Provider/cross-
platform partial-pass waivers. `verify:artifact:win` embedded exact source
`gitCommit`/`verificationHead`
`34341b932ac3a74788658bc0ed0a2732e140f72e`; installer size is 208,238,894
bytes and SHA-256 is
`1531A3ACA2AB3387870606ADA54EE40DA9079DB9E2864DE7B8FFEBAF47A453D3`.
Python, uv 0.10.0, npm 11.6.2, native addons, Unicode copy, and publish-runtime all
passed. The official Ed25519 public key is still absent, so production activation
remains fail-closed HOLD rather than a claimed production release.
- MLM-06 R4 source verification began with six exact red assertions and finished with
three owned files / 46 focused tests, 17 adjacent Marketplace/Main/Pi/Renderer files
/ 143 tests, full Vitest `1803 passed, 2 skipped` plus pressure `1 passed`, typecheck,
scoped/full lint (zero errors and the unchanged five warnings), Vite builds, and six
Windows Electron tests passing. Target Marketplace/Project Plugins E2E first ran
2/3 with the known auth-bootstrap ordering failure before Library fetch; that sole
case reran 1/1 passed. Final x64 staging, Electron/NSIS builder, packaged Pi/
Marketplace proof, Windows runtime proof, and publish runtime all passed from clean
source `4465beabee4f6ff9e24a83e3e2a109a60fe37d1e`. Windows proof embedded that exact
`gitCommit`/`verificationHead`; installer size is 208,238,992 bytes and SHA-256 is
`F407F2319408F60E8BEFCDC304A72CB4022F764FA44F40210774CDBE1C190483`.
The aggregate wrapper's only failure was an external GitHub `ECONNRESET` while
downloading unused win32-arm64 uv after x64 Python/uv had succeeded; the reviewed
x64 build/proof is complete and tracked files remained clean.
- MLM-06 R5 source verification began with the exact old behavior at four failures /
60 passes, then passed manifest/Package Store/store focused 64/64, 11 adjacent
Marketplace/Main/effective/Pi files / 126 tests, and Renderer Beta projection 20/20.
Typecheck and scoped ESLint passed; full lint had zero errors and the unchanged five
Home/Makelore warnings. Vite built Renderer, Main, Preload, and utility worker. Full
Vitest passed 208 files / 1,807 tests with two staged-runtime skips, followed by the
pressure case 1/1. The first sandboxed build and doc-drift attempts were blocked only
by Windows user-directory/task-registry permissions; the identical authorized runs
passed. No trust key, package layout, packaged resource, or artifact verifier changed,
so artifact packaging was not repeated before the fresh fixed-range review.
- MLM-06 R6 source verification passed the three owned red/green suites with 51 tests,
ten adjacent Package Store/Main/Pi/Renderer files with 116 tests, full Vitest 208 files
/ 1,812 tests with two staged-runtime skips, and the pressure case 1/1. Typecheck and
scoped ESLint passed; full lint had zero errors and the unchanged five Home/Makelore
warnings. Vite built Renderer, Main, Preload, and utility worker. Diff, project-docs,
documentation-drift, task-context completion, sole-parent, and clean-worktree gates
passed. No trust key, package layout, packaged resource, or artifact verifier changed,
so artifact packaging was not repeated before the fresh fixed-range review.
- MLM-06 R7 Standards task `20260830-marketplace-mlm06-standards-r7-a8c4e291`
and Spec task `20260830-marketplace-mlm06-spec-r7-b7d5f3a2` both returned PASS
with zero findings at exact clean head
`474c6f7688fb728641da5f567e42bbf05ad45117`. They rechecked Package Store cleanup,
Stable/Beta channel authority, system-included Data Service projection, account
cache/intent, effective resolver/registry/Pi lifecycle, Main/Renderer authority,
packaged trust reachability, and Release B exclusions.
- XMA-01 used the signed-in packaged Windows application at that exact head against
the real reviewed server and PostgreSQL. Marketplace and Data Service catalog/detail
were visible; account A Library state was isolated from account B; package install,
project enablement, Agent assignment, Pi materialization, immutable update/freeze,
cached rollback, lifecycle/account switching, and unknown-key fail-closed behavior
passed. System-included Data Service exposed no account/device download action.
- Final x64 staging, electron-builder, Windows artifact verification, and packed
Marketplace/Pi proof passed. `Makelore-2.0.0-win-x64.exe` was 208,235,670 bytes with
SHA-256 `738A2F6573C502281787F418EA666C6E62C287CA0EC13C6EB22369DAB0B3FFFA`.
The aggregate wrapper's only deviations were two external GitHub uv 0.10.0 download
reset/timeouts; exact cached uv 0.10.0 binaries were verified and used for the
successful x64 stage/build. No tracked client file changed during acceptance.
## Follow-ups
- Production activation remains HOLD until the official Ed25519 public key is built
into MakeLore. The matching server private key must remain deployment-secret-only;
no production key was generated or committed.
- Release B remains closed behind PROVIDER-GATE. No hosted Provider/runtime, metering,
refund, Plugin Charges, XMB-01, deployment, publication, push, or PR was started.
## Promotion Candidates
- After MLM-06 review and XMA-01, promote the Marketplace Main/Package Store/effective
resolver chain into `.project-docs/20-architecture/module-map.md` and
`data-flow.md`, including account cache, immutable installation, frozen worker
snapshot, and lifecycle invalidation.
- Refresh `.project-docs/30-worklog/current-state.md` and
`.project-docs/40-domain/business-rules.md` with the separation between Account
Library, Device Installation, project enablement, Agent assignment, runtime
authorization, and billing; retain the official public-key activation hold.
- Add the final MLM-05/MLM-06/XMA-01 evidence to the evidence index only after live
acceptance; repository package/tests must not be promoted as signed-in live proof.

View File

@@ -2,6 +2,27 @@
## Durable Rules
- Marketplace Release A is curated: only Operations publishes packages. Users may
acquire an eligible Plugin for free; only server-declared metered operations may
later consume Token Points, and system-included Data Service remains zero-charge.
- Account Library, Device Installation, project enablement, Agent assignment, runtime
authorization, and billing are separate states. No read, install, acquisition, or
assignment may silently advance another state.
- Marketplace packages become effective only after closed manifest/descriptor parsing,
canonical archive and client-compatibility checks, Ed25519 verification, immutable
Package Store selection, project enablement, Agent projection, and current server
policy admission. Unknown or unavailable IDs remain persisted but do not materialize.
- A parent Pi worker freezes the exact verified package root, Skills, tools, policy,
Account, project, and Release for its lifetime; child workers receive no Plugin
resources. Lifecycle invalidation blocks new actions but does not hot-swap a running
worker or delete bytes it still owns.
- System-included Data Service ships with MakeLore and has no Library acquisition,
Admission, download, update, or device-uninstall action. Users may still enable it
per project and assign its Skill to an Agent.
- Production Marketplace trust fails closed while the official Ed25519 public key is
absent. Test-only/integration keys and packaged unknown-key rejection are evidence,
not authority to activate production. Release B hosted Provider runtime remains
closed behind its separate Provider gate.
- 面向用户的 AI 编程新建流程必须在 `mini_game``mini_program``custom` 中选择;`ProjectType` 是产品类型,创建后不能通过 UI 或 Host API 修改,未传类型的兼容 API 调用按 `custom` 处理。
- 新建小游戏和小程序会生成平台固定版本的受控 Vite 发布模板,并可使用项目配置中的单一“提交审核”入口;`custom` 和缺少类型字段的旧项目不提供一键发布。
- `ProjectType` 不等于 `BuildPreset`:第一期两个可发布产品类型都映射到内部受控 Vite preset本地 `projectType` 不是授权边界Main-owned 安全打包、Host API 和服务端包体校验仍必须执行。

View File

@@ -4,6 +4,7 @@ Use this index for searchable, traceable evidence records.
| Date | Topic | Status | Source | Detail |
|---|---|---|---|---|
| 2026-08-30 | MakeLore curated Plugin Marketplace Release A | Integrated locally; XMA-01 live acceptance PASS; production trust activation HOLD | Source `40df677a31ff7651f962151eb84b925987781c03`, source task `20260828-plugin-marketplace-client-5f8b3d72`, integration task `20260830-integrate-plugin-marketplace-client-6e3b9d82` | R7 Standards/Spec passed with zero findings. XMA-01 passed 12/12 using real PostgreSQL, signed-in packaged MakeLore, Operations-published temporary-key packages, A/B account isolation, immutable install/update/freeze/rollback, project/Agent/Pi materialization, lifecycle invalidation, pricing-only ETag change, Data Service 10 tools/14 operations and zero Token Point transactions. Final Windows installer was 208,235,670 bytes with SHA-256 `738A2F6573C502281787F418EA666C6E62C287CA0EC13C6EB22369DAB0B3FFFA`. The official Ed25519 public key was not supplied, so the production trust store correctly remains fail closed; no deployment or production publication occurred. |
| 2026-08-26 | Makelore Code Pi hard cutover、后台运行 ownership 与 Works user-context Provider 修复 | 本地 `main` 已集成Windows 最终安装包与 packaged proof Pass真实 Provider/macOS/native Linux 非 Pass | 集成交付 `48a9189`、实现 `a098266`、任务 `20260826-fix-pi-model-provider-8d4c2a71` / `20260826-integrate-pi-provider-fix-6e4c2a91``docs/pi-runtime-release-runbook.md` | OpenCode production runtime/package/plugin/fallback 已删除Pi `0.84.2` 是唯一 runtime。未解析 Conversation 现在 validate→persist resolved model→prepareexact Works `works square AI gateway did not return one-api user context` 会失效缓存 credential、以非重试 Provider-auth failure 结束且不自动 replay`agent_end willRetry:false` 不再被 `agent_settled` 覆盖成 completed。聚焦 47/47、related 54/54、projector 12/12、181 files / 1541 full unit + pressure、typecheck、lint、Vite build、Windows Electron 4/4、publish/runtime/artifact/Pi/subagent/final packaged proof 通过。NSIS 208,162,564 bytesSHA-256 `A02F79FCD3273FB0B013450492DC788B6E5ED7BBC1007468FB83BE949B8CB30D`未签名final app.asar SHA-256 `A8394D0F7324B27D2C95469ABD4E2A39C739EABCC6D8B41E1D65BA4B41FB9D39`。真实 Provider 是 Explicitly Waived / Accepted Risk 且 `realTurnVerified=false`macOS x64/arm64 与 native non-WSL Linux 未验收。 |
| 2026-08-21 | AI 编程模型切换真实 OpenCode wire 与 fresh runtime proxy token 修复 | 客户端实现及自动化验证通过;新构建真实本地 smoke 待执行 | 源任务 `20260821-model-switch-runtime-fix-a83d6c91`、源提交 `cce7722`、集成任务 `20260821-integrate-model-switch-fix-8f2d6c41` | 本地 1.1.8 / OpenCode 1.18.9 日志暴露旧请求缺少 `model.id`,且每进程 Host API token 被误判为 provider credential rotation。Main client 现将内部 `modelID` 映射为 wire `id`owned fresh runtime 构建时注入当前 proxy token持久化该已生效值不再要求 restartattached/unknown 与 timeout/partial persistence 仍 fail closed。4 files / 171 focused、177 files / 2074 full unit、typecheck、lint0 errors / 6 existing warnings、production build 与 Electron E2E 1/1 通过。 |
| 2026-08-20 | AI 编程 Session 模型切换与新增伙伴 hot-add | 客户端实现及自动化验证通过;真实 provider 多 Session smoke 仍沿用既有待验收项 | 源任务 `20260820-session-model-agent-hotfix-6e4c9a2f`、源提交 `c0163bc`、集成任务 `20260820-integrate-session-model-hotfix-7b3e91c4` | 页面选择器与 `/models` / `/model` 通过 OpenCode native Session endpoint 切换模型,普通执行不再覆盖选择或要求 runtime restartAgent readiness 改为逐 id新增唯一 id 在 owned fresh generation 被 live registry 发现后可用,同 id 编辑与删后重建仍 fail closed。405 focused、176 files / 2068 full unit、typecheck、lint0 errors / 6 existing warnings、Vite build 与 Electron E2E 1/1 通过。 |