137 lines
3.8 KiB
Markdown
137 lines
3.8 KiB
Markdown
# TUBCO Maintenance Policy
|
|
|
|
Use this document whenever we maintain the TUBCO customer line.
|
|
|
|
This is the rulebook for TUBCO. It is intentionally stricter than normal product work.
|
|
|
|
## Goal
|
|
|
|
TUBCO stays on its own older customer baseline.
|
|
|
|
That means:
|
|
- keep the older TUBCO application behavior
|
|
- keep the older TUBCO database schema
|
|
- only cherry-pick approved fixes
|
|
- do not quietly turn TUBCO into the newer product
|
|
|
|
## Source of truth
|
|
|
|
TUBCO delivery happens from:
|
|
- `release/tubco-v1`
|
|
|
|
Normal product work happens on:
|
|
- `develop`
|
|
- `main`
|
|
|
|
Do not deploy TUBCO from:
|
|
- `develop`
|
|
- `main`
|
|
|
|
## Core maintenance rules
|
|
|
|
For TUBCO, we may backport only:
|
|
- bug fixes
|
|
- security fixes
|
|
- carefully approved UX improvements
|
|
- required operational fixes for the customer environment
|
|
|
|
For TUBCO, we do not backport by default:
|
|
- new product workflows
|
|
- new approval/account-rule systems
|
|
- schema expansions from the newer product
|
|
- general feature growth unless explicitly approved
|
|
|
|
## Database rule
|
|
|
|
TUBCO must use the old TUBCO schema.
|
|
|
|
This is the most important rule.
|
|
|
|
If the code stays old but the database is newer, old TUBCO flows can fail with database errors such as:
|
|
- missing values for newer non-null columns
|
|
- forms saving rows that the old code does not know how to populate
|
|
|
|
If we see errors like:
|
|
- `null value in column ... violates not-null constraint`
|
|
|
|
then first verify whether the TUBCO environment is still using the old schema.
|
|
|
|
Do not solve this by default with:
|
|
- broad schema compatibility backports
|
|
- importing the newer product data model into TUBCO
|
|
|
|
That would move TUBCO toward the new product instead of preserving the customer baseline.
|
|
|
|
## LAN server rule
|
|
|
|
TUBCO is hosted on our local LAN server.
|
|
|
|
Before deploying any TUBCO fix, verify:
|
|
- the server is running `release/tubco-v1`
|
|
- the environment points to the intended old TUBCO database
|
|
- no newer product migrations were applied there by mistake
|
|
|
|
If the LAN server is connected to a newer migrated database, code-only fixes may not be enough.
|
|
|
|
In that case, the correct options are:
|
|
1. repoint TUBCO to the old TUBCO database
|
|
2. or restore the database to the old TUBCO schema
|
|
|
|
## Safe TUBCO release workflow
|
|
|
|
1. start from:
|
|
- `release/tubco-v1`
|
|
2. implement only the approved fix
|
|
3. keep the database model old unless there is explicit customer approval to change it
|
|
4. test the affected flow
|
|
5. deploy only to the LAN-hosted TUBCO environment
|
|
6. do not run newer product migrations on that environment
|
|
|
|
## Cherry-pick rule
|
|
|
|
When a fix exists on another branch:
|
|
- inspect the commit carefully
|
|
- cherry-pick only if it does not pull in newer product behavior or newer schema assumptions
|
|
|
|
If a fix depends on the newer schema:
|
|
- stop
|
|
- rework it as a TUBCO-only fix
|
|
- or do not ship it
|
|
|
|
## Operational checklist before deploying a TUBCO fix
|
|
|
|
Check all of these:
|
|
- branch is `release/tubco-v1`
|
|
- worktree is clean
|
|
- fix is limited to the approved TUBCO scope
|
|
- no new-product migrations are included
|
|
- no new-product workflows are included
|
|
- LAN server target is the intended TUBCO environment
|
|
- database is the old TUBCO schema
|
|
|
|
## Example warning signs
|
|
|
|
Pause and verify immediately if you see:
|
|
- approval-related fields appearing in old TUBCO flows
|
|
- new account-rule behavior on TUBCO
|
|
- migration files copied from the product branch
|
|
- database errors mentioning columns unknown to the old branch
|
|
|
|
Those usually indicate code/schema drift.
|
|
|
|
## Decision rule
|
|
|
|
If there is a conflict between:
|
|
- shipping a quick fix
|
|
- and keeping TUBCO on the old customer baseline
|
|
|
|
choose the old customer baseline first.
|
|
|
|
We only widen the TUBCO schema or behavior if that change is explicitly intended for TUBCO.
|
|
|
|
## Related documents
|
|
|
|
- [TUBCO_SETUP.md](/Users/bostame/Documents/workdock-platform/TUBCO_SETUP.md)
|
|
- [DEPLOYMENT.md](/Users/bostame/Documents/workdock-platform/DEPLOYMENT.md)
|
|
- [CONTRIBUTING.md](/Users/bostame/Documents/workdock-platform/CONTRIBUTING.md)
|