toga-ai 1.0.667 → 1.0.668
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.
|
@@ -6,7 +6,7 @@ project: _Underscore
|
|
|
6
6
|
client: shared
|
|
7
7
|
type: feature
|
|
8
8
|
status: active
|
|
9
|
-
updated: 2026-08-
|
|
9
|
+
updated: 2026-08-27
|
|
10
10
|
owners: [jcardinal, apeterson]
|
|
11
11
|
files:
|
|
12
12
|
- _underscore/Model/Client/Language.php
|
|
@@ -216,6 +216,18 @@ cluster-isolation rule.
|
|
|
216
216
|
| `Core.Surfaces` | 41–43 |
|
|
217
217
|
| `Core.SurfaceElements` | 125–146 |
|
|
218
218
|
|
|
219
|
+
> **The reserved blocks are NOT an inventory of all surface ids.** They record the
|
|
220
|
+
> 2026-08-21 decision-surface reseed only. Surfaces seeded *before* that decision sit
|
|
221
|
+
> outside them and took AUTO_INCREMENT ids — notably the **`navigation`** TAB_STRIP,
|
|
222
|
+
> whose elements are `Core.SurfaceElements` **109–114** (sales-orders, inventory, items,
|
|
223
|
+
> vendor-items, bundles, service-requests). Verified 2026-08-27. Two consequences: (1) do
|
|
224
|
+
> not assume an id outside 125–146 is unseeded or invalid; (2) a *new* Core seed must
|
|
225
|
+
> still claim an unused reserved block, but must check the pre-reseed ids too before
|
|
226
|
+
> assuming a range is free. Nav elements also carry `aclActionId = NULL` with Core base
|
|
227
|
+
> `isVisible = 0`, so the `aclActionId` gate described above is a no-op for navigation —
|
|
228
|
+
> visibility is purely role-scoped `SurfaceOverrides`. See
|
|
229
|
+
> [Compass navigation access](../../../../clients/compass-usa/workflows/granting-navigation-access.md).
|
|
230
|
+
|
|
219
231
|
**Authoring rules that follow from this:**
|
|
220
232
|
- A new Core surface seed **must** pick an unused reserved block and write explicit ids. Never let
|
|
221
233
|
a surface/element/message row take an `AUTO_INCREMENT` id — that re-opens the drift problem.
|
|
@@ -612,6 +624,12 @@ Core record grants + their logic-group expressions all evaluate `all`/`"1"`. The
|
|
|
612
624
|
match Compass, a follow-up migration aligning both `meta` and `meta-group` to roles 1,3,4 is needed.
|
|
613
625
|
|
|
614
626
|
## Change history
|
|
627
|
+
- 2026-08-27 — Corrected the reserved-id framing: the blocks record the 2026-08-21 reseed only and are
|
|
628
|
+
**not** an inventory of all surface ids. Pre-reseed surfaces kept AUTO_INCREMENT ids — the
|
|
629
|
+
`navigation` TAB_STRIP is `SurfaceElements` **109–114** — so an id outside 125–146 is not evidence it
|
|
630
|
+
is unseeded, and a new seed must check pre-reseed rows before calling a range free. Also recorded
|
|
631
|
+
that nav elements carry `aclActionId = NULL` with Core base `isVisible = 0`, making the `aclActionId`
|
|
632
|
+
gate a **no-op for navigation** (visibility is purely role-scoped `SurfaceOverrides`). (apeterson)
|
|
615
633
|
- 2026-08-26 — Recorded that the Core/Client model split is a **cluster** boundary: `SurfaceOverrides`
|
|
616
634
|
is a CLIENT-DB model, so override counts across clients must be a two-step (Core ids → per-client
|
|
617
635
|
count with literal ids), never a join. Matters when deciding whether to fork or share a surface,
|
|
@@ -6,7 +6,7 @@ project: Database Changes
|
|
|
6
6
|
client: shared
|
|
7
7
|
type: feature
|
|
8
8
|
status: active
|
|
9
|
-
updated: 2026-08-
|
|
9
|
+
updated: 2026-08-27
|
|
10
10
|
owners: [jcardinal, apeterson]
|
|
11
11
|
files:
|
|
12
12
|
- dbchanges2/Core/2026-08-24b - SalesOrderStatusFilterSurfaceSeed.sql
|
|
@@ -489,6 +489,16 @@ Blocks assigned by `Core/2026-08-24b - SalesOrderStatusFilterSurfaceSeed.sql`: *
|
|
|
489
489
|
sales-order status; no `Core.Messages` rows — labels come from the `sales-order-status` vocabulary).
|
|
490
490
|
See [sales-order-status-filter-surface](../../_underscore/features/sales-order-status-filter-surface.md).
|
|
491
491
|
|
|
492
|
+
**⚠ The reserved blocks are not an inventory of every surface id — pre-2026-08-21 surfaces sit
|
|
493
|
+
outside them.** The reserved-id discipline begins at the reseed, so surfaces seeded before it took
|
|
494
|
+
plain `AUTO_INCREMENT` ids: the **`navigation`** TAB_STRIP is `Core.SurfaceElements` **109–114**
|
|
495
|
+
(sales-orders, inventory, items, vendor-items, bundles, service-requests), verified 2026-08-27. So an
|
|
496
|
+
id below a reserved block is **not** evidence that it is unseeded, and "next free" must be checked
|
|
497
|
+
against the pre-reseed rows as well as the blocks above. Those nav elements also carry
|
|
498
|
+
`aclActionId = NULL` with Core base `isVisible = 0`, which makes the ACL-action gate a **no-op for
|
|
499
|
+
navigation** — visibility comes solely from role-scoped `SurfaceOverrides`. See
|
|
500
|
+
[Compass navigation access](../../../../clients/compass-usa/workflows/granting-navigation-access.md).
|
|
501
|
+
|
|
492
502
|
### 🚨 VERIFY the block is free, and never seed literal ids with `INSERT IGNORE`
|
|
493
503
|
|
|
494
504
|
**Incident, 2026-08-24 — a reserved block was quoted as "highest used" and read as "next free", and
|
|
@@ -779,6 +789,12 @@ Using literals is still correct: a collision then fails loudly on the primary ke
|
|
|
779
789
|
mis-wiring (which is what `INSERT IGNORE` did in the 2026-08-24 incident above).
|
|
780
790
|
|
|
781
791
|
## Change history
|
|
792
|
+
- 2026-08-27 — Added the counterpart to the pre-reserved-block `Core.Messages` drift note: the reserved
|
|
793
|
+
blocks are **not** an inventory of every surface id. Pre-2026-08-21 surfaces took plain
|
|
794
|
+
`AUTO_INCREMENT` ids — the `navigation` TAB_STRIP is `Core.SurfaceElements` **109–114** — so an id
|
|
795
|
+
below a block is not evidence it is unseeded, and "next free" must be verified against pre-reseed
|
|
796
|
+
rows too. Also recorded that those nav elements have `aclActionId = NULL` and Core base
|
|
797
|
+
`isVisible = 0`, so the ACL-action gate is a **no-op for navigation**. (apeterson)
|
|
782
798
|
- 2026-08-26 — Seeded the **Service Request** record surfaces as a **fork** of the sales-order ones:
|
|
783
799
|
`Core/2026-08-26a` (Surfaces **45** / elements **161–165**, recordId 35) and `Core/2026-08-26b`
|
|
784
800
|
(Surfaces **46** / elements **166–169**). Recorded three durable rules: forking a surface **drops
|
package/package.json
CHANGED