toga-ai 1.0.783 → 1.0.784

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.
Files changed (131) hide show
  1. package/knowledge/1.0/apps/dbchanges/INDEX.md +3 -3
  2. package/knowledge/1.0/apps/library/INDEX.md +23 -23
  3. package/knowledge/1.0/apps/library/features/cron-execution-monitoring.md +31 -1
  4. package/knowledge/1.0/apps/library/features/error-capture-1-0.md +68 -1
  5. package/knowledge/1.0/apps/library/features/toga2-api-client-and-bridge.md +9 -1
  6. package/knowledge/1.0/apps/test/INDEX.md +18 -18
  7. package/knowledge/1.0/apps/toga/INDEX.md +4 -4
  8. package/knowledge/1.0/apps/togadesk/INDEX.md +14 -14
  9. package/knowledge/1.0/apps/togaview/INDEX.md +9 -9
  10. package/knowledge/1.0/apps/tools/INDEX.md +20 -20
  11. package/knowledge/1.0/apps/tools/features/talos-kb-documents-admin.md +0 -3
  12. package/knowledge/1.0/apps/tools/features/theme-light-dark.md +0 -2
  13. package/knowledge/1.0/apps/tools/workflows/deploy-to-elastic-beanstalk-al2023.md +0 -2
  14. package/knowledge/1.0/apps/walmarttechservices/INDEX.md +3 -3
  15. package/knowledge/1.0/apps/webhook/INDEX.md +3 -3
  16. package/knowledge/1.0/apps/worker/INDEX.md +21 -21
  17. package/knowledge/1.0/apps/worker/features/compass-ma-sales-order-exception-report.md +36 -5
  18. package/knowledge/1.0/apps/worker/features/netsuite-togasupply-per-client-sync.md +181 -1
  19. package/knowledge/2.0/apps/_underscore/INDEX.md +59 -59
  20. package/knowledge/2.0/apps/_underscore/features/acl-permission-chain.md +70 -7
  21. package/knowledge/2.0/apps/_underscore/features/error-reporting-issue-event.md +86 -2
  22. package/knowledge/2.0/apps/_underscore/features/forecast-sale-import.md +0 -2
  23. package/knowledge/2.0/apps/_underscore/features/item-fulfillment-stage-lifecycle-and-order-status.md +0 -4
  24. package/knowledge/2.0/apps/_underscore/features/model-magic-field-access.md +8 -1
  25. package/knowledge/2.0/apps/_underscore/features/sales-order-denial-reason.md +0 -1
  26. package/knowledge/2.0/apps/_underscore/features/surface-resolver.md +0 -29
  27. package/knowledge/2.0/apps/_underscore/features/tracking-number-bridges.md +0 -3
  28. package/knowledge/2.0/apps/ai-bdr/INDEX.md +15 -15
  29. package/knowledge/2.0/apps/ai-bdr/architecture.md +0 -2
  30. package/knowledge/2.0/apps/ai-bdr/features/live-call-status.md +0 -2
  31. package/knowledge/2.0/apps/ai-bdr/features/security-landing-page.md +0 -4
  32. package/knowledge/2.0/apps/ai-bdr/features/vapi-integration.md +0 -4
  33. package/knowledge/2.0/apps/ai-bdr/features/web-funnel-app.md +0 -7
  34. package/knowledge/2.0/apps/api2/INDEX.md +27 -27
  35. package/knowledge/2.0/apps/api2/features/api-payload-interceptors.md +0 -2
  36. package/knowledge/2.0/apps/api2/features/language-translation-layer.md +0 -7
  37. package/knowledge/2.0/apps/api2/features/nested-relationship-writes.md +63 -1
  38. package/knowledge/2.0/apps/api2/features/v2-rest-query-contract.md +28 -1
  39. package/knowledge/2.0/apps/dbchanges2/INDEX.md +12 -12
  40. package/knowledge/2.0/apps/dbchanges2/features/surface-layer-schema.md +0 -48
  41. package/knowledge/2.0/apps/dbchanges2/workflows/client-schema-drift-audit.md +130 -2
  42. package/knowledge/2.0/apps/dbchanges2/workflows/nonprod-metadata-drift-repair.md +43 -10
  43. package/knowledge/2.0/apps/saml/INDEX.md +8 -7
  44. package/knowledge/2.0/apps/saml/features/healthcheck-endpoint.md +133 -0
  45. package/knowledge/2.0/apps/talos/INDEX.md +10 -10
  46. package/knowledge/2.0/apps/talos/architecture.md +0 -3
  47. package/knowledge/2.0/apps/talos/features/aegra-api.md +0 -6
  48. package/knowledge/2.0/apps/talos/features/talos-agent.md +0 -3
  49. package/knowledge/2.0/apps/talos-backend/INDEX.md +3 -3
  50. package/knowledge/2.0/apps/toga-blox/INDEX.md +16 -16
  51. package/knowledge/2.0/apps/toga-blox/features/table.md +29 -2
  52. package/knowledge/2.0/apps/toga-blox/features/talos-assistant.md +0 -1
  53. package/knowledge/2.0/apps/toga2-commerce/INDEX.md +20 -20
  54. package/knowledge/2.0/apps/toga2-commerce/features/client-fields.md +29 -2
  55. package/knowledge/2.0/apps/toga2-commerce/features/inactive-item-purchase-gating.md +0 -2
  56. package/knowledge/2.0/apps/toga2-commerce/workflows/amplify-build-and-deploy.md +95 -2
  57. package/knowledge/2.0/apps/toga2-commerce/workflows/cypress-testing.md +0 -2
  58. package/knowledge/2.0/apps/toga2-hub/INDEX.md +4 -4
  59. package/knowledge/2.0/apps/toga2-supply/INDEX.md +10 -10
  60. package/knowledge/2.0/apps/toga2-supply/features/fulfill-and-ship.md +0 -2
  61. package/knowledge/2.0/apps/toga2-supply/workflows/client-host-scoping.md +0 -1
  62. package/knowledge/2.0/apps/toga2-view/INDEX.md +11 -11
  63. package/knowledge/2.0/apps/toga2-view/architecture.md +0 -1
  64. package/knowledge/2.0/apps/toga25-supply/INDEX.md +20 -20
  65. package/knowledge/2.0/apps/toga25-supply/features/record-modals-and-nested-tables.md +0 -4
  66. package/knowledge/2.0/apps/toga25-supply/features/surface-frontend.md +0 -3
  67. package/knowledge/2.0/apps/toga25-supply/features/talos-integration.md +0 -7
  68. package/knowledge/2.0/apps/toga25-supply/features/transfer-orders-page.md +0 -5
  69. package/knowledge/2.0/apps/toga25-supply/workflows/cypress-testing.md +0 -2
  70. package/knowledge/2.0/apps/voice-to-voice/INDEX.md +6 -6
  71. package/knowledge/2.0/apps/worker2/INDEX.md +60 -56
  72. package/knowledge/2.0/apps/worker2/features/clickup-general-automation.md +75 -0
  73. package/knowledge/2.0/apps/worker2/features/netsuite-item-client-routing.md +132 -0
  74. package/knowledge/2.0/apps/worker2/features/netsuite-opportunity-sync.md +0 -1
  75. package/knowledge/2.0/apps/worker2/features/netsuite-supporting-record-webhook-importer.md +61 -14
  76. package/knowledge/2.0/apps/worker2/features/netsuite-transferorder-outbound-push.md +65 -11
  77. package/knowledge/2.0/apps/worker2/features/oneuptime-worker2-monitoring.md +70 -4
  78. package/knowledge/2.0/apps/worker2/features/qa-qc-review-pipeline.md +92 -0
  79. package/knowledge/2.0/apps/worker2/features/sso-stability-monitor.md +102 -0
  80. package/knowledge/2.0/apps/worker2/features/talos-transcript-ingestion.md +0 -15
  81. package/knowledge/CONVENTIONS.md +51 -3
  82. package/knowledge/INDEX.md +2 -2
  83. package/knowledge/clients/adyen/INDEX.md +3 -3
  84. package/knowledge/clients/adyen/profile.md +87 -1
  85. package/knowledge/clients/aig/INDEX.md +5 -5
  86. package/knowledge/clients/canon/INDEX.md +3 -3
  87. package/knowledge/clients/compass-canada/INDEX.md +9 -9
  88. package/knowledge/clients/compass-canada/features/french-order-email-localization.md +0 -5
  89. package/knowledge/clients/compass-usa/INDEX.md +35 -34
  90. package/knowledge/clients/compass-usa/features/oneuptime-ma-refresh-order-monitor.md +150 -0
  91. package/knowledge/clients/compass-usa/profile.md +1 -0
  92. package/knowledge/clients/compass-usa/workflows/odp-order-pipeline-to-netsuite.md +12 -2
  93. package/knowledge/clients/compass-usa/workflows/order-lifecycle-and-data-integrity.md +15 -1
  94. package/knowledge/clients/elite/INDEX.md +9 -9
  95. package/knowledge/clients/elite/features/netsuite-togasupply-sync.md +163 -15
  96. package/knowledge/clients/elite/features/supply2-scope.md +0 -5
  97. package/knowledge/clients/elite/profile.md +12 -1
  98. package/knowledge/clients/endeavor-health/INDEX.md +3 -3
  99. package/knowledge/clients/fordham/INDEX.md +3 -3
  100. package/knowledge/clients/growrk/INDEX.md +6 -6
  101. package/knowledge/clients/growrk/features/transfer-order-flow.md +44 -3
  102. package/knowledge/clients/northwell/INDEX.md +4 -4
  103. package/knowledge/clients/nycdoe/INDEX.md +6 -6
  104. package/knowledge/clients/nycdoe/features/servicenow-integration.md +0 -2
  105. package/knowledge/clients/nychh/INDEX.md +9 -9
  106. package/knowledge/clients/nychh/features/netsuite-inventory-adjustment-fulfillment-link.md +20 -1
  107. package/knowledge/clients/nychh/features/netsuite-transfer-order-import.md +53 -1
  108. package/knowledge/clients/nychh/features/transfer-order-netsuite-push.md +38 -3
  109. package/knowledge/clients/nychh/profile.md +25 -4
  110. package/knowledge/clients/office-depot/INDEX.md +5 -5
  111. package/knowledge/clients/pcmaticb2b/INDEX.md +6 -6
  112. package/knowledge/clients/prudential/INDEX.md +14 -14
  113. package/knowledge/clients/quad/INDEX.md +7 -7
  114. package/knowledge/clients/rate/INDEX.md +14 -14
  115. package/knowledge/clients/rate/features/subscription-cancellation.md +0 -2
  116. package/knowledge/clients/rate/features/whole-home-warranty-purchase-guard.md +0 -1
  117. package/knowledge/clients/rumcsi/INDEX.md +3 -3
  118. package/knowledge/clients/spglobal/INDEX.md +3 -3
  119. package/knowledge/clients/staples/INDEX.md +4 -4
  120. package/knowledge/clients/tow-foundation/INDEX.md +4 -4
  121. package/knowledge/clients/true/INDEX.md +4 -4
  122. package/knowledge/clients/walmart/INDEX.md +5 -5
  123. package/knowledge/clients/wje/INDEX.md +3 -3
  124. package/knowledge/standalone/apps/claude/INDEX.md +7 -7
  125. package/knowledge/standalone/apps/forward/INDEX.md +5 -5
  126. package/knowledge/standalone/apps/togatech/INDEX.md +7 -7
  127. package/knowledge/standalone/apps/togatech/features/seo-aeo-geo-prerender.md +0 -1
  128. package/knowledge/standalone/apps/websocket/INDEX.md +4 -4
  129. package/knowledge.js +85 -18
  130. package/package.json +1 -1
  131. package/skills/kickoff/SKILL.md +11 -7
