provident-storeroom 0.5.0 → 1.0.0

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
@@ -185,9 +185,9 @@ THE CHECKOUT-ONLY RUNG**: it is the in-place developer loop and every battery th
185
185
  building it is a step of a checkout rather than of an install:
186
186
 
187
187
  ```sh
188
- cargo build --release --manifest-path bindings/js/Cargo.toml --offline
188
+ cargo build --release --manifest-path bindings/js/Cargo.toml
189
189
  mkdir -p bindings/js/build/Release
190
- cp bindings/js/target/release/libstoreroom_js_binding.so bindings/js/build/Release/storeroom_js_binding.node
190
+ cp target/release/libstoreroom_js_binding.so bindings/js/build/Release/storeroom_js_binding.node
191
191
  ```
192
192
 
193
193
  **No binary is ever committed** (`package.md §3.2`): `build/` and `target/` are ignored, and the artefacts
@@ -218,8 +218,8 @@ distribution.md §2.2`; `PUB-DD-1`, `PUB-DD-2`):
218
218
  ## Tests
219
219
 
220
220
  ```sh
221
- cargo test --manifest-path bindings/js/Cargo.toml --offline --no-fail-fast # the sibling crate's Rust tests
222
- node --test bindings/js/test/*.test.mjs # this package's JS tests
221
+ cargo test --manifest-path tests/Cargo.toml -p storeroom-tests --no-fail-fast # THE BATTERY'S LEG — this crate's six Rust targets, 235 cells
222
+ npm test # THE REPOSITORY'S JS BATTERY — a REPOSITORY instruction, NOT a consumer one; see the note below
223
223
  ```
224
224
 
225
225
  **AND THE ORDER IS A DECLARED STEP, NOT A CONVENIENCE: THE JS LEG RUNS ONLY AFTER THE ADDON IS BUILT**
@@ -231,13 +231,50 @@ route — `JS -> facade -> core -> store` — is what they exercise, and that ro
231
231
 
232
232
  ```sh
233
233
  # 1. THE BUILD STEP, AT THE REPOSITORY ROOT, BEFORE ANY JS CELL RUNS:
234
- cargo build --release --manifest-path bindings/js/Cargo.toml --offline
234
+ cargo build --release --manifest-path bindings/js/Cargo.toml
235
235
  mkdir -p bindings/js/build/Release
236
- cp bindings/js/target/release/libstoreroom_js_binding.so bindings/js/build/Release/storeroom_js_binding.node
237
- # 2. THE JS LEG, AFTER IT:
238
- node --test bindings/js/test/*.test.mjs
236
+ cp target/release/libstoreroom_js_binding.so bindings/js/build/Release/storeroom_js_binding.node
237
+ # 2. THE JS LEG, AFTER IT — the repository's own battery, from the REPOSITORY ROOT:
238
+ npm test
239
239
  ```
240
240
 
241
+ **AND THE THREE RUST LEGS, EACH WITH THE COUNT IT CARRIES** (`D-34`: one workspace at the repository root,
242
+ `members = [".", "bindings/js", "tests"]`, `default-members = [".", "tests"]`; and the architect's `★ A`:
243
+ **THE LEGS ARE PACKAGE-SCOPED**). **THE THREE, AT THE REPOSITORY ROOT:**
244
+
245
+ ```sh
246
+ cargo test --offline -p storeroom-native # THE STORE'S LEG — 415 cells, 0 fail
247
+ cargo test -p storeroom-tests # THE BATTERY'S LEG — 235 cells, 0 fail
248
+ cargo test # BOTH OF THEM — 650 cells, 0 fail
249
+ ```
250
+
251
+ **AND THE THIRD COMMAND IS NOT A FOURTH LEG: a bare `cargo test` runs `default-members = [".", "tests"]`, so
252
+ it is EXACTLY the store's `415` plus the battery's `235` — `415 + 235 = 650` ✓ — in one run.** The two `-p`
253
+ forms are what measures one crate's own red/green; the bare form is what a release runbook reaches for.
254
+ **`-p` IS NOT DECORATION ON THE BUILD SIDE EITHER:** the store's leg keeps `--offline`, and a workspace-root
255
+ `cargo build --offline` would pull this crate's `napi` crates and `--offline` would refuse them — which is
256
+ why the root manifest's `build` script names the store by package as well.
257
+
258
+ **AND WHAT NO LONGER RUNS ANYTHING IS NAMED HERE RATHER THAN LEFT TO BE DISCOVERED: `cargo test
259
+ --manifest-path bindings/js/Cargo.toml` USED to be this crate's Rust leg and NOW EXITS `0` HAVING RUN
260
+ NOTHING** (`tests 0 · pass 0 · fail 0`), because this crate's six test targets LEAVE `bindings/js/tests/` with
261
+ the stratification's move and a member carries no test targets of its own. **The leg is the battery's
262
+ command above, which reaches the same six targets through the package that hosts them.**
263
+
264
+ **AND THE JS COMMAND ABOVE IS A *REPOSITORY* INSTRUCTION, NOT A CONSUMER ONE — SAID PLAINLY BECAUSE THIS
265
+ FILE SHIPS INSIDE THE PACKAGE** (it is in the allowlist, `docs/specs/storeroom-publish/contract.md §2.1`
266
+ item 1). **`npm test` is the repository root manifest's own `test` script — `node --test
267
+ "tests/**/*.test.mjs"`, taken at the repository root — and THE ROOT MANIFEST IS NOT SHIPPED**: a consumer's
268
+ install carries `package.json` · `index.mjs` · `index.d.ts` · `README.md`, the entry's own modules and the
269
+ licence copy the release's assembly step lands, and **carries NO `tests/` directory at all**, so a consumer
270
+ cannot run this command and is promised nothing by it. **A consumer's own tests are the consumer's**; the
271
+ commands in this section are for a CHECKOUT of this repository. **AND THE COMMAND THAT STOOD HERE IS NAMED SO
272
+ ITS ABSENCE IS LEGIBLE RATHER THAN DISCOVERED: `node --test bindings/js/test/*.test.mjs` was this package's
273
+ own JS leg until the batteries were stratified into `tests/e2e/`, `tests/integration/` and `tests/unit/`, and
274
+ `bindings/js/test/` NO LONGER EXISTS — measured on this tree, the dead command exits `0` having run NOTHING
275
+ (`tests 0 · pass 0 · fail 0`), which is a VACUOUS GREEN rather than even a red, so a reader who kept it would
276
+ believe this package had been tested.**
277
+
241
278
  **THERE IS NO FALLBACK AND NO JS-SIDE STORE** (`A75`): an addon that is ABSENT or FAILS TO LOAD is a
