toga-ai 1.0.74 → 1.0.76

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,8 +6,8 @@ project: Library
6
6
  client: elite
7
7
  type: client-feature
8
8
  status: active
9
- updated: 2026-06-10
10
- owners: []
9
+ updated: 2026-06-15
10
+ owners: ["snaredla"]
11
11
  files:
12
12
  - library/app/api/toga2.php
13
13
  related:
@@ -164,3 +164,6 @@ Pass `true` for the dedup GET — errors must not silently empty the dedup array
164
164
 
165
165
  Each ticket sync is wrapped in `try/catch` — exceptions are sent to Sentry and the run
166
166
  continues with the next ticket. A single bad ticket does not abort the whole sync.
167
+
168
+ ## Change history
169
+ - 2026-06-10 — Documented `App_Api_Toga2::syncWithTogadesk` orchestration (bidirectional TOGA 2 ↔ TOGaDesk ticket/note/file sync, watermarks, `ticketNoteFiles` gotcha). (snaredla)
@@ -105,6 +105,9 @@ attempted.
105
105
  - `createNetsuiteItemFulfillment` doesn't set carrier/method on the NS IF — it defaults
106
106
  (can show FedEx for a UPS shipment). Open item.
107
107
 
108
+ ## Change history
109
+ - 2026-06-10 — Documented carrier shipping label mechanics (UPS/FedEx) + the authoritative GIF label-storage decision and NetSuite IF attachment. (mhammontree)
110
+
108
111
  ## Related docs
109
112
 
110
113
  - [Fulfill & Ship (toga2-supply)](../../toga2-supply/features/fulfill-and-ship.md) —
@@ -106,6 +106,9 @@ inheritance. Verified against prod `Client_Compass` chains (≥3 levels deep).
106
106
  - **Performance:** every child write re-runs a full upstream walk (read-heavy, but each
107
107
  upstream record is written at most once — idempotent). Fine for normal fulfillment sizes.
108
108
 
109
+ ## Change history
110
+ - 2026-06-08 — Documented the Recursive Item Fulfillments engine (interceptor-driven upstream fulfillment mirroring, bundle scaling, reconcile loop). (jcardinal)
111
+
109
112
  ## Related docs
110
113
  - `_underscore` architecture (interceptors, `internalApiRequest`, `_Model` layer).
111
114
  - `api2` architecture (V2 metadata engine that fires these interceptors; the
@@ -117,6 +117,9 @@ returnTrackingNumber: {...} }]`, and an IFIU's as `itemFulfillmentItemUnitTracki
117
117
  `_underscore` + `api2` + `worker` + `library` together. Run the additions/migrations DB file first;
118
118
  run the companion `..._DROPS.sql` (and the Core deletes) only after the bridges + app are confirmed.
119
119
 
120
+ ## Change history
121
+ - 2026-06-10 — Documented the tracking-number bridge migration: scalar FK columns → `*_TrackingNumbers` bridge tables across ASN/IF/IR, ASN unit table rename, packages-table consolidation. (jcardinal)
122
+
120
123
  ## Related docs
121
124
  - Recursive Item Fulfillment feature (the upstream-sync engine this migration reworked).
122
125
  - compass-usa: ASN→Item Fulfillment, and the Item Fulfillment tracking TableView.
@@ -110,3 +110,6 @@ None in the flow itself — but the NetSuite trait is composed into **client-spe
110
110
  model subclasses (e.g. `_Model_Growrk_ItemFulfillment uses _Trait_Netsuite_ItemFulfillment`),
111
111
  not the base `_Model_Client_ItemFulfillment`. Tested with GroWrk; UPS support was built
112
112
  for Compass and is not yet in prod.
