You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(cache): drop target/ outputs from test target (0.1.2)
cargo test reuses the workspace target/ dir that build already
populates, so per-crate test targets do not own that output.
Snapshotting the full dir into .nx/cache for every test target
dominated wall-clock with disk I/O on real workspaces. Test
results remain cacheable by exit code. Fix ported from
eddacraft/anvil.
Also closes the v0.1 shakedown module: R3 (CI smoke validated by
the 0.1.1 prepublish gate), R5 (consumer switched onto the
published package), module status Complete, and the `target/`
caching risk row marked resolved for `test`.
Copy file name to clipboardExpand all lines: plans/index.aps.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,11 @@
1
1
<!-- APS Index -->
2
-
<!-- Status: In Progress-->
2
+
<!-- Status: Complete-->
3
3
4
4
# nxrust — Nx 22 plugin for Rust
5
5
6
6
| Field | Value |
7
7
|-------|-------|
8
-
| Status |In Progress|
8
+
| Status |Complete|
9
9
| Owner | eddacraft |
10
10
| Created | 2026-04-21 |
11
11
| Licence | Apache-2.0 |
@@ -40,13 +40,13 @@ TypeScript + Rust monorepos.
40
40
Rust crate nodes + cross-crate edges from `cargo metadata`
41
41
-[x] Unit test suite green via Vitest
42
42
-[x] Review findings addressed or documented
43
-
-[] End-to-end validation against a real Rust crate in a real Nx 22
43
+
-[x] End-to-end validation against a real Rust crate in a real Nx 22
44
44
workspace passes and caches
45
-
-[] Rollout to every crate in the validation workspace completes green on
45
+
-[x] Rollout to every crate in the validation workspace completes green on
46
46
`nx run-many`
47
-
-[] CI smoke test job in nxrust + dependent-repo smoke in the validation
47
+
-[x] CI smoke test job in nxrust + dependent-repo smoke in the validation
48
48
workspace
49
-
-[] First `@eddacraft/nxrust@0.1.0` published to npm
49
+
-[x] First `@eddacraft/nxrust@0.1.0` published to npm
50
50
51
51
## Constraints
52
52
@@ -68,7 +68,7 @@ TypeScript + Rust monorepos.
68
68
69
69
| Module | Purpose | Status | Dependencies |
70
70
|--------|---------|--------|--------------|
71
-
|[01-v0.1-shakedown](./modules/01-v0.1-shakedown.aps.md)| Prove the plugin end-to-end on a consumer workspace, ship first npm release |In Progress| — |
71
+
|[01-v0.1-shakedown](./modules/01-v0.1-shakedown.aps.md)| Prove the plugin end-to-end on a consumer workspace, ship first npm release |Complete| — |
72
72
73
73
Deferred (not yet active modules):
74
74
@@ -87,7 +87,7 @@ Deferred (not yet active modules):
87
87
88
88
| Risk | Impact | Mitigation |
89
89
|------|--------|------------|
90
-
|`target/` caching yields stale artefacts under remote cache | high | Narrow `outputs` — cache test/clippy reports and binaries, not the whole `target/` tree; verify second-run cache hits before rollout |
90
+
|`target/` caching yields stale artefacts under remote cache | high | Narrow `outputs` — cache test/clippy reports and binaries, not the whole `target/` tree; verify second-run cache hits before rollout. **Resolved 2026-05-12** for `test` (now `outputs: []`); `build` retains `target/` outputs deliberately.|
91
91
| Nx 22 project-graph plugin API drifts on minor upgrades | medium | Small public surface (`createNodesV2` + `createDependencies` only); CI smoke test pins the contract |
92
92
|`cargo metadata` performance on large workspaces | medium | Mtime-keyed `Cargo.lock` cache already in `graph.ts`; re-evaluate if validation hits a slowdown |
93
93
| Consumer switchover breaks the consumer's pnpm graph mid-flight | medium | Switch only after validation + rollout + CI smoke are all green; keep a revert commit ready |
An ancillary defect was found and fixed during the release: the
253
254
e2e smoke (`tools/e2e-smoke.mjs`) hard-coded the 0.1.0 tarball
254
255
filename, so the version bump initially broke the smoke job —
255
256
the script now derives the tarball name from package.json.
256
257
257
-
### NXRUST-R5: Switch consumer onto published package [Draft]
258
+
### NXRUST-R5: Switch consumer onto published package [Complete: 2026-05-12]
258
259
259
260
-**Intent:** Remove the consumer's in-place workspace link and
260
261
consume the published package instead, so the consumer can bump Nx
@@ -272,6 +273,9 @@ release.
272
273
-**Risks:** Drift between the in-place copy and the extracted nxrust
273
274
repo — treat any drift as a bug feeding back into NXRUST-R1, patch
274
275
nxrust, and re-publish before deleting the in-place copy
276
+
-**Resolution:** Consumer switched from `workspace:*` link to
277
+
`@eddacraft/nxrust@^0.1.0` (resolving to `0.1.1`). Switchover
278
+
confirmed by the package owner; the in-place link directory is gone.
275
279
276
280
---
277
281
@@ -282,7 +286,7 @@ release.
282
286
| Consumer validation exposes a defect that forces nxrust code changes mid-module | medium | medium | Patch nxrust, re-link, and rerun validation rather than suppressing real defects. |
283
287
| npm scope not registered | medium | low | Verify before R4; fall back to a different scope or unscoped if unavailable |
284
288
| Consumer switchover PR pulls in unrelated changes | low | medium | Keep R5 to one PR, scoped strictly to package.json + lockfile + in-place plugin deletion |
285
-
|`target/` caching defeats the affected story on rollout | high | medium | Narrow `outputs` per target; cache reports not binaries where binaries embed absolute paths |
289
+
|`target/` caching defeats the affected story on rollout | high | medium | Narrow `outputs` per target; cache reports not binaries where binaries embed absolute paths. **Resolved 2026-05-12** for `test` (now `outputs: []`); `build` retains `target/` outputs deliberately.|
0 commit comments