@ai-matrx/records 0.4.1 → 0.5.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # Changelog — @ai-matrx/records
2
2
 
3
+ ## 0.5.1
4
+
5
+ Refreshes the generated store contract to the live 240-door registry caught by
6
+ the blocking release guard after 0.5.0 was tagged.
7
+
8
+ ### Consumer action
9
+
10
+ None. The two new door entries are additive generated contract data.
11
+
12
+ ## 0.5.0
13
+
14
+ **Two refusal classes the store really raises, which this package answered with
15
+ "something this package does not recognise".** Both were found by walking the
16
+ real product on 2026-09-19, and in both the screen showed the store's own
17
+ sentence — honest, but the class was nameable and this package had not named it.
18
+
19
+ - **`57014` — the store cancelled the statement at its own timeout.** Seen on an
20
+ organization whose Table kernel is large enough for `custom.read_records` to
21
+ run out of time. It is now `timed_out`, which is, with `stale_read`, one of
22
+ only two refusals in the vocabulary worth REPEATING: nothing was refused on
23
+ its merits and nothing was written, so a screen can offer "try again" honestly
24
+ instead of showing a failure a person cannot act on.
25
+ - **`22P02` — a value that does not fit the type the store holds for it.** Seen
26
+ as `invalid input syntax for type uuid: "open"`, writing the text `open` into
27
+ an organization's copy of a package Table whose `status` Field was uuid-shaped.
28
+ It is `invalid_argument`, which is what it is: the CALL is wrong for the shape
29
+ the store holds, and the store's own message names the value and the type.
30
+
31
+ Both are proved against the LIVE store in `src/__tests__/real-doors.test.ts`:
32
+ the SQLSTATEs are raised by the real database inside the suite's own
33
+ rolled-back transaction and read back out of psql's verbose report, and the only
34
+ thing asserted about this package is what it makes of them. Each case is RED
35
+ without its map entry (`expected 'internal' to be 'timed_out'`).
36
+
37
+ ### Consumer action
38
+
39
+ `RecordsErrorCode` gains one member, `timed_out`. A host that switches
40
+ exhaustively over the union must add an arm for it; every other host needs
41
+ nothing beyond taking `latest`. A host that was special-casing `internal` to
42
+ recognise a timeout by its message text should branch on `timed_out` instead.
43
+
3
44
  ## 0.4.1
4
45
 
5
46
  Carries the live Supabase adapter proof through the shared npm publishing lane
@@ -282,6 +282,8 @@ var STORE_DOORS = [
282
282
  { name: "doc_unresolved_tokens", args: "p_organization_id uuid, p_table_id uuid, p_body text", returns: "TABLE(raw text, field_id uuid, why text)", security: "invoker" },
283
283
  { name: "doors_not_deciding_the_caller", args: "", returns: "TABLE(function_name text, identity_args text)", security: "invoker" },
284
284
  { name: "doors_not_deciding_the_record", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
285
+ { name: "doors_not_on_one_ladder", args: "", returns: "TABLE(function_name text, identity_args text, why text)", security: "invoker" },
286
+ { name: "effective_level", args: "p_user_id uuid, p_organization_id uuid, p_id uuid, p_type text DEFAULT 'record'::text", returns: "permission_level", security: "definer" },
285
287
  { name: "export_records", args: "p_organization_id uuid, p_table_id uuid, p_limit integer DEFAULT 1000", returns: "TABLE(id uuid, document jsonb)", security: "invoker" },
286
288
  { name: "external_foreign_table_findings", args: "", returns: "SETOF text", security: "definer" },
287
289
  { name: "external_history_event", args: "p_organization_id uuid, p_link_id uuid, p_operation text", returns: "bigint", security: "definer" },
@@ -1713,6 +1715,13 @@ var BY_SQLSTATE = {
1713
1715
  "23514": "refused_by_rule",
1714
1716
  "22004": "invalid_argument",
1715
1717
  "22023": "invalid_argument",
1718
+ // 22P02 — a value does not fit the type the store holds for it. The class is
1719
+ // real and was hit live: an organization whose copy of a package table grew
1720
+ // `status` as a uuid-valued Field was sent the text "open", and the store
1721
+ // answered `invalid input syntax for type uuid: "open"`. It is the CALL that
1722
+ // is wrong for the shape the store holds, which is what `invalid_argument`
1723
+ // already means — the store's own sentence names the value and the type.
1724
+ "22P02": "invalid_argument",
1716
1725
  "02000": "not_found",
1717
1726
  "23503": "missing_reference",
1718
1727
  "23505": "already_exists",
@@ -1724,6 +1733,13 @@ var BY_SQLSTATE = {
1724
1733
  // they just lost access to. It is retryable on a fresher connection, which is
1725
1734
  // a different instruction from every other refusal here.
1726
1735
  "40001": "stale_read",
1736
+ // 57014 — the store cancelled the statement at its own timeout. Like
1737
+ // `stale_read` and unlike every other refusal here, the call was never
1738
+ // refused on its merits: the same call on a smaller page, or once the
1739
+ // organization's kernel is not being rewritten, can succeed. It gets its own
1740
+ // code so a screen can offer "try again" honestly instead of showing a
1741
+ // failure sentence the caller cannot act on.
1742
+ "57014": "timed_out",
1727
1743
  // PostgREST's own two: the store is not being SERVED, which is a different
1728
1744
  // thing from the store refusing. `custom` absent from `pgrst.db_schemas`, or
1729
1745
  // the grants not copied, land here.