docs(coding): record ML-07 R3 remediation
This commit is contained in:
@@ -409,6 +409,33 @@
|
|||||||
|
|
||||||
## Follow-ups
|
## Follow-ups
|
||||||
|
|
||||||
|
## 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 must review the fixed committed range from exact
|
- ML-07 must review the fixed committed range from exact
|
||||||
`eb5d15d68470b30ec181164f08f0d7b027ef0006` through the final ML-06 docs
|
`eb5d15d68470b30ec181164f08f0d7b027ef0006` through the final ML-06 docs
|
||||||
checkpoint along independent Standards and Spec axes. Accepted findings route
|
checkpoint along independent Standards and Spec axes. Accepted findings route
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
# Task: Remediate accepted MakeLore ML-07 R3 finding
|
|
||||||
|
|
||||||
## Identity
|
|
||||||
|
|
||||||
- Task ID: 20260827-plugin-ml07-remediation-r3-7f4a2d91
|
|
||||||
- Mode: Feature
|
|
||||||
- Branch: codex/20260827-plugin-ml07-remediation-r3-7f4a2d91-plugin-ml07-remediation-r3
|
|
||||||
- Worktree: D:\Datas\OthersProjects\makelore-plugin-ml07-remediation-r3-7f4a2d91
|
|
||||||
- Base commit: 405b9f64fd6872f6b4bd4c4429e6aaff2fa0b84a
|
|
||||||
- Owner: ml07-remediator
|
|
||||||
- Status: Ready for Integration
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- Correct same-project load/mutation ordering in `src/stores/coding-plugins.ts` with one project-scoped operation epoch.
|
|
||||||
- Add focused red/green coverage in `tests/unit/coding-plugins-store.test.ts` for both load-before-mutation and refresh-during-mutation orderings, including every adjacent Data Service mutation path.
|
|
||||||
- Preserve the existing project A-to-B stale-response guards and avoid UI changes unless store correctness cannot stand alone.
|
|
||||||
|
|
||||||
## Intent And Constraints
|
|
||||||
|
|
||||||
- A successful mutation must be the latest authority for its project: an older or concurrently started read cannot overwrite it, and any required post-mutation reload must not coalesce with an invalidated read.
|
|
||||||
- Keep the existing store shape and dependency seams; do not add a new store layer, framework, or UI-only correctness guard.
|
|
||||||
- Work only in the fresh isolated task worktree from exact base `405b9f64fd6872f6b4bd4c4429e6aaff2fa0b84a`; do not touch root/coordinator worktrees, push, open a PR, or revert peers.
|
|
||||||
|
|
||||||
## Project Context Loaded
|
|
||||||
|
|
||||||
- Concurrent Task Gate and Planning Gate passed for this exact task ID, feature mode, branch, worktree, base, and owner.
|
|
||||||
- Read the memory index, project positioning, integrated current state, decision index, system overview, architecture/data-flow/domain/success criteria, ADR-006, evidence/reflection/commitment/stale indexes, coordinator record, and R3 reviewer records.
|
|
||||||
- Coordinator owns integration; R3 standards/spec tasks are read-only reviews at the same base. Other active tasks do not overlap these two owned files. Older planning-only reviewer records contain no competing semantic decision.
|
|
||||||
- Relevant boundary: project configuration and Plugin Center state remain local/project-scoped, while Pi/Main authority and plugin policy contracts are unchanged by this Renderer store ordering fix.
|
|
||||||
|
|
||||||
## Plan
|
|
||||||
|
|
||||||
1. Add red tests proving an older same-project load cannot overwrite a completed enable and that a refresh started during a delayed enable cannot suppress the successful mutation.
|
|
||||||
2. Add table coverage for configure, reset, remove-collection, and remove-project under the same delayed-mutation/refresh ordering.
|
|
||||||
3. Replace load-generation coupling inside same-project mutations with a project operation epoch: successful mutations advance the epoch; loads capture it; epoch-specific load coalescing permits required authoritative post-mutation reloads. Retain active-project checks and the global generation for A-to-B load selection.
|
|
||||||
4. Run the focused store tests, typecheck, scoped/full lint checks, drift gate, and return one clean commit with the exact sole parent.
|
|
||||||
|
|
||||||
## Outcome
|
|
||||||
|
|
||||||
- Added one project-scoped operation epoch to the existing store. Loads capture the current epoch and may commit only when both the global latest-load generation and their project epoch remain current.
|
|
||||||
- Successful enable/configure/reset/remove-collection/remove-project mutations advance the project epoch before committing. Same-project refresh no longer suppresses a mutation, while the latest requested project check retains the project A-to-B guard.
|
|
||||||
- Load flights use an epoch-specific internal key, so a required post-mutation authoritative load cannot coalesce with an invalidated older read. A small pending-key reference count preserves the existing public `load:<projectId>` contract while overlapping stale/current flights settle.
|
|
||||||
- Enable/reset commit their authoritative results directly; configure/remove-project trigger a new authoritative projection load; remove-collection commits successful inspection or triggers a fresh load when post-removal inspection fails.
|
|
||||||
- No Plugin Center UI change was needed: store correctness is independent of button disabling and existing page pending keys remain unchanged.
|
|
||||||
|
|
||||||
## Verification
|
|
||||||
|
|
||||||
- Initial red run: `coding-plugins-store` had 6 failures / 12 tests. An older load overwrote a completed enable; refresh during delayed enable suppressed the success; configure/remove-project skipped reload; reset/remove-collection skipped their commits.
|
|
||||||
- Additional red run: successful collection removal followed by failed inspection did not request an authoritative reload (1 failure / 13 tests).
|
|
||||||
- Green focused store run: 1 file / 13 tests passed.
|
|
||||||
- Expanded Renderer/plugin regression: `coding-plugins-store`, `coding-plugins-client`, `project-plugins-page`, and `data-service-plugin-settings` — 4 files / 22 tests passed.
|
|
||||||
- `corepack pnpm run typecheck` passed.
|
|
||||||
- Scoped ESLint for both changed product/test files passed with no output.
|
|
||||||
- `corepack pnpm run lint:check` passed.
|
|
||||||
- No build was run because no UI, Main, Preload, packaging import, or asset file changed; the coordinator will run the full integration ledger.
|
|
||||||
|
|
||||||
## Follow-ups
|
|
||||||
|
|
||||||
- Coordinator should rerun the full suite after integrating the sole remediation commit.
|
|
||||||
|
|
||||||
## Promotion Candidates
|
|
||||||
|
|
||||||
- None recorded.
|
|
||||||
Reference in New Issue
Block a user