Issue: Implicit invariants not encoded in API
Problem
Core invariants exist but are implicit:
db_open() must precede most operations
db_commit() required for persistence
packages must reflect filesystem reality
These are not enforced -> misuse is easy.
Proposal
Add explicit state machine:
enum class state {
uninitialized,
opened,
dirty
};
Enforce:
db_open() -> state = opened
- mutating ops -> state = dirty
db_commit() -> state = opened
All methods assert valid state transitions.
Optional
- debug mode: invariant verification pass
Acceptance criteria
- invalid call sequences throw
- lifecycle clearly documented
- invariant violations detectable
Issue: Implicit invariants not encoded in API
Problem
Core invariants exist but are implicit:
db_open()must precede most operationsdb_commit()required for persistencepackagesmust reflect filesystem realityThese are not enforced -> misuse is easy.
Proposal
Add explicit state machine:
Enforce:
db_open()-> state = openeddb_commit()-> state = openedAll methods assert valid state transitions.
Optional
Acceptance criteria