vouchington-tooling 0.12.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -68,13 +68,15 @@ vouchington post-review
68
68
  vouchington stage-review-payload optional|required <source> <destination>
69
69
  ```
70
70
 
71
- For persistent `pnpm-install`, v4 metadata tracks structural inputs separately from the
71
+ For persistent `pnpm-install`, v5 metadata tracks structural inputs separately from the
72
72
  `--install-scripts` policy. A warm scripts-enabled tree can therefore toggle
73
73
  `true → false → true` without forced reconciliation; a tree first installed with scripts disabled
74
74
  uses one script-suppressed verification install followed by `pnpm rebuild --pending --recursive`.
75
75
  When only newly pending dependency package IDs remain, it instead rebuilds those exact IDs without
76
76
  rerunning first-party workspace hooks.
77
- An isolated native-binary mismatch uses one strict forced install only when structural provenance
77
+ If that generic rebuild leaves only pnpm's root importer marker, one root-only pending rebuild runs
78
+ the root lifecycle hook; every other residual ID remains a hard failure. An isolated native-binary
79
+ mismatch uses one strict forced install only when structural provenance
78
80
  matches, workspace links are valid, and pnpm records empty `ignoredBuilds` and `pendingBuilds` ledgers;
79
81
  otherwise it retains the script-free then strict reconciliation. Native and workspace-link health
80
82
  are verified before its metadata stamp is refreshed.
@@ -52,7 +52,11 @@ export async function finalizePendingBuilds(options, runCapture, phase) {
52
52
  fail(`${phase} completed without a clear pending build ledger`);
53
53
  if (options.installScripts && before.kind === 'pending') {
54
54
  await install(['rebuild', '--pending', '--recursive'], options, 'pending scripts rebuild');
55
- const after = await pendingBuilds();
55
+ let after = await pendingBuilds();
56
+ if (after.kind === 'pending' && after.ids.length === 1 && after.ids[0] === '.') {
57
+ await install(['rebuild', '--pending', '--workspace-root'], options, 'pending workspace root rebuild');
58
+ after = await pendingBuilds();
59
+ }
56
60
  if (after.kind !== 'clear')
57
61
  fail(`${phase} completed without a clear pending build ledger`);
58
62
  }
@@ -40,12 +40,17 @@ elif [ ! -f "$PNPM_NODE_MODULES/.modules.yaml" ]; then
40
40
  printf 'pendingBuilds: []\\n' > "$PNPM_NODE_MODULES/.modules.yaml"
41
41
  fi
42
42
  case " $* " in
43
+ *' rebuild --pending --workspace-root '*)
44
+ printf 'pendingBuilds: [%s]\n' "\${PNPM_WORKSPACE_ROOT_REBUILD_PENDING_BUILDS:-}" > "$PNPM_NODE_MODULES/.modules.yaml"
45
+ ;;
43
46
  *' rebuild '*)
44
47
  if [ "\${PNPM_REPAIR_NATIVE_ON_REBUILD:-0}" = 1 ]; then
45
48
  cp "$PNPM_NATIVE_REPLACEMENT" "$PNPM_NATIVE_ADDON"
46
49
  fi
47
50
  if [ "\${PNPM_REBUILD_INVALID_LEDGER:-0}" = 1 ]; then
48
51
  printf 'pendingBuilds: invalid\n' > "$PNPM_NODE_MODULES/.modules.yaml"
52
+ elif [ -n "\${PNPM_REBUILD_PENDING_BUILDS:-}" ]; then
53
+ printf 'pendingBuilds: [%s]\n' "$PNPM_REBUILD_PENDING_BUILDS" > "$PNPM_NODE_MODULES/.modules.yaml"
49
54
  else
50
55
  printf 'pendingBuilds: []\n' > "$PNPM_NODE_MODULES/.modules.yaml"
51
56
  fi
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vouchington-tooling",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "description": "Vouchington CLI and extractable tooling libraries.",
5
5
  "homepage": "https://github.com/vouchington/vouchington-tooling/tree/main/packages/vouchington-tooling#readme",
6
6
  "bugs": {