chore(marketplace): record MLM-02 integration
This commit is contained in:
@@ -79,8 +79,15 @@
|
||||
source commit `352a3b7280bb48854beb5281d2b4923b76793367`, and was integrated
|
||||
without conflict as coordinator product commit
|
||||
`898e2b7bdde4bdd77a5659d7b4e294d0607656e3`.
|
||||
- Current client frontier is the post-MLM-01 documentation checkpoint. MLM-02 remains
|
||||
blocked until WSM-03/WSM-04 freeze the Marketplace/publication DTO contract.
|
||||
- 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.
|
||||
|
||||
## Outcome
|
||||
|
||||
@@ -96,6 +103,13 @@
|
||||
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.
|
||||
|
||||
## Verification
|
||||
|
||||
@@ -117,6 +131,12 @@
|
||||
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.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
|
||||
@@ -1,182 +0,0 @@
|
||||
# Task: Marketplace client and Package Store (MLM-02)
|
||||
|
||||
## Identity
|
||||
|
||||
- Task ID: 20260828-plugin-marketplace-mlm02-9b7c4e1a
|
||||
- Mode: Feature
|
||||
- Branch: codex/20260828-plugin-marketplace-mlm02-9b7c4e1a-marketplace-mlm02
|
||||
- Worktree: D:\Datas\OthersProjects\makelore-plugin-marketplace-mlm02-9b7c4e1a
|
||||
- Base commit: c73fcf1d2d2e5dccea6f3b403a3b7c00bdc0b25a
|
||||
- Owner: codex
|
||||
- Status: Ready for Integration
|
||||
|
||||
## Scope
|
||||
|
||||
- Implement ticket MLM-02 from the exact client coordinator frontier
|
||||
`c73fcf1d2d2e5dccea6f3b403a3b7c00bdc0b25a` in this isolated worktree.
|
||||
- Own only new `electron/coding-plugins/marketplace-client.ts`,
|
||||
`electron/coding-plugins/package-store.ts`,
|
||||
`electron/coding-plugins/account-plugin-cache.ts`, and focused Marketplace,
|
||||
account-cache, download, and Package Store tests plus this task record.
|
||||
- Consume the integrated MLM-01 parser/signature/trust primitives and frozen
|
||||
WSM-03/WSM-04 Marketplace DTO contract; do not wire registry, resolver, Pi,
|
||||
Host routes, Renderer, project state, server, Operations, or Release B.
|
||||
|
||||
## Intent And Constraints
|
||||
|
||||
- Main derives the current account from the existing session boundary; Renderer
|
||||
never supplies account IDs, Bearer tokens, admissions, or package paths.
|
||||
- Parse closed catalog/detail/Library/resolve/download DTOs with bounded request
|
||||
body/deadline handling, composite ETag and stale metadata, and exactly one
|
||||
authenticated 401 refresh/retry. Preserve a stable resolve request identity
|
||||
for one logical sync across retry/restart; changed logical requests receive a
|
||||
new identity.
|
||||
- Package installation is a controlled temporary-file/extraction transaction:
|
||||
verify descriptor, code-owned key, Ed25519 signature, size, SHA-256, exact
|
||||
manifest, plugin/version/client range, then atomically switch the immutable
|
||||
release directory and index. Every interruption or failure preserves the old
|
||||
release/index.
|
||||
- Account Library and Release Admission projections are session/account-scoped
|
||||
and never enter shared `index.json`; logout/account switch invalidates them.
|
||||
Cleanup must respect active workers and every account snapshot, with no token,
|
||||
project, TP, or arbitrary Renderer path in the shared index.
|
||||
- Stable automatic update and explicit beta selection are separate; no hot swap
|
||||
for current workers. Production official-key absence remains an activation hold;
|
||||
no private key, test key, environment trust override, or Release B runtime is
|
||||
added.
|
||||
|
||||
## Project Context Loaded
|
||||
|
||||
Read:
|
||||
- `C:\Users\7brot\.agents\skills\implement-spec\SKILL.md`
|
||||
- `C:\Users\7brot\.codex\skills\maintain-project-docs\SKILL.md`
|
||||
- `AGENTS.md`, `.project-docs/05-agent-entry/read-before-planning.md`,
|
||||
`planning-gate.md`, and `read-before-coding.md`
|
||||
- `.project-docs/05-agent-entry/memory-index.md`,
|
||||
`.project-docs/00-brief/project-positioning.md`,
|
||||
`.project-docs/30-worklog/current-state.md`, this task record,
|
||||
`.project-docs/10-decisions/decision-index.md`,
|
||||
`.project-docs/20-architecture/system-overview.md`, `module-map.md`,
|
||||
`data-flow.md`, `.project-docs/40-domain/business-rules.md`, `glossary.md`,
|
||||
`.project-docs/50-evidence/evidence-index.md`,
|
||||
`.project-docs/60-reflection/reflection-index.md`,
|
||||
`.project-docs/80-commitments/commitments.md`, and
|
||||
`.project-docs/90-maintenance/stale-items.md`
|
||||
- implementation spec `2026-08-28-makelore-plugin-marketplace-implementation-spec.md`
|
||||
§§3–6, 7.2–7.3, 8.1, 10.1–10.3, 13.2–13.3 and 16; ticket graph MLM-02;
|
||||
accepted design sections 6, 8.2–8.3, 9.1, 11.2–11.5, 14–15, 18.3, and
|
||||
19.2–20; and the frozen server DTO/API source at `f9c41bd...`.
|
||||
- Peer records for MLM-01, the client coordinator, WSM-03, and WSM-04 (read-only).
|
||||
|
||||
Relevant understanding:
|
||||
- The project is an Electron Main/Renderer client; Main owns authentication,
|
||||
filesystem, network, and package trust while Renderer consumes safe projections.
|
||||
- Marketplace Release A separates publication, Library acquisition, device
|
||||
installation, project enablement, Agent assignment, runtime authorization, and
|
||||
billing. Acquire/download/install/enable/assignment must not write Token Points.
|
||||
- The exact server contract has anonymous catalog/detail, authenticated Library,
|
||||
digest-idempotent stable/beta resolve, account-bound expiring admissions, and
|
||||
admission-authorized download grants/content. `removed_at` tombstones remain in
|
||||
Library snapshots; `system_included` Data Service bypasses Library/admission.
|
||||
- MLM-01 is integrated at the dispatch base and provides exact schema-v1/v2
|
||||
parsing, descriptor bytes, SemVer checks, Ed25519 verification, and a code-owned
|
||||
fail-closed trust store. The official production public key is not supplied.
|
||||
- Current canonical memory predates Marketplace; the committed spec/design,
|
||||
frozen server DTOs, exact frontier, and peer task outcomes are authoritative.
|
||||
|
||||
Task context:
|
||||
- Task ID: `20260828-plugin-marketplace-mlm02-9b7c4e1a`
|
||||
- Mode: Feature
|
||||
- Branch: `codex/20260828-plugin-marketplace-mlm02-9b7c4e1a-marketplace-mlm02`
|
||||
- Worktree: `D:\Datas\OthersProjects\makelore-plugin-marketplace-mlm02-9b7c4e1a`
|
||||
- Base commit: `c73fcf1d2d2e5dccea6f3b403a3b7c00bdc0b25a`
|
||||
- Other active local tasks: client coordinator and completed MLM-01 peer;
|
||||
separate server/Operations WSM-03/WSM-04 peers own disjoint files.
|
||||
- Overlap/semantic assessment: no unresolved conflict. MLM-01 owns parser/trust;
|
||||
MLM-02 owns only the three Main modules and focused tests; MLM-03 owns resolver,
|
||||
routes, Pi/lifecycle. WSM-03/04 DTOs are frozen read-only inputs.
|
||||
|
||||
Gate result:
|
||||
- Concurrent Task Gate: Passed. `check_project_docs.py` passed; `task_context.py
|
||||
start` created the isolated owner worktree, and `status --json` matches this
|
||||
task ID, owner, feature mode, absolute worktree, branch, and exact base.
|
||||
- Planning Gate: Passed. Required memory, spec/ticket/design, frozen server DTO,
|
||||
and peer scopes were read; no unresolved semantic conflict or ownership overlap
|
||||
blocks this plan. Coordinator and user root worktrees remain untouched.
|
||||
|
||||
## Implementation Plan
|
||||
|
||||
1. Inspect the existing Main HTTP/session, safe file/archive, package parser, and
|
||||
test seams without editing; write red focused contract tests for bounded DTO
|
||||
parsing, auth refresh/retry, stable request identity, account invalidation, and
|
||||
atomic Package Store failure preservation.
|
||||
2. Implement the smallest cohesive authenticated MarketplaceClient with closed
|
||||
response parsers, cache validators/stale state, session-derived account, one
|
||||
401 retry, and logical resolve identity management.
|
||||
3. Implement account cache and Package Store with controlled temp paths, exact
|
||||
MLM-01 descriptor/signature/manifest verification, atomic immutable index
|
||||
switching, account/worker-aware cleanup, and stable-vs-beta update policy.
|
||||
4. Run focused tests and interruption/account/path regression matrices, typecheck,
|
||||
scoped/full lint, proportionate build, then task-aware diff/doc gates. Complete
|
||||
the task and make exactly one clean source commit with sole parent the exact
|
||||
dispatch base.
|
||||
|
||||
## Outcome
|
||||
|
||||
- Implemented MLM-02 from the exact client frontier. Main now owns closed
|
||||
Marketplace catalog/detail/Library/resolve/download parsing, bounded requests,
|
||||
composite cache metadata, stale projections, one-refresh authentication retry,
|
||||
and stable logical resolve identity.
|
||||
- Added an in-memory account/epoch cache and a device-only immutable Package Store
|
||||
with controlled temporary extraction, schema-2 Skill-only manifest checks,
|
||||
descriptor/client-range/size/SHA/Ed25519 verification, atomic release-directory
|
||||
and index replacement, old-release preservation, stable-versus-explicit-beta
|
||||
selection, and account/worker-aware cleanup hooks.
|
||||
- Scope remains limited to the three new Main modules, focused tests, and this
|
||||
task record. No registry, effective resolver, Pi, Host route, Renderer,
|
||||
project-file, server, Operations, Token Point, hosted-runtime, or Release B
|
||||
code was changed. The official production public key is not present, so
|
||||
production activation remains an explicit hold; tests use ephemeral injected
|
||||
keys only and contain no production private key.
|
||||
|
||||
## Verification
|
||||
|
||||
- `corepack pnpm install --frozen-lockfile`: passed; no dependency or lockfile
|
||||
change.
|
||||
- Initial focused red checkpoint: collection failed because the new owned
|
||||
`account-plugin-cache` module was absent; no pre-existing implementation was
|
||||
accepted as a fallback.
|
||||
- `corepack pnpm exec vitest run tests/unit/coding-plugin-marketplace-client.test.ts
|
||||
--maxWorkers=1`: 14 passed.
|
||||
- `corepack pnpm exec vitest run tests/unit/coding-plugin-manifest.test.ts
|
||||
tests/unit/coding-plugin-marketplace-contract.test.ts
|
||||
tests/unit/coding-plugin-marketplace-client.test.ts --maxWorkers=1`: 43 passed.
|
||||
- `corepack pnpm run typecheck`: passed.
|
||||
- Owned ESLint over the three Main modules and focused test: passed.
|
||||
- `corepack pnpm run lint:check`: 0 errors, 5 pre-existing warnings in
|
||||
`src/pages/Home/index.tsx` and `src/pages/Makelore/index.tsx`.
|
||||
- `corepack pnpm run build:vite`: passed; only existing dynamic-import and chunk
|
||||
size warnings.
|
||||
- Full Vitest: 1,727 passed, 2 skipped; the separate coding-chat pressure test
|
||||
passed 1/1.
|
||||
- Focused failure matrix covers 401 refresh/retry, bounded/closed DTO parsing,
|
||||
detail release projection, stable resolve identity, account A/B cache
|
||||
isolation, download interruption, bad signature, invalid ZIP extraction,
|
||||
index replacement failure, incompatible client, account switch, and path
|
||||
containment; old release/index retention is asserted for the covered install
|
||||
failure points.
|
||||
- `git diff --check`: passed; exactly the five owned paths are changed.
|
||||
- Task-aware `check_doc_drift.py`: passed. `task_context.py complete` returned
|
||||
`READY_FOR_INTEGRATION` for this task and exact base/worktree/branch.
|
||||
|
||||
## Follow-ups
|
||||
|
||||
- Production activation remains blocked until the official Ed25519 public key is
|
||||
supplied through the code-owned trust store and the corresponding production
|
||||
private key is available only from deployment secret management.
|
||||
- MLM-03 may consume these Main modules for the effective resolver and local
|
||||
routes; no runtime integration is included here.
|
||||
|
||||
## Promotion Candidates
|
||||
|
||||
- None. No canonical project-memory change is proposed.
|
||||
Reference in New Issue
Block a user