UnionOps is source-available, stewarded by Ryan Morris. Contributions are welcome for discussion; acceptance is at the steward’s discretion.
- Read
docs/VISION.mdandAGENTS.md. - Respect multi-union rules: no hardcoding a single union as the platform default.
- Do not commit secrets,
.envfiles, private keys, or real member data.
- Open an issue describing the problem or idea (use the templates).
- Fork or branch from
main. - Keep PRs focused. Prefer small, reviewable diffs.
- Update EN and FR strings when you change user-facing copy (
messages/en.json,messages/fr.json). - Run before opening a PR:
npm run lint
npm run typecheck
npm run test:unitFor UI/route changes, also run npm run test:smoke when practical.
By submitting a contribution, you assign copyright in that contribution to Ryan Morris (see LICENSE). Do not submit code you cannot assign.
- Analytics or third-party tracking
- Cross-union data access
dangerouslySetInnerHTML- Hardcoded OPSEU/CAAT as defaults for new tenant signups
- Secrets, credentials, or real PII
- Public copy that promises the whole platform is free forever (Comms stay free; hosted Officer Hub / Local Portal may recover hosting costs — see ADR-019)