provident-storeroom 1.6.2 → 1.8.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 +56 -7
- package/README.md +1 -1
- package/RELEASE-NOTES.md +75 -2
- package/index.d.ts +290 -14
- package/index.mjs +98 -111
- package/package.json +6 -6
- package/src/entry/artefact.mjs +24 -4
- package/src/entry/constraints.mjs +25 -16
- package/src/entry/delivery.mjs +240 -99
- package/src/entry/frame.mjs +20 -5
- package/src/entry/kernel-registration.mjs +31 -8
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
|
|
@@ -241,6 +253,27 @@ export interface StoreConfig {
|
|
|
241
253
|
* in the surface's one thrown form `{status, message, log}`, under the store's existing
|
|
242
254
|
* `ConstraintListInvalid` — **the package mints no code**.
|
|
243
255
|
*
|
|
256
|
+
* **⟶ AND THE CROSS-KIND ARM'S DIMENSION IS THE HANDLE, AND ITS MESSAGE NAMES THREE THINGS — ADDED 2026-11-01
|
|
257
|
+
* (`D-98` item 4; `docs/L1/cross-kind-handle-only.md` §2, §3.4, §3.6).** **THE ARM IS `adoptedHandles[n] ===
|
|
258
|
+
* element.id`: a HANDLE, never an address** — so a batch pair and an adopted listener MAY stand at one address,
|
|
259
|
+
* which is the ruling's clause (i) — and it is compared over the handles `cfg.listeners` adopts, which are the
|
|
260
|
+
* same set a successful construction adopts (`docs/L1/surface-deltas.md` §3.2). **ITS MESSAGE NAMES:**
|
|
261
|
+
* * **THE POSITION**, because two elements may carry one address and the position is what identifies the
|
|
262
|
+
* offending element;
|
|
263
|
+
* * **THE HANDLE** — the shared string, which is the refusal's SUBJECT and the generated half's first word;
|
|
264
|
+
* * **THE ADOPTED LISTENER'S ONE ADDRESS**, which an adopted `cfg.listeners` element carries exactly one of
|
|
265
|
+
* (`frame.mjs`), so naming it asserts no order and is exact.
|
|
266
|
+
*
|
|
267
|
+
* **AND THE GENERATED HALF IS THE STORE'S OWN QUALIFIED `ConstraintListInvalid` ARM** — *"'<handle>' is already
|
|
268
|
+
* a handle this instance carries, a batch element's id is its pair's handle and it may not be one this
|
|
269
|
+
* construction adopts as a listener's"* — which **prints no `<CONTAINER>` slot**: the list's name `constraints`
|
|
270
|
+
* is named on the package's clause side and never in the generated half, where it would read as the place the
|
|
271
|
+
* mismatch was found. **The package still mints no code**, the status is still `ConstraintListInvalid`, and the
|
|
272
|
+
* instant is still before any filesystem act. **AND THE SUBJECT MOVES FROM AN ADDRESS TO THE HANDLE, which
|
|
273
|
+
* incidentally repairs a second rendering defect**: the address spelling quotes its string segments and the
|
|
274
|
+
* facade quotes the whole subject again, so the bytes read `''ck''`; **a bare handle renders `'shared-handle'`
|
|
275
|
+
* and the doubling has no subject at this arm.**
|
|
276
|
+
*
|
|
244
277
|
* **AND THE NAME'S OTHER TWO READERS NEED NOTHING** (`D-24` items 2–3, both recorded so no pass adds a
|
|
245
278
|
* member): `constraints()` already returns the bare `id`, so its four exclusions stand exactly as written;
|
|
246
279
|
* and `LogEntry` already carries `id`, so **the name's logging role moves no member-set** and no undeclared
|
|
@@ -731,6 +764,15 @@ export interface AttemptRef {
|
|
|
731
764
|
* a record with exactly FOUR members, the FOURTH added at the `A108` landing pass of 2026-10-13"*; its
|
|
732
765
|
* `§1` item 4 counts it among the kernel's own named shapes).
|
|
733
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
|
+
*
|
|
734
776
|
* **THE RECORD THE KERNEL PASSES IS THIS ONE AND THE STORE'S IS NOT.** **The kernel passes the `CommitRecord`
|
|
735
777
|
* `commit` built and the pass's terminal arm reads again — one identity, at both instants** (`surface.md`
|
|
736
778
|
* `§2.4` item 9 (a)–(b)'s table: *"the record identity (the `CommitRecord` `commit` is building)"* then
|
|
@@ -859,7 +901,7 @@ export interface StoreInstance {
|
|
|
859
901
|
* **AND A SUPPLIED `undefined` AT THE `tier` POSITION IS PRESENT HERE TOO** (`parameter-semantics.md
|
|
860
902
|
* §2.6`; `PAR-JS-6`): it is not the absent tier and the store answers `AddressMalformed` for it.
|
|
861
903
|
*/
|
|
862
|
-
write(address: Address, tier: Tier, value: unknown, commit?:
|
|
904
|
+
write(address: Address, tier: Tier, value: unknown, commit?: CommitCarrier): WriteRecord;
|
|
863
905
|
/**
|
|
864
906
|
* Remove the versions the address names, and answer the operation's record.
|
|
865
907
|
*
|
|
@@ -974,10 +1016,21 @@ export interface StoreInstance {
|
|
|
974
1016
|
* TRUE AND UNAFFECTED and is now read **SCOPED BY KIND**: a repeated handle of the SAME kind at this act is
|
|
975
1017
|
* an overwrite (`D-24`), while **a pair whose `id` equals a LIVE LISTENER'S HANDLE is REJECTED** — it does
|
|
976
1018
|
* not overwrite the listener and it does not throw nothing. **The rejection is the surface's one thrown
|
|
977
|
-
* form `{status, message, log}` with the store's `AddressMalformed`**, its `message` naming BOTH SIDES and
|
|
978
|
-
*
|
|
979
|
-
* **
|
|
980
|
-
*
|
|
1019
|
+
* form `{status, message, log}` with the store's `AddressMalformed`**, its `message` naming BOTH SIDES, and
|
|
1020
|
+
* it is taken **after the two positions' class tests and before the held-pair purge and before any store
|
|
1021
|
+
* call**, so **no state moves**. `register`'s own direction of the same rule stands at that member (§its own
|
|
1022
|
+
* clause).
|
|
1023
|
+
*
|
|
1024
|
+
* **⟶ AND THE RULE SENTENCE RE-DERIVES BY ONE WORD, 2026-11-01 (`D-98`; `docs/L1/cross-kind-handle-only.md`
|
|
1025
|
+
* §3.4): *"a listener and a constraint do not share one"* READS *"a listener and a constraint do not share one
|
|
1026
|
+
* HANDLE"*.** **THE CONDITION, THE STATUS AND THE INSTANT ARE UNMOVED** — a live listener is
|
|
1027
|
+
* `off === false` **and** a function **and** `kind !== 'constraint'`, so a reserved `listen` with no
|
|
1028
|
+
* `register` is NOT one and a pair may take its handle; and the member is still `AddressMalformed` after the
|
|
1029
|
+
* two class tests and before the held-pair branch. **What moves is the sentence, because the OLD SPELLING READ
|
|
1030
|
+
* THE ADDRESS and `D-98` declares the address LAWFUL.** The missing word is added from the project's own
|
|
1031
|
+
* anchor (`bindings/js/README.md`: *"a listener and a constraint do not share one handle"*), and the
|
|
1032
|
+
* refusal's `address` member is `null`: the subject is the identity, and naming one of a listener's N mirror
|
|
1033
|
+
* addresses would assert a membership no clause supports.
|
|
981
1034
|
*/
|
|
982
1035
|
addConstraint(pair: ConstraintPair, constraint: Constraint): ConstraintIdentity;
|
|
983
1036
|
/** **THE ENABLE HALF** (`§2.12` item 2 (a) and item 3's `constraintOn` row): `undefined`. **The
|
|
@@ -993,14 +1046,36 @@ export interface StoreInstance {
|
|
|
993
1046
|
constraintOff(pair: ConstraintPair, constraint: Constraint): void;
|
|
994
1047
|
/** Register `listener` under the opaque `handle`, and answer `undefined` (`surface.md §2.4` item 5 (b)).
|
|
995
1048
|
*
|
|
996
|
-
* **⟶ AND IT REFUSES WHERE A CONSTRAINT'S `id
|
|
997
|
-
*
|
|
998
|
-
*
|
|
999
|
-
*
|
|
1000
|
-
*
|
|
1001
|
-
*
|
|
1002
|
-
*
|
|
1003
|
-
*
|
|
1049
|
+
* **⟶ AND IT REFUSES WHERE THE HANDLE EQUALS A CARRIED CONSTRAINT PAIR'S `id`** (`D-25`'s *"vice versa"*;
|
|
1050
|
+
* `D-29`; **⟶ RE-DERIVED 2026-11-01 BY `D-98`'s HANDLE RULE, WHICH IS THE WHOLE OF IT**: *"A constraint and a
|
|
1051
|
+
* listener can share an address, as can multiple constraints/listeners. The restriction is that a listener
|
|
1052
|
+
* and a constraint cannot have the same **handle**."*). **THE CLAUSE THAT STOOD HERE READ *"it refuses where a
|
|
1053
|
+
* constraint's `id` STANDS AT THE ADDRESS"* AND THAT CONDITION IS WITHDRAWN**: an ADDRESS is not a collision
|
|
1054
|
+
* at all — a pair and a listener MAY stand at one address — so what the member tests is the **HANDLE, and
|
|
1055
|
+
* nothing else**: a carried pair whose `id` is that string, **disabled pair included** (`D-98` (iii)'s rule is
|
|
1056
|
+
* unconditional in both directions, and the loss a skipped disabled pair would permit lands at the next
|
|
1057
|
+
* `constraintOn` with no observable at the instant of the loss).
|
|
1058
|
+
*
|
|
1059
|
+
* **THE REFUSAL IS THE SURFACE'S OWN THROWN FORM** `{status, message, log}` with the store's
|
|
1060
|
+
* `AddressMalformed` — **not** the `TypeError` this member's conflict arm carried while a reserved
|
|
1061
|
+
* `constraint@` prefix existed to be exempted — taken after the handle's domain and registry tests and
|
|
1062
|
+
* **before the registry write and before the re-install `listen`**, so **no state moves**: no store act, no
|
|
1063
|
+
* mirror row, no registry entry.
|
|
1064
|
+
*
|
|
1065
|
+
* **ITS MESSAGE IS TWO PARTS AND BOTH ARE NAMED HERE** (`D-98` item 4; `docs/L1/cross-kind-handle-only.md`
|
|
1066
|
+
* §3.6's `B-5` text): **the generated half is the STORE'S OWN** — the qualified `AddressMalformed` arm, *"'<id>'
|
|
1067
|
+
* is already a handle this instance carries, a listener's handle and a constraint's id are one string and one
|
|
1068
|
+
* string only"*, which **names no address, no segment and no placeholder container** — and **the clause half is
|
|
1069
|
+
* the package's**, naming the pair that keeps the handle and carrying the shared rule sentence *"a listener and
|
|
1070
|
+
* a constraint do not share one handle"*. **The refusal's `address` member is `null`**, and that is now correct
|
|
1071
|
+
* rather than incidental: the subject is a string in the handle namespace and the address is lawful.
|
|
1072
|
+
*
|
|
1073
|
+
* **The exemption for kernel-prefixed handles is DELETED, not moved**: under `D-22` the kernel's handle is no
|
|
1074
|
+
* longer a reserved spelling. **⟶ AND THE SENTENCE THAT FOLLOWED IT — *"under `D-25` the kernel registers
|
|
1075
|
+
* nothing, so nothing needs to get past the test"* — IS RE-DERIVED BY `D-99`'s ANSWERED CLAUSE AND NOT ABSORBED:**
|
|
1076
|
+
* the kernel **does** register, and it reaches the store through its **own internal route** rather than through
|
|
1077
|
+
* this member, so **this test is a CALLER's test and the kernel's act never meets it** — which is why there is
|
|
1078
|
+
* still nothing to get past it. */
|
|
1004
1079
|
register(handle: Handle, listener: Listener): void;
|
|
1005
1080
|
/** **`removeListener(handle) -> undefined`** — the entry removed WHOLE and its store entries withdrawn; every arm that is not a real removal THROWS (`contract.md §2.7` item 2; `PAR-HL-14`, `PAR-HL-15`). */
|
|
1006
1081
|
removeListener(handle: Handle): void;
|
|
@@ -1195,6 +1270,12 @@ export interface ConstraintPair {
|
|
|
1195
1270
|
* WRITE'S OWN EVALUATION a `message` that is not a NON-EMPTY STRING keeps the repair readable while the
|
|
1196
1271
|
* refusal answers the kernel's own unrecognized sentence** (the closed set, its order and this read stand at
|
|
1197
1272
|
* `bindings/js/src/entry/kernel-attempt.mjs:686-699`).
|
|
1273
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE NO LONGER RESOLVES TO ITS SUBJECTS AND IS READ
|
|
1274
|
+
* THROUGH THIS MARK.** **`bindings/js/src/entry/kernel-attempt.mjs:686-699` stands today as the body-throw arm's
|
|
1275
|
+
* terminal entry and its mark — `:687`-`:698` — and the two subjects this sentence cites it FOR stand at
|
|
1276
|
+
* `:705`-`:727` (the closed three-arm read) and `:718`-`:724` (the own-member read of `message` and `repair`).**
|
|
1277
|
+
* **The citation's bytes stand and are unmoved; its RANGE is the reading of the date it was written at, and
|
|
1278
|
+
* `D-90` · `D-91` · `D-94` are the landings that moved it** (`docs/L1/repair-outcome-types.md` §7.2 row `1`).
|
|
1198
1279
|
*
|
|
1199
1280
|
* **THE ATTACH: the `repair` your function returns IS A FUNCTION TAKING ONE ARGUMENT — ITS OWN RECORD,
|
|
1200
1281
|
* WHICH IS NOT YOUR CONSTRAINT'S AND IS NOT INTERCHANGEABLE WITH IT.** **The two records stand apart at
|
|
@@ -1203,6 +1284,18 @@ export interface ConstraintPair {
|
|
|
1203
1284
|
* (`bindings/js/src/entry/kernel-attempt.mjs:607-613`, `:756-782`; the kernel's own words at
|
|
1204
1285
|
* `bindings/js/src/entry/kernel-registration.mjs:373-374`). **No member census of either record is
|
|
1205
1286
|
* printed here.**
|
|
1287
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE — `bindings/js/src/entry/kernel-attempt.mjs:607-613`,
|
|
1288
|
+
* cited for the CONSTRAINT's record — stands today on the pair-application guard's clause (`:631`), and the
|
|
1289
|
+
* constraint's record build stands at `:635`-`:641`.** **The citation's bytes stand and are read through this
|
|
1290
|
+
* mark** (§7.2 row `5`).
|
|
1291
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE — `bindings/js/src/entry/kernel-attempt.mjs:756-782`,
|
|
1292
|
+
* cited for the REPAIR's record — stands today on the repeat arms' returns, and the repair's record build stands
|
|
1293
|
+
* at `:784`-`:810`.** **The citation's bytes stand and are read through this mark** (§7.2 row `6`).
|
|
1294
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE —
|
|
1295
|
+
* `bindings/js/src/entry/kernel-registration.mjs:373-374`, cited as *"the kernel's own words"* on the two records
|
|
1296
|
+
* — stands today on the `{message}` sentence of the registration instant's outcome read, and the kernel's own
|
|
1297
|
+
* statement of the two records stands at `:420`-`:424`.** **The citation's bytes stand and are read through this
|
|
1298
|
+
* mark** (§7.2 row `4`).
|
|
1206
1299
|
*
|
|
1207
1300
|
* **AT THE WRITE'S OWN EVALUATION — AT THAT INSTANT AND NO OTHER — THE KERNEL READS `message` AND
|
|
1208
1301
|
* `repair` AS OWN MEMBERS OF THE OBJECT YOUR FUNCTION RETURNED: a pair carried on a prototype is NOT SEEN
|
|
@@ -1214,6 +1307,14 @@ export interface ConstraintPair {
|
|
|
1214
1307
|
* at registration and no repair at a write — and that divergence is OWED to a code-bearing unit and is
|
|
1215
1308
|
* CONTRADICTED BY NO SENTENCE HERE** (`strata/decisions.md` · `D-35`, whose parameter-access rule the
|
|
1216
1309
|
* registration read does not yet hold).
|
|
1310
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE — `bindings/js/src/entry/kernel-attempt.mjs:690-696`
|
|
1311
|
+
* — stands today INSIDE the same body-throw arm's mark clause (`:691`-`:698`), and the rule it is cited for — the
|
|
1312
|
+
* own-member read of `message` and `repair` — stands at `:718`-`:724`.** **The citation's bytes stand and are read
|
|
1313
|
+
* through this mark** (§7.2 row `2`).
|
|
1314
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE —
|
|
1315
|
+
* `bindings/js/src/entry/kernel-registration.mjs:330-332` — stands today on the skip-is-not-a-refusal clause, and
|
|
1316
|
+
* the registration instant's outcome read — the one that reads the same closed outcome through the prototype
|
|
1317
|
+
* chain — stands at `:377`-`:380`.** **The citation's bytes stand and are read through this mark** (§7.2 row `3`).
|
|
1217
1318
|
*
|
|
1218
1319
|
* **THE REPAIR'S OWN RETURN IS A CLOSED TWO-ARM SET: `{ ok: true, op }` — the repairable arm, `op`
|
|
1219
1320
|
* REQUIRED and BEING THE OPERATION RECORD THE STORE'S OWN VERB RETURNED (`WriteRecord.op`, or
|
|
@@ -1230,20 +1331,48 @@ export interface ConstraintPair {
|
|
|
1230
1331
|
* `bindings/js/src/entry/kernel-foundations.mjs:1105-1131` — **and NO ORDINAL GROUND IS CLAIMED AT THE
|
|
1231
1332
|
* REGISTRATION INSTANT, whose credit check runs with no invoked-for op**
|
|
1232
1333
|
* (`bindings/js/src/entry/kernel-registration.mjs:510-517`).
|
|
1334
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE — `bindings/js/src/entry/kernel-registration.mjs:510-517`
|
|
1335
|
+
* — stands today on the synthetic attempt's nine-member docblock, and the credit call this sentence is about — the
|
|
1336
|
+
* one that runs with NO invoked-for op — stands at `:615`-`:616`.** **The citation's bytes stand and are read
|
|
1337
|
+
* through this mark** (`docs/L1/repair-outcome-types.md` §7.2 row `7`).
|
|
1233
1338
|
*
|
|
1234
1339
|
* **AND THE COMMIT YOUR REPAIR IS PART OF RIDES THAT ONE ARGUMENT: supply it at `write`'s DECLARED FOURTH
|
|
1235
1340
|
* POSITION and the write your repair makes JOINS the commit it is part of**
|
|
1236
1341
|
* (`bindings/js/index.d.ts:862`) — **the record the repair is handed carries that commit at its `pending`
|
|
1237
1342
|
* member, the `CommitRecord.pending` this file declares at `bindings/js/index.d.ts:772`, POINTED AT here
|
|
1238
1343
|
* and re-declared nowhere.** **That position's own class test is not restated.**
|
|
1344
|
+
* **⟶ RE-ANCHORED, 2026-11-01, `RCA-8(g)`: THE CITATION ABOVE PRINTS THIS FILE'S `:772`, WHICH WAS THE LINE AT THE
|
|
1345
|
+
* DATE IT WAS WRITTEN AND IS NOW MOVED TWICE OVER.** **At this date's bytes the `CommitRecord` docblock's `op`
|
|
1346
|
+
* sentence — the line `:772` stood on — stands at `:793`, and the `pending` member that sentence names is declared
|
|
1347
|
+
* at `:814` (`readonly pending: readonly TriggerPair[]`).** **THE TWO MOVES ARE DISTINCT AND NEITHER REWRITES THE
|
|
1348
|
+
* CITATION: the first is that block's own growth, which is why the figure was stale before this pass; the second is
|
|
1349
|
+
* THIS DATE'S MARKS — the head's and this record's block's — which stand above both lines.** **The citation's bytes
|
|
1350
|
+
* stand and are read through this mark; the typing pass's six names sit BELOW this block and moved no line above it
|
|
1351
|
+
* (`1,308 → 1,466` is that pass's own count), and the eight marks of this date are the only bytes this docs pass
|
|
1352
|
+
* adds inside the block** (§7.2 row `8`).
|
|
1353
|
+
* **AND THE SAME PARAGRAPH'S OTHER SELF-CITATION — `bindings/js/index.d.ts:862`, which is NOT one of §7.2's eight
|
|
1354
|
+
* rows and is therefore not one of this date's subjects — is moved by these marks nevertheless: the admitted forms
|
|
1355
|
+
* and the class test of that position stand at `:883`, and the position's own signature — with `commit?` typed as
|
|
1356
|
+
* `CommitCarrier` — at `:904`.**
|
|
1239
1357
|
*
|
|
1240
1358
|
* **AND NOTHING HERE MINTS A TYPE, A SYMBOL, AN ALIAS, A SEAM, A RECORD MEMBER OR AN EXPORT**: this clause
|
|
1241
1359
|
* DOCUMENTS the pair your function returns and a two-arm result the kernel already reads, and DECLARES
|
|
1242
1360
|
* nothing — `Constraint` below is unmoved, one `unknown` in and one `unknown` out. **Nor does it name an
|
|
1243
1361
|
* archived part as the place its rule is to be read: the rule IS the sentences above, and every point they
|
|
1244
1362
|
* cite is a live print of the kept contract or a live source range on this branch.**
|
|
1363
|
+
*
|
|
1364
|
+
* **⟶ RE-DERIVED BY NAME, 2026-11-01: THE SENTENCE ABOVE NO LONGER GOVERNS, AND IT IS NOT DELETED — IT IS READ THROUGH THIS
|
|
1365
|
+
* CLAUSE AS THE READING OF ITS OWN DATE.** The architect has approved minting the types that sentence declined, so what stands
|
|
1366
|
+
* now is: **FIVE NAMES ARE DECLARED BELOW THIS LINE — `AttemptContext` · `RepairContext` · `RegistrationRepairContext` ·
|
|
1367
|
+
* `ConstraintOutcome` · `RepairOutcome` — and `Constraint` below is TYPED rather than unmoved.** **EVERY MEMBER THEY CARRY IS ONE
|
|
1368
|
+
* THE KERNEL ALREADY BUILDS, AND NOTHING IS MINTED BUT THE NAMES**: no member, no symbol, no seam, no export, no route and no
|
|
1369
|
+
* arity moves, the module namespace keeps its ONE value name, and the closed sets these names carry are the ones this clause
|
|
1370
|
+
* already declares. **AND THE CENSUS SENTENCE ABOVE — *"No member census of either record is printed here"* — IS TRUE OF THIS
|
|
1371
|
+
* CLAUSE AND IS READ THROUGH THIS ONE: the census is DECLARED at the aliases below, in the only place a consumer's compiler can
|
|
1372
|
+
* hold it, and this clause still prints none.** **NO BEHAVIOUR BYTE MOVES: the aliases are erased at run time and the kernel
|
|
1373
|
+
* reads the same values it read on 2026-10-30.**
|
|
1245
1374
|
*/
|
|
1246
|
-
export type Constraint = (context:
|
|
1375
|
+
export type Constraint = (context: AttemptContext) => ConstraintOutcome;
|
|
1247
1376
|
|
|
1248
1377
|
/**
|
|
1249
1378
|
* **THE CONSTRAINT IDENTITY — `parameter-semantics.md §2.25` (`PAR-JS-25`)**: ONE OPAQUE VALUE THE PACKAGE
|
|
@@ -1252,3 +1381,150 @@ export type Constraint = (context: unknown) => unknown;
|
|
|
1252
1381
|
* accessor reaches a member of it, and a consumer compares identities and never contents.**
|
|
1253
1382
|
*/
|
|
1254
1383
|
export type ConstraintIdentity = object;
|
|
1384
|
+
|
|
1385
|
+
/**
|
|
1386
|
+
* **THE ATTEMPT'S OWN CONTEXT — THE ONE ARGUMENT A CONSTRAINT BODY IS INVOKED WITH** (`PAR-C-16`; the record this
|
|
1387
|
+
* file's `Constraint` docblock calls *"the attempt's own context"*), declared at
|
|
1388
|
+
* `docs/L1/repair-outcome-types.md` §1.1 of 2026-11-01. **THE NAME IS THE TREE'S OWN**: the kernel calls this
|
|
1389
|
+
* record `AttemptContext` (`bindings/js/src/entry/kernel-registration.mjs:421`, `:428`;
|
|
1390
|
+
* `kernel-attempt.mjs:483`) and so does this file at `:450`.
|
|
1391
|
+
*
|
|
1392
|
+
* **FIVE MEMBERS AND NO SIXTH: `address` · `attempt` · `op` · `tier` · `value`, and no other.** **THIS RECORD GAINS
|
|
1393
|
+
* NOTHING AT ANY INSTANT** — no `id`, no `pending` and no `write` (`strata/decisions.md` · `D-92` (1)) — **and its
|
|
1394
|
+
* census is printed HERE, because this is the only place a consumer's compiler can hold it** (the `Constraint`
|
|
1395
|
+
* docblock above prints none, and says so).
|
|
1396
|
+
*
|
|
1397
|
+
* **ONE MEMBER SET ACROSS THE THREE SITES THAT BUILD IT, AND THE SITE — NOT THE INSTANT — DECIDES THE VALUE.**
|
|
1398
|
+
* Built at the write's own evaluation (`kernel-attempt.mjs:635`-`:641`), at a registration's FIRST ask
|
|
1399
|
+
* (`kernel-registration.mjs:392`-`:403`) and at a registration's RE-RUN (`:728`-`:734`); only three members' VALUES
|
|
1400
|
+
* move, and the nullable arms are the FIRST ask's — `attempt`, `op` and `tier` are the LANDING's at the other two.
|
|
1401
|
+
* **SO A CONSUMER NARROWS `op` BEFORE READING IT**: at a landing and at a re-run `op` is never `null`, and that
|
|
1402
|
+
* narrowing is the declared price of one member set, printed rather than discovered (§1.1; §2's alternative `D`).
|
|
1403
|
+
*/
|
|
1404
|
+
export interface AttemptContext {
|
|
1405
|
+
readonly address: Address;
|
|
1406
|
+
readonly attempt: AttemptRef | null;
|
|
1407
|
+
readonly op: JournalOp | null;
|
|
1408
|
+
readonly tier: Tier | null;
|
|
1409
|
+
readonly value: unknown;
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
/**
|
|
1413
|
+
* **THE REPAIR'S OWN RECORD — THE SIX-MEMBER `RepairContext`, THE ONE ARGUMENT THE KERNEL INVOKES A REPAIR WITH**,
|
|
1414
|
+
* built at the write's own evaluation (`bindings/js/src/entry/kernel-attempt.mjs:784`-`:810`) and declared at
|
|
1415
|
+
* `docs/L1/repair-outcome-types.md` §1.2 of 2026-11-01. **THE NAME IS THE KERNEL'S OWN** — *"the six-member
|
|
1416
|
+
* `RepairContext`"* (`kernel-registration.mjs:416`, `:421`) — and this alias IS that shape.
|
|
1417
|
+
*
|
|
1418
|
+
* **SIX MEMBERS: `address` · `id` · `op` · `tier` · `value` · `pending`. THE TWO RECORDS STAND APART AT THREE
|
|
1419
|
+
* PLACES** (the `Constraint` docblock above; `docs/guides/package-use.md §7.6`): **by COUNT, SIX against
|
|
1420
|
+
* `AttemptContext`'s FIVE; by `id`, which this record carries where the constraint's carries `attempt`; and by
|
|
1421
|
+
* `pending`, which rides this record ALONE.**
|
|
1422
|
+
*
|
|
1423
|
+
* **`op`'s `| null` ARM IS THE REGISTRATION'S, DECLARED ONCE BECAUSE THE SHAPE IS ONE SHAPE**: at this instant `op`
|
|
1424
|
+
* is the op the evaluation carried and is never `null`. **`pending` IS A FRESH LIST AND NEVER THE RECORD'S OWN
|
|
1425
|
+
* MEMBER** (`kernel-attempt.mjs:806`-`:809`); **`id`'s NON-EMPTINESS IS `PAR-JS-24`'s PROSE RULE and no type carries
|
|
1426
|
+
* it** (the same class of limit as `Handle`); **and the commit a repair is inside rides that `pending`, so the write
|
|
1427
|
+
* a repair makes JOINS the commit it is part of** — supplied at `write`'s DECLARED FOURTH POSITION (`D-46`).
|
|
1428
|
+
*/
|
|
1429
|
+
export interface RepairContext {
|
|
1430
|
+
readonly address: Address;
|
|
1431
|
+
readonly id: string;
|
|
1432
|
+
readonly op: JournalOp | null;
|
|
1433
|
+
readonly tier: Tier | null;
|
|
1434
|
+
readonly value: unknown;
|
|
1435
|
+
readonly pending: readonly TriggerPair[];
|
|
1436
|
+
}
|
|
1437
|
+
|
|
1438
|
+
/**
|
|
1439
|
+
* **THE REPAIR'S RECORD AT A REGISTRATION INSTANT — THE SAME SIX AND THE ROUTE THE REGISTRATION ADDS: SEVEN.**
|
|
1440
|
+
* Built at `bindings/js/src/entry/kernel-registration.mjs:447`-`:460`, with the route at `:492`-`:503`, and declared
|
|
1441
|
+
* 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
|
|
1442
|
+
* member of the shared shape can drift between the two instants.**
|
|
1443
|
+
*
|
|
1444
|
+
* **`write` IS EXACTLY THE STORE'S FIRST THREE POSITIONS — `(address, tier, value) => WriteRecord` — AND THE COMMIT
|
|
1445
|
+
* IS NOT A POSITION OF IT**: the write joins the registration's own commit (`D-91` (2)), and a supplied fourth is
|
|
1446
|
+
* REFUSED BEFORE ANY STORE ACT (`kernel-registration.mjs:492`-`:503`). **So the instance's
|
|
1447
|
+
* `write(address, tier, value, commit?)` and this route's three positions are TWO positions and never one spelling.**
|
|
1448
|
+
*
|
|
1449
|
+
* **THE CONSTRAINT'S RECORD GAINS NOTHING AT ANY INSTANT** (`D-92` (1)): `AttemptContext` carries neither `write` nor
|
|
1450
|
+
* `pending`, and **the seventh member's PRESENCE is the discriminator the kernel itself uses, so `'write' in rc` is
|
|
1451
|
+
* the narrowing a repair has**. **AND A BODY ANNOTATED WITH THIS SEVEN-MEMBER ALIAS IS REFUSED** — the position's
|
|
1452
|
+
* parameter is `RepairContext | RegistrationRepairContext` — **so the lawful spellings are `RepairContext`, that
|
|
1453
|
+
* union narrowed with `'write' in`, or no annotation at all.**
|
|
1454
|
+
*/
|
|
1455
|
+
export interface RegistrationRepairContext extends RepairContext {
|
|
1456
|
+
readonly write: (address: Address, tier: Tier, value: unknown) => WriteRecord;
|
|
1457
|
+
}
|
|
1458
|
+
|
|
1459
|
+
/**
|
|
1460
|
+
* **WHAT A CONSTRAINT BODY ANSWERS — THE CLOSED THREE-ARM SET**, read in this order at the write's own evaluation
|
|
1461
|
+
* (`bindings/js/src/entry/kernel-attempt.mjs:705`-`:727`) and declared at `docs/L1/repair-outcome-types.md` §1.4 of
|
|
1462
|
+
* 2026-11-01: **`true` — THE ONLY PASS VALUE**; **`{ message, repair }` — A REPAIRABLE VIOLATION**; **`{ message }` —
|
|
1463
|
+
* AN UNREPAIRABLE VIOLATION**, its `message` the refusal's own sentence.
|
|
1464
|
+
*
|
|
1465
|
+
* **A VALUE OUTSIDE THE THREE IS READ AS THE `{ message }` ARM AND NEVER AS A FOURTH ARM**, so a return invented
|
|
1466
|
+
* beyond them declares an outcome this kernel does not distinguish — **and a return carrying only `repair` is that
|
|
1467
|
+
* outside value, whose repair IS NEVER SEEN** (`kernel-attempt.mjs:718`-`:724`).
|
|
1468
|
+
*
|
|
1469
|
+
* **`message` IS REQUIRED ON THE REPAIR ARM BECAUSE THE KERNEL READS IT FIRST**, and the repair is looked for only
|
|
1470
|
+
* inside that branch. **THE TYPE DECLARES THE SHAPE AND NEVER THE READ**: at the write's own evaluation `message` and
|
|
1471
|
+
* `repair` are read as OWN members, while at a registration instant the same closed outcome is read through the
|
|
1472
|
+
* prototype chain (`kernel-registration.mjs:377`-`:380`) — **ONE RETURNED SHAPE ANSWERING TWO DIFFERENT THINGS AT THE
|
|
1473
|
+
* TWO INSTANTS, which is `D-35`'s recorded defect and is OWED to a code-bearing unit**, and nothing here is read as
|
|
1474
|
+
* symmetric. **Nor does the type carry `message`'s NON-EMPTINESS or the repair's invocability beyond `function`.**
|
|
1475
|
+
*/
|
|
1476
|
+
export type ConstraintOutcome =
|
|
1477
|
+
| true
|
|
1478
|
+
| {
|
|
1479
|
+
readonly message: string;
|
|
1480
|
+
readonly repair: (
|
|
1481
|
+
context: RepairContext | RegistrationRepairContext,
|
|
1482
|
+
) => RepairOutcome;
|
|
1483
|
+
}
|
|
1484
|
+
| { readonly message: string };
|
|
1485
|
+
|
|
1486
|
+
/**
|
|
1487
|
+
* **WHAT A REPAIR ANSWERS — THE CLOSED TWO-ARM SET**, read at `bindings/js/src/entry/kernel-attempt.mjs:899`-`:914`
|
|
1488
|
+
* and declared at `docs/L1/repair-outcome-types.md` §1.5 of 2026-11-01. **`op` IS REQUIRED ON THE CREDITED ARM, THE
|
|
1489
|
+
* ARM IS CLOSED, AND `undefined` IS NOT ONE OF THE TWO** — so a repair answering `undefined` or a bare `{ ok: true }`
|
|
1490
|
+
* is a COMPILE ERROR instead of a `ConstraintPassRefused` (`ST-F2`'s measured defect, `strata/research.md` §10).
|
|
1491
|
+
*
|
|
1492
|
+
* **THE CREDITED ARM: `{ ok: true, op }`, `op` BEING THE OPERATION RECORD THE STORE'S OWN VERB RETURNED** — the
|
|
1493
|
+
* store's own journal record, reached by INDEXED ACCESS (`WriteRecord['op']`) so **NO SECOND CARRIER IS MINTED**, and
|
|
1494
|
+
* `op.opId` (`string`) and `op.seq` (`number`) are reached by naming that record. **`DeleteRecord['op']`'s declared
|
|
1495
|
+
* `null` arm is REFUSED here**: a `delete` that removed nothing answers `null` and credits nothing, so a repair
|
|
1496
|
+
* passing `removed.op` narrows first. **THE FAILED ARM: `{ ok: false, message }` — `op` ABSENT AND NEVER `null`**,
|
|
1497
|
+
* because an `op` there is read by nothing.
|
|
1498
|
+
*
|
|
1499
|
+
* **THE TYPE NAMES THE CARRIER; THE GROUND IS PROSE AND IS POINTED AT, NEVER RE-SPELLED HERE**
|
|
1500
|
+
* (`bindings/js/src/entry/kernel-foundations.mjs:1105`-`:1131`), **and NO ORDINAL GROUND IS CLAIMED AT THE REGISTRATION
|
|
1501
|
+
* INSTANT** (`kernel-registration.mjs:615`-`:616`). **A green compile is not evidence of a credit**, and `op` is read
|
|
1502
|
+
* as an OWN member at BOTH instants — a distinction structural typing cannot make.
|
|
1503
|
+
*/
|
|
1504
|
+
export type RepairOutcome =
|
|
1505
|
+
| { readonly ok: true; readonly op: WriteRecord['op'] }
|
|
1506
|
+
| { readonly ok: false; readonly message: string };
|
|
1507
|
+
|
|
1508
|
+
/**
|
|
1509
|
+
* **THE WRITE'S COMMIT POSITION AND ITS CLASS TEST — ONE MEMBER, `pending`, SPELLED EXACTLY AS `CommitRecord.pending`
|
|
1510
|
+
* SPELLS IT** (`:793`), so **no second TYPE is minted: what is minted is the NAME the class test's class never had**.
|
|
1511
|
+
* Declared at `docs/L1/repair-outcome-types.md` §8's `Q-1` clause of 2026-11-01 (`strata/decisions.md` · `D-101`,
|
|
1512
|
+
* verbatim: *"Widen the position to its class test"*), and **exported because a position's type no consumer can
|
|
1513
|
+
* annotate is the `ST-F2` gap in a new place**: the carrier is the one value a consumer CONSTRUCTS at a position
|
|
1514
|
+
* rather than receives.
|
|
1515
|
+
*
|
|
1516
|
+
* **THE KERNEL READS A MEMBER'S PRESENCE AND NEVER ITS MEMBER COUNT** — an OWN, defined `pending` on a non-null,
|
|
1517
|
+
* non-Proxy, non-array object (`bindings/js/src/entry/delivery.mjs:27`-`:54`, the predicate at `:39`) — **so
|
|
1518
|
+
* `CommitRecord` is ONE CARRIER of this class and not the position's only type; it keeps every byte, its four
|
|
1519
|
+
* members and its export.** **A REPAIR'S OWN `RepairContext` IS A CARRIER TOO**, which is why the guide's
|
|
1520
|
+
* four-position spelling type-checks as written (`D-46`; `docs/guides/package-use.md §7.6`).
|
|
1521
|
+
*
|
|
1522
|
+
* **WHAT NO GREEN HERE PROVES, PRINTED BECAUSE THE CLASS TEST IS THE DOMAIN'S KEEPER**: an INHERITED `pending`
|
|
1523
|
+
* (`Object.hasOwn` refuses it at run time) and a `Proxy` (`types.isProxy` refuses it before any member read) are both
|
|
1524
|
+
* admitted by the type, and **`commit?` admits a SUPPLIED `undefined`, which the class test refuses** — the
|
|
1525
|
+
* `?`-cannot-separate limit this file already declares for `read`'s `tier?` (`:131`-`:135`). **THE RUNTIME REFUSAL IS
|
|
1526
|
+
* WHAT KEEPS THE POSITION'S DOMAIN.**
|
|
1527
|
+
*/
|
|
1528
|
+
export interface CommitCarrier {
|
|
1529
|
+
readonly pending: readonly TriggerPair[];
|
|
1530
|
+
}
|