provident-storeroom 1.2.0 → 1.4.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.guide.md +212 -5
- package/README.md +36 -11
- package/RELEASE-NOTES.md +610 -0
- package/index.d.ts +77 -6
- package/index.mjs +120 -34
- package/package.json +7 -6
- package/src/entry/constraints.mjs +662 -73
- package/src/entry/delivery.mjs +19 -5
- package/src/entry/kernel-attempt.mjs +181 -23
- package/src/entry/kernel-commit.mjs +191 -2
- package/src/entry/kernel-foundations.mjs +266 -24
- package/src/entry/kernel-registration.mjs +81 -27
- package/src/entry/kernel-terminal.mjs +18 -5
- package/src/entry/state.mjs +47 -4
package/index.d.ts
CHANGED
|
@@ -346,6 +346,33 @@ export type StoreStatus =
|
|
|
346
346
|
*
|
|
347
347
|
* `kind` is the kernel's closed four-member `LogKind` set, and `state` is the kernel's own `KC` token on the
|
|
348
348
|
* one `outcome` entry and `null` on the three non-`outcome` kinds.
|
|
349
|
+
*
|
|
350
|
+
* **⟶ AND THE LIST IT STANDS IN IS THE COMMIT'S, NOT THE ATTEMPT'S — 2026-10-28 (`D-53`).** **THE ARCHITECT,
|
|
351
|
+
* VERBATIM: *"If it's part of the same commit, then it uses the same message log. If it opens a new commit, it
|
|
352
|
+
* uses the new commit's message log. Constraints/Repairs should always use the same commit. Listeners should open
|
|
353
|
+
* a new commit, because the triggering commit already passed constraints"*** (`strata/decisions.md` · `D-53`).
|
|
354
|
+
* **SO ONE COMMIT'S WORK IS ONE LIST**: a write, the constraint passes that judged it, a repair's own write and
|
|
355
|
+
* the re-run after it all append to the same array, `seq` is *"the ordinal of the list it stands in"* and it runs
|
|
356
|
+
* `1..n` CONTINUOUSLY across those attempts, and **the `log` a refusal crosses with IS that array** — which is what
|
|
357
|
+
* `DEF-AK`'s *"one inner refusal, two hosts"* measures and what `D-52`'s merge question dissolved into. **A
|
|
358
|
+
* LISTENER'S WRITE IS THE ONE THAT STARTS A FRESH LIST**, because the commit that triggered it has already passed
|
|
359
|
+
* its constraints and what the listener does is a new question.
|
|
360
|
+
*
|
|
361
|
+
* **⟶ AND WHAT `seq` IS TRUE OF IS SAID PLAINLY HERE, 2026-10-28 — `DEF-AI`, MEASURED.** **`seq` is the position
|
|
362
|
+
* of the entry in the commit's own message log; it is not the store's journal ordinal, and the two differ by
|
|
363
|
+
* design.** The kernel mints it as `log.length + 1` on the one list its commit appends to
|
|
364
|
+
* (`bindings/js/src/entry/kernel-foundations.mjs`), so a refusal's entry can carry `seq` `1` while the store's
|
|
365
|
+
* own journal counter reads `41`. **READ THE TWO AS TWO ORDINALS WITH TWO HOMES**: `JournalOp.seq` is the
|
|
366
|
+
* STORE's append ordinal and orders the store's record; this `seq` orders the COMMIT's message log and nothing
|
|
367
|
+
* else. **A consumer that compares them compares two different subjects, and no reading of this declaration
|
|
368
|
+
* says the first equals the second.**
|
|
369
|
+
*
|
|
370
|
+
* **AND `state`'S DOMAIN IS `KC-1`…`KC-9`, NOT `KC-1`…`KC-8`.** **`D-53`'s THIRD RULING — *"Open the token
|
|
371
|
+
* set"* — gives the SAVE ARM a token of its own (`KC-9`)**, so that a `file`-tier save that fails at the terminal
|
|
372
|
+
* arm and a constraint that refuses a pass cross with DIFFERENT `status` values (`FileCommitFailed` and
|
|
373
|
+
* `ConstraintPassRefused`) **each derivable from the log's terminal state** — the contradiction `D-52` measured
|
|
374
|
+
* when `KC-8` crossed as both. **NO MEMBER OF THIS DECLARATION'S `StoreStatus` MOVES**: `KC-9` rides `state` and
|
|
375
|
+
* never `status`, exactly as every `KC` token does, so the closed status set keeps its `20` members and its ranks.
|
|
349
376
|
*/
|
|
350
377
|
export interface LogEntry {
|
|
351
378
|
readonly seq: number;
|
|
@@ -372,6 +399,14 @@ export interface LogEntry {
|
|
|
372
399
|
* failure's cause has no attempt at all** (item 4: the empty array, never an absent member and never a
|
|
373
400
|
* placeholder entry) — **while every failure whose attempt exists carries that attempt's own entries, taken
|
|
374
401
|
* BEFORE the attempt is disposed of** (item 10 (iii)).
|
|
402
|
+
*
|
|
403
|
+
* **⟶ AND FROM 2026-10-28 THOSE ENTRIES ARE THE COMMIT'S (`D-53`).** *"That attempt's own entries"* is read
|
|
404
|
+
* through **the one list the whole commit appends to**: an attempt holds a REFERENCE to its commit's log, so a
|
|
405
|
+
* failure crossing from ANY arm of that commit — a pass's refusal, a repair's, a `file`-tier save's at the
|
|
406
|
+
* terminal arm — carries the same array, and **a save failure's `log` is no longer `[]`**: `D-52`'s measured
|
|
407
|
+
* sentence (*"a save failure crosses as `FileCommitFailed` with `log: []`, and its verdict stands only in the
|
|
408
|
+
* attempt's log, which the crossed value does not carry"*) is the defect `D-53` closes, and the save arm's own
|
|
409
|
+
* `outcome` entry — carrying `KC-9` — is the entry that ends that list.
|
|
375
410
|
*/
|
|
376
411
|
export interface StoreRefusal {
|
|
377
412
|
readonly status: StoreStatus;
|
|
@@ -485,14 +520,49 @@ export interface DeleteRecord {
|
|
|
485
520
|
* journal entry, so there is no op to carry: **nothing is named because nothing was destroyed.**
|
|
486
521
|
*/
|
|
487
522
|
readonly op: JournalOp | null;
|
|
523
|
+
/**
|
|
524
|
+
* **⟶ ADDED 2026-10-29 — THE COMMIT RECORD THIS ACT MINTED, THE IDENTITY THE WHOLE COMMIT'S MACHINERY IS
|
|
525
|
+
* KEYED BY** (`D-55` item `3`; `kernel-surface.md §2.1` item `2`; `A112`).
|
|
526
|
+
*
|
|
527
|
+
* **IT IS THE SAME FOUR-MEMBER `CommitRecord` A WRITE'S `K-2` RETURNS** — `attempt` · `op` · `triggered` ·
|
|
528
|
+
* `pending` — minted by the delete's own commit act, held by the entry for adoption, and handed here on the
|
|
529
|
+
* receipt. **THE FOUR READINGS THAT FOLLOW FROM IT, EACH A MEASUREMENT THIS RELEASE PRINTED:**
|
|
530
|
+
* * **`pending` IS THE DELETE'S RESIDUE** — the store's returned set, WHOLE at the landing, minus the
|
|
531
|
+
* handles this delete's own pass checked off as it passed. **IT IS THE SET THE DELIVERY FIRES**: this
|
|
532
|
+
* act delivers `pending`, not the whole `triggered` list, exactly as a write does;
|
|
533
|
+
* * **A `file`-TIER DELETE SAVES ITS OWN OP** — the terminal arm names `op.opId` to the store's
|
|
534
|
+
* `commit_file` on the act's PASSING arm, so the bytes describe the state the delete left (`§2.11`
|
|
535
|
+
* clause 2, the same act a `file`-tier write gets). **THE STORE'S `delete` VERB STILL COMMITS NOTHING**
|
|
536
|
+
* (`DD-28`; `native contract.md §7.2` item 5): the save is the ARM's, at the record's own op, and a
|
|
537
|
+
* WHOLE-TARGET delete's op stands at no tier, so that arm serializes nothing;
|
|
538
|
+
* * **THE LOG AND THE REPORT ARE ANSWERABLE BY REF** — `K.log(store, record.attempt)` and
|
|
539
|
+
* `K.report(store, record.attempt)` answer the delete's own attempt after it passed, not only from a
|
|
540
|
+
* refusal's `log` (`attempt-lifecycle.md §2.4` item 1: those items take an `AttemptRef` or its `id`);
|
|
541
|
+
* * **AND IT CAN BE HANDED BACK** — a nested `write(address, tier, value, record)` names this commit at its
|
|
542
|
+
* fourth position and JOINS it (`D-46`), the same object `write`'s own position accepts.
|
|
543
|
+
*
|
|
544
|
+
* **`null` IS THE `D-3` ARM** — an act that removed nothing opens no attempt, so there is no record: the member
|
|
545
|
+
* is PRESENT and says so rather than being absent (`D-21`).
|
|
546
|
+
*
|
|
547
|
+
* **AND IT IS A NON-ENUMERABLE OWN `data` PROPERTY**, the device `discarded` below declares for the same
|
|
548
|
+
* reason: `Object.keys(receipt)` and every deep-equality over the receipt read the four enumerable members
|
|
549
|
+
* they read before, while a caller reads the record **by its name** (`receipt.commit`). A spread or
|
|
550
|
+
* `Object.assign` copy does not carry it — read the member off the receipt itself.
|
|
551
|
+
*/
|
|
552
|
+
readonly commit: CommitRecord | null;
|
|
488
553
|
/**
|
|
489
554
|
* **THE DISCARD'S WITNESS — THE REVERSALS THIS ACT'S OWN DELIVERY RAISED AND THE PACKAGE THREW AWAY**
|
|
490
555
|
* (`strata/decisions.md` · `D-49`, the architect, verbatim: *"Make discard observable"*; `DEF-AH`).
|
|
491
556
|
*
|
|
492
|
-
* **WHY THIS MEMBER EXISTS.** A `delete`'s listener delivery **
|
|
493
|
-
*
|
|
494
|
-
* consumer**, and the fail-state is honest only if the caller learns
|
|
495
|
-
* and both exits stand; `D-49` owes the witness and nothing else).
|
|
557
|
+
* **WHY THIS MEMBER EXISTS.** A `delete`'s listener delivery stands **after the pass's own drain** (`D-55`
|
|
558
|
+
* item `3` put the delivery after the judgement), so a `rollback` a listener body issues inside it raises a
|
|
559
|
+
* **restart request with no consumer left in this act**, and the fail-state is honest only if the caller learns
|
|
560
|
+
* it happened (`D-43` item 2's fail-state and both exits stand; `D-49` owes the witness and nothing else).
|
|
561
|
+
* **⟶ AND THE GROUND MOVED BY ONE FACT ON 2026-10-29, SAID PLAINLY:** this member's clause read *"a `delete`'s
|
|
562
|
+
* listener delivery runs no constraint pass — there is no attempt for one to run over"*, and from `D-55` item
|
|
563
|
+
* `3` the delete DOES run a pass. **WHAT IS UNMOVED IS THE READER'S FACT**: the delivery is outside that pass,
|
|
564
|
+
* its drain has already run, and a request raised here is still discarded — so the witness still has its
|
|
565
|
+
* subject and still reports it. **A listener at `window.tabs` fires for a
|
|
496
566
|
* delete at `window.tabs.landingPage`** — the triggered set's membership rule is the address prefix — **and the
|
|
497
567
|
* check it runs there is exactly the act the window discards**; this member is where that caller reads it.
|
|
498
568
|
*
|
|
@@ -918,8 +988,9 @@ export interface StoreInstance {
|
|
|
918
988
|
* **AND IT MOVES NO OTHER FIGURE**: the module namespace keeps its ONE name `storeCreate` (`§2.9` item 1's
|
|
919
989
|
* `A127` clause, `11 → 1` ✓), the kernel's extent stays FIVE with no `K-6` proposed (`§2.4` item 9 (f),
|
|
920
990
|
* item 8 — the pairs are read from the entry's OWN registry, which is keyed exactly as the kernel's is), the
|
|
921
|
-
* store's closed `17`-member set is not reached, the kernel's `KC` set stands closed at `8
|
|
922
|
-
*
|
|
991
|
+
* store's closed `17`-member set is not reached, the kernel's `KC` set stands closed at `8` (**⟶ MOVED `8 → 9`
|
|
992
|
+
* on 2026-10-28 by `D-53`'s third ruling — *"Open the token set"* — the appended member being the SAVE ARM's
|
|
993
|
+
* `KC-9`; see `LogEntry`'s clause above), and the register keeps its `8` rows.
|
|
923
994
|
*
|
|
924
995
|
* **It is NOT a named export of this entry** (`package.md §1.3` item 3): it is reached through
|
|
925
996
|
* `storeCreate`'s own product alone.
|
package/index.mjs
CHANGED
|
@@ -90,7 +90,7 @@ import { admittedConstraintBatch, constraintAddress, decodeBaseState, decodeJour
|
|
|
90
90
|
import { addressSpelling } from './src/entry/kernel-foundations.mjs';
|
|
91
91
|
import { FORGET_PAIR, INSTANCES, STORE_INDEX, STORE_RETIREMENT, TERMINAL_ARM, carryRefusal, closeCommit, crossTriggered, currentWindow, entryOf, homeAddressKey, installAttemptSeam, isStoreReceiver, openCommit, writeRefusal } from './src/entry/state.mjs';
|
|
92
92
|
import { commitPositionRefusal, constraintOverwrittenByListen, deliver, listenerStandingAt, registerOn, terminalArm } from './src/entry/delivery.mjs';
|
|
93
|
-
import { ARGUMENT_POSITION_FIRST, addressSetKey, carryConstraint, constraintDetached, constraintPairKey, constraintRefuse, constraintSite, constraintUncarried, constraintWrite, constraintsKernel, enumerateConstraints, judgeReversal, registrationCrossing, restoreHeldPair, reversalWatch, unionAddressSets, withEmptyLog, witnessDiscardedReversal, withdrawStanding } from './src/entry/constraints.mjs';
|
|
93
|
+
import { ARGUMENT_POSITION_FIRST, addressSetKey, carryConstraint, constraintDetached, constraintPairKey, constraintRefuse, constraintSite, constraintUncarried, constraintDelete, constraintWrite, constraintsKernel, enumerateConstraints, judgeReversal, registrationCrossing, restoreHeldPair, reversalWatch, unionAddressSets, withEmptyLog, witnessDiscardedReversal, withdrawStanding } from './src/entry/constraints.mjs';
|
|
94
94
|
const require_ = createRequire(import.meta.url);
|
|
95
95
|
const ADDON_PATH = join(dirOf(fileURLToPath(import.meta.url)), 'build', 'Release', 'storeroom_js_binding.node');
|
|
96
96
|
|
|
@@ -239,6 +239,14 @@ export function storeCreate(cfg) {
|
|
|
239
239
|
// a member of the product.
|
|
240
240
|
const state = {
|
|
241
241
|
home: [], registry: new Map(), constraints: new Map(), leg: null, receiver: null, establishing: null,
|
|
242
|
+
// **⟶ AND THE RESIDUE'S DELIVERER, ADDED 2026-10-29 — A PRIVATE FACT ABOUT WHICH ACT OWNS A LEG'S
|
|
243
|
+
// DELIVERY.** The terminal arm performs `surface.md §2.7` item 7's delivery for a kernel-driven WRITE
|
|
244
|
+
// (`delivery.mjs`'s `terminalArm`), and it is the delete's OWN member that performs it (`D-49` declared that
|
|
245
|
+
// delivery the window whose check never ran, and this build does not move it). **IT IS A VALUE OF THE
|
|
246
|
+
// PACKAGE'S OWN STATE AND NOT A MEMBER OF ANY RECORD** (`surface.md §2.1` (e) item 1: a record, a commit
|
|
247
|
+
// and a Map are never own members of the product): `'arm'` on every path that does not say otherwise, and
|
|
248
|
+
// `'member'` for the instant a `delete` stands in, restored in the same `finally` as the leg itself.
|
|
249
|
+
legDelivery: 'arm',
|
|
242
250
|
};
|
|
243
251
|
// **⟶ THE RECEIVER IS THE STORE OBJECT ITSELF, AND THE INTEGER THE PACKAGE USED TO HAND ACROSS IS NOT
|
|
244
252
|
// HANDED AT ALL** (`receiver-and-refusal.md §1`; `js-unwrap.md §4`). The addon resolves its store from the
|
|
@@ -410,7 +418,13 @@ export function storeCreate(cfg) {
|
|
|
410
418
|
// (`docs/specs/storeroom-js/surface.md §2.4` item 9's adoption-machinery clause; the three architect's rulings of that date), so the store's
|
|
411
419
|
// own refusal crosses back UNCHANGED AND UNCONVERTED and this frame adds nothing to it.
|
|
412
420
|
// **AND THE ONE DECLARED EXCEPTION IS TAKEN HERE** — the `writeCall` arm, moved not dropped.
|
|
413
|
-
|
|
421
|
+
// **⟶ AND THE COMMIT'S OWN LOG TRAVELS WITH IT — `D-53`, 2026-10-28.** The record at the method's FOURTH
|
|
422
|
+
// position is the commit's record when the kernel's own store leg made this call, and the kernel defines
|
|
423
|
+
// the commit's list on it under a symbol key; **so a store verb refusing this write tells the caller what
|
|
424
|
+
// the commit's log already carries** instead of the declared `[]`. A caller's own five-position write (or
|
|
425
|
+
// any record this package did not build) carries no such key and answers `undefined`, which is `fail`'s
|
|
426
|
+
// declared `[]` arm — unchanged on every one of those paths.
|
|
427
|
+
writeRefusal(refusal, fault, arguments.length >= 4 ? commit : undefined);
|
|
414
428
|
throw refusal;
|
|
415
429
|
}
|
|
416
430
|
const watched = [];
|
|
@@ -478,12 +492,33 @@ export function storeCreate(cfg) {
|
|
|
478
492
|
/// delete at `window.tabs.landingPage`, and the check it runs there is exactly the kind of act the
|
|
479
493
|
/// `delete`-delivery window throws away**).
|
|
480
494
|
///
|
|
481
|
-
///
|
|
482
|
-
///
|
|
483
|
-
///
|
|
484
|
-
///
|
|
485
|
-
/// the
|
|
486
|
-
///
|
|
495
|
+
/// **⟶ AND IT RUNS A PASS FROM 2026-10-29 — `D-55` ITEM 3, `DEF-X`. THE RULING, THE ARCHITECT, VERBATIM:
|
|
496
|
+
/// *"A delete is an editing verb and must pass constraints. This includes all of the relevant commit and
|
|
497
|
+
/// message logic."*** **THE BYTES THIS PARAGRAPH REPLACES READ *"`delete` IS THE ONE ACT WHOSE DELIVERY RUNS
|
|
498
|
+
/// NO PASS"*, AND THEY WERE TRUE OF `1.3.0` AND FALSE OF THIS TREE**: a delete opens its own commit, and
|
|
499
|
+
/// **the delete-shaped attempt `constraints.mjs`'s `constraintDelete` builds asks every pair standing at the
|
|
500
|
+
/// delete's own address **⟶ AND AT EVERY ANCESTOR OF IT, `D-56` (2026-10-28): THE PAIR'S ADDRESS BEING A PREFIX OF
|
|
501
|
+
/// THE ACT'S IS THE MEMBERSHIP TEST NOW, because the value read at a prefix CONTAINS its subtree and a change at a
|
|
502
|
+
/// descendant changes what that read returns** — against THE STATE THE DELETE LEFT**, appends the attempt's terminal entry to the
|
|
503
|
+
/// commit's one list, and — where a pair refuses — undoes the delete before it refuses (`D-55` item 5's safe
|
|
504
|
+
/// state). **NO PROBE WRITE IS LANDED TO HAVE SOMETHING TO JUDGE**: the thing judged is the delete's own
|
|
505
|
+
/// journal op, whose after-state is absence.
|
|
506
|
+
///
|
|
507
|
+
/// **AND THE DELIVERY MOVED WITH IT — IT NOW SITS AFTER THE PASS.** At `1.3.0` the `deliver` call stood
|
|
508
|
+
/// immediately after the addon's return, so a listener fired by a delete saw a state no constraint had
|
|
509
|
+
/// approved and that a refusal was about to undo. **A LISTENER FIRED BY A DELETE NOW SEES A JUDGED STATE**,
|
|
510
|
+
/// and a refused delete delivers nothing at all. **THE POSITION IS THE WRITE'S OWN** (`surface.md §2.7` item
|
|
511
|
+
/// 6: *"the surface runs the write's TRIGGERED CONSTRAINTS FIRST, and THE OTHER LISTENERS ARE REACHED ONLY
|
|
512
|
+
/// ONCE EVERY CONSTRAINT HAS PASSED"*), and the delivery still stands inside this act's commit window, so a
|
|
513
|
+
/// listener body's own verbs open their own commits (`D-46`).
|
|
514
|
+
///
|
|
515
|
+
/// **WHAT THE WITNESS STILL SPEAKS FOR, SAID NARROWLY.** The request a LISTENER BODY raises inside the
|
|
516
|
+
/// delivery — a `rollback`, stamped with this commit's identity by `reversalWatch` — is raised AFTER the
|
|
517
|
+
/// pass, so nothing in this act judges it: it is read at the end of the delivery and reported **BESIDE** the
|
|
518
|
+
/// record's four members, by the one rule `D-49` sets (`D-43` item 2's second window is a registration, whose
|
|
519
|
+
/// answer is an opaque identity and carries nothing). **A request a PAIR BODY raises INSIDE the pass is no
|
|
520
|
+
/// longer discarded**: it is consumed by the pass's own restart drain and judged at the state the delete
|
|
521
|
+
/// left (`D-42`; `D-54` (b)) — the third host `D-54` measured and named undeclared.
|
|
487
522
|
///
|
|
488
523
|
/// **THE MEMBER IS A NON-ENUMERABLE OWN `data` PROPERTY, AND THE CHOICE IS DECLARED.** It is **visible to the
|
|
489
524
|
/// caller by its name** (`record.discarded`) and declared in `index.d.ts`, while the record's **enumerable
|
|
@@ -494,9 +529,11 @@ export function storeCreate(cfg) {
|
|
|
494
529
|
/// but is not declarable as a member of `DeleteRecord`, and `D-49` asks for the member to be declared.
|
|
495
530
|
///
|
|
496
531
|
/// **THE VALUE IS `[]` WHERE NOTHING WAS DISCARDED AND ONE `{ opId, addresses }` ENTRY WHERE A REQUEST WAS**
|
|
497
|
-
/// — the id the reversal named (the store's own echo) and the addresses the
|
|
498
|
-
///
|
|
499
|
-
///
|
|
532
|
+
/// — the id the reversal named (the store's own echo) and **the addresses the refused act MOVED**, measured
|
|
533
|
+
/// at the reversal's own instant (`constraints.mjs`'s `movedStanding`), not the whole watched registry:
|
|
534
|
+
/// **a witness names what moved, because what did not move was not the act's** (`DEF-AM`, 2026-10-28).
|
|
535
|
+
/// **THE WITNESS RUNS NO PASS OF ITS OWN, INVOKES NO BODY AND TAKES NO JUDGEMENT**: the request is consumed
|
|
536
|
+
/// (reported) and its effect still stands.
|
|
500
537
|
delete(address, tier) {
|
|
501
538
|
// **⟶ `§4.1`: `delete` OPENS ONE.**
|
|
502
539
|
const opened = openCommit(instance);
|
|
@@ -508,29 +545,78 @@ export function storeCreate(cfg) {
|
|
|
508
545
|
// `delete`'s tier is read as a VALUE and not by an arity fold: an ABSENT position is the whole-target
|
|
509
546
|
// removal, and a supplied `undefined` answers row 4's `AddressMalformed` (`crossing.md §1.3`).
|
|
510
547
|
appendOwn(args, encodeTier(tier, arguments.length >= 2, false, 'first argument'));
|
|
511
|
-
// THE
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
//
|
|
520
|
-
|
|
521
|
-
//
|
|
522
|
-
//
|
|
523
|
-
//
|
|
524
|
-
//
|
|
525
|
-
//
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
548
|
+
// **THE STORE'S OWN LEG, THE DELETE-SHAPED ATTEMPT AND THE PASS, IN ONE CALL** (`constraints.mjs`'s
|
|
549
|
+
// `constraintDelete`): the attempt is opened with this commit's list in hand and the address held, the
|
|
550
|
+
// thunk below is INVOKED AS ITS STORE LEG — the addon's own `delete`, crossed exactly as it always was —
|
|
551
|
+
// and the pass that follows asks every pair standing at THE DELETE'S OWN ADDRESS against the state the
|
|
552
|
+
// delete left. **NO PROBE WRITE PRECEDES THE JUDGEMENT** (`K-2`'s store leg is a `write` and this act's
|
|
553
|
+
// is not). **A REFUSAL LEAVES BY THROW, FROM INSIDE THAT CALL**, with the store already back at the
|
|
554
|
+
// state this commit opened at (`D-55` item 5) — so nothing below is reached and nothing is delivered.
|
|
555
|
+
let answer;
|
|
556
|
+
// **⟶ THE ADOPTION, 2026-10-29 — `K-2`'S OWN SEMANTICS REACHED BY THE DELETE'S OWN ROUTE.** A write's
|
|
557
|
+
// record reaches the entry at `write`'s FOURTH POSITION and that member stands it in `state.leg`, the
|
|
558
|
+
// slot the TERMINAL ARM reads for the triggering address and for the `file`-tier save's own op. **A
|
|
559
|
+
// delete's arity is the declared `delete(address, tier)`, so it has no such position** — the adoption is
|
|
560
|
+
// therefore taken HERE, at the instant the store's own verb returned and BEFORE the pass, which is the
|
|
561
|
+
// same instant and the same slot: the delete's own returned receipt stands where a write's record
|
|
562
|
+
// stands, so the terminal arm saves the DELETE's op and delivers at the DELETE's address.
|
|
563
|
+
// **AND THE ENTRY'S OWN LEG IS PUT BACK, BESIDE `closeCommit` AND IN THE SAME `finally`**: a leg left
|
|
564
|
+
// standing would be read by an ENCLOSING write's terminal arm (`state.leg` is one slot and a nested act
|
|
565
|
+
// is reached from a body — `D-53`), and the delete's record must not become the enclosing commit's.
|
|
566
|
+
const standing = state.leg;
|
|
567
|
+
const standingDelivery = state.legDelivery;
|
|
568
|
+
// THE LEG'S DELIVERY IS THIS MEMBER'S FOR THE DURATION (`D-49`'s window, unmoved): the arm saves the
|
|
569
|
+
// delete's op and delivers nothing, so the residue reaches each listener ONCE — from `deliver` below.
|
|
570
|
+
state.legDelivery = 'member';
|
|
571
|
+
try {
|
|
572
|
+
const receipt = constraintDelete(instance, address, arguments.length >= 2 ? tier : undefined, () => {
|
|
573
|
+
// THE ENTRY IS INVOKED BY `Reflect.apply`, NOT BY A SPREAD — see `read`'s clause of 2026-10-24 above.
|
|
574
|
+
answer = carryRefusal(() => Reflect.apply(entryOf().delete, this, args), args);
|
|
575
|
+
const crossed = {
|
|
576
|
+
address: decodeSegments(answer.address),
|
|
577
|
+
tiers: answer.tiers,
|
|
578
|
+
triggered: crossTriggered(state, answer.triggered),
|
|
579
|
+
op: answer.op === null ? null : decodeJournalOp(answer.op),
|
|
580
|
+
};
|
|
581
|
+
// THE ADOPTION ITSELF — one assignment, at the verb's own return.
|
|
582
|
+
state.leg = crossed;
|
|
583
|
+
return crossed;
|
|
584
|
+
});
|
|
585
|
+
// **⟶ AND THE DELIVERY NOW READS THE RECORD'S `pending` RESIDUE, 2026-10-29 — THE FOURTH MEMBER'S
|
|
586
|
+
// OWN ACT, `K-2`'s SEMANTICS REACHED BY THE DELETE'S OWN INSTANT.** The delivery's position is
|
|
587
|
+
// UNMOVED (`D-55` item `3` put it after the pass, and `D-49` declares this delivery the window whose
|
|
588
|
+
// check never ran — a request raised here is the witness's, not the drain's, and this build changes
|
|
589
|
+
// neither). **WHAT MOVES IS WHAT IT DELIVERS**: before the record existed this call handed the
|
|
590
|
+
// store's WHOLE returned set, and it now hands `record.pending` — that set MINUS the handles this
|
|
591
|
+
// delete's own pass checked off as it passed (`releasePending`), which is the write's own delivered
|
|
592
|
+
// set (`surface.md §2.7` item 7 (a)). **A `D-3` DELETE HAS NO RECORD**, so it falls back to the
|
|
593
|
+
// receipt's own `triggered` — the arm's set, empty by the store's own declaration.
|
|
594
|
+
const owed = receipt.commit === null || receipt.commit === undefined
|
|
595
|
+
? receipt.triggered
|
|
596
|
+
: receipt.commit.pending;
|
|
597
|
+
// **THE RULE IS THE WRITE'S OWN** (`surface.md §2.7` item 6): constraints first, then the other
|
|
598
|
+
// listeners. `A43`: a delete FIRES its own triggered set, on the same window as a write.
|
|
599
|
+
deliver(state, owed, answer.triggeringAddress);
|
|
600
|
+
// **⟶ `D-49`: THE WITNESS, READ AFTER THE DELIVERY AND REPORTED BESIDE THE RECORD** — the delivery is
|
|
601
|
+
// the act's remaining body-invoking instant, so a request standing after it is one this window raised
|
|
602
|
+
// from a LISTENER BODY. **A REQUEST A PAIR BODY RAISES INSIDE THE PASS IS NOT THIS WITNESS'S**: it is
|
|
603
|
+
// consumed and judged by the pass's own restart drain (`D-42`; `D-54` (b)), and by the time this line
|
|
604
|
+
// runs it has either passed or refused the delete outright.
|
|
605
|
+
// **ONLY A DELETE THAT OPENED ITS OWN WINDOW REPORTS**: a call that joined an enclosing commit has no
|
|
606
|
+
// window of its own to witness, and any request under that identity belongs to the act that opened it
|
|
607
|
+
// (`witnessDiscardedReversal` clears a request of the window handed in and of no other).
|
|
608
|
+
const discarded = opened === true ? witnessDiscardedReversal(instance, window) : null;
|
|
609
|
+
Object.defineProperty(receipt, 'discarded', {
|
|
610
|
+
value: discarded === null ? [] : [discarded],
|
|
611
|
+
enumerable: false,
|
|
612
|
+
writable: false,
|
|
613
|
+
configurable: true,
|
|
614
|
+
});
|
|
615
|
+
return receipt;
|
|
616
|
+
} finally {
|
|
617
|
+
state.leg = standing;
|
|
618
|
+
state.legDelivery = standingDelivery;
|
|
619
|
+
}
|
|
534
620
|
} finally {
|
|
535
621
|
closeCommit(instance, opened);
|
|
536
622
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "provident-storeroom",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "U-STOREROOM-PUBLISH: the published Node ESM binding for the native Rust store of Provident-Storeroom — the entry resolves the scoped per-target platform package first, the checkout's own module-relative addon second, and answers the store's single declared absent-addon form when neither loads",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0",
|
|
@@ -35,16 +35,17 @@
|
|
|
35
35
|
"index.mjs",
|
|
36
36
|
"README.md",
|
|
37
37
|
"README.guide.md",
|
|
38
|
+
"RELEASE-NOTES.md",
|
|
38
39
|
"index.d.ts",
|
|
39
40
|
"src/entry/",
|
|
40
41
|
"src/constraint-kernel.mjs"
|
|
41
42
|
],
|
|
42
43
|
"optionalDependencies": {
|
|
43
|
-
"@auspicion/provident-storeroom-js-linux-x64-gnu": "1.
|
|
44
|
-
"@auspicion/provident-storeroom-js-linux-arm64-gnu": "1.
|
|
45
|
-
"@auspicion/provident-storeroom-js-darwin-x64": "1.
|
|
46
|
-
"@auspicion/provident-storeroom-js-darwin-arm64": "1.
|
|
47
|
-
"@auspicion/provident-storeroom-js-win32-x64-msvc": "1.
|
|
44
|
+
"@auspicion/provident-storeroom-js-linux-x64-gnu": "1.4.0",
|
|
45
|
+
"@auspicion/provident-storeroom-js-linux-arm64-gnu": "1.4.0",
|
|
46
|
+
"@auspicion/provident-storeroom-js-darwin-x64": "1.4.0",
|
|
47
|
+
"@auspicion/provident-storeroom-js-darwin-arm64": "1.4.0",
|
|
48
|
+
"@auspicion/provident-storeroom-js-win32-x64-msvc": "1.4.0"
|
|
48
49
|
},
|
|
49
50
|
"publishConfig": {
|
|
50
51
|
"access": "public"
|