toga-ai 1.0.1063 → 1.0.1064

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.
@@ -156,6 +156,8 @@ VALUES (4188, '<pre-generated v4 uuid>', 219, 'serviceAddressId');
156
156
 
157
157
  Because the `id`s must be reserved by a human, **this cannot be guessed or derived** — asking is mandatory. Record the assigned values in a comment at the top of the file so the next reader knows they were allocated, not invented.
158
158
 
159
+ **`/finish` always reports the central ids** — every `Records` / `RecordFields` id the ticket inserted (id → route / route.field) plus the next free ids, or "none used by this ticket". Every time, never skipped: the developer copies the next ids into Tools → Developers → Central IDs.
160
+
159
161
  #### The next free `id` is NOT the same in every environment
160
162
 
161
163
  The rule above keeps *existing* ids aligned, but each environment's `Core` has drifted independently, so **the next free value differs**. Verified 2026-08-17: the same new `ServiceRequests._serialNumbers` recordField took id **2483 in production** and **2766 in dev-sandbox**. Consequences:
@@ -398,5 +400,6 @@ The extra `SELECT … FROM ( … ) existing` layer both dodges error 1093 and pi
398
400
 
399
401
  ## Change history
400
402
 
403
+ - 2026-10-17 — /finish reports central ids used + next free (TRUE-82889). (jcardinal)
401
404
  - 2026-10-17 — Second same-folder file also allowed for interceptor rows that must run after the code deploy (TRUE-82889). (jcardinal)
402
405
  - 2026-10-13 — Added rule 15: no MySQL `CHECK` constraints (TRUE-82715). (jcardinal)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toga-ai",
3
- "version": "1.0.1063",
3
+ "version": "1.0.1064",
4
4
  "description": "TOGA Technology Team Claude Knowledge System — shared AI coding harness with skills, knowledge base CLI, and project installer for Claude Code.",
5
5
  "keywords": [
6
6
  "claude",
@@ -69,6 +69,9 @@ rows for the developer to write by hand.
69
69
  4. **Put verify SELECTs at the end of the file.** After the developer runs it, Claude runs
70
70
  those SELECTs itself (local DB, or `toga-db` read-only) and reports the result in plain
71
71
  words. Never ask the developer to read verify output.
72
+ 5. **Central ids at `/finish`** (team rule, 2026-10-17, jcardinal). When a ticket inserts
73
+ `Core.Records` / `Core.RecordFields` rows, the `/finish` report always lists the ids used
74
+ and the next free ids.
72
75
 
73
76
  ## No running commentary — one compiled report at the end (team rule, 2026-10-15)
74
77
 
@@ -460,6 +460,8 @@ CU-<internalId>
460
460
 
461
461
  ## Migration steps
462
462
  - <dbchanges2 file + database + order, config changes, queue registration — or "None">
463
+ - Central ids: <Records / RecordFields ids used, then "next free: Records <n>, RecordFields <n>"
464
+ — or "none used"> (dbchanges2 PRs only; same data as the Step 17 block)
463
465
 
464
466
  ## Review summary
465
467
  **Risk: <LEVEL>**
@@ -578,10 +580,27 @@ developer the list name and leave the status alone.
578
580
  Short list:
579
581
 
580
582
  1. KB: publish status (Step 5).
581
- 2. Ticket fields changed: before → after with the reason, one line each (or "none").
582
- 3. PRs: one url per repo, and which were created vs. updated.
583
- 4. PM comment: posted (yes/no), with the posted text.
584
- 5. Status: `development finished` (or why not).
585
- 6. Anything manual the developer must still do — as a numbered list.
583
+ 2. **Central ids — REQUIRED, always present, never skipped** (team rule, 2026-10-17). Its own
584
+ block with a clear heading, right after the KB line: the developer must copy the next ids
585
+ into Tools → Developers → Central IDs.
586
+ - Source: grep the ticket branch's dbchanges2 `Core/` SQL files for `INSERT INTO Records` /
587
+ `INSERT INTO RecordFields` ids. Confirm on the local DB:
588
+ `SELECT id, … FROM Core.Records WHERE id IN (…)`, the same for `Core.RecordFields`, and
589
+ `SELECT MAX(id)` on both.
590
+ - List every id: `Records <id> → <route>`, `RecordFields <id> → <route>.<field>`.
591
+ - Then: `Next free: Records <n>, RecordFields <n>` — n = the higher of (this ticket's top
592
+ id, local `MAX(id)`) + 1. Central IDs stays the source of truth.
593
+ - None inserted → write `Central ids: none used by this ticket.`
594
+ ```
595
+ **Central ids**
596
+ - Records 412 → desk/tickets
597
+ - RecordFields 9031 → desk/tickets.priority
598
+ Next free: Records 413, RecordFields 9032
599
+ ```
600
+ 3. Ticket fields changed: before → after with the reason, one line each (or "none").
601
+ 4. PRs: one url per repo, and which were created vs. updated.
602
+ 5. PM comment: posted (yes/no), with the posted text.
603
+ 6. Status: `development finished` (or why not).
604
+ 7. Anything manual the developer must still do — as a numbered list.
586
605
 
587
606
  After that, if the thread may continue another day, suggest `/session-save <slug>`.