Application editability rules
Context
After an application is submitted, not all related data remains editable. This document defines which fields are mutable or immutable as a consequence of the application lifecycle.
Principle
Once an application reaches the submitted state:
- structural data is frozen
- contextual data remains editable
- lifecycle data evolves only through explicit state transitions
These rules preserve historical accuracy while allowing progressive enrichment.
Editable fields matrix
| Field | Entity | Nature | Editable after submission |
|---|---|---|---|
| title | Position | Structural | No |
| company | Position | Structural | No |
| location | Position | Contextual | Yes |
| notes | Position | Contextual | Yes |
| notes | Application | Contextual | Yes |
| status | Application | Lifecycle | Yes (controlled) |
| applied_at | Application | Lifecycle | No |
Lifecycle interaction
Editability rules apply from the submitted state onward.
Terminal states (rejected, accepted) do not relax editability constraints.
Structural data remains frozen for the entire lifecycle.
Rationale
- Preserving historical accuracy of the job offer
- Allowing progressive enrichment during the recruitment process
- Avoiding unnecessary model complexity in early versions
Implementation notes
- Enforcement happens at the service layer
- Policies handle ownership, not editability
- Models do not contain conditional edit logic