Record the catalog dedupe commands and the seed cleanup in the changelog
Some checks failed
CI / backend (push) Failing after 11s
CI / naming (push) Successful in 2s
CI / frontend (push) Successful in 10s
CI / migrations-mysql (push) Failing after 8s

This commit is contained in:
cproudlock
2026-08-24 14:49:48 -04:00
parent 6106f4c5f4
commit 8bf2b8515f

View File

@@ -12,6 +12,21 @@ ADR-007 and ADR-002.
### Added ### Added
- **`flask catalog dedupe`, `merge` and `rename`: catalog hygiene.** The legacy
data carried space-stripped twins - `DellInc.` beside `Dell Inc.`,
`Windows10` beside `Windows 10` - which rode into the shipped seed catalog
and out to every site that ran `seed catalog`. `dedupe` merges only
whitespace-and-punctuation twins, because those are one name typed two ways;
`Dell` and `Dell Inc.` normalise apart and are deliberately left alone, since
that is a naming choice only a person can make. The surviving row is the most
referenced, tie-broken toward the spaced spelling. `merge` makes that
judgment call explicitly and refuses to invent a target that does not exist.
`rename` fixes a stripped name with no twin, which neither of the others can
reach. All three report and change nothing unless `--apply` is passed, and
`dedupe` is idempotent. References are discovered from the live schema, not
listed in code: there are 15 foreign keys into these three tables, and
`machines.controllervendorid` is not one anybody would enumerate by hand.
- **Secure Send: hand somebody a password without leaving it in a chat - **Secure Send: hand somebody a password without leaving it in a chat
window.** A link in Tech Tools that carries one credential, dies when it is window.** A link in Tech Tools that carries one credential, dies when it is
opened, and expires on its own if nobody opens it. The secret is encrypted in opened, and expires on its own if nobody opens it. The secret is encrypted in
@@ -75,6 +90,15 @@ ADR-007 and ADR-002.
### Fixed ### Fixed
- **The shipped seed catalog contained duplicate vendors, models and operating
systems.** Four space-stripped twins, each with a correctly spaced original
already present, so a new site inherited the same company listed twice.
`OptiPlex5000` had no twin and was renamed to `OptiPlex 5000` rather than
dropped. Vendors 53 to 51, models 128 to 127, operating systems 14 to 12.
Not a code fault: the collector strips only leading and trailing whitespace
and treats the OS list as lookup-only, so it neither created these nor is
creating more. They came in with the classic-ASP import.
- **A maintenance script could not find the database the site actually uses.** - **A maintenance script could not find the database the site actually uses.**
`python scripts/export_catalog.py` on a deployed site died with 1045 "Access `python scripts/export_catalog.py` on a deployed site died with 1045 "Access
denied for user 'root'@'localhost'", naming a user that site does not have. denied for user 'root'@'localhost'", naming a user that site does not have.