242
279
  **DECLARED FAILURE** — `storeCreate` answers the single failure form
243
280
  `{status: 'FilePathUnreachable', message: <the store's own generated string at the addon's path>}` and NO
@@ -248,6 +285,29 @@ through the addon's `errorMessage` where the artefact loaded far enough to carry
248
285
  reproduced BYTE-FOR-BYTE from the generator's own clause (`src/error.rs`'s `FilePathUnreachable` arm) where
249
286
  the generator is the thing that failed to load. **A consumer that runs the JS cells without step 1 sees that
250
287
  failure and not a silently degraded run.** **The Rust leg needs no addon at all**: the conversion core is the
251
- crate's `rlib` half, so `cargo test --manifest-path bindings/js/Cargo.toml` is drivable with no Node runtime
252
- present (`package.md §4.1` item 3, `§4.5` item 7).
288
+ crate's `rlib` half, so `cargo test --manifest-path tests/Cargo.toml -p storeroom-tests` is drivable with no
289
+ Node runtime present (`package.md §4.1` item 3, `§4.5` item 7).
290
+
291
+ ---
292
+
293
+ **⟶ CORRECTED 2026-10-25 (`D-34`, `strata/decisions.md`; `RCA-8(d)` ANNOTATE-BESIDE: the superseded figure is
294
+ named once, here, and the clause stands at the file's end so that no line of the shipped text above it moves).**
295
+
296
+ **1. THE `cp` SOURCE IN THE `Building the addon` BLOCK, ABOVE, WAS `bindings/js/target/release/libstoreroom_js_binding.so`
297
+ AND IS `target/release/libstoreroom_js_binding.so`.** `D-34` made this crate a **member of the one workspace at the
298
+ repository root** (`members = [".", "bindings/js", "tests"]`), and **a member's target directory IS the workspace
299
+ root's**, so `bindings/js/target/` is no longer produced by any command this repository runs. **Nothing else in
300
+ that block moved**: the `cargo build` above it, the `mkdir -p` between them and the destination are the same
301
+ bytes. **The `Tests` section's step 1 already read `cp target/release/…` and did not need the correction** — the
302
+ two homes of the build form disagreed until this clause; they agree now.
303
+
304
+ **2. ONE SENTENCE ABOVE IS STALE AND IS LEFT AS TEXT BECAUSE ITS CORRECTION IS `delivery`'s, NOT THIS PASS's.**
305
+ The uncovered-target bullet reads *"this package's allowlist, whose whole content is `index.mjs` · `README.md` ·
306
+ `index.d.ts`"*. **The allowlist carries FIVE rows today** — those three plus **`src/entry/`** (the entry's
307
+ thirteen parts) and **`src/constraint-kernel.mjs`** (the barrel), measured at `bindings/js/package.json` — because
308
+ the entry now imports its parts by path and a tarball carrying the hub alone cannot load (`D-13`, `D-14`). **The
309
+ sentence's SUBJECT survives**: the Rust store crate's own `src/**` is still outside the allowlist and an
310
+ uncovered consumer still needs a Rust toolchain. **Its parenthetical figure does not**, and it is named here
311
+ rather than edited, because the shipped manifest's own description is `delivery`'s declaration and a documentation
312
+ pass does not amend a manifest's prose in the manifest's own voice.
253
313