provident-storeroom 1.7.0 → 1.9.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 +51 -1
- package/README.md +1 -1
- package/RELEASE-NOTES.md +118 -1
- package/index.d.ts +261 -2
- package/index.mjs +22 -1
- package/package.json +6 -6
- package/src/entry/kernel-attempt.mjs +345 -33
- package/src/entry/kernel-commit.mjs +28 -0
- package/src/entry/kernel-foundations.mjs +30 -45
- package/src/entry/kernel-terminal.mjs +14 -1
- package/src/entry/state.mjs +164 -0
package/index.d.ts
CHANGED
|
@@ -108,6 +108,18 @@
|
|
|
108
108
|
// UNIT** (`kernel-surface.md §1` item 4's closed record enumeration; its `§2.1` item 2 for the record's
|
|
109
109
|
// four members; `attempt-lifecycle.md §2.4` item 1 for the one-member `AttemptRef`) — so the record position
|
|
110
110
|
// carries its own `pending` member and this file MINTS NO RECORD TYPE OF ITS OWN to carry it.
|
|
111
|
+
// **⟶ RE-DERIVED BY NAME, 2026-11-01 — THE SENTENCE ABOVE IS SUPERSEDED IN FACT AND STANDS AS THE READING OF ITS
|
|
112
|
+
// OWN DATE, READ THROUGH THIS CLAUSE** (`RCA-8(g)` ANNOTATE-BESIDE; `strata/decisions.md` · `D-101`, whose
|
|
113
|
+
// `⟶ ANSWERED` clause is the architect's word of that date, verbatim: *"Widen the position to its class test"*).
|
|
114
|
+
// **THE COMMIT POSITION'S DECLARED TYPE IS `CommitCarrier` — THE CLASS TEST'S OWN CLASS, ONE member, `pending`,
|
|
115
|
+
// spelled exactly as `CommitRecord.pending` spells it — declared and exported at this file's end, and `write`'s
|
|
116
|
+
// fourth position names it** (`bindings/js/src/entry/delivery.mjs:27`-`:54`, the predicate at `:39`; the position's
|
|
117
|
+
// own docblock already wrote the class test, and the type now agrees with it). **SO THE PASS DOES MINT ONE RECORD
|
|
118
|
+
// TYPE, AND THE SENTENCE'S *"this file MINTS NO RECORD TYPE OF ITS OWN to carry it"* IS WITHDRAWN BY NAME —
|
|
119
|
+
// withdrawn as a READING, while its bytes stand above byte-for-byte.** **`CommitRecord` KEEPS EVERY BYTE, ITS FOUR
|
|
120
|
+
// MEMBERS AND ITS EXPORT**: what it loses is being the position's SOLE declared type — it is ONE CARRIER of the
|
|
121
|
+
// class and never the position's only type — **and a `pending`-shaped name now stands in a file that said it
|
|
122
|
+
// minted none.**
|
|
111
123
|
// **`AttemptRef` and `CommitRecord` are therefore not STORE types either, and not store records**: they
|
|
112
124
|
// are kernel-side shapes, cited from their own unit's declaration.
|
|
113
125
|
// **⟶ AND THE POSITION THEY ARE CITED FOR MOVED WITH `settle`'s REMOVAL, 2026-10-18**: `settle`'s own
|
|
@@ -752,6 +764,15 @@ export interface AttemptRef {
|
|
|
752
764
|
* a record with exactly FOUR members, the FOURTH added at the `A108` landing pass of 2026-10-13"*; its
|
|
753
765
|
* `§1` item 4 counts it among the kernel's own named shapes).
|
|
754
766
|
*
|
|
767
|
+
* **⟶ RE-DERIVED BY NAME, 2026-11-01 — THE HEAD ABOVE IS THE READING OF ITS OWN DATE AND IS READ THROUGH THIS
|
|
768
|
+
* CLAUSE** (`RCA-8(g)` ANNOTATE-BESIDE; `strata/decisions.md` · `D-101`, verbatim: *"Widen the position to its
|
|
769
|
+
* class test"*). **THE POSITION IS NOW THE CLASS TEST'S OWN CLASS, `CommitCarrier`** — a non-null, non-Proxy,
|
|
770
|
+
* non-array object carrying an OWN `pending` member present and not `undefined`
|
|
771
|
+
* (`bindings/js/src/entry/delivery.mjs:27`-`:54`, the predicate at `:39`) — one member, spelled exactly as this
|
|
772
|
+
* record's own `pending` is spelled below, declared and exported at this file's end. **SO THIS RECORD IS ONE
|
|
773
|
+
* CARRIER OF THE POSITION'S CLASS AND NOT THE POSITION'S ONLY TYPE**: it keeps every byte, its four members, its
|
|
774
|
+
* export and its own clauses below, and what it no longer is, is the position's sole declared type.
|
|
775
|
+
*
|
|
755
776
|
* **THE RECORD THE KERNEL PASSES IS THIS ONE AND THE STORE'S IS NOT.** **The kernel passes the `CommitRecord`
|
|
756
777
|
* `commit` built and the pass's terminal arm reads again — one identity, at both instants** (`surface.md`
|
|
757
778
|
* `§2.4` item 9 (a)–(b)'s table: *"the record identity (the `CommitRecord` `commit` is building)"* then
|
|
@@ -789,6 +810,19 @@ export interface CommitRecord {
|
|
|
789
810
|
* **ITS ELEMENT TYPE IS TOTAL — NO BARE HANDLE STANDS IN IT** (`contract.md §2.5` item 2): the bare-handle
|
|
790
811
|
* union the check-off and the discard once carried has no subject under POP, because the checked-off entry
|
|
791
812
|
* is REMOVED rather than carried beside.
|
|
813
|
+
*
|
|
814
|
+
* **⟶ RE-DERIVED 2026-11-01 — `D-104`: THE SEED ABOVE IS NOT THE MEMBER'S WHOLE POPULATION ON A REPAIRED
|
|
815
|
+
* WRITE, AND NO TYPE, MEMBER OR ARITY MOVES WITH THIS CLAUSE** (`docs/L1/repair-listener-delivery.md` §4, §8;
|
|
816
|
+
* `strata/decisions.md` · `D-104` item `2`, whose item `4` fixes *"no status, no member, no arity, no type may
|
|
817
|
+
* move"*). The clause above stands BYTE-FOR-BYTE and is read THROUGH this one: `pending` is still seeded as a
|
|
818
|
+
* clone of `triggered` and still holds *"the whole returned set of triggered constraints"* **as its seed**, and
|
|
819
|
+
* from this date **A REPAIR'S WRITE'S TRIGGERED LISTENERS ARE MERGED INTO IT** — in the commit's one delivery,
|
|
820
|
+
* after the pass, one invocation per distinct handle — so **an entry may also be a listener a REPAIR's edit
|
|
821
|
+
* fired and the commit's own write never returned**. **`triggered` is unmoved**: it stays the store's own
|
|
822
|
+
* returned set for the commit's write, VERBATIM, so `pending` is no longer a subset of it on a repaired write.
|
|
823
|
+
* **THE ELEMENT SHAPE IS THE ONE ABOVE, UNCHANGED** (`{ handle, address }` — `contract.md §2.5` item 2's
|
|
824
|
+
* totality stands), and **a pair is never merged**: a carried pair's handle stays out of the member exactly as
|
|
825
|
+
* it is never delivered (`D-69`).
|
|
792
826
|
*/
|
|
793
827
|
readonly pending: readonly TriggerPair[];
|
|
794
828
|
}
|
|
@@ -880,7 +914,7 @@ export interface StoreInstance {
|
|
|
880
914
|
* **AND A SUPPLIED `undefined` AT THE `tier` POSITION IS PRESENT HERE TOO** (`parameter-semantics.md
|
|
881
915
|
* §2.6`; `PAR-JS-6`): it is not the absent tier and the store answers `AddressMalformed` for it.
|
|
882
916
|
*/
|
|
883
|
-
write(address: Address, tier: Tier, value: unknown, commit?:
|
|
917
|
+
write(address: Address, tier: Tier, value: unknown, commit?: CommitCarrier): WriteRecord;
|
|
884
918
|
/**
|
|
885
919
|
* Remove the versions the address names, and answer the operation's record.
|
|
886
920
|
*
|
|
@@ -1249,6 +1283,12 @@ export interface ConstraintPair {
|
|
|
1249
1283
|
* WRITE'S OWN EVALUATION a `message` that is not a NON-EMPTY STRING keeps the repair readable while the
|
|
1250
1284
|
* refusal answers the kernel's own unrecognized sentence** (the closed set, its order and this read stand at
|
|
1251
1285
|
* `bindings/js/src/entry/kernel-attempt.mjs:686-699`).
|
|
1286
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE NO LONGER RESOLVES TO ITS SUBJECTS AND IS READ
|
|
1287
|
+
* THROUGH THIS MARK.** **`bindings/js/src/entry/kernel-attempt.mjs:686-699` stands today as the body-throw arm's
|
|
1288
|
+
* terminal entry and its mark — `:687`-`:698` — and the two subjects this sentence cites it FOR stand at
|
|
1289
|
+
* `:705`-`:727` (the closed three-arm read) and `:718`-`:724` (the own-member read of `message` and `repair`).**
|
|
1290
|
+
* **The citation's bytes stand and are unmoved; its RANGE is the reading of the date it was written at, and
|
|
1291
|
+
* `D-90` · `D-91` · `D-94` are the landings that moved it** (`docs/L1/repair-outcome-types.md` §7.2 row `1`).
|
|
1252
1292
|
*
|
|
1253
1293
|
* **THE ATTACH: the `repair` your function returns IS A FUNCTION TAKING ONE ARGUMENT — ITS OWN RECORD,
|
|
1254
1294
|
* WHICH IS NOT YOUR CONSTRAINT'S AND IS NOT INTERCHANGEABLE WITH IT.** **The two records stand apart at
|
|
@@ -1257,6 +1297,18 @@ export interface ConstraintPair {
|
|
|
1257
1297
|
* (`bindings/js/src/entry/kernel-attempt.mjs:607-613`, `:756-782`; the kernel's own words at
|
|
1258
1298
|
* `bindings/js/src/entry/kernel-registration.mjs:373-374`). **No member census of either record is
|
|
1259
1299
|
* printed here.**
|
|
1300
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE — `bindings/js/src/entry/kernel-attempt.mjs:607-613`,
|
|
1301
|
+
* cited for the CONSTRAINT's record — stands today on the pair-application guard's clause (`:631`), and the
|
|
1302
|
+
* constraint's record build stands at `:635`-`:641`.** **The citation's bytes stand and are read through this
|
|
1303
|
+
* mark** (§7.2 row `5`).
|
|
1304
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE — `bindings/js/src/entry/kernel-attempt.mjs:756-782`,
|
|
1305
|
+
* cited for the REPAIR's record — stands today on the repeat arms' returns, and the repair's record build stands
|
|
1306
|
+
* at `:784`-`:810`.** **The citation's bytes stand and are read through this mark** (§7.2 row `6`).
|
|
1307
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE —
|
|
1308
|
+
* `bindings/js/src/entry/kernel-registration.mjs:373-374`, cited as *"the kernel's own words"* on the two records
|
|
1309
|
+
* — stands today on the `{message}` sentence of the registration instant's outcome read, and the kernel's own
|
|
1310
|
+
* statement of the two records stands at `:420`-`:424`.** **The citation's bytes stand and are read through this
|
|
1311
|
+
* mark** (§7.2 row `4`).
|
|
1260
1312
|
*
|
|
1261
1313
|
* **AT THE WRITE'S OWN EVALUATION — AT THAT INSTANT AND NO OTHER — THE KERNEL READS `message` AND
|
|
1262
1314
|
* `repair` AS OWN MEMBERS OF THE OBJECT YOUR FUNCTION RETURNED: a pair carried on a prototype is NOT SEEN
|
|
@@ -1268,6 +1320,14 @@ export interface ConstraintPair {
|
|
|
1268
1320
|
* at registration and no repair at a write — and that divergence is OWED to a code-bearing unit and is
|
|
1269
1321
|
* CONTRADICTED BY NO SENTENCE HERE** (`strata/decisions.md` · `D-35`, whose parameter-access rule the
|
|
1270
1322
|
* registration read does not yet hold).
|
|
1323
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE — `bindings/js/src/entry/kernel-attempt.mjs:690-696`
|
|
1324
|
+
* — stands today INSIDE the same body-throw arm's mark clause (`:691`-`:698`), and the rule it is cited for — the
|
|
1325
|
+
* own-member read of `message` and `repair` — stands at `:718`-`:724`.** **The citation's bytes stand and are read
|
|
1326
|
+
* through this mark** (§7.2 row `2`).
|
|
1327
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE —
|
|
1328
|
+
* `bindings/js/src/entry/kernel-registration.mjs:330-332` — stands today on the skip-is-not-a-refusal clause, and
|
|
1329
|
+
* the registration instant's outcome read — the one that reads the same closed outcome through the prototype
|
|
1330
|
+
* chain — stands at `:377`-`:380`.** **The citation's bytes stand and are read through this mark** (§7.2 row `3`).
|
|
1271
1331
|
*
|
|
1272
1332
|
* **THE REPAIR'S OWN RETURN IS A CLOSED TWO-ARM SET: `{ ok: true, op }` — the repairable arm, `op`
|
|
1273
1333
|
* REQUIRED and BEING THE OPERATION RECORD THE STORE'S OWN VERB RETURNED (`WriteRecord.op`, or
|
|
@@ -1284,20 +1344,48 @@ export interface ConstraintPair {
|
|
|
1284
1344
|
* `bindings/js/src/entry/kernel-foundations.mjs:1105-1131` — **and NO ORDINAL GROUND IS CLAIMED AT THE
|
|
1285
1345
|
* REGISTRATION INSTANT, whose credit check runs with no invoked-for op**
|
|
1286
1346
|
* (`bindings/js/src/entry/kernel-registration.mjs:510-517`).
|
|
1347
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE — `bindings/js/src/entry/kernel-registration.mjs:510-517`
|
|
1348
|
+
* — stands today on the synthetic attempt's nine-member docblock, and the credit call this sentence is about — the
|
|
1349
|
+
* one that runs with NO invoked-for op — stands at `:615`-`:616`.** **The citation's bytes stand and are read
|
|
1350
|
+
* through this mark** (`docs/L1/repair-outcome-types.md` §7.2 row `7`).
|
|
1287
1351
|
*
|
|
1288
1352
|
* **AND THE COMMIT YOUR REPAIR IS PART OF RIDES THAT ONE ARGUMENT: supply it at `write`'s DECLARED FOURTH
|
|
1289
1353
|
* POSITION and the write your repair makes JOINS the commit it is part of**
|
|
1290
1354
|
* (`bindings/js/index.d.ts:862`) — **the record the repair is handed carries that commit at its `pending`
|
|
1291
1355
|
* member, the `CommitRecord.pending` this file declares at `bindings/js/index.d.ts:772`, POINTED AT here
|
|
1292
1356
|
* and re-declared nowhere.** **That position's own class test is not restated.**
|
|
1357
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE PRINTS THIS FILE'S `:772`, WHICH WAS THE LINE AT THE
|
|
1358
|
+
* DATE IT WAS WRITTEN AND IS NOW MOVED TWICE OVER.** **At this date's bytes the `CommitRecord` docblock's `op`
|
|
1359
|
+
* sentence — the line `:772` stood on — stands at `:793`, and the `pending` member that sentence names is declared
|
|
1360
|
+
* at `:814` (`readonly pending: readonly TriggerPair[]`).** **THE TWO MOVES ARE DISTINCT AND NEITHER REWRITES THE
|
|
1361
|
+
* CITATION: the first is that block's own growth, which is why the figure was stale before this pass; the second is
|
|
1362
|
+
* THIS DATE'S MARKS — the head's and this record's block's — which stand above both lines.** **The citation's bytes
|
|
1363
|
+
* stand and are read through this mark; the typing pass's six names sit BELOW this block and moved no line above it
|
|
1364
|
+
* (`1,308 → 1,466` is that pass's own count), and the eight marks of this date are the only bytes this docs pass
|
|
1365
|
+
* adds inside the block** (§7.2 row `8`).
|
|
1366
|
+
* **AND THE SAME PARAGRAPH'S OTHER SELF-CITATION — `bindings/js/index.d.ts:862`, which is NOT one of §7.2's eight
|
|
1367
|
+
* rows and is therefore not one of this date's subjects — is moved by these marks nevertheless: the admitted forms
|
|
1368
|
+
* and the class test of that position stand at `:883`, and the position's own signature — with `commit?` typed as
|
|
1369
|
+
* `CommitCarrier` — at `:904`.**
|
|
1293
1370
|
*
|
|
1294
1371
|
* **AND NOTHING HERE MINTS A TYPE, A SYMBOL, AN ALIAS, A SEAM, A RECORD MEMBER OR AN EXPORT**: this clause
|
|
1295
1372
|
* DOCUMENTS the pair your function returns and a two-arm result the kernel already reads, and DECLARES
|
|
1296
1373
|
* nothing — `Constraint` below is unmoved, one `unknown` in and one `unknown` out. **Nor does it name an
|
|
1297
1374
|
* archived part as the place its rule is to be read: the rule IS the sentences above, and every point they
|
|
1298
1375
|
* cite is a live print of the kept contract or a live source range on this branch.**
|
|
1376
|
+
*
|
|
1377
|
+
* **⟶ RE-DERIVED BY NAME, 2026-11-01: THE SENTENCE ABOVE NO LONGER GOVERNS, AND IT IS NOT DELETED — IT IS READ THROUGH THIS
|
|
1378
|
+
* CLAUSE AS THE READING OF ITS OWN DATE.** The architect has approved minting the types that sentence declined, so what stands
|
|
1379
|
+
* now is: **FIVE NAMES ARE DECLARED BELOW THIS LINE — `AttemptContext` · `RepairContext` · `RegistrationRepairContext` ·
|
|
1380
|
+
* `ConstraintOutcome` · `RepairOutcome` — and `Constraint` below is TYPED rather than unmoved.** **EVERY MEMBER THEY CARRY IS ONE
|
|
1381
|
+
* THE KERNEL ALREADY BUILDS, AND NOTHING IS MINTED BUT THE NAMES**: no member, no symbol, no seam, no export, no route and no
|
|
1382
|
+
* arity moves, the module namespace keeps its ONE value name, and the closed sets these names carry are the ones this clause
|
|
1383
|
+
* already declares. **AND THE CENSUS SENTENCE ABOVE — *"No member census of either record is printed here"* — IS TRUE OF THIS
|
|
1384
|
+
* CLAUSE AND IS READ THROUGH THIS ONE: the census is DECLARED at the aliases below, in the only place a consumer's compiler can
|
|
1385
|
+
* hold it, and this clause still prints none.** **NO BEHAVIOUR BYTE MOVES: the aliases are erased at run time and the kernel
|
|
1386
|
+
* reads the same values it read on 2026-10-30.**
|
|
1299
1387
|
*/
|
|
1300
|
-
export type Constraint = (context:
|
|
1388
|
+
export type Constraint = (context: AttemptContext) => ConstraintOutcome;
|
|
1301
1389
|
|
|
1302
1390
|
/**
|
|
1303
1391
|
* **THE CONSTRAINT IDENTITY — `parameter-semantics.md §2.25` (`PAR-JS-25`)**: ONE OPAQUE VALUE THE PACKAGE
|
|
@@ -1306,3 +1394,174 @@ export type Constraint = (context: unknown) => unknown;
|
|
|
1306
1394
|
* accessor reaches a member of it, and a consumer compares identities and never contents.**
|
|
1307
1395
|
*/
|
|
1308
1396
|
export type ConstraintIdentity = object;
|
|
1397
|
+
|
|
1398
|
+
/**
|
|
1399
|
+
* **THE ATTEMPT'S OWN CONTEXT — THE ONE ARGUMENT A CONSTRAINT BODY IS INVOKED WITH** (`PAR-C-16`; the record this
|
|
1400
|
+
* file's `Constraint` docblock calls *"the attempt's own context"*), declared at
|
|
1401
|
+
* `docs/L1/repair-outcome-types.md` §1.1 of 2026-11-01. **THE NAME IS THE TREE'S OWN**: the kernel calls this
|
|
1402
|
+
* record `AttemptContext` (`bindings/js/src/entry/kernel-registration.mjs:421`, `:428`;
|
|
1403
|
+
* `kernel-attempt.mjs:483`) and so does this file at `:450`.
|
|
1404
|
+
*
|
|
1405
|
+
* **FIVE MEMBERS AND NO SIXTH: `address` · `attempt` · `op` · `tier` · `value`, and no other.** **THIS RECORD GAINS
|
|
1406
|
+
* NOTHING AT ANY INSTANT** — no `id`, no `pending` and no `write` (`strata/decisions.md` · `D-92` (1)) — **and its
|
|
1407
|
+
* census is printed HERE, because this is the only place a consumer's compiler can hold it** (the `Constraint`
|
|
1408
|
+
* docblock above prints none, and says so).
|
|
1409
|
+
*
|
|
1410
|
+
* **ONE MEMBER SET ACROSS THE THREE SITES THAT BUILD IT, AND THE SITE — NOT THE INSTANT — DECIDES THE VALUE.**
|
|
1411
|
+
* Built at the write's own evaluation (`kernel-attempt.mjs:635`-`:641`), at a registration's FIRST ask
|
|
1412
|
+
* (`kernel-registration.mjs:392`-`:403`) and at a registration's RE-RUN (`:728`-`:734`); only three members' VALUES
|
|
1413
|
+
* move, and the nullable arms are the FIRST ask's — `attempt`, `op` and `tier` are the LANDING's at the other two.
|
|
1414
|
+
* **SO A CONSUMER NARROWS `op` BEFORE READING IT**: at a landing and at a re-run `op` is never `null`, and that
|
|
1415
|
+
* narrowing is the declared price of one member set, printed rather than discovered (§1.1; §2's alternative `D`).
|
|
1416
|
+
*/
|
|
1417
|
+
export interface AttemptContext {
|
|
1418
|
+
readonly address: Address;
|
|
1419
|
+
readonly attempt: AttemptRef | null;
|
|
1420
|
+
readonly op: JournalOp | null;
|
|
1421
|
+
readonly tier: Tier | null;
|
|
1422
|
+
readonly value: unknown;
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1425
|
+
/**
|
|
1426
|
+
* **THE REPAIR'S OWN RECORD — THE SIX-MEMBER `RepairContext`, THE ONE ARGUMENT THE KERNEL INVOKES A REPAIR WITH**,
|
|
1427
|
+
* built at the write's own evaluation (`bindings/js/src/entry/kernel-attempt.mjs:784`-`:810`) and declared at
|
|
1428
|
+
* `docs/L1/repair-outcome-types.md` §1.2 of 2026-11-01. **THE NAME IS THE KERNEL'S OWN** — *"the six-member
|
|
1429
|
+
* `RepairContext`"* (`kernel-registration.mjs:416`, `:421`) — and this alias IS that shape.
|
|
1430
|
+
*
|
|
1431
|
+
* **SIX MEMBERS: `address` · `id` · `op` · `tier` · `value` · `pending`. THE TWO RECORDS STAND APART AT THREE
|
|
1432
|
+
* PLACES** (the `Constraint` docblock above; `docs/guides/package-use.md §7.6`): **by COUNT, SIX against
|
|
1433
|
+
* `AttemptContext`'s FIVE; by `id`, which this record carries where the constraint's carries `attempt`; and by
|
|
1434
|
+
* `pending`, which rides this record ALONE.**
|
|
1435
|
+
*
|
|
1436
|
+
* **`op`'s `| null` ARM IS THE REGISTRATION'S, DECLARED ONCE BECAUSE THE SHAPE IS ONE SHAPE**: at this instant `op`
|
|
1437
|
+
* is the op the evaluation carried and is never `null`. **`pending` IS A FRESH LIST AND NEVER THE RECORD'S OWN
|
|
1438
|
+
* MEMBER** (`kernel-attempt.mjs:806`-`:809`); **`id`'s NON-EMPTINESS IS `PAR-JS-24`'s PROSE RULE and no type carries
|
|
1439
|
+
* it** (the same class of limit as `Handle`); **and the commit a repair is inside rides that `pending`, so the write
|
|
1440
|
+
* a repair makes JOINS the commit it is part of** — supplied at `write`'s DECLARED FOURTH POSITION (`D-46`).
|
|
1441
|
+
*/
|
|
1442
|
+
export interface RepairContext {
|
|
1443
|
+
readonly address: Address;
|
|
1444
|
+
readonly id: string;
|
|
1445
|
+
readonly op: JournalOp | null;
|
|
1446
|
+
readonly tier: Tier | null;
|
|
1447
|
+
readonly value: unknown;
|
|
1448
|
+
readonly pending: readonly TriggerPair[];
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
/**
|
|
1452
|
+
* **THE REPAIR'S RECORD AT A REGISTRATION INSTANT — THE SAME SIX AND THE ROUTE THE REGISTRATION ADDS: SEVEN.**
|
|
1453
|
+
* Built at `bindings/js/src/entry/kernel-registration.mjs:447`-`:460`, with the route at `:492`-`:503`, and declared
|
|
1454
|
+
* at `docs/L1/repair-outcome-types.md` §1.3 of 2026-11-01. **`extends` puts each of the six members at ONE home, so no
|
|
1455
|
+
* member of the shared shape can drift between the two instants.**
|
|
1456
|
+
*
|
|
1457
|
+
* **`write` IS EXACTLY THE STORE'S FIRST THREE POSITIONS — `(address, tier, value) => WriteRecord` — AND THE COMMIT
|
|
1458
|
+
* IS NOT A POSITION OF IT**: the write joins the registration's own commit (`D-91` (2)), and a supplied fourth is
|
|
1459
|
+
* REFUSED BEFORE ANY STORE ACT (`kernel-registration.mjs:492`-`:503`). **So the instance's
|
|
1460
|
+
* `write(address, tier, value, commit?)` and this route's three positions are TWO positions and never one spelling.**
|
|
1461
|
+
*
|
|
1462
|
+
* **THE CONSTRAINT'S RECORD GAINS NOTHING AT ANY INSTANT** (`D-92` (1)): `AttemptContext` carries neither `write` nor
|
|
1463
|
+
* `pending`, and **the seventh member's PRESENCE is the discriminator the kernel itself uses, so `'write' in rc` is
|
|
1464
|
+
* the narrowing a repair has**. **AND A BODY ANNOTATED WITH THIS SEVEN-MEMBER ALIAS IS REFUSED** — the position's
|
|
1465
|
+
* parameter is `RepairContext | RegistrationRepairContext` — **so the lawful spellings are `RepairContext`, that
|
|
1466
|
+
* union narrowed with `'write' in`, or no annotation at all.**
|
|
1467
|
+
*/
|
|
1468
|
+
export interface RegistrationRepairContext extends RepairContext {
|
|
1469
|
+
readonly write: (address: Address, tier: Tier, value: unknown) => WriteRecord;
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
/**
|
|
1473
|
+
* **WHAT A CONSTRAINT BODY ANSWERS — THE CLOSED THREE-ARM SET**, read in this order at the write's own evaluation
|
|
1474
|
+
* (`bindings/js/src/entry/kernel-attempt.mjs:705`-`:727`) and declared at `docs/L1/repair-outcome-types.md` §1.4 of
|
|
1475
|
+
* 2026-11-01: **`true` — THE ONLY PASS VALUE**; **`{ message, repair }` — A REPAIRABLE VIOLATION**; **`{ message }` —
|
|
1476
|
+
* AN UNREPAIRABLE VIOLATION**, its `message` the refusal's own sentence.
|
|
1477
|
+
*
|
|
1478
|
+
* **A VALUE OUTSIDE THE THREE IS READ AS THE `{ message }` ARM AND NEVER AS A FOURTH ARM**, so a return invented
|
|
1479
|
+
* beyond them declares an outcome this kernel does not distinguish — **and a return carrying only `repair` is that
|
|
1480
|
+
* outside value, whose repair IS NEVER SEEN** (`kernel-attempt.mjs:718`-`:724`).
|
|
1481
|
+
*
|
|
1482
|
+
* **`message` IS REQUIRED ON THE REPAIR ARM BECAUSE THE KERNEL READS IT FIRST**, and the repair is looked for only
|
|
1483
|
+
* inside that branch. **THE TYPE DECLARES THE SHAPE AND NEVER THE READ**: at the write's own evaluation `message` and
|
|
1484
|
+
* `repair` are read as OWN members, while at a registration instant the same closed outcome is read through the
|
|
1485
|
+
* prototype chain (`kernel-registration.mjs:377`-`:380`) — **ONE RETURNED SHAPE ANSWERING TWO DIFFERENT THINGS AT THE
|
|
1486
|
+
* TWO INSTANTS, which is `D-35`'s recorded defect and is OWED to a code-bearing unit**, and nothing here is read as
|
|
1487
|
+
* symmetric. **Nor does the type carry `message`'s NON-EMPTINESS or the repair's invocability beyond `function`.**
|
|
1488
|
+
*/
|
|
1489
|
+
export type ConstraintOutcome =
|
|
1490
|
+
| true
|
|
1491
|
+
| {
|
|
1492
|
+
readonly message: string;
|
|
1493
|
+
readonly repair: (
|
|
1494
|
+
context: RepairContext | RegistrationRepairContext,
|
|
1495
|
+
) => RepairOutcome;
|
|
1496
|
+
}
|
|
1497
|
+
| { readonly message: string };
|
|
1498
|
+
|
|
1499
|
+
/**
|
|
1500
|
+
* **WHAT A REPAIR ANSWERS — THE CREDITED ARM, THE FAILED ARM, AND `void`**, read at
|
|
1501
|
+
* `bindings/js/src/entry/kernel-attempt.mjs`'s repair arm and **RE-DERIVED 2026-11-01 by `D-105`**
|
|
1502
|
+
* (`strata/decisions.md` · `D-105` item `1`; `docs/L1/op-free-repair-credit.md` §6.1). **THE SENTENCES THIS CLAUSE
|
|
1503
|
+
* SUPERSEDES ARE NAMED RATHER THAN OVERWRITTEN** (`RCA-8(g)` ANNOTATE-BESIDE): *"`op` IS REQUIRED ON THE CREDITED
|
|
1504
|
+
* ARM, THE ARM IS CLOSED, AND `undefined` IS NOT ONE OF THE TWO — so a repair answering `undefined` or a bare
|
|
1505
|
+
* `{ ok: true }` is a COMPILE ERROR instead of a `ConstraintPassRefused`"* (`docs/L1/repair-outcome-types.md` §1.5
|
|
1506
|
+
* of 2026-11-01). **THE RULING, VERBATIM: *"A repair that does its write and returns `undefined` — the natural
|
|
1507
|
+
* shape of `repair: () => { … }` — is NOT refused"***, **so the credited arm is `undefined` · `{ ok: true }` ·
|
|
1508
|
+
* `{ ok: true, op }` — three spellings of ONE arm — and `void` is what the body answers when it has no opinion.**
|
|
1509
|
+
* **`ST-F2`'s measured defect is CLOSED BY CARRIER and not by text.**
|
|
1510
|
+
*
|
|
1511
|
+
* **THE CREDITED ARM: `{ ok: true, op? }`, `op` OPTIONAL AND INFORMATIONAL** — the store's own journal record
|
|
1512
|
+
* where a body cares to hand it back, reached by INDEXED ACCESS (`WriteRecord['op']`) so **NO SECOND CARRIER IS
|
|
1513
|
+
* MINTED**. **NO READER IN THE KERNEL READS IT**: the credit is the FAILING PAIR's mark (`attempt.appliedRepairs`),
|
|
1514
|
+
* the op the attempt pins is the repair's write's OWN LEG (`D-105` item `2`), and the re-run's value is that leg's
|
|
1515
|
+
* `op.after.value` — the returned `op` sets no pin, joins no list, becomes no landing and is named by no sentence.
|
|
1516
|
+
* **`op` ADMITS `null`** because the member is informational: `DeleteRecord['op']`'s declared `null` arm — a
|
|
1517
|
+
* `delete` that removed nothing — costs a consumer nothing, and nothing is refused for it.
|
|
1518
|
+
* **THE FAILED ARM IS UNMOVED: `{ ok: false, message }` — `op` ABSENT AND NEVER `null`** — and it is the ONLY
|
|
1519
|
+
* return that fails the attempt (`D-105` item `4`: *"The failed arm still fails (`{ok: false, message}` — the
|
|
1520
|
+
* caller's words)"*, `bindings/js/src/entry/kernel-attempt.mjs`'s `(d1)`).
|
|
1521
|
+
*
|
|
1522
|
+
* **THE TYPE STAYS NARROWER THAN THE RUNTIME, ON PURPOSE, AND THE GAP IS DECLARED RATHER THAN CLOSED.** The runtime
|
|
1523
|
+
* CREDITS `true`, `false`, `7`, `'done'`, `{ ok: 'yes' }`, `{ ok: false }` WITHOUT A MESSAGE and
|
|
1524
|
+
* `{ ok: true, op: <a whole WriteRecord> }`; **this alias admits none of them** — it declares the shape a consumer
|
|
1525
|
+
* SHOULD return, and the runtime declines to judge what a consumer DOES return. **`{ ok: false }` with no message
|
|
1526
|
+
* is named on both sides deliberately**: the runtime credits it (the declared failed arm needs a non-empty
|
|
1527
|
+
* `message`) and the type refuses it. **THE MIRROR IMAGE OF `CommitCarrier`'s PRINTED LIMIT BELOW**: there an
|
|
1528
|
+
* inherited `pending` and a `Proxy` pass the type and the run-time refusal keeps the position's domain; **here the
|
|
1529
|
+
* RUNTIME IS THE WIDER SIDE — THE TYPE DECLINES, THE RUNTIME CREDITS, AND NOTHING HERE PROMISES THAT A GREEN
|
|
1530
|
+
* COMPILE IS A CREDIT OR THAT A REFUSED COMPILE IS A REFUSAL.** `exactOptionalPropertyTypes` is not set in either
|
|
1531
|
+
* `tsconfig` head, so `{ ok: true, op: undefined }` type-checks as written — a property of the config heads and
|
|
1532
|
+
* not of this alias.
|
|
1533
|
+
*
|
|
1534
|
+
* **THE GROUND IS PROSE AND IS POINTED AT, NEVER RE-SPELLED HERE** (`bindings/js/src/entry/kernel-foundations.mjs`'s
|
|
1535
|
+
* `landedOp`, whose ONE remaining caller is the registration instant — `kernel-registration.mjs:616` — and whose
|
|
1536
|
+
* ordinal ground RETIRES on the write path, `docs/L1/op-free-repair-credit.md` §4 `RB-4`).
|
|
1537
|
+
* **A green compile is not evidence of a credit**, and a returned `op` is read as an OWN member — a distinction
|
|
1538
|
+
* structural typing cannot make. **NO NAME IS MINTED: this declaration adds `0` types.**
|
|
1539
|
+
*/
|
|
1540
|
+
export type RepairOutcome =
|
|
1541
|
+
| void
|
|
1542
|
+
| { readonly ok: true; readonly op?: WriteRecord['op'] | null }
|
|
1543
|
+
| { readonly ok: false; readonly message: string };
|
|
1544
|
+
|
|
1545
|
+
/**
|
|
1546
|
+
* **THE WRITE'S COMMIT POSITION AND ITS CLASS TEST — ONE MEMBER, `pending`, SPELLED EXACTLY AS `CommitRecord.pending`
|
|
1547
|
+
* SPELLS IT** (`:793`), so **no second TYPE is minted: what is minted is the NAME the class test's class never had**.
|
|
1548
|
+
* Declared at `docs/L1/repair-outcome-types.md` §8's `Q-1` clause of 2026-11-01 (`strata/decisions.md` · `D-101`,
|
|
1549
|
+
* verbatim: *"Widen the position to its class test"*), and **exported because a position's type no consumer can
|
|
1550
|
+
* annotate is the `ST-F2` gap in a new place**: the carrier is the one value a consumer CONSTRUCTS at a position
|
|
1551
|
+
* rather than receives.
|
|
1552
|
+
*
|
|
1553
|
+
* **THE KERNEL READS A MEMBER'S PRESENCE AND NEVER ITS MEMBER COUNT** — an OWN, defined `pending` on a non-null,
|
|
1554
|
+
* non-Proxy, non-array object (`bindings/js/src/entry/delivery.mjs:27`-`:54`, the predicate at `:39`) — **so
|
|
1555
|
+
* `CommitRecord` is ONE CARRIER of this class and not the position's only type; it keeps every byte, its four
|
|
1556
|
+
* members and its export.** **A REPAIR'S OWN `RepairContext` IS A CARRIER TOO**, which is why the guide's
|
|
1557
|
+
* four-position spelling type-checks as written (`D-46`; `docs/guides/package-use.md §7.6`).
|
|
1558
|
+
*
|
|
1559
|
+
* **WHAT NO GREEN HERE PROVES, PRINTED BECAUSE THE CLASS TEST IS THE DOMAIN'S KEEPER**: an INHERITED `pending`
|
|
1560
|
+
* (`Object.hasOwn` refuses it at run time) and a `Proxy` (`types.isProxy` refuses it before any member read) are both
|
|
1561
|
+
* admitted by the type, and **`commit?` admits a SUPPLIED `undefined`, which the class test refuses** — the
|
|
1562
|
+
* `?`-cannot-separate limit this file already declares for `read`'s `tier?` (`:131`-`:135`). **THE RUNTIME REFUSAL IS
|
|
1563
|
+
* WHAT KEEPS THE POSITION'S DOMAIN.**
|
|
1564
|
+
*/
|
|
1565
|
+
export interface CommitCarrier {
|
|
1566
|
+
readonly pending: readonly TriggerPair[];
|
|
1567
|
+
}
|
package/index.mjs
CHANGED
|
@@ -90,7 +90,7 @@ import { admittedConstraintBatch, constraintAddress, decodeBaseState, decodeJour
|
|
|
90
90
|
// ⟶ `addressSpelling`'s import is DELETED 2026-11-01 with its last two readers (`B-6`'s and `B-4`'s messages,
|
|
91
91
|
// which now name no address at all — `D-98` §3.4). The function keeps its home and its other readers in the
|
|
92
92
|
// entry's other parts.
|
|
93
|
-
import { FORGET_PAIR, INSTANCES, STORE_INDEX, STORE_RETIREMENT, TERMINAL_ARM, carryRefusal, closeCommit, crossTriggered, currentWindow, entryOf, installAttemptSeam, isStoreReceiver, openCommit, writeRefusal } from './src/entry/state.mjs';
|
|
93
|
+
import { FORGET_PAIR, INSTANCES, STORE_INDEX, STORE_RETIREMENT, TERMINAL_ARM, appendRepairLeg, carryRefusal, closeCommit, crossTriggered, currentWindow, entryOf, installAttemptSeam, isStoreReceiver, openCommit, writeRefusal } from './src/entry/state.mjs';
|
|
94
94
|
import { commitPositionRefusal, constraintOverwrittenByListen, deliver, installListenRoute, installRegistrationSeam, listenerStandingAt, listenOn, registerOn, terminalArm } from './src/entry/delivery.mjs';
|
|
95
95
|
import { ARGUMENT_POSITION_FIRST, addressSetKey, carryConstraint, constraintDetached, constraintPairKey, constraintRefuse, constraintSite, constraintUncarried, constraintDelete, constraintWrite, constraintsKernel, currentRaise, defineDiscardWitness, enumerateConstraints, judgeReversal, registrationCrossing, restoreHeldPair, reversalWatch, unionAddressSets, withEmptyLog, witnessDiscardedReversal, witnessRaise, withdrawStanding } from './src/entry/constraints.mjs';
|
|
96
96
|
const require_ = createRequire(import.meta.url);
|
|
@@ -450,6 +450,17 @@ export function storeCreate(cfg) {
|
|
|
450
450
|
// stage 2): a kernel-driven write takes the record THIS VERY WRITE returned and not a copy of it, and the
|
|
451
451
|
// slot is read before the pass that may write again, so a repair's own write can never be mistaken for it.
|
|
452
452
|
state.leg = record;
|
|
453
|
+
// **⟶ AND THE SAME RECORD'S RETURNED ELEMENTS ARE HANDED TO THE INVOCATION'S OWN LEG LIST — `D-104`,
|
|
454
|
+
// 2026-11-01** (`docs/L1/repair-listener-delivery.md` §3.2, §8's `js-surface` row;
|
|
455
|
+
// `strata/decisions.md` · `D-104` item `3`'s mechanism `(a)`). **THE LEG SLOT IS UNTOUCHED**: its four
|
|
456
|
+
// readers — `delivery.mjs`'s `answer`, the save's gate and the triggering address, and `constraints.mjs`'s
|
|
457
|
+
// `answer` — take no byte, and this line adds no fifth. **AND THE HAND-OVER IS TAKEN AT THIS SEAT ONLY,
|
|
458
|
+
// INSIDE THE `n >= 4` ARM AND NEVER AT THE `n <= 3` ROUTE**: the kernel's store leg is this arm, so a
|
|
459
|
+
// repair's write and a CONSTRAINT body's write are told apart by the KERNEL and not here (§3.1 fact 3) —
|
|
460
|
+
// each appends to the leg list of the invocation it was made inside, and the kernel's repair arm is what
|
|
461
|
+
// reads the latter and not the former. **WITH NO INVOCATION BRACKET STANDING THE APPEND GOES NOWHERE**
|
|
462
|
+
// (`state.mjs`'s `appendRepairLeg`), which is a caller's own write and a direct `K-2` drive's store leg.
|
|
463
|
+
appendRepairLeg(record);
|
|
453
464
|
// **THE INVOCATION WINDOW** (`docs/specs/storeroom-js/surface.md §2.7` item 2, `DD-22`): the record above is COMPLETE before the window
|
|
454
465
|
// opens, the invocation is SYNCHRONOUS, it happens AFTER the addon's call returned, and **its ONE
|
|
455
466
|
// argument is the TRIGGERING ADDRESS** (`PAR-JS-12`).
|
|
@@ -468,6 +479,16 @@ export function storeCreate(cfg) {
|
|
|
468
479
|
// THE KERNEL TRIGGERS** — `record.pending`'s residue plus the checked-off identities — where the pass has
|
|
469
480
|
// completed and the discard and the check-off have already decided what the set holds.
|
|
470
481
|
//
|
|
482
|
+
// **⟶ RE-DERIVED 2026-11-01 — `D-104`: THAT RESIDUE GAINS A THIRD SOURCE, AND THIS SENTENCE ABOVE STANDS
|
|
483
|
+
// BYTE-FOR-BYTE AND IS READ THROUGH THIS CLAUSE** (`docs/L1/repair-listener-delivery.md` §4, §8's
|
|
484
|
+
// `js-surface` row; `strata/decisions.md` · `D-104` item `2`). The sentence above names the residue and the
|
|
485
|
+
// checked-off identities; **from this date a handle the commit's own write never returned may also stand in
|
|
486
|
+
// `record.pending`** — one that a REPAIR's write returned — because the kernel's repair arm MERGES a
|
|
487
|
+
// repair's write's triggered listeners into that member at its own seat, after the credit and before the
|
|
488
|
+
// re-run (`kernel-attempt.mjs`), de-duplicated by `handle` and never a pair's. **`triggered` IS UNMOVED**
|
|
489
|
+
// (it stays the store's own returned set for THIS write, VERBATIM) and **this frame moves no byte**: the one
|
|
490
|
+
// delivery, its one recipient snapshot and its one address are what they were.
|
|
491
|
+
//
|
|
471
492
|
// **AND A WRITE WHOSE `commit` THE KERNEL DID NOT SUPPLY IS STILL DELIVERED HERE, AT ITS OWN POST-VERB
|
|
472
493
|
// INSTANT** (`docs/specs/storeroom-js/surface.md §2.7` item 2): that is the `n <= 3` caller path never reaching this frame at all, so THIS
|
|
473
494
|
// frame is reached only as the kernel's leg and its silence is total. **THE ONE INVOCATION PER DISTINCT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "provident-storeroom",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.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",
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
"src/constraint-kernel.mjs"
|
|
42
42
|
],
|
|
43
43
|
"optionalDependencies": {
|
|
44
|
-
"@auspicion/provident-storeroom-js-linux-x64-gnu": "1.
|
|
45
|
-
"@auspicion/provident-storeroom-js-linux-arm64-gnu": "1.
|
|
46
|
-
"@auspicion/provident-storeroom-js-darwin-x64": "1.
|
|
47
|
-
"@auspicion/provident-storeroom-js-darwin-arm64": "1.
|
|
48
|
-
"@auspicion/provident-storeroom-js-win32-x64-msvc": "1.
|
|
44
|
+
"@auspicion/provident-storeroom-js-linux-x64-gnu": "1.9.0",
|
|
45
|
+
"@auspicion/provident-storeroom-js-linux-arm64-gnu": "1.9.0",
|
|
46
|
+
"@auspicion/provident-storeroom-js-darwin-x64": "1.9.0",
|
|
47
|
+
"@auspicion/provident-storeroom-js-darwin-arm64": "1.9.0",
|
|
48
|
+
"@auspicion/provident-storeroom-js-win32-x64-msvc": "1.9.0"
|
|
49
49
|
},
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public"
|