ThreeGate/docs/change_management.md

67 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Change Management (Security Discipline)
ThreeGate treats *capability changes* as security boundary changes.
This document defines what requires review, version bumps, and explicit documentation.
---
## Categories of Changes
### A) Security Boundary Changes (Require explicit review)
- Adding or widening FETCH allowlists (domains, content types, size caps)
- Enabling redirects by default
- Adding Monty external functions
- Allowing Monty any I/O (filesystem/env/network)
- Allowing ERA networking
- Introducing new execution backends
- Changing validator strictness to accept previously rejected patterns
- Modifying policy files in ways that broaden capability
**Process**
1. Open PR with “Security Boundary Change” label
2. Update `CHANGELOG.md`
3. Update relevant schema or policy docs
4. Add/modify adversarial tests where applicable
5. Require reviewer sign-off before merge
### B) Schema Changes (Require versioning)
- Any change to required keys/sections
- Any meaning change to existing fields
**Process**
1. Copy schema doc to a new version (v2, v3, …)
2. Update validators to accept old + new versions or provide migration
3. Update `CHANGELOG.md`
### C) Non-security Changes (Normal review)
- Documentation clarifications
- Refactoring that preserves behavior
- Test additions that dont change enforcement
---
## “No Silent Drift” Rule
If the effective capability of the system changes, the documentation must change in the same PR.
---
## Release Cadence
- Use semantic versioning for tagged releases when you reach that point.
- Until then, keep `CHANGELOG.md` updated and treat main as “rolling.”
---
## Quick Checklist for PR Authors
- [ ] Does this widen what FETCH can reach?
- [ ] Does this enable new I/O or new syscalls?
- [ ] Does this allow new code execution paths?
- [ ] Does this reduce validator strictness?
- [ ] Does this modify policy invariants?
If any are “yes”, treat as a security boundary change.