@@ -1,5 +1,5 @@
1
1
  # dbchanges (Database Changes) — 1.0 knowledge
2
2
 
3
- | Doc | Summary | Files |
4
- |-----|---------|-------|
5
- | [Authoring & Shipping a 1.0 dbchanges SQL File](workflows/authoring-and-shipping-sql-files.md) | `dbchanges` is the **1.0** (legacy/V1) schema-and-data change repository — the 1.0 sibling of 2.0's `dbchanges2`. | dbchanges/index.php, dbchanges/Core/, dbchanges/TOGaDeskSupport/, worker/crons/infrastructure/execute_dbchanges.php, worker/.ebextensions/030_dbchanges.config |
3
+ | Doc | Summary |
4
+ |-----|---------|
5
+ | [Authoring & Shipping a 1.0 dbchanges SQL File](workflows/authoring-and-shipping-sql-files.md) | `dbchanges` is the **1.0** (legacy/V1) schema-and-data change repository — the 1.0 sibling of 2.0's `dbchanges2`. |
@@ -1,25 +1,25 @@
1
1
  # library (Library) — 1.0 knowledge
2
2
 
3
- | Doc | Summary | Files |
4
- |-----|---------|-------|
5
- | [Library (1.0 Framework) Architecture](architecture.md) | `library` is the shared library repository for **all 1.0 (legacy) applications** — the `App_` framework. | library/_.php, library/app/, library/browser/ |
6
- | [Address Validation Gateway (App_Api_OfficeDepot::validateAddress + USPS fallback)](features/address-validation-gateway.md) | `App_Api_OfficeDepot::validateAddress()` is the shared 1.0 (`App_`) address-validation gateway. | library/app/api/officedepot.php, library/app/api/usps.php |
7
- | [Where a new App_ class goes — the app/ folder IS a behavioral contract](features/app-class-placement-base-contracts.md) | In `library/app/`, choosing a folder is **not** a filing decision — the autoloader maps `App_<Folder>_<File>` to `app/<folder>/<file>.php`, and each folder's ba | library/app/model.php, library/app/client.php, library/app/api.php, library/app/api/servicerequest.php, library/app/api/volt.php, library/app/api/carrier/fedex.php |
8
- | [App_Sso — Reusable 1.0 SSO Initiation (SP-initiated SAML via saml.togahub.com)](features/app-sso-initiation.md) | `App_Sso` (`library/app/sso.php`) is the **1.0 port of the 2.0 SAML gateway's SP-initiated SSO initiation**, packaged as a reusable, framework-level capability | library/app/sso.php, library/sso/togahub_private_key.key |
9
- | [Cron Execution Monitoring (App_Framework check-in/out → CronJobExecutions)](features/cron-execution-monitoring.md) | `App_Framework::cronInitialization()` / `App_Framework::cronFinished()` (in `library/app/framework.php`) give every 1.0 (`App_`) cron job a check-in/check-out l | library/app/framework.php |
10
- | [Diagnostic Dialog — View Recommended Services Routing](features/diagnostic-dialog-view-recommended-services.md) | Two "View Recommended Services" buttons exist in the TOGa Refresh 2026 SR view: 1. | library/app/model/toga/diagnostic.php, library/app/model/servicerequest.php |
11
- | [Elite Freshservice Sync (library)](features/elite-freshservice-sync.md) | `App_Api_Toga2` in `library/app/api/toga2.php` orchestrates bidirectional sync between TOGA 2 and TOGaDesk. | library/app/api/toga2.php |
12
- | [App_Email Queued Sending & Attachments (Common.EmailsQueued)](features/email-queue-attachments.md) | `App_Email::send()` can either send **inline** (PHPMailer talks to SES right there) or **queue** the message: `base64(serialize($this))` is inserted into `Commo | library/app/email.php, library/phpmailer/class.phpmailer.php, worker/crons/notifications/infrastructure/send_emails.php, worker/crons/notifications/covid/send_covid_pending_vaccination_approval.php, togadesk/desk/includes/functions.php |
13
- | [Branded HTML Email Templates (App_Email_Template)](features/email-templates.md) | `App_Email_Template` (`app/email/template.php`) is the base class for branded HTML emails in the 1.0 (`App_`) framework. | library/app/email/template.php, library/app/email/agilant.php |
14
- | [App_Email Side Effects & Test Mode (how to send a real email that writes nothing)](features/email-test-mode-and-write-free-sends.md) | `App_Email::send()` is **not** side-effect free. | library/app/email.php, library/app/model/logs/email.php, library/app/framework.php |
15
- | [Error Capture in 1.0 (App_Error_Capture → shared 2.0 Logs DB)](features/error-capture-1-0.md) | The 1.0 side of the platform error-reporting pipeline (TRUE-78188). | library/app/error/capture.php, library/app/error.php, library/app/exception/business.php, library/app/api/toga2.php, library/app/cloud.php, worker/config.worker.ini, worker/crons/toga2/compass/workflow/1_transmit_compass_sales_orders_to_mits.php |
16
- | [HTTP 500 Error Monitor (App_SystemMonitor_500Error) — and why its \"Error Type\" is not a diagnosis](features/http-500-error-monitor.md) | `App_SystemMonitor_500Error` (`library/app/systemmonitor/500error.php`, title **"HTTP 500 Error Alert"**) is the 1.0 system monitor that watches **`Logs.Api` fo | library/app/systemmonitor/500error.php, worker/crons/infrastructure/system_monitors.php, api2/Controller/Index.php, _underscore/Error.php |
17
- | [1.0 MVC Page Pattern & New-App Skeleton](features/mvc-page-pattern-and-app-skeleton.md) | This is the **reusable recipe for standing up a new 1.0 (`App_`) application** and for adding pages to one — the folder-based MVC routing, the page lifecycle, t | library/app/framework.php, library/app/frameworkindex.php, library/app/mvc.php, library/app/database.php, library/app/model.php, library/app/config.php |
18
- | [NetSuite File Cabinet Content Retrieval via RESTlet (fetchInvoiceFile)](features/netsuite-filecabinet-restlet.md) | How 1.0 pulls **File Cabinet binary content** (invoice PDFs) out of NetSuite over REST. | library/app/api/netsuite/rest.php, worker/crons/toga2/netsuite/netsuite_restlet_filecontent.js, worker/config.worker.ini |
19
- | [assetType from NetSuite itemtype during Item Sync (opt-in per client)](features/netsuite-item-assettype-sync.md) | `getCreateItem()` never sent `assetType`, so **every item the NetSuite importer created had `Items.assetTypeId = NULL`** — for every client, since the importer | library/app/api/toga2.php, library/app/api/netsuite/rest.php, worker/crons/toga2/netsuite/common_sync_togasupply.php, worker/crons/toga2/netsuite/sync_togasupply_elite.php |
20
- | [isFulfillable from NetSuite during Item Sync (Phase 1)](features/netsuite-item-isfulfillable-sync.md) | This is the **1.0 (Phase 1)** half of the `isFulfillable` feature: reading the NetSuite `isfulfillable` flag during item sync and stamping it onto the **Agilant | library/app/netsuite.php, library/app/api/toga2.php, worker/crons/toga2/netsuite/common_sync_togasupply.php, worker/crons/toga2/netsuite/backfill_isfulfillable_jul5.php |
21
- | [NetSuite SuiteQL/REST API Reference](features/netsuite-suiteql-api-reference.md) | General working reference for the Agilant NetSuite integration: how to authenticate, how SuiteQL behaves, and the confirmed schema of the tables/columns/codes w | library/app/api/netsuite/rest.php, library/ssl/netsuite_ec_key.pem, test/@dave/Junk Drawer/nsq.php |
22
- | [NetSuite SuiteQL/REST Shim — Field Semantics](features/netsuite-suiteql-rest-shim.md) | `App_Api_Netsuite_Rest` is the REST/SuiteQL replacement for the deprecated NetSuite SOAP toolkit. | library/app/api/netsuite/rest.php, library/app/netsuite.php, worker/crons/toga2/forecast2/common_import_sales_from_netsuite.php |
23
- | [NetSuite Sync Alert Monitor (App_SystemMonitor_NetSuiteIntegration)](features/netsuite-sync-alert-monitor.md) | `App_SystemMonitor_NetSuiteIntegration` (`library/app/systemmonitor/netsuiteintegration.php`, title **"NetSuite Sync Alert"**) is a 1.0 system monitor that watc | library/app/systemmonitor/netsuiteintegration.php, worker/crons/infrastructure/system_monitors.php |
24
- | [Startech PC Matic B2B Sync (library)](features/startech-pcmaticb2b-sync.md) | `library/app/api/toga2.php` handles bidirectional ticket sync for PC Matic B2B between TOGaDesk 1.0 and TOGA 2.0. | library/app/api/toga2.php, library/app/api/startechticket.php, worker/crons/toga2/startech/common_import_supporting_records.php |
25
- | [App_Api_Toga2 — TOGa2 API Client & 1.0↔2.0 Sync Bridge](features/toga2-api-client-and-bridge.md) | `App_Api_Toga2` (`library/app/api/toga2.php`, ~8400 lines) is the **1.0-side client for the TOGa 2 (`_underscore`/api2) public API** *and* the home of the cross | library/app/api/toga2.php, worker/crons/toga2/aig/sync_togasupply_aig.php, worker/crons/toga2/wje/sync_togasupply_wje.php, test/@Mark/AIG/test_multi_email.php |
3
+ | Doc | Summary |
4
+ |-----|---------|
5
+ | [Library (1.0 Framework) Architecture](architecture.md) | `library` is the shared library repository for **all 1.0 (legacy) applications** — the `App_` framework. |
6
+ | [Address Validation Gateway (App_Api_OfficeDepot::validateAddress + USPS fallback)](features/address-validation-gateway.md) | `App_Api_OfficeDepot::validateAddress()` is the shared 1.0 (`App_`) address-validation gateway. |
7
+ | [Where a new App_ class goes — the app/ folder IS a behavioral contract](features/app-class-placement-base-contracts.md) | In `library/app/`, choosing a folder is **not** a filing decision — the autoloader maps `App_<Folder>_<File>` to `app/<folder>/<file>.php`, and each folder's ba |
8
+ | [App_Sso — Reusable 1.0 SSO Initiation (SP-initiated SAML via saml.togahub.com)](features/app-sso-initiation.md) | `App_Sso` (`library/app/sso.php`) is the **1.0 port of the 2.0 SAML gateway's SP-initiated SSO initiation**, packaged as a reusable, framework-level capability |
9
+ | [Cron Execution Monitoring (App_Framework check-in/out → CronJobExecutions)](features/cron-execution-monitoring.md) | `App_Framework::cronInitialization()` / `App_Framework::cronFinished()` (in `library/app/framework.php`) give every 1.0 (`App_`) cron job a check-in/check-out l |
10
+ | [Diagnostic Dialog — View Recommended Services Routing](features/diagnostic-dialog-view-recommended-services.md) | Two "View Recommended Services" buttons exist in the TOGa Refresh 2026 SR view: 1. |
11
+ | [Elite Freshservice Sync (library)](features/elite-freshservice-sync.md) | `App_Api_Toga2` in `library/app/api/toga2.php` orchestrates bidirectional sync between TOGA 2 and TOGaDesk. |
12
+ | [App_Email Queued Sending & Attachments (Common.EmailsQueued)](features/email-queue-attachments.md) | `App_Email::send()` can either send **inline** (PHPMailer talks to SES right there) or **queue** the message: `base64(serialize($this))` is inserted into `Commo |
13
+ | [Branded HTML Email Templates (App_Email_Template)](features/email-templates.md) | `App_Email_Template` (`app/email/template.php`) is the base class for branded HTML emails in the 1.0 (`App_`) framework. |
14
+ | [App_Email Side Effects & Test Mode (how to send a real email that writes nothing)](features/email-test-mode-and-write-free-sends.md) | `App_Email::send()` is **not** side-effect free. |
15
+ | [Error Capture in 1.0 (App_Error_Capture → shared 2.0 Logs DB)](features/error-capture-1-0.md) | The 1.0 side of the platform error-reporting pipeline (TRUE-78188). |
16
+ | [HTTP 500 Error Monitor (App_SystemMonitor_500Error) — and why its \"Error Type\" is not a diagnosis](features/http-500-error-monitor.md) | `App_SystemMonitor_500Error` (`library/app/systemmonitor/500error.php`, title **"HTTP 500 Error Alert"**) is the 1.0 system monitor that watches **`Logs.Api` fo |
17
+ | [1.0 MVC Page Pattern & New-App Skeleton](features/mvc-page-pattern-and-app-skeleton.md) | This is the **reusable recipe for standing up a new 1.0 (`App_`) application** and for adding pages to one — the folder-based MVC routing, the page lifecycle, t |
18
+ | [NetSuite File Cabinet Content Retrieval via RESTlet (fetchInvoiceFile)](features/netsuite-filecabinet-restlet.md) | How 1.0 pulls **File Cabinet binary content** (invoice PDFs) out of NetSuite over REST. |
19
+ | [assetType from NetSuite itemtype during Item Sync (opt-in per client)](features/netsuite-item-assettype-sync.md) | `getCreateItem()` never sent `assetType`, so **every item the NetSuite importer created had `Items.assetTypeId = NULL`** — for every client, since the importer |
20
+ | [isFulfillable from NetSuite during Item Sync (Phase 1)](features/netsuite-item-isfulfillable-sync.md) | This is the **1.0 (Phase 1)** half of the `isFulfillable` feature: reading the NetSuite `isfulfillable` flag during item sync and stamping it onto the **Agilant |
21
+ | [NetSuite SuiteQL/REST API Reference](features/netsuite-suiteql-api-reference.md) | General working reference for the Agilant NetSuite integration: how to authenticate, how SuiteQL behaves, and the confirmed schema of the tables/columns/codes w |
22
+ | [NetSuite SuiteQL/REST Shim — Field Semantics](features/netsuite-suiteql-rest-shim.md) | `App_Api_Netsuite_Rest` is the REST/SuiteQL replacement for the deprecated NetSuite SOAP toolkit. |
23
+ | [NetSuite Sync Alert Monitor (App_SystemMonitor_NetSuiteIntegration)](features/netsuite-sync-alert-monitor.md) | `App_SystemMonitor_NetSuiteIntegration` (`library/app/systemmonitor/netsuiteintegration.php`, title **"NetSuite Sync Alert"**) is a 1.0 system monitor that watc |
24
+ | [Startech PC Matic B2B Sync (library)](features/startech-pcmaticb2b-sync.md) | `library/app/api/toga2.php` handles bidirectional ticket sync for PC Matic B2B between TOGaDesk 1.0 and TOGA 2.0. |
25
+ | [App_Api_Toga2 — TOGa2 API Client & 1.0↔2.0 Sync Bridge](features/toga2-api-client-and-bridge.md) | `App_Api_Toga2` (`library/app/api/toga2.php`, ~8400 lines) is the **1.0-side client for the TOGa 2 (`_underscore`/api2) public API** *and* the home of the cross |
@@ -6,12 +6,14 @@ project: Library
6
6
  client: shared
7
7
  type: feature
8
8
  status: active
9
- updated: 2026-08-25
9
+ updated: 2026-09-08
10
10
  owners: [dfranks, bala]
11
11
  files:
12
12
  - library/app/framework.php
13
13
  related:
14
14
  - ../../worker/architecture.md
15
+ - ./email-queue-attachments.md
16
+ - ../../../2.0/apps/worker2/features/oneuptime-worker2-monitoring.md
15
17
  - ../../worker/workflows/tracing-a-worker-cron-run-in-production.md
16
18
  ---
17
19
 
@@ -51,6 +53,28 @@ row in `db_log` and of the per-job Sentry check-in monitors.
51
53
  (`db_common`), *not* by POSTing from 1.0 to a 2.0 API endpoint. Per Jeff Cardinal, 1.0 code
52
54
  must not POST to 2.0 code; the direct shared-DB write is the sanctioned path (TRUE-78182).
53
55
 
56
+ ## For an emailing cron, this table is the ONLY proof of a run
57
+
58
+ There is **no sent-email log for a 1.0 `App_Email` / `App_Email_Agilant` ops email**, so
59
+ `CronJobExecutions` is the only per-run evidence a 1.0 emailing cron leaves:
60
+
61
+ - `Logs_<Client>.Email` holds **2.0 application email only**. Verified 2026-09-08: zero rows in
62
+ `Logs_Compass.Email` for the Compass Refresh Exception Report, a 1.0 cron email that has been
63
+ sending for months.
64
+ - `Common.EmailsQueued` is a **queue drained on send**, holding a serialized object — not a log.
65
+ See [App_Email Queued Sending & Attachments](./email-queue-attachments.md).
66
+
67
+ Two consequences:
68
+
69
+ 1. **A cron whose only output is a "something is wrong" email is effectively unmonitored** — a
70
+ silent day and a dead cron look identical. Monitor the **backlog the cron drains**, not the
71
+ email. See
72
+ [OneUptime push-metric monitors for 2.0 workers](../../../2.0/apps/worker2/features/oneuptime-worker2-monitoring.md).
73
+ 2. **worker2 (2.0) has no proven connection to the legacy `Common` DB**, so a 2.0 OneUptime
74
+ monitor cannot read `CronJobExecutions` today. A generic "this 1.0 cron has not checked in"
75
+ monitor is therefore blocked on that connection, not on the data — the columns needed
76
+ (`dtCheckIn`, `job`, `instanceId`) are already there.
77
+
54
78
  ## Gotchas
55
79
 
56
80
  - **⚠ A run skipped by the overlap guard leaves NO ROW — absence is ambiguous.**
@@ -76,6 +100,12 @@ row in `db_log` and of the per-job Sentry check-in monitors.
76
100
  logic. (Fixed 2026-07-06: consolidated back to one `db_common` INSERT/UPDATE pair.)
77
101
 
78
102
  ## Change history
103
+ - 2026-09-08 — Recorded that `CronJobExecutions` is the **only** per-run proof for a 1.0
104
+ *emailing* cron, because there is no sent-email log: `Logs_<Client>.Email` is 2.0-only (zero
105
+ rows for a 1.0 report that has emailed for months) and `Common.EmailsQueued` is a queue drained
106
+ on send. Hence the rule to monitor the backlog rather than the email, and the note that worker2
107
+ has no proven legacy-`Common` connection, so a 2.0 "cron has not checked in" monitor is not
108
+ possible yet. No code change. (bala)
79
109
  - 2026-08-25 — Corrected the schema note (prod `CronJobExecutions` **does** carry a `note` TEXT
80
110
  column, unused by `App_Framework`, usable for temporary cron tracing) and separated it from the
81
111
  `note = 'Started execution'` row `cronInitialization()` writes to `Log` on `db_log`. Recorded
@@ -6,12 +6,14 @@ project: Library
6
6
  client: shared
7
7
  type: feature
8
8
  status: active
9
- updated: 2026-08-17
9
+ updated: 2026-09-08
10
10
  owners: ["jcardinal", "mhammontree"]
11
11
  files:
12
12
  - library/app/error/capture.php
13
13
  - library/app/error.php
14
14
  - library/app/exception/business.php
15
+ - library/app/exception/api.php
16
+ - library/app/api/netsuite/rest.php
15
17
  - library/app/api/toga2.php
16
18
  - library/app/cloud.php
17
19
  - worker/config.worker.ini
@@ -78,6 +80,50 @@ whichever occurrence happened to be seen first — i.e. one arbitrary order numb
78
80
 
79
81
  Compass USA's sales-order → MITS transmit rejection was the first business-exception use case.
80
82
 
83
+ ### `App_Exception_Api` — one Issue per outbound-API outage across both frameworks (added 2026-09-08)
84
+
85
+ The 1.0 twin of 2.0's `_Exception_Api`. Read the
86
+ [2.0 section](../../../2.0/apps/_underscore/features/error-reporting-issue-event.md#outbound-third-party-api-errors-fingerprint-on-servicestatusoperation-not-the-trace-added-2026-09-08)
87
+ for the full rationale — this covers only the 1.0 specifics.
88
+
89
+ - **`library/app/exception/api.php`** — `class App_Exception_Api extends Exception`, carrying
90
+ `service` / `httpStatus` / `operation`. **PHP 7.2, so untyped properties with `@var` docblocks**
91
+ (typed properties fail to parse in `library/` — same trap as `App_Exception_Business`). Extends
92
+ plain `Exception`, so it stays HTTP 500 + creates a `Logs.Issue`.
93
+ - **`App_Error_Capture` gains the same `instanceof` fingerprint branch** →
94
+ `buildApiFingerprint()`, keyed on `service + httpStatus + operation`, with the fingerprint text
95
+ using the **FIXED literal `'apiError'` prefix** — byte-identical to 2.0's, so one
96
+ service+status+operation is **one Issue whichever framework threw it**. Do not derive the prefix
97
+ from the class name (`App_Exception_Api` ≠ `_Exception_Api`), and do not reformat the string on
98
+ either side.
99
+ - **A new `firstApplicationArea()` helper was added here.** The 1.0 twin previously lacked it — the
100
+ DB fingerprint branch is 2.0-only, so 1.0 had no such helper before this. `buildApiFingerprint()`
101
+ caps `operation` at 200 chars, matching 2.0.
102
+
103
+ #### The NetSuite client is where granularity is decided — `library/app/api/netsuite/rest.php`
104
+
105
+ A private `buildApiException(message, method, url, statusCode)` was added, and the **3 HTTP-status
106
+ throw sites** (OAuth token, API request, RESTlet call) switched from plain `\Exception` to it. The
107
+ **3 config/parse-error throws** in the same file (no HTTP status) were left as plain `\Exception`
108
+ on purpose.
109
+
110
+ - **5xx** (NetSuite-side outage) → `operation = 'SERVER_ERROR'` (constant), so the whole outage
111
+ folds into ONE Issue regardless of endpoint or client.
112
+ - **4xx** (request-specific) → `operation = "<METHOD> <path>"`, so a genuine per-endpoint problem
113
+ keeps its own Issue. Because every `list*` call goes through `suiteqlListAll()` hitting the one
114
+ endpoint `POST /query/v1/suiteql`, all the `list*` 400s collapse together on their own.
115
+ - **cso hardening (in `buildApiException`):** id-like path segments are masked
116
+ (`preg_replace('#/\d+(?=/|$)#', '/{id}')`); an empty parsed path uses a fixed `UNKNOWN_PATH`
117
+ placeholder — **never the raw `$url`**, which would carry the query string back into the shared
118
+ fingerprint. Net guarantee: only `service` + `httpStatus` + `operation` (all controlled values)
119
+ reach `Logs.IssueFingerprint` — the vendor message body never does.
120
+
121
+ > **OPEN (pre-existing, not fixed here):** the assembled failure message still carries
122
+ > `print_r($response)` (the full vendor body, which can hold one tenant's PII) into
123
+ > `Issue.subject` / `Event.errorMessage` on the shared `Logs` cluster. Unchanged from the old plain
124
+ > throw; never touches the fingerprint. Worth a future ticket to cap/redact — same shape as the
125
+ > raw-SQL-in-subject open item on the 2.0 doc.
126
+
81
127
  ### Client attribution — resolved from the API client uuid at `App_Api_Toga2::authenticate()`
82
128
 
83
129
  `App_Error::setCurrentClientId()` exists in 1.0 for parity with 2.0's ambient current-client, but
@@ -177,6 +223,10 @@ exists in `api2`/`worker2`. So 1.0 reads the AL1 container config at
177
223
 
178
224
  ## Gotchas / known issues
179
225
 
226
+ - **A `*/` inside PHP docblock prose silently closes the comment early.** Writing something like
227
+ `list*/fetch*` in a `/** … */` block ends the docblock at the `*/`, and `php -l` then reports a
228
+ confusing `syntax error, unexpected token` on a later line. Hit while documenting the NetSuite
229
+ throw sites. Avoid the literal `*/` in docblock text.
180
230
  - **⚠ A grouped `Logs.Issue` row can show a STALE error id — read the live api2 transaction log for
181
231
  the current error.** Two facts combine to mislead: (1) `Event.errorMessage` is **`varchar(255)`**,
182
232
  so a long API response is **truncated** — often before the trailing error id; and (2)
@@ -229,6 +279,23 @@ exists in `api2`/`worker2`. So 1.0 reads the AL1 container config at
229
279
 
230
280
  ## Change history
231
281
 
282
+ - 2026-09-08 — **Added the 1.0 twin of the outbound-API fingerprint fix.** NetSuite failures were
283
+ **over-splitting** into ~40 Issues per outage (top frames differ per `list*`/`fetch*` caller and
284
+ per-client cron; prod `Logs.Issue` 678–692 = one HTTP 500 OAuth outage, 699–731 = one HTTP 400
285
+ wave). New `App_Exception_Api` (`library/app/exception/api.php`, extends plain `Exception`,
286
+ **PHP 7.2 untyped `@var` props**; `service`/`httpStatus`/`operation`), an `instanceof`
287
+ `buildApiFingerprint()` branch in `App_Error_Capture` keyed on service+status+operation with a
288
+ **FIXED literal `'apiError'` prefix** byte-identical to 2.0's (so one outage = one Issue across
289
+ both frameworks), and a new `firstApplicationArea()` helper (1.0 lacked it — the DB branch is
290
+ 2.0-only). `library/app/api/netsuite/rest.php` gained a private `buildApiException()` and its
291
+ 3 HTTP-status throw sites moved off plain `\Exception` (the 3 config/parse throws stayed plain on
292
+ purpose); granularity is set there — 5xx → constant `operation='SERVER_ERROR'`, 4xx →
293
+ `"<METHOD> <path>"` (all `list*` go through one `suiteql` endpoint so their 400s collapse). cso
294
+ hardening: id-like path segments masked to `/{id}`, empty path → `UNKNOWN_PATH` (never the raw
295
+ URL), `operation` capped at 200 chars — only controlled values reach the fingerprint. Deploy
296
+ `_underscore`, then `library`, then redeploy `worker`; not yet proven against a live failure.
297
+ **OPEN (pre-existing):** the message still carries `print_r($response)` (vendor body / PII) into
298
+ `Issue.subject`/`Event.errorMessage` — never touches the fingerprint. (jcardinal)
232
299
  - 2026-08-17 — Recorded a diagnostic trap: a grouped `Logs.Issue` row can show a **stale error id**
233
300
  because `Event.errorMessage` is `varchar(255)` (truncates a long API response, often before the
234
301
  error id) and `Issue.subject`/`errorMessage` keep the **first-occurrence** text — observed issue
@@ -6,7 +6,7 @@ project: Library
6
6
  client: shared
7
7
  type: feature
8
8
  status: active
9
- updated: 2026-09-02
9
+ updated: 2026-09-08
10
10
  owners: [jcardinal, mhammontree, bala]
11
11
  files:
12
12
  - library/app/api/toga2.php
@@ -413,6 +413,14 @@ enable flags** and an optional `$monitorTogadeskDepartmentIds[]`:
413
413
 
414
414
  ## Change history
415
415
 
416
+ - 2026-09-08 - Added `updateTransferOrderStageToClosed(&$nsOrder, array &$clientConfiguration): bool`
417
+ and the constant `TRANSFER_ORDER_STATUS__CLOSED = 'closed'` (also now used by the `case 'Closed'` in
418
+ the transfer-order status switch). It is a **stage-only** writer: it never touches line items, so it
419
+ cannot reproduce the URI-length / HTTP 414 blowup that the importer's `Closed` skip exists to avoid,
420
+ and it never creates a transfer order we did not import. It exists because the sync loop's
421
+ `status === 'Closed'` `continue` sits before the transfer-order branch, leaving 18 NYCHH transfer
422
+ orders on `Pending`. Written, **not committed or deployed**. Mechanism and the rejected alternative:
423
+ [per-client sync](../../worker/features/netsuite-togasupply-per-client-sync.md). (bala)
416
424
  - 2026-09-02 — `syncPurchaseOrderFromNetsuite`'s cleanup DELETE ("remove dropped items") was a **bare
417
425
  throwing** DELETE that froze the whole PURCHASE_ORDERS section whenever a NetSuite-dropped PO line
418
426
  still had a RESTRICT child (item receipt `ItemReceiptItems.purchaseOrderItemId`, or an SO/TO link).
@@ -1,20 +1,20 @@
1
1
  # test (Test) — 1.0 knowledge
2
2
 
3
- | Doc | Summary | Files |
4
- |-----|---------|-------|
5
- | [Test (test) Architecture](architecture.md) | `test` (project **Test**) is a **repository of ad-hoc developer scripts** — not a deployed application. | test/team/ |
6
- | [2.0 Deployment — Per-Client SQL Generator](features/2-0-deployment-client-sql.md) | `team/2.0 deployment/generate_client_sql.php` fans a single SQL change-set out across **all 2.0 client databases**. | test/team/2.0 deployment/generate_client_sql.php, test/team/2.0 deployment/Clients_Db.txt, test/team/2.0 deployment/Client.sql |
7
- | [Active Directory Authentication Test](features/active-directory-auth-test.md) | `team/active_directory_authentication_test.php` is an interactive CLI tool to test **Active Directory authentication**. | test/team/active_directory_authentication_test.php |
8
- | [Compass retrofix2 — Retroactive Data-Fix SQL Generator](features/compass-retrofix2-sql-generator.md) | `@jeff/compass/retrofix2.php` is a standalone **1.0 `App_`** script that retroactively repairs historical Compass USA (`Client_Compass`, 2.0) order data left in | test/@jeff/compass/retrofix2.php |
9
- | [Create Elastic Beanstalk Environment (script)](features/create-elastic-beanstalk.md) | `team/aws/create_elastic_beanstalk.php` is a **standalone** (no `App_` framework) constants-driven PHP generator. | test/team/aws/create_elastic_beanstalk.php |
10
- | [Developer Generators (password, UUID)](features/dev-generators.md) | Two tiny **1.0 `App_` framework** convenience scripts for everyday developer needs. | test/team/generate_password.php, test/team/uuid.php |
11
- | [Forecast vs NetSuite Discrepancy Analysis](features/forecast-netsuite-discrepancy-analysis.md) | `team/forecast-netsuite/discrepancy_analysis.php` detects discrepancies between our **Forecast database** and **NetSuite** (the source of truth for all sales da | test/team/forecast-netsuite/discrepancy_analysis.php |
12
- | [GitHub Audit Script (team/github_audit.php)](features/github-audit-script.md) | `team/github_audit.php` is a **standalone** (no `App_` framework) browser/CLI script that reports lines added/removed, commits, unique authors, and active repos | test/team/github_audit.php |
13
- | [@goagilant.com → @togatech.com Email-Domain Migration (1.0 + 2.0)](features/goagilant-to-togatech-email-migration.md) | Reference + technique for migrating the company email domain `@goagilant.com` → `@togatech.com` across **both** platforms. | migrate_goagilant_to_togatech_2026-06-26.sql, migrate_goagilant_to_togatech_LEGACY_2026-06-26.sql |
14
- | [Static (no-DB) Regression Harness for 1.0 Logic + Source Drift Guard](features/static-no-db-regression-harness.md) | 1.0 has **no PHPUnit**, and most of its business logic sits inside methods that also write SQL, so "just call it" means standing up a client database. | test/@Mark/AIG/test_multi_email.php, test/@Mark/TRUE-80952/test_queued_email_attachments.php, library/app/database.php, library/app/api/toga2.php |
15
- | [TableView Builder (2.0 TableViews SQL generator)](features/tableview-builder.md) | `team/tableViewBuilder/` generates SQL `INSERT` statements for the **2.0 `TableViews`**, `TableViewFields`, and `TableViewJoins` tables from a plain SQL `SELECT | test/team/tableViewBuilder/TableViewGenerator.php, test/team/tableViewBuilder/index.php, test/team/tableViewBuilder/Instructions.md |
16
- | [Talos Knowledge Base Pipeline (Uploader + Processor)](features/talos-kb-pipeline.md) | `team/talos/` holds the two-script web tooling that feeds the **TOGa Talos** (TOGa IQ) AI knowledge bases. | test/team/talos/kb_uploader.php, test/team/talos/kb_processor.php, test/team/talos/kb_processor.ini |
17
- | [TOGa 2.0 Client Onboarding SQL Generator](features/toga2-client-onboarding-sql.md) | > **Superseded by the browser wizard.** The generation logic here was extracted into the reusable > `OnboardingSqlGenerator` class and wrapped in a local browse | test/team/generate_toga2_onboarding_sql.php |
18
- | [TOGa 2.0 Client Onboarding Wizard (local tool)](features/toga2-onboarding-wizard.md) | A **local browser wizard** (`test/team/onboarding/`) that automates 2.0 client onboarding end to end: it (1) gathers developer input and **generates all onboard | test/team/onboarding/index.php, test/team/onboarding/classes/OnboardingSqlGenerator.php, test/team/onboarding/classes/DbchangesConsolidator.php, test/team/onboarding/README.md |
19
- | [TOGa 2.0 User Cross-Client Access SQL Generator](features/toga2-user-cross-client-access-sql.md) | `team/generate_toga2_user_access_sql.php` generates SQL to grant an existing 2.0 user from a **home client** access to a **cross client**. | test/team/generate_toga2_user_access_sql.php |
20
- | [URL & Domain Markdown Document Builder](features/url-domain-markdown-document.md) | `team/build_url_domain_markdown_document.php` generates a **markdown document of our URLs and domains** by pulling environments and domains from the 2.0 platfor | test/team/build_url_domain_markdown_document.php |
3
+ | Doc | Summary |
4
+ |-----|---------|
5
+ | [Test (test) Architecture](architecture.md) | `test` (project **Test**) is a **repository of ad-hoc developer scripts** — not a deployed application. |
6
+ | [2.0 Deployment — Per-Client SQL Generator](features/2-0-deployment-client-sql.md) | `team/2.0 deployment/generate_client_sql.php` fans a single SQL change-set out across **all 2.0 client databases**. |
7
+ | [Active Directory Authentication Test](features/active-directory-auth-test.md) | `team/active_directory_authentication_test.php` is an interactive CLI tool to test **Active Directory authentication**. |
8
+ | [Compass retrofix2 — Retroactive Data-Fix SQL Generator](features/compass-retrofix2-sql-generator.md) | `@jeff/compass/retrofix2.php` is a standalone **1.0 `App_`** script that retroactively repairs historical Compass USA (`Client_Compass`, 2.0) order data left in |
9
+ | [Create Elastic Beanstalk Environment (script)](features/create-elastic-beanstalk.md) | `team/aws/create_elastic_beanstalk.php` is a **standalone** (no `App_` framework) constants-driven PHP generator. |
10
+ | [Developer Generators (password, UUID)](features/dev-generators.md) | Two tiny **1.0 `App_` framework** convenience scripts for everyday developer needs. |
11
+ | [Forecast vs NetSuite Discrepancy Analysis](features/forecast-netsuite-discrepancy-analysis.md) | `team/forecast-netsuite/discrepancy_analysis.php` detects discrepancies between our **Forecast database** and **NetSuite** (the source of truth for all sales da |
12
+ | [GitHub Audit Script (team/github_audit.php)](features/github-audit-script.md) | `team/github_audit.php` is a **standalone** (no `App_` framework) browser/CLI script that reports lines added/removed, commits, unique authors, and active repos |
13
+ | [@goagilant.com → @togatech.com Email-Domain Migration (1.0 + 2.0)](features/goagilant-to-togatech-email-migration.md) | Reference + technique for migrating the company email domain `@goagilant.com` → `@togatech.com` across **both** platforms. |
14
+ | [Static (no-DB) Regression Harness for 1.0 Logic + Source Drift Guard](features/static-no-db-regression-harness.md) | 1.0 has **no PHPUnit**, and most of its business logic sits inside methods that also write SQL, so "just call it" means standing up a client database. |
15
+ | [TableView Builder (2.0 TableViews SQL generator)](features/tableview-builder.md) | `team/tableViewBuilder/` generates SQL `INSERT` statements for the **2.0 `TableViews`**, `TableViewFields`, and `TableViewJoins` tables from a plain SQL `SELECT |
16
+ | [Talos Knowledge Base Pipeline (Uploader + Processor)](features/talos-kb-pipeline.md) | `team/talos/` holds the two-script web tooling that feeds the **TOGa Talos** (TOGa IQ) AI knowledge bases. |
17
+ | [TOGa 2.0 Client Onboarding SQL Generator](features/toga2-client-onboarding-sql.md) | > **Superseded by the browser wizard.** The generation logic here was extracted into the reusable > `OnboardingSqlGenerator` class and wrapped in a local browse |
18
+ | [TOGa 2.0 Client Onboarding Wizard (local tool)](features/toga2-onboarding-wizard.md) | A **local browser wizard** (`test/team/onboarding/`) that automates 2.0 client onboarding end to end: it (1) gathers developer input and **generates all onboard |
19
+ | [TOGa 2.0 User Cross-Client Access SQL Generator](features/toga2-user-cross-client-access-sql.md) | `team/generate_toga2_user_access_sql.php` generates SQL to grant an existing 2.0 user from a **home client** access to a **cross client**. |
20
+ | [URL & Domain Markdown Document Builder](features/url-domain-markdown-document.md) | `team/build_url_domain_markdown_document.php` generates a **markdown document of our URLs and domains** by pulling environments and domains from the 2.0 platfor |
@@ -1,6 +1,6 @@
1
1
  # toga (TOGa) — 1.0 knowledge
2
2
 
3
- | Doc | Summary | Files |
4
- |-----|---------|-------|
5
- | [Bundle Confirmation — Cart Preservation When Adding Add-On Services](features/bundleconfirmation-cart-preservation.md) | Fix: adding any add-on service (Data Transfer, Promotional Bundle, New PC Services, etc.) was silently removing the 1-year tech support SKU from the cart. | toga/app/togarefresh2026/servicerequests/bundleconfirmation.php |
6
- | [ODP Customer Search — Loyalty Number (merchantId) Persistence](features/odp-customer-search-loyalty-persistence.md) | Fix: the ODP loyalty number (`memberId`) stopped persisting to `Customers.merchantId` in the `TOGA_ODP` legacy database — the last non-null value was **2023-11- | toga/app/togarefresh2026/customersearch/view.php, library/app/model/customer.php |
3
+ | Doc | Summary |
4
+ |-----|---------|
5
+ | [Bundle Confirmation — Cart Preservation When Adding Add-On Services](features/bundleconfirmation-cart-preservation.md) | Fix: adding any add-on service (Data Transfer, Promotional Bundle, New PC Services, etc.) was silently removing the 1-year tech support SKU from the cart. |
6
+ | [ODP Customer Search — Loyalty Number (merchantId) Persistence](features/odp-customer-search-loyalty-persistence.md) | Fix: the ODP loyalty number (`memberId`) stopped persisting to `Customers.merchantId` in the `TOGA_ODP` legacy database — the last non-null value was **2023-11- |
@@ -1,16 +1,16 @@
1
1
  # togadesk (TOGa Desk) — 1.0 knowledge
2
2
 
3
- | Doc | Summary | Files |
4
- |-----|---------|-------|
5
- | [TOGa Desk Architecture](architecture.md) | TOGa Desk is the staff-facing support desk **and field-service platform** (analysts work at `/desk/`). | desk/index.php, desk/includes/loader.php, desk/config.php, desk/includes/controllers/actions.php, desk/includes/controllers/data.php, desk/includes/controllers/modals.php, desk/includes/classes/class.app.php, desk/includes/classes/class.ticket.php, desk/api/index.php, desk/api/resources/tickets.php, crons/tickets.php, desk/includes/functions.php, desk/template/header.php, ebs/setup_phpini.php |
6
- | [Email-to-Ticket Intake (crons/tickets.php)](features/email-to-ticket-intake.md) | TOGa Desk ingests support email into tickets through a cron-driven IMAP poller (`crons/tickets.php`) plus a postfix pipe variant (`crons/pipe.php`). | crons/tickets.php, crons/tickets_prod.php, crons/pipe.php, desk/includes/classes/class.ticket.php, desk/includes/classes/class.user.php, vendor/classes/class.imap.php |
7
- | [Field-Service Dispatch (central / repair orders)](features/field-service-dispatch.md) | The **central** subsystem is TOGa Desk's field-service dispatch domain: repair-order lifecycle, technician scheduling, onsite vs depot service, parts, and shipm | desk/includes/controllers/actions/central/, desk/includes/classes/class.repair.php, desk/includes/classes/class.repairhistory.php, desk/_/browser/datatable/central.php, desk/template/pages/central.php, desk/template/pages/central/view.php, desk/template/modals/central/addTracking.php, library/app/model/togadesk/repairorder.php, library/app/model/togadesk/repairordertracking.php, library/app/api/carrier/ups.php |
8
- | [Managed Service Order Create Flow (New MSO modal → tickets/add)](features/managed-service-order-create.md) | The **Managed Service Order (MSO) create flow** is how a TOGa Desk user manually creates a managed service order: pick an End User (or a Client Location), choos | desk/includes/controllers/actions/tickets/add.php, desk/template/modals/tickets/addNew.php, desk/template/pages/managed.php, desk/template/pages/getinfo.php, desk/template/footer.php, library/app/model/togadesk/repairorder.php |
9
- | [Ticket Email Notifications (notifications table)](features/notifications.md) | Which TOGa Desk emails fire for a given client is driven **entirely by data**, not code: the `TOGaDeskSupport.notifications` table holds one row per `(clientid, | desk/includes/classes/class.notification.php, desk/includes/functions.php, desk/includes/classes/class.ticket.php, crons/tickets.php, crons/tickets_prod.php |
10
- | [Per-Client Hostname Restriction (getRestrictedClient)](features/per-client-host-restriction.md) | TOGa Desk supports **per-client branded URLs** (e.g. | desk/includes/functions.php, desk/template/header.php, _/browser/datatable/tickets, desk/includes/classes/class.ticket.php, ebs/setup_phpini.php, ebs/http_to_https.php, desk/template/modals/kb/viewDocument.php, desk/template/modals/files/aws-view.php, desk/template/modals/files/contract-view.php, template/pages/documents/view.php, template/pages/tasks/view.php |
11
- | [REST API (RPC-over-POST) & API-Key Auth](features/rest-api.md) | TOGa Desk exposes a programmatic API at `desk/api/`. | desk/api/index.php, desk/api/resources/tickets.php, desk/api/resources/assets.php, desk/api/resources/authenticate.php, desk/includes/classes/class.apikey.php, desk/includes/functions.php |
12
- | [SMB Contract Editing & the clientMspId Corruption Trap](features/smb-contract-editing.md) | The SMB contracts page (`/desk/?route=toga/smbcontracts&togaClientId=<id>`) edits `TOGA_*.SMBContracts` rows via a modal. | desk/template/modals/toga/smbcontracts/smbContract.php, desk/includes/controllers/modals/toga/smbcontracts/smbContract.php, desk/includes/controllers/actions/toga/smbcontracts/smbContract.php, desk/includes/controllers/actions/toga/smbcontracts/edit.php |
13
- | [Staff Login Authentication (signIn) — AD vs. local password](features/staff-login-authentication.md) | TOGa Desk staff login runs through `signIn()` in `desk/includes/functions.php` (~L458), reached from `desk/includes/controllers/general.php:8`. | desk/includes/functions.php, desk/includes/controllers/general.php, desk/includes/controllers/actions/user/loginAsAnother.php |
14
- | [Ticket Lifecycle (class.ticket.php)](features/ticket-lifecycle.md) | All TOGa Desk ticket creation and reply handling funnels through `Ticket` in `desk/includes/classes/class.ticket.php`. | desk/includes/classes/class.ticket.php, desk/includes/controllers/actions.php, desk/includes/controllers/actions/tickets/addReply.php, desk/api/resources/tickets.php, desk/api/resources/ticket_replies.php, crons/tickets.php, crons/pipe.php, desk/includes/controllers/actions/tickets/merge.php |
15
- | [Reverting a TOGa Desk _production Deploy (revert-forward)](workflows/production-revert-forward.md) | How to cleanly and verifiably roll back a single ticket's changes from the togadesk `_production` branch. | |
16
- | [Standalone PHP Test Script Bootstrap (TOGa Desk)](workflows/standalone-test-scripts.md) | How to write a standalone CLI PHP script that bootstraps the TOGa Desk framework for read-only testing of desk classes (e.g. | |
3
+ | Doc | Summary |
4
+ |-----|---------|
5
+ | [TOGa Desk Architecture](architecture.md) | TOGa Desk is the staff-facing support desk **and field-service platform** (analysts work at `/desk/`). |
6
+ | [Email-to-Ticket Intake (crons/tickets.php)](features/email-to-ticket-intake.md) | TOGa Desk ingests support email into tickets through a cron-driven IMAP poller (`crons/tickets.php`) plus a postfix pipe variant (`crons/pipe.php`). |
7
+ | [Field-Service Dispatch (central / repair orders)](features/field-service-dispatch.md) | The **central** subsystem is TOGa Desk's field-service dispatch domain: repair-order lifecycle, technician scheduling, onsite vs depot service, parts, and shipm |
8
+ | [Managed Service Order Create Flow (New MSO modal → tickets/add)](features/managed-service-order-create.md) | The **Managed Service Order (MSO) create flow** is how a TOGa Desk user manually creates a managed service order: pick an End User (or a Client Location), choos |
9
+ | [Ticket Email Notifications (notifications table)](features/notifications.md) | Which TOGa Desk emails fire for a given client is driven **entirely by data**, not code: the `TOGaDeskSupport.notifications` table holds one row per `(clientid, |
10
+ | [Per-Client Hostname Restriction (getRestrictedClient)](features/per-client-host-restriction.md) | TOGa Desk supports **per-client branded URLs** (e.g. |
11
+ | [REST API (RPC-over-POST) & API-Key Auth](features/rest-api.md) | TOGa Desk exposes a programmatic API at `desk/api/`. |
12
+ | [SMB Contract Editing & the clientMspId Corruption Trap](features/smb-contract-editing.md) | The SMB contracts page (`/desk/?route=toga/smbcontracts&togaClientId=<id>`) edits `TOGA_*.SMBContracts` rows via a modal. |
13
+ | [Staff Login Authentication (signIn) — AD vs. local password](features/staff-login-authentication.md) | TOGa Desk staff login runs through `signIn()` in `desk/includes/functions.php` (~L458), reached from `desk/includes/controllers/general.php:8`. |
14
+ | [Ticket Lifecycle (class.ticket.php)](features/ticket-lifecycle.md) | All TOGa Desk ticket creation and reply handling funnels through `Ticket` in `desk/includes/classes/class.ticket.php`. |
15
+ | [Reverting a TOGa Desk _production Deploy (revert-forward)](workflows/production-revert-forward.md) | How to cleanly and verifiably roll back a single ticket's changes from the togadesk `_production` branch. |
16
+ | [Standalone PHP Test Script Bootstrap (TOGa Desk)](workflows/standalone-test-scripts.md) | How to write a standalone CLI PHP script that bootstraps the TOGa Desk framework for read-only testing of desk classes (e.g. |
@@ -1,11 +1,11 @@
1
1
  # togaview (TOGa View) — 1.0 knowledge
2
2
 
3
- | Doc | Summary | Files |
4
- |-----|---------|-------|
5
- | [TOGa View Architecture](architecture.md) | TOGa View is the client-facing support portal, served per client at `<client>.togaview.com`. | index.php, reset.php, _/app/framework.php, _/app/frameworkindex.php, _/browser/pagination.php, mvc/login/post.php, mvc/ticket/get.php |
6
- | [TOGa View Login Flows & Session Variables](features/login-flows.md) | `mvc/login/post.php` tries login flows in order; the first match wins. | mvc/login/post.php, store/_/app/framework.php, _/app/framework.php, _/app/frameworkindex.php, mvc/msp_client_dashboard/post.php |
7
- | [MSP Dashboard & Ticket Visibility Rules](features/msp-dashboard.md) | Why tickets "disappear" in the TOGa View client portal: different pages scope tickets **differently**, and the MSP pages depend on `tickets.customerid` and `SMB | common/togaview/msp_dashboard.php, mvc/msp_client_dashboard, mvc/enterprise_dashboard, mvc/support/support.php |
8
- | [Retail Commerce Lifecycle (winback, purchase, claims, activation)](features/retail-commerce-lifecycle.md) | Beyond support, TOGa View hosts the **retail tech-support commerce flows**: subscription purchase/renewal (with payment), service activation, and insurance-styl | mvc/winback_landing/get.php, mvc/winback_payment/get.php, mvc/winback_payment/post.php, mvc/purchase/get.php, mvc/service_activation/get.php, mvc/claims/get.php, mvc/techsupport_app/get.php |
9
- | [Ticket Detail Page Security & Its Three Forks (common/*/ticket.php)](features/ticket-detail-page.md) | `common/togaview/ticket.php` is the ticket detail page for nearly ALL hosts — only towfoundation/newcenturyholdingsllc have their own variants; every other clie | common/togaview/ticket.php, common/towfoundation/ticket.php, common/newcenturyholdingsllc/ticket.php, mvc/ticket/get.php, mvc/ticket/post.php |
10
- | [Git & php -l Tooling Against the `_/` App Root (MSYS path mangling)](workflows/git-and-php-tooling-under-the-underscore-app-root.md) | In **Git Bash on Windows**, any command argument beginning with `_/` is rewritten by MSYS path conversion before the tool sees it. | _/app/framework.php, _/app/frameworkindex.php |
11
- | [Route 53 Hosted Zone Migration Between AWS Accounts](workflows/route53-cross-account-zone-migration.md) | How to move a domain's DNS records (a Route 53 hosted zone) from one AWS account to another. | |
3
+ | Doc | Summary |
4
+ |-----|---------|
5
+ | [TOGa View Architecture](architecture.md) | TOGa View is the client-facing support portal, served per client at `<client>.togaview.com`. |
6
+ | [TOGa View Login Flows & Session Variables](features/login-flows.md) | `mvc/login/post.php` tries login flows in order; the first match wins. |
7
+ | [MSP Dashboard & Ticket Visibility Rules](features/msp-dashboard.md) | Why tickets "disappear" in the TOGa View client portal: different pages scope tickets **differently**, and the MSP pages depend on `tickets.customerid` and `SMB |
8
+ | [Retail Commerce Lifecycle (winback, purchase, claims, activation)](features/retail-commerce-lifecycle.md) | Beyond support, TOGa View hosts the **retail tech-support commerce flows**: subscription purchase/renewal (with payment), service activation, and insurance-styl |
9
+ | [Ticket Detail Page Security & Its Three Forks (common/*/ticket.php)](features/ticket-detail-page.md) | `common/togaview/ticket.php` is the ticket detail page for nearly ALL hosts — only towfoundation/newcenturyholdingsllc have their own variants; every other clie |
10
+ | [Git & php -l Tooling Against the `_/` App Root (MSYS path mangling)](workflows/git-and-php-tooling-under-the-underscore-app-root.md) | In **Git Bash on Windows**, any command argument beginning with `_/` is rewritten by MSYS path conversion before the tool sees it. |
11
+ | [Route 53 Hosted Zone Migration Between AWS Accounts](workflows/route53-cross-account-zone-migration.md) | How to move a domain's DNS records (a Route 53 hosted zone) from one AWS account to another. |
@@ -1,22 +1,22 @@
1
1
  # tools (Tools) — 1.0 knowledge
2
2
 
3
- | Doc | Summary | Files |
4
- |-----|---------|-------|
5
- | [Tools (1.0 Internal-Tools App) Architecture](architecture.md) | **Tools** is a standalone 1.0 (`App_`) application that houses many small internal tools behind simple interfaces, gated by Client_True staff persona. | tools/index.php, tools/.ebextensions/020_setup_git_libraries.config, tools/_/app/framework.php, tools/_/app/frameworkindex.php, tools/assets/img/favicon/favicon.ico, tools/assets/img/favicon/favicon-32x32.png, tools/assets/img/favicon/favicon-16x16.png, tools/assets/img/favicon/apple-touch-icon.png, tools/_/app/auth.php, tools/_/app/nav.php, tools/common/header.php, tools/common/footer.php, tools/mvc/get.php, tools/mvc/_TEMPLATE/get.php, tools/docs/ADDING_A_TOOL.md, tools/assets/css/theme.css, tools/assets/js/theme.js |
6
- | [/clickup/aliases — ClickUp Label-Alias Admin (Tools → 2.0 Team schema)](features/clickup-label-aliases-admin.md) | The human side of the NetSuite→ClickUp **Stakeholders / End Customer** labels. | tools/mvc/clickup/aliases/get.php, tools/mvc/clickup/aliases/post.php, tools/_/app/clickup/aliases.php, tools/_/app/nav.php |
7
- | [Developer Dashboard (ClickUp Sprint, tools /developer)](features/clickup-sprint-dashboard.md) | A native **ClickUp sprint dashboard** in the 1.0 `tools` app at route `/developer` (the **"Developer Dashboard"**, renamed from `/clickup/react` / "Clickup" — s | tools/_/app/clickup/sprint.php, tools/v2/sprints/tile/index.php, tools/v2/sprints/current/index.php, tools/v2/sprints/status-breakdown/index.php, tools/v2/sprints/worktype-breakdown/index.php, tools/v2/sprints/points-by-dev/index.php, tools/v2/sprints/burndown/index.php, tools/assets/clickup/sprint-dashboard.html, tools/mvc/developer/get.php, tools/mvc/login/get.php, tools/_/app/nav.php |
8
- | [CloudFront Client Setup](features/cloudfront-client-setup.md) | An SSO-gated admin tool at **`/devops/cloudfront-clients`** in the Tools 1.0 app that onboards a client onto **CloudFront + Route 53 across multiple AWS account | tools/_/app/devops/cloudfront.php, tools/mvc/devops/cloudfront-clients/get.php, tools/mvc/devops/cloudfront-clients/post.php, tools/assets/js/cloudfront-clients.js, tools/assets/css/cloudfront-clients.css, tools/_/app/nav.php, tools/_/app/frameworkindex.php, tools/config.production.ini |
9
- | [Compass User & Persona Admin (tools /compass/users, /compass/personas)](features/compass-user-persona-admin.md) | Two pages in the Tools `developers` nav folder that let staff do, in a browser, the Compass requests that used to mean "email a developer, who writes a `dbchang | tools/_/app/compass.php, tools/mvc/compass/users/get.php, tools/mvc/compass/users/post.php, tools/mvc/compass/personas/get.php, tools/mvc/compass/personas/post.php, tools/_/app/nav.php, tools/config.production.ini |
10
- | [Design Demo Admin](features/design-demo-admin.md) | A self-serve admin UI at **`/design`** in the SSO-protected **Tools** app that lets the design team publish self-contained "Claude Design" HTML exports as **ver | tools/_/app/design/github.php, tools/mvc/design/get.php, tools/mvc/design/post.php, tools/assets/css/design.css, tools/assets/js/design.js, tools/_/app/frameworkindex.php, tools/_/app/nav.php, tools/composer.json |
11
- | [Tools — Developers Folder (UUID & Password Generators)](features/developer-tools.md) | The first two tools shipped in the Tools app, both under the **Developers** folder and gated to personas **Development Team** / **TOGa Technology**. | tools/mvc/developers/uuid/get.php, tools/mvc/developers/password/get.php, tools/mvc/developers/password/post.php |
12
- | [/errors Curation Console (Tools → shared Core Logs DB)](features/errors-curation-console.md) | Internal-only triage/curation screen for the 2.0 Issue/Event error-reporting pipeline, built as a 1.0 Tools MVC page reading the **shared Core Logs DB** through | tools/mvc/errors/get.php, tools/mvc/errors/post.php, tools/mvc/errors/issue/get.php, tools/assets/css/style.css, tools/_/app/nav.php, tools/config.production.ini |
13
- | [GitHub Audit (monthly code-churn report)](features/github-audit.md) | An internal report at **`/developers/github-audit`** (Developers nav group, personas `['Development Team','TOGa Technology']`) that shows, for one calendar mont | tools/_/app/github/audit.php, tools/mvc/developers/github-audit/get.php, tools/mvc/developers/github-audit/post.php, tools/_/app/nav.php |
14
- | [Legacy Email Notifier (tools /email-migration/notify)](features/legacy-email-notifier.md) | An SSO-gated admin tool at **`/email-migration/notify`** (nav group **Email Migration** > **Legacy Notifier**, personas `['TOGa Technology','Development Team']` | tools/mvc/email-migration/notify/get.php, tools/mvc/email-migration/notify/post.php, tools/_/app/nav.php |
15
- | [Tools MVC — Routing, CSRF & App_Database Access Patterns](features/mvc-data-access-patterns.md) | The load-bearing 1.0 (`App_`) framework conventions a developer needs when adding a page to the Tools app — URL routing, CSRF, and DB access through `App_Databa | tools/_/app/nav.php, tools/mvc/get.php, library/app/error.php, library/app/database.php, library/app/string.php |
16
- | [OneUptime Monitor Status Panel & Outage Alerting (tools /developer)](features/oneuptime-monitor-status-panel.md) | A live **operational monitor column** on the wall-display dashboard at `/developer` (the route was renamed from `/clickup/react` — the internal asset path `asse | tools/assets/clickup/sprint-dashboard.html, tools/_/app/clickup/monitors.php, tools/v2/monitors/status/index.php, tools/mvc/developer/get.php |
17
- | [Tools Persona-Gated Navigation (App_Nav)](features/persona-gated-navigation.md) | `App_Nav` is the Tools app's two-level, **persona-gated** navigation. | tools/_/app/nav.php, tools/mvc/get.php |
18
- | [Tools SAML SSO Consumer & Persona-Gated Auth (App_Auth)](features/saml-sso-auth.md) | `App_Auth` is the Tools app's authentication layer: it consumes the SAML gateway `?saml=` handoff (see the 2.0 SAML downstream integration contract), establishe | tools/_/app/auth.php, tools/mvc/sso/initiate/get.php, tools/mvc/sso/get.php, tools/mvc/login/get.php, tools/mvc/login/post.php, tools/mvc/logout/get.php, tools/mvc/get.php, tools/config.production.ini, tools/config.local.ini |
19
- | [Talos Knowledge Base Admin UI (KB Documents + Vocabulary)](features/talos-kb-documents-admin.md) | > **PER-AI-MODEL, DATA-DRIVEN SCOPING (2026-07-29).** The KB-documents and Vocabulary admin > UIs were refactored from a single hard-coded **"development-team"* | tools/mvc/talos/kb-documents/get.php, tools/mvc/talos/kb-documents/post.php, tools/mvc/talos/knowledge-bases/get.php, tools/mvc/talos/knowledge-bases/post.php, tools/mvc/talos/vocabulary/get.php, tools/mvc/talos/vocabulary/post.php, tools/_/app/talos/s3.php, tools/_/app/talos/bedrock.php, tools/_/app/pg.php, tools/_/app/model/true/aimodels.php, tools/_/app/model/true/vectorindexes.php, tools/_/app/model/true/aimodels_vectorindexes.php, tools/_/app/worker.php, tools/_/app/nav.php, tools/config.production.ini, tools/config.alpha.ini, tools/.platform/httpd/conf.d/timeouts.conf, tools/.platform/hooks/prebuild/01-install-php-pgsql.sh, tools/.platform/hooks/postdeploy/01-restart-php.sh |
20
- | [Talos Pricing UI (Contracts, Pricing Dashboard, Usage, Settings + Estimator)](features/talos-pricing-ui.md) | The 1.0 (tools app) face of the **Talos Pricing Platform** — a "Talos Pricing" nav folder with four pages plus the estimate engine. | tools/_/app/nav.php, tools/_/app/talos/estimator.php, tools/_/app/talos/usage.php, tools/mvc/talos/contracts/get.php, tools/mvc/talos/contracts/post.php, tools/mvc/talos/pricing/get.php, tools/mvc/talos/usage/get.php, tools/mvc/talos/settings/get.php, tools/mvc/talos/settings/post.php, tools/assets/css/style.css |
21
- | [App-Wide Colour Theme (light / dark / auto)](features/theme-light-dark.md) | A **light / dark / auto** colour theme for the *entire* Tools app, built as a single semantic-token layer (`assets/css/theme.css`) rather than per-page edits. | tools/assets/css/theme.css, tools/assets/js/theme.js, tools/_/app/frameworkindex.php, tools/_/app/nav.php, tools/common/header.php, tools/mvc/login/get.php, tools/assets/css/style.css, tools/assets/css/design.css, tools/assets/css/login.css, tools/assets/css/cloudfront-clients.css, tools/assets/css/gchart.css, tools/mvc/talos/usage/get.php, tools/mvc/talos/pricing/get.php, tools/mvc/talos/contracts/get.php, tools/mvc/clickup/dashboard/get.php, tools/mvc/email-migration/notify/post.php |
22
- | [Deploying Tools to Elastic Beanstalk (PHP 8.5 / Amazon Linux 2023)](workflows/deploy-to-elastic-beanstalk-al2023.md) | How the **Tools** 1.0 app boots on Elastic Beanstalk running `PHP 8.5 on 64bit Amazon Linux 2023/4.13.1 (aarch64)`. | tools/.ebextensions/004_http_to_https.config, tools/.ebextensions/006_mount-s3fs.config, tools/.ebextensions/007_setup_export_cache_folders.config, tools/.ebextensions/008_setup_ldap.config, tools/.ebextensions/009_setup_phpini.config, tools/.ebextensions/003_pgsql_hook_optional.config, tools/.ebextensions/020_setup_git_libraries.config, tools/.ebextensions/050_register_instance_to_shared_application_load_balancer.config, tools/.platform/hooks/prebuild/01-install-php-pgsql.sh, tools/.platform/hooks/prebuild/02-install-php-redis.sh, tools/ebs/git.json, tools/ebs/setup_export_cache_folders.php, tools/_/app/framework.php, tools/_/app/frameworkindex.php |
3
+ | Doc | Summary |
4
+ |-----|---------|
5
+ | [Tools (1.0 Internal-Tools App) Architecture](architecture.md) | **Tools** is a standalone 1.0 (`App_`) application that houses many small internal tools behind simple interfaces, gated by Client_True staff persona. |
6
+ | [/clickup/aliases — ClickUp Label-Alias Admin (Tools → 2.0 Team schema)](features/clickup-label-aliases-admin.md) | The human side of the NetSuite→ClickUp **Stakeholders / End Customer** labels. |
7
+ | [Developer Dashboard (ClickUp Sprint, tools /developer)](features/clickup-sprint-dashboard.md) | A native **ClickUp sprint dashboard** in the 1.0 `tools` app at route `/developer` (the **"Developer Dashboard"**, renamed from `/clickup/react` / "Clickup" — s |
8
+ | [CloudFront Client Setup](features/cloudfront-client-setup.md) | An SSO-gated admin tool at **`/devops/cloudfront-clients`** in the Tools 1.0 app that onboards a client onto **CloudFront + Route 53 across multiple AWS account |
9
+ | [Compass User & Persona Admin (tools /compass/users, /compass/personas)](features/compass-user-persona-admin.md) | Two pages in the Tools `developers` nav folder that let staff do, in a browser, the Compass requests that used to mean "email a developer, who writes a `dbchang |
10
+ | [Design Demo Admin](features/design-demo-admin.md) | A self-serve admin UI at **`/design`** in the SSO-protected **Tools** app that lets the design team publish self-contained "Claude Design" HTML exports as **ver |
11
+ | [Tools — Developers Folder (UUID & Password Generators)](features/developer-tools.md) | The first two tools shipped in the Tools app, both under the **Developers** folder and gated to personas **Development Team** / **TOGa Technology**. |
12
+ | [/errors Curation Console (Tools → shared Core Logs DB)](features/errors-curation-console.md) | Internal-only triage/curation screen for the 2.0 Issue/Event error-reporting pipeline, built as a 1.0 Tools MVC page reading the **shared Core Logs DB** through |
13
+ | [GitHub Audit (monthly code-churn report)](features/github-audit.md) | An internal report at **`/developers/github-audit`** (Developers nav group, personas `['Development Team','TOGa Technology']`) that shows, for one calendar mont |
14
+ | [Legacy Email Notifier (tools /email-migration/notify)](features/legacy-email-notifier.md) | An SSO-gated admin tool at **`/email-migration/notify`** (nav group **Email Migration** > **Legacy Notifier**, personas `['TOGa Technology','Development Team']` |
15
+ | [Tools MVC — Routing, CSRF & App_Database Access Patterns](features/mvc-data-access-patterns.md) | The load-bearing 1.0 (`App_`) framework conventions a developer needs when adding a page to the Tools app — URL routing, CSRF, and DB access through `App_Databa |
16
+ | [OneUptime Monitor Status Panel & Outage Alerting (tools /developer)](features/oneuptime-monitor-status-panel.md) | A live **operational monitor column** on the wall-display dashboard at `/developer` (the route was renamed from `/clickup/react` — the internal asset path `asse |
17
+ | [Tools Persona-Gated Navigation (App_Nav)](features/persona-gated-navigation.md) | `App_Nav` is the Tools app's two-level, **persona-gated** navigation. |
18
+ | [Tools SAML SSO Consumer & Persona-Gated Auth (App_Auth)](features/saml-sso-auth.md) | `App_Auth` is the Tools app's authentication layer: it consumes the SAML gateway `?saml=` handoff (see the 2.0 SAML downstream integration contract), establishe |
19
+ | [Talos Knowledge Base Admin UI (KB Documents + Vocabulary)](features/talos-kb-documents-admin.md) | > **PER-AI-MODEL, DATA-DRIVEN SCOPING (2026-07-29).** The KB-documents and Vocabulary admin > UIs were refactored from a single hard-coded **"development-team"* |
20
+ | [Talos Pricing UI (Contracts, Pricing Dashboard, Usage, Settings + Estimator)](features/talos-pricing-ui.md) | The 1.0 (tools app) face of the **Talos Pricing Platform** — a "Talos Pricing" nav folder with four pages plus the estimate engine. |
21
+ | [App-Wide Colour Theme (light / dark / auto)](features/theme-light-dark.md) | A **light / dark / auto** colour theme for the *entire* Tools app, built as a single semantic-token layer (`assets/css/theme.css`) rather than per-page edits. |
22
+ | [Deploying Tools to Elastic Beanstalk (PHP 8.5 / Amazon Linux 2023)](workflows/deploy-to-elastic-beanstalk-al2023.md) | How the **Tools** 1.0 app boots on Elastic Beanstalk running `PHP 8.5 on 64bit Amazon Linux 2023/4.13.1 (aarch64)`. |
@@ -18,9 +18,6 @@ files:
18
18
  - tools/_/app/talos/s3.php
19
19
  - tools/_/app/talos/bedrock.php
20
20
  - tools/_/app/pg.php
21
- - tools/_/app/model/true/aimodels.php
22
- - tools/_/app/model/true/vectorindexes.php
23
- - tools/_/app/model/true/aimodels_vectorindexes.php
24
21
  - tools/_/app/worker.php
25
22
  - tools/_/app/nav.php
26
23
  - tools/config.production.ini
@@ -11,7 +11,6 @@ owners: [jcardinal]
11
11
  files:
12
12
  - tools/assets/css/theme.css
13
13
  - tools/assets/js/theme.js
14
- - tools/_/app/frameworkindex.php
15
14
  - tools/_/app/nav.php
16
15
  - tools/common/header.php
17
16
  - tools/mvc/login/get.php
@@ -19,7 +18,6 @@ files:
19
18
  - tools/assets/css/design.css
20
19
  - tools/assets/css/login.css
21
20
  - tools/assets/css/cloudfront-clients.css
22
- - tools/assets/css/gchart.css
23
21
  - tools/mvc/talos/usage/get.php
24
22
  - tools/mvc/talos/pricing/get.php
25
23
  - tools/mvc/talos/contracts/get.php
@@ -10,8 +10,6 @@ updated: 2026-08-14
10
10
  owners: [jcardinal, bala]
11
11
  files:
12
12
  - tools/.ebextensions/004_http_to_https.config
13
- - tools/.ebextensions/006_mount-s3fs.config
14
- - tools/.ebextensions/007_setup_export_cache_folders.config
15
13
  - tools/.ebextensions/008_setup_ldap.config
16
14
  - tools/.ebextensions/009_setup_phpini.config
17
15
  - tools/.ebextensions/003_pgsql_hook_optional.config
@@ -1,5 +1,5 @@
1
1
  # walmarttechservices (Walmart Tech Services) — 1.0 knowledge
2
2
 
3
- | Doc | Summary | Files |
4
- |-----|---------|-------|
5
- | [Walmart Tech Services Architecture](architecture.md) | Small public-facing PHP marketing + warranty-registration site for **Walmart Tech Services**, the consumer tech-support / device-repair program. | index.php, _.php, app/template.php, app/menu.php, app/content/home.php, app/content/warrantyregistrations/view.php, app/content/warrantyregistrations/iframe.php, app/content/warrantyregistrations/action.php, config.prod.ini, composer.json, .ebextensions/, ebs/git.json |
3
+ | Doc | Summary |
4
+ |-----|---------|
5
+ | [Walmart Tech Services Architecture](architecture.md) | Small public-facing PHP marketing + warranty-registration site for **Walmart Tech Services**, the consumer tech-support / device-repair program. |
@@ -1,5 +1,5 @@
1
1
  # webhook (Webhook) — 1.0 knowledge
2
2
 
3
- | Doc | Summary | Files |
4
- |-----|---------|-------|
5
- | [NetSuite → ClickUp Opportunity Sync](features/netsuite-clickup-opportunity-sync.md) | > **⚠ CORRECTED 2026-09-04 — parts of this doc were factually wrong and actively misleading.** > Two claims below have been retracted in place: that > `worker2/ | webhook/_/webhook/netsuite.php, webhook/api.php, api2/Webhook/Netsuite.php, worker2/Worker/Netsuite.php, api2/Controller/Index.php |
3
+ | Doc | Summary |
4
+ |-----|---------|
5
+ | [NetSuite → ClickUp Opportunity Sync](features/netsuite-clickup-opportunity-sync.md) | > **⚠ CORRECTED 2026-09-04 — parts of this doc were factually wrong and actively misleading.** > Two claims below have been retracted in place: that > `worker2/ |