instar 1.3.1106 → 1.3.1107
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/dist/data/standards-guard-index.json +1 -1
- package/dist/data/standards-guard-index.meta.json +2 -2
- package/dist/data/standards-registry.meta.json +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/src/data/standards-guard-index.json +1 -1
- package/src/data/standards-guard-index.meta.json +2 -2
- package/src/data/standards-registry.meta.json +1 -1
- package/upgrades/1.3.1107.md +49 -0
- package/upgrades/side-effects/site-workspace-lockfile-parity.md +161 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"generatedFrom": "source-tree",
|
|
4
4
|
"registrySha256": "5413a0c6ef9ba2bda876b509d1c0bfebe450da3708cd5a5d627d6cb836012d58",
|
|
5
|
-
"packageVersion": "1.3.
|
|
5
|
+
"packageVersion": "1.3.1107",
|
|
6
6
|
"guards": [
|
|
7
7
|
{
|
|
8
8
|
"ref": "docs/canonical-migration-contracts.json",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"sha256": "
|
|
2
|
+
"sha256": "bcf00a77d6ff94f04a9b7146a02e7b24a705aba1c2f955e08e8a6302a9008f2f",
|
|
3
3
|
"registrySha256": "5413a0c6ef9ba2bda876b509d1c0bfebe450da3708cd5a5d627d6cb836012d58",
|
|
4
|
-
"packageVersion": "1.3.
|
|
4
|
+
"packageVersion": "1.3.1107"
|
|
5
5
|
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-08-01T20:
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-08-01T20:18:20.877Z",
|
|
5
|
+
"instarVersion": "1.3.1107",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"generatedFrom": "source-tree",
|
|
4
4
|
"registrySha256": "5413a0c6ef9ba2bda876b509d1c0bfebe450da3708cd5a5d627d6cb836012d58",
|
|
5
|
-
"packageVersion": "1.3.
|
|
5
|
+
"packageVersion": "1.3.1107",
|
|
6
6
|
"guards": [
|
|
7
7
|
{
|
|
8
8
|
"ref": "docs/canonical-migration-contracts.json",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"sha256": "
|
|
2
|
+
"sha256": "bcf00a77d6ff94f04a9b7146a02e7b24a705aba1c2f955e08e8a6302a9008f2f",
|
|
3
3
|
"registrySha256": "5413a0c6ef9ba2bda876b509d1c0bfebe450da3708cd5a5d627d6cb836012d58",
|
|
4
|
-
"packageVersion": "1.3.
|
|
4
|
+
"packageVersion": "1.3.1107"
|
|
5
5
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
**Every pull request opened after 18:26Z on 2026-08-01 carried a red `ux-impact-pr-gate` its author could not fix.** The failure was mine, introduced by PR #1753 which I merged at 18:26Z, and `main` stayed green throughout so nothing surfaced it.
|
|
9
|
+
|
|
10
|
+
#1753 added `site/pnpm-workspace.yaml` to make `site/` its own pnpm workspace root, so starlight would resolve `zod@^3.25.76` rather than the root's `zod@^4.3.6`. The root `pnpm-workspace.yaml` still declares `packages: ["site"]`. Both statements cannot hold: the root install then demands `site/package.json`'s specifiers, which the root lockfile never received, and the gate's command fails —
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
specifiers in the lockfile don't match specifiers in package.json:
|
|
14
|
+
* 6 dependencies were added: @astrojs/starlight@^0.37.7, @astrojs/vercel@^9.0.4,
|
|
15
|
+
@tailwindcss/typography@^0.5.19, @tailwindcss/vite@^4.2.0, astro@^5.17.1, tailwindcss@^4.2.0
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
This makes `site/` an ordinary workspace member again (`site/pnpm-workspace.yaml` deleted) and names the real constraint instead: `zod: ^3.25.76` as a direct dependency of `site/package.json`. **Starlight takes `zod` as a peer dependency** — it uses whatever the surrounding project supplies, which was the root's v4. With `site/` asking for v3 by name it gets v3, the root keeps v4, and a single lockfile describes both.
|
|
19
|
+
|
|
20
|
+
**The mechanism I got wrong the first time.** #1753 treated the problem as *which workspace owns the directory*. It is not — it is an unsatisfied peer range. Isolating the directory happened to fix the symptom while creating the lockfile contradiction. The first attempt at *this* fix repeated the mistake from the other side (drop `site` from the root `packages` list): the frozen install passed and the site build broke again, resolving `zod@4.3.6` from the root store.
|
|
21
|
+
|
|
22
|
+
**Two findings recorded while fixing it:**
|
|
23
|
+
|
|
24
|
+
- **I verified with a different command than the one that gates the repo.** #1753 was tested with `pnpm install`; CI runs `pnpm install --frozen-lockfile`. Plain install silently *rewrites* the lockfile to match, so it passes locally exactly when it would fail in CI. Every check in this PR used the frozen form.
|
|
25
|
+
- **`main` cannot see this class of break.** `ci.yml` installs with `npm ci` across all six jobs; the only consumer of the pnpm path is a PR-only gate. So main is green while every PR is red — the same blind spot #1753's own release note described, which is what makes shipping this regression through it worth recording rather than quietly repairing. <!-- tracked: ACT-1701 -->
|
|
26
|
+
|
|
27
|
+
Deliberately not changed: which package manager this project standardises on, and whether `main` should run a `pnpm --frozen-lockfile` install. Both are the operator's call and neither is needed to unblock the queue today.
|
|
28
|
+
|
|
29
|
+
## What to Tell Your User
|
|
30
|
+
|
|
31
|
+
Nothing changes in how you work with me, and there is nothing for you to do.
|
|
32
|
+
|
|
33
|
+
For a couple of hours this evening, every new code change in this project showed a failing check that had nothing to do with the change itself. I caused it with an earlier fix, and the way the project is set up meant the main branch looked perfectly healthy the entire time, so there was no signal that anything was wrong.
|
|
34
|
+
|
|
35
|
+
That is now fixed, and the documentation site still builds correctly — I checked both, because the obvious repair would have traded one break for the other.
|
|
36
|
+
|
|
37
|
+
## Summary of New Capabilities
|
|
38
|
+
|
|
39
|
+
| Capability | How to Use |
|
|
40
|
+
|-----------|-----------|
|
|
41
|
+
| New code changes no longer show a failing check caused by the documentation site's setup | Nothing to do — open changes as normal |
|
|
42
|
+
| The documentation site keeps building correctly alongside that fix | Nothing to do — verified at 99 pages built |
|
|
43
|
+
|
|
44
|
+
## Evidence
|
|
45
|
+
|
|
46
|
+
- **Reproduced before fixing**, on a copy of current `main` with the gate's exact command: `pnpm install --frozen-lockfile --config.blockExoticSubdeps=false` → **exit 1**, with the six-specifier mismatch above.
|
|
47
|
+
- **After the fix, in the PR worktree:** root frozen install → **exit 0**; `site/node_modules/zod` → **3.25.76**; `pnpm exec astro build` in `site/` → **exit 0, 99 pages built, Complete!**
|
|
48
|
+
- **Negative control:** the same frozen install against unfixed `main` still exits 1 — so the check discriminates between fixed and broken rather than passing everywhere.
|
|
49
|
+
- **Rejected alternative, tested rather than assumed:** keeping `site/` as its own workspace root and giving it an `allowBuilds` block → frozen install exit 0, but `astro build` **exit 1** with `Cannot read properties of undefined (reading '_zod')`, resolving `node_modules/.pnpm/zod@4.3.6/`. That is the shape of the original bug returning, which is why it was discarded.
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Side-Effects Review — site workspace / lockfile parity
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `site-workspace-lockfile-parity`
|
|
4
|
+
**Date:** `2026-08-01`
|
|
5
|
+
**Author:** `Echo (instar-dev agent)`
|
|
6
|
+
**Second-pass reviewer:** `not required (Tier 1)`
|
|
7
|
+
|
|
8
|
+
## Summary of the change
|
|
9
|
+
|
|
10
|
+
PR #1753 (merged 18:26Z today, by me) added `site/pnpm-workspace.yaml` to make `site/` its
|
|
11
|
+
own pnpm workspace root, so starlight would resolve `zod@^3` instead of the root's
|
|
12
|
+
`zod@^4`. The root `pnpm-workspace.yaml` still declares `packages: ["site"]`. Those two
|
|
13
|
+
statements contradict: the root install then demands `site/package.json`'s specifiers, which
|
|
14
|
+
the root lockfile does not carry, and `pnpm install --frozen-lockfile` exits 1 with
|
|
15
|
+
`specifiers in the lockfile don't match specifiers in package.json`. That is the command the
|
|
16
|
+
`ux-impact-pr-gate` runs, so **every PR opened since 18:26Z has a red check its author cannot
|
|
17
|
+
fix**.
|
|
18
|
+
|
|
19
|
+
This reverts `site/` to being an ordinary workspace member (deletes
|
|
20
|
+
`site/pnpm-workspace.yaml`) and instead names the constraint directly: `zod: ^3.25.76` as a
|
|
21
|
+
direct dependency of `site/package.json`. Starlight takes `zod` as a **peer** dependency, so
|
|
22
|
+
it uses whatever the surrounding project supplies — previously the root's v4. With `site/`
|
|
23
|
+
asking for v3 by name it gets v3, the root keeps v4, and one lockfile describes both. Files:
|
|
24
|
+
`site/pnpm-workspace.yaml` (deleted), `site/package.json` (+1 line), `pnpm-lock.yaml`
|
|
25
|
+
(regenerated).
|
|
26
|
+
|
|
27
|
+
## Decision-point inventory
|
|
28
|
+
|
|
29
|
+
No decision point. This is build/packaging configuration; no gate, sentinel, or runtime
|
|
30
|
+
branch is added, modified, or removed.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 1. Over-block
|
|
35
|
+
|
|
36
|
+
No block/allow surface — over-block not applicable. The nearest analogue is over-constraining
|
|
37
|
+
resolution: pinning `zod` in `site/` could conflict if a future `site/` dependency required
|
|
38
|
+
`zod@4`. Nothing in `site/package.json` does today (starlight is the only zod consumer and it
|
|
39
|
+
wants `^3.25.76`), and the constraint is a caret range, so patch and minor upgrades inside v3
|
|
40
|
+
still float.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 2. Under-block
|
|
45
|
+
|
|
46
|
+
No block/allow surface — under-block not applicable. What this still misses: the **class**
|
|
47
|
+
that let it hide. `ci.yml` installs with `npm ci` on every job, so main never exercises the
|
|
48
|
+
pnpm path; the only job that does is this PR-only gate. Main therefore stays green while
|
|
49
|
+
every PR fails. This change fixes the instance and leaves that blind spot open — deliberately,
|
|
50
|
+
because closing it means either adding a pnpm frozen-install job to main or standardising on
|
|
51
|
+
one package manager, both larger decisions than this fix.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 3. Level-of-abstraction fit
|
|
56
|
+
|
|
57
|
+
Correct layer, and deliberately the *lower* of the two candidates. The alternative — keeping
|
|
58
|
+
`site/` as an independent workspace root and adding an `allowBuilds` block to it — was built
|
|
59
|
+
and tested first. It made the frozen install pass and **re-broke the site build**, because an
|
|
60
|
+
independent `site/` still resolved starlight's peer `zod` up to the root's v4. Declaring the
|
|
61
|
+
dependency in `site/package.json` addresses the actual mechanism (an unsatisfied peer) rather
|
|
62
|
+
than the symptom (which workspace owns the directory).
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 4. Signal vs authority compliance
|
|
67
|
+
|
|
68
|
+
**Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
|
|
69
|
+
|
|
70
|
+
- [x] No — this change has no block/allow surface.
|
|
71
|
+
|
|
72
|
+
Packaging configuration. It holds no authority over agent behaviour or information flow.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 4b. Judgment-point check (Judgment Within Floors standard)
|
|
77
|
+
|
|
78
|
+
No new static heuristic at a competing-signals decision point. Dependency resolution is
|
|
79
|
+
enumerable and declarative: starlight's peer range and the root's dependency are both stated
|
|
80
|
+
facts, and the fix states a third. Nothing is inferred at runtime.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 5. Interactions
|
|
85
|
+
|
|
86
|
+
- **Shadowing:** none. Removing `site/pnpm-workspace.yaml` restores the single root workspace; there is no second resolver to shadow.
|
|
87
|
+
- **Double-fire:** none.
|
|
88
|
+
- **Races:** none.
|
|
89
|
+
- **Feedback loops:** none.
|
|
90
|
+
- **The one real interaction is with `npm ci`.** `package-lock.json` is unchanged by this PR, and CI's six `npm ci` jobs were passing before and after (they never saw the pnpm contradiction at all). Verified: main's CI is green today with the contradiction present, which is precisely why it hid.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 6. External surfaces
|
|
95
|
+
|
|
96
|
+
- **Other agents / install base:** none. `site/` is the docs site; it ships no runtime code into the package.
|
|
97
|
+
- **External systems:** Vercel builds `site/`. It builds from `site/` with its own install, and the site build was re-verified end-to-end here (99 pages, complete) — the property #1753 existed to restore.
|
|
98
|
+
- **Persistent state:** none.
|
|
99
|
+
- **Operator surface (Mobile-Complete):** no operator-facing actions.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## 6b. Operator-surface quality
|
|
104
|
+
|
|
105
|
+
No operator surface — not applicable.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 7. Multi-machine posture (Cross-Machine Coherence)
|
|
110
|
+
|
|
111
|
+
**machine-local BY DESIGN**, with the reason that there is no state at all: this is
|
|
112
|
+
repository configuration, identical on every machine because git makes it so. It emits no
|
|
113
|
+
user-facing notices, holds no durable state, and generates no URLs.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 8. Rollback cost
|
|
118
|
+
|
|
119
|
+
- **Hot-fix release:** revert the commit. Two files plus a regenerated lockfile.
|
|
120
|
+
- **Data migration:** none.
|
|
121
|
+
- **Agent state repair:** none.
|
|
122
|
+
- **User visibility:** reverting restores today's broken state — every PR red again. The rollback is strictly worse than the fix, which is worth stating plainly.
|
|
123
|
+
|
|
124
|
+
## Conclusion
|
|
125
|
+
|
|
126
|
+
The review changed the fix once, decisively. My first attempt dropped `site` from the root
|
|
127
|
+
`packages` list, which made the frozen install pass and re-broke the site build; the
|
|
128
|
+
level-of-abstraction question is what surfaced that the real mechanism is an unsatisfied peer
|
|
129
|
+
dependency, not directory ownership. The second attempt was verified on all three properties
|
|
130
|
+
plus a negative control against unfixed main.
|
|
131
|
+
|
|
132
|
+
The honest residue: this PR fixes the instance. The reason it went unseen for two hours —
|
|
133
|
+
main installing with `npm ci` while the only pnpm consumer is a PR-only gate — is untouched
|
|
134
|
+
and is a real gap. Flagged, not fixed.
|
|
135
|
+
|
|
136
|
+
Clear to ship, and it should go ahead of other work: until it lands, every open PR carries a
|
|
137
|
+
red check its author cannot resolve.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Second-pass review (if required)
|
|
142
|
+
|
|
143
|
+
**Reviewer:** not required — Tier 1 (two files plus a lockfile, no decision-point surface, no
|
|
144
|
+
persistent state, revert-only rollback).
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Evidence pointers
|
|
149
|
+
|
|
150
|
+
- **Reproduced before fixing**, on a copy of current main with the gate's exact command: `pnpm install --frozen-lockfile --config.blockExoticSubdeps=false` → exit 1, `specifiers in the lockfile don't match specifiers in package.json: * 6 dependencies were added: @astrojs/starlight@^0.37.7, @astrojs/vercel@^9.0.4, @tailwindcss/typography@^0.5.19, @tailwindcss/vite@^4.2.0, astro@^5.17.1, tailwindcss@^4.2.0`.
|
|
151
|
+
- **After the fix, in the PR worktree:** root frozen install → **exit 0**; `site/node_modules/zod` → **3.25.76**; `pnpm exec astro build` in `site/` → **exit 0, 99 pages built, Complete!**
|
|
152
|
+
- **Negative control:** the same frozen install against unfixed `main` still exits 1, so the check discriminates rather than passing everywhere.
|
|
153
|
+
- **Rejected alternative, tested not assumed:** keeping `site/` as its own workspace root and giving it an `allowBuilds` block → frozen install exit 0, but `astro build` exit 1 with `Cannot read properties of undefined (reading '_zod')`, resolving `node_modules/.pnpm/zod@4.3.6/`.
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Class-Closure Declaration (display-only mirror)
|
|
158
|
+
|
|
159
|
+
No agent-authored-artifact defect — not applicable. The defect is in repository packaging
|
|
160
|
+
configuration, not in an LLM prompt, hook, config, skill, or standards text, and the change
|
|
161
|
+
adds no self-triggered controller.
|