113
+
114
+ ## Change history
115
+ - 2026-06-10 — Documented the Fulfill & Ship flow (SO sync, label purchase, NetSuite IF creation, success gating, reprint). Driven green on beta for UPS/GroWrk; FedEx + prod verification pending. (mhammontree)
@@ -117,6 +117,9 @@ Read-only actions (no writes), invoked via `curl -X POST https://worker.togahub.
117
117
  `DiagnoseOpportunity`, `DiagnoseAmTask` (routing verdicts), `DiscoverIds`, `DiscoverAmIds`
118
118
  (print constant declarations), `RegisterOpportunityWebhook` (one-time setup).
119
119
 
120
+ ## Change history
121
+ - 2026-06-09 — Documented ClickUp secondary multi-list routing (hybrid native-automation + worker design, three space handlers, self-trigger guard). (jcardinal)
122
+
120
123
  ## Related docs
121
124
 
122
125
  - [Worker (worker2) Architecture](../architecture.md) — always-HTTP-200, commit-before-SQS.
@@ -133,3 +133,6 @@ Use realistic placeholder values, not empty strings/nulls.
133
133
  - If the action needs a client DB, register it in `initialize()` — it runs before the method.
134
134
  - See [architecture.md](../architecture.md) for the always-HTTP-200 rule and the
135
135
  commit-before-SQS transaction pattern that the worker relies on.
136
+
137
+ ## Change history
138
+ - 2026-06-08 — Documented the worker-action contract (path→class/method convention, parameter typing, webhook/cron templates); replaces the former `/worker2-action` skill. (jcardinal)
@@ -6,8 +6,8 @@ project: Worker
6
6
  client: elite
7
7
  type: client-feature
8
8
  status: active
9
- updated: 2026-06-10
10
- owners: []
9
+ updated: 2026-06-15
10
+ owners: ["snaredla"]
11
11
  files:
12
12
  - worker2/Worker/Elite.php
13
13
  - worker2/Config/dev-kmaramreddy-laptop.ini
@@ -141,3 +141,7 @@ To test worker2 Elite code locally against production TOGA 2 and Freshservice:
141
141
 
142
142
  4. **PHP version** — worker2 vendor targets PHP >= 8.5. Local PHP 8.1 requires a
143
143
  temporary bypass in `vendor/composer/platform_check.php` — revert before committing.
144
+
145
+ ## Change history
146
+ - 2026-06-11 — Redacted Elite credential constants from the doc; secret scanner added to `validate`. (snaredla)
147
+ - 2026-06-10 — Documented `_Worker_Elite` Freshservice → TOGA 2 webhook sync (conversation/attachment handling, TOGA 2 API gotchas, local dev setup). (snaredla)
@@ -176,6 +176,9 @@ clients' data flows (Compass, Prudential, AIG, …) but live as separate child c
176
176
  - Slack / SMS / PagerDuty (email-only today) · `MonitorRuns` history table ·
177
177
  HTML email + dashboard deep-links · anti-flap on the alarm side.
178
178
 
179
+ ## Change history
180
+ - 2026-06-10 — Documented the v1.0 monitoring framework (orchestrator, `Core.Monitors` table, recovery-side anti-flap state machine, child contract). First child monitor + staging/prod migration still pending. (mhammontree)
181
+
179
182
  ## Related docs
180
183
 
181
184
  - [worker2 architecture](../architecture.md) — cron/WorkerJobs pipeline the orchestrator rides on
@@ -113,6 +113,22 @@ standalone doc. Only a recurring/systemic failure class warrants its own record,
113
113
  _Elevated_ docs (architecture, standard) are senior-owned; `capture` flags any change
114
114
  to them with ⚠ so the developer knows what they're approving.
115
115
 
116
+ ## Required sections
117
+
118
+ Every **feature**, **client-feature**, and **workflow** doc must include a
119
+ **`## Change history`** section: newest-first, dated one-line entries recording notable
120
+ behavior changes only (not a git log). Format:
121
+
122
+ ```markdown
123
+ ## Change history
124
+ - YYYY-MM-DD — <what changed and why> (<author>)
125
+ ```
126
+
127
+ `node knowledge.js validate` enforces this — a missing `## Change history` section in any of
128
+ those three doc types fails the build (and therefore blocks `capture`'s publish). `profile`,
129
+ `architecture`, and `standard` docs are exempt. Keep the list terse and cap it at ~10 entries,
130
+ folding older ones away.
131
+
116
132
  ## INDEX.md files
117
133
 
118
134
  Never hand-edited. `node knowledge.js index` regenerates the master `INDEX.md`, each
@@ -186,6 +186,9 @@ Vendor SFTP ───(legacy_import_asn.php, ser+non-ser)─┘ [UNIQUE ded
186
186
  5. With no staging environment, verify with a standalone arithmetic simulation plus a read
187
187
  of the consumer query; `php -l` every touched file.
188
188
 
189
+ ## Change history
190
+ - 2026-06-10 — Documented the NYC DOE ServiceNow/ASN integration (ticket mirror, dual ASN ingestion, NetSuite freeze pipeline, EDI surface, dedupeKey gotchas). (mhammontree)
191
+
189
192
  ## Related docs
190
193
 
191
194
  - [NYC DOE client profile](../profile.md)
package/knowledge.js CHANGED
@@ -612,6 +612,14 @@ function cmdValidate() {
612
612
  if (!d.data[f]) { fail(`${d.rel}: missing frontmatter "${f}"`); ok = false; }
613
613
  }
614
614
  if (d.data.type && !DOC_TYPES.includes(d.data.type)) { fail(`${d.rel}: invalid type "${d.data.type}"`); ok = false; }
615
+ // feature/client-feature/workflow docs must carry a "## Change history" section so the
616
+ // doc records its own notable behavior changes over time (newest-first dated one-liners).
617
+ if (['feature', 'client-feature', 'workflow'].includes(d.data.type)) {
618
+ if (!/^##\s+Change history\s*$/m.test(fs.readFileSync(d.file, 'utf8'))) {
619
+ fail(`${d.rel}: missing required "## Change history" section`);
620
+ ok = false;
621
+ }
622
+ }
615
623
  const isClientDoc = d.rel.startsWith('clients/');
616
624
  if (isClientDoc) {
617
625
  if (!d.data.client || d.data.client === 'shared') { fail(`${d.rel}: client doc must set a real "client"`); ok = false; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toga-ai",
3
- "version": "1.0.74",
3
+ "version": "1.0.76",
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",