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
{{ message }}
Repository navigation
Commit 966be05
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: docs/plans/2026-08-13-eql-monorepo-absorption.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -186,6 +186,8 @@ The entire diff is one rename — `eql_v3.ste_vec_contains` → `eql_v3.jsonb_do
186
186
187
187
That re-emit is the part worth recording, because the append-only rule says not to. No upgrade edge can ever be walked by `db init`: every one of them is a self-edge, `checkIntegrity` requires a self-edge to carry a `data`-class op, and `db init` runs `allowedOperationClasses: ['additive']`. A fresh database therefore has to collect every head-ref invariant from the genesis edge, so a new required invariant either lands on the baseline or arrives on a second `from: null` edge duplicating the full ~2.6 MB bundle — permanently, once per EQL release. Re-emitting was chosen while `@cipherstash/stack-prisma@1.0.0` was 14 days old with ~253 monthly downloads, i.e. while the blast radius was small and knowable, and the changeset carries the delete-and-re-plan instruction. **Once this package has real adoption the second genesis edge is the correct shape** and the size cost is the price of not orphaning consumers; the trade should be re-argued on adoption numbers at the next bump, not defaulted to.
188
188
189
+
**Re-argued at 3.0.6, and re-emitted once more — still one change on npm.** The next bump changed only the version stamp (`eql_v3.version()` and the `eql_v3` schema comment), but it still moved the digest (`accde003…` → `9b6dab78…`), and the Version Packages PR (`cipherstash/stack#938`) failed the lockstep test because no migration baked it. The trade came out the same way, on the numbers it was meant to be argued on: `@cipherstash/stack-prisma` had 144 npm downloads in September 2026 (52 in its last week), below the ~253/month at which the 3.0.5 re-emit was judged small and knowable; and a second genesis edge would have added another permanent ~2.6 MB bundle copy for a release with no behavioural change. A new `20261002T0000_upgrade_eql_v3_3_0_6` edge carries existing databases. One fact the 3.0.5 record did not have: that re-emit never reached npm. 1.0.0 ships baseline `fc495f7f…` and 1.1.0 and 1.1.1 ship `1030654387…`, both baking the eql-3.0.4 bundle, and none of the three ships the 3.0.5 edge (checked against the unpacked tarballs). So the 3.0.6 re-emit rewrote an unpublished baseline, not a second published one: npm consumers see the 3.0.5 and 3.0.6 re-emits as one baseline change, in the same release that first ships both upgrade edges. The 3.0.5 edge is kept anyway — the frozen-history guard treats every committed edge as published, and a database built from `main` may already have walked it — so a database on eql-3.0.4 installs the bundle twice on upgrade, a time cost rather than a correctness problem. The append-only rule, and the second genesis edge once adoption is real, still stand for the next bump.
190
+
189
191
The narrower lesson for the absorption: **absorbing a repo swaps "last published release" for "current HEAD" across every consumer**, and nothing in the dependency graph announces that. Only a digest pin caught it here. Any other package this repo absorbs by workspace link deserves the same check — diff the built artefact against the published tarball — before the link is treated as neutral.
190
192
191
193
### Three imported release workflows violate the no-caching rule — by omission, not by setting
0 commit comments