What is useful now
dam.rs is young. The highest-value contributions are bug reports with a reproduction and small changes carrying the regression test that would have caught the problem.
Before proposing a broad feature, read TASKS.md, ARCHITECTURE.md and DECISIONS.md. An apparently missing behavior may be a deliberate boundary or a parked decision.
Development loop
- 01
Reproduce the failure
Capture the request, state or browser path that proves the current behavior.
- 02
Write the failing test
Place it at the lowest layer that still proves the user-visible or contractual property.
- 03
Fix the source of the behavior
Avoid a one-off patch when a generator, schema, policy or shared component owns the answer.
- 04
Run the real path
A green unit test is necessary. It is not proof that an upload renders, a delivery redirects or a screen can be used.
Verification gates
mise run check # Rust formatting, clippy and tests
mise run check:deny # advisories, licences, bans, sources
mise run check:web # Svelte, lint, unit, browser and axe
mise run check:all # all threeThe web gate includes keyboard behavior, virtual-grid semantics, both themes and WCAG 2.1 AA scans. The generated API types are checked against the current OpenAPI document.
The AWS archival gate is separate because it spends real money and waits on real restore behavior. Point it only at a throwaway bucket.
Pull request shape
- Keep one logical change together and unrelated cleanup out.
- Explain the broken property, the root cause and the evidence that now proves it.
- Call out migrations, wire-contract changes and operational consequences explicitly.
- Include screenshots for interface work and commands for behavior that cannot be seen in a diff.
- Do not claim the whole deployment from a local check; name the boundary of the proof.