devdocs - AyaNova/Sockeye name map and compare script

NAME-MAP.md lists the names Sockeye changed from AyaNova (types, properties,
database columns, config keys, client files), the names left alone, and the
files that exist in only one codebase. compare-with-raven.sh maps the names
and diffs the shared server files so only real code differences show.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-27 10:37:16 -07:00
parent e28dc48bd0
commit 712d0c891f
2 changed files with 119 additions and 0 deletions

81
devdocs/NAME-MAP.md Normal file
View File

@@ -0,0 +1,81 @@
# AyaNova ↔ Sockeye name map
Sockeye's server began as a copy of AyaNova's (`raven/server/AyaNova`). Some names were
changed for Sockeye; most code is otherwise the same. Use this map to carry a fix from one
codebase to the other. Mapped 2026-10-27, AyaNova `main` (8.3.0) against Sockeye `main` (8.1.x).
`compare-with-raven.sh` (beside this file) applies the map and compares the shared files, so
only real code differences show:
```bash
bash compare-with-raven.sh # every shared file: differing lines, AyaNova lines, path
bash compare-with-raven.sh util/DbUtil.cs # the diff for one file (< AyaNova mapped, > Sockeye)
```
## Renamed
| AyaNova | Sockeye | Where |
|---|---|---|
| namespace `AyaNova.*`, `AyaNova` in text | `Sockeye.*`, `Sockeye` | everywhere |
| `AyaType` (enum) | `SockType` | `biz/AyaType.cs` → `biz/SockType.cs` |
| `AyaTypeId` | `SockTypeId` | `biz/` |
| `AyaEvent` (enum) | `SockEvent` | `biz/` |
| `AyaDaysOfWeek` (enum) | `SockDaysOfWeek` | `biz/` |
| `AyaNovaVersion` | `SockeyeVersion` | `util/` |
| `AyaNovaConnectionString`, `AyaNovaServerURL`, `logRuleAyaNovaItems` | `SockeyeConnectionString`, `SockeyeServerURL`, `logRuleSockeyeItems` | `util/` |
| `AyaTypeTranslated`, `ayaTypeColumnName` | `SockTypeTranslated`, `sockTypeColumnName` | DataList, PickList |
| stored type property `AType` (JSON `aType`) | `SockType` (JSON `sockType`) | `models/`: Attachment, Event, SearchKey, OpsJob, Report, Review, IntegrationItem, DataListSelectedRequest… |
| computed `public AyaType AyaType { get => AyaType.X; }` (JSON `ayaType`) | `public SockType SType { get => SockType.X; }` (JSON `sType`) | business models: Customer, User, Memo, Reminder, Review… |
| locals and parameters `ayaType`, `atype`, `ayId`, `ayaEvent` | `sockType`, `sockId`, `sockEvent` (a few `stype`, `sock`) | everywhere |
| database columns `atype`, `ayatype`, `ayid`, `ayevent` | `socktype`, `sockid`, `sockevent`, and `stype` on business tables | `util/AySchema.cs`, raw SQL in DataList/PickList/biz |
| config keys `AYANOVA_*` | `SOCKEYE_*`, same suffix | `util/ServerBootConfig.cs`, `config.json`, environment |
| client `src/api/ayatype.js`, `ayanova-version.js` | `src/api/socktype.js`, `sockeye-version.js` | `raven-client` ↔ `sockeye-client` |
The shared `AyaType`/`SockType` members have the same numbers (Customer 8, User 3, Report 57…),
and `AyaEvent`/`SockEvent` are identical, so stored values mean the same thing in both.
## Not renamed (same in both)
`AyContext`, `AySchema`, `AyaPickListFieldDefinition`, `AyaPickList`, `AyaField`, `AyImportData`,
`AyFileInfo`, `AyaNovaLicenseKey`; table names (`aevent`, `asearchkey`, `auser`…); routes
(`api/v{version}/…`); the folder layout (`biz`, `ControllerHelpers`, `Controllers`, `DataList`,
`generator`, `kpi`, `models`, `PickList`, `resource`, `util`).
## Only in one codebase
- **AyaNova only:** the service objects (work orders, quotes, PM, parts, inventory, units,
contracts, projects, rates, CSR, loan units, purchase orders, task groups, tax codes), their
KPIs, `License.cs` (licence check, client side), `Seeder.cs`, `ReportApiRelay.cs`,
`CoreJobLicense`, `CoreJobVersionCheck`, `CoreJobPM*`, `SuperUserDefaultPasswordRoutes`,
`CustomerContactRoutes`, and newer config keys (`AYANOVA_TRUSTED_PROXIES`,
`AYANOVA_SMTP_ACCEPT_ANY_CERTIFICATE`, `AYANOVA_REMOVE_LICENSE_FROM_DB`,
`AYANOVA_REPORT_RENDER_API_URL_OVERRIDE`). Also `AyaDayOfWeek` and `AyaUnitsOfTime` (PM).
- **Sockeye only:** licensing and sales (`KeyFactory`, `RavenKeyFactory`, `LicenseBiz`,
products, purchases, subscriptions, subscription servers and their states, trial licence
requests, vendor notifications, `GZCase`), `SockBot*` jobs, `FetchController`,
`RvfController`, `RvrController`, `AutoOrderProcessingUtil`.
## How close the shared files are (2026-10-27)
288 server files exist in both. After mapping, 156 are identical, about 55 differ by 1–10
lines, and the rest differ more, mostly because one codebase has objects the other lacks.
Low-level files that differ by more than the names, worth checking when a fix touches them:
| File | Differing lines | Main reason |
|---|---|---|
| `util/RunProgram.cs` | most | AyaNova has `RunNoShell` (backup without a shell, 8.3.0); Sockeye still has the old `Run` |
| `generator/CoreJobBackup.cs` | ~50 | same: Sockeye still passes the password in the `pg_dump` URI through a shell |
| `util/DbUtil.cs`, `util/AySchema.cs` | many | different tables; check `AdminConnectionString` and drop-and-recreate by hand |
| `DataList/DataListSqlFilterCriteriaBuilder.cs` | ~155 | filter fixes went into each separately; compare before changing either |
| `util/ServerBootConfig.cs`, `Program.cs`, `Startup.cs` | many | config keys and service wiring differ |
| `util/FileUtil.cs`, `util/StringUtil.cs`, `util/DateUtil.cs`, `generator/CoreJobNotify.cs`, `generator/CoreJobSweeper.cs`, `util/Mailer.cs` | 15–90 | partly real drift; check with the script |
Rerun the script for current numbers; this table is a snapshot.
## Carrying a fix across
1. Make and test the fix in one codebase.
2. Run `bash compare-with-raven.sh <file>` on each file touched: if the file matches apart from
names, the same change applies with the names above.
3. Record in both repos whether the fix applies (done, n/a, or deferred). In AyaNova that is
`raven/devdocs/modernization/NET10-PORT.md`.