Initial code commit
CI / test (3.11) (push) Canceled after 0s
CI / test (3.12) (push) Canceled after 0s
CI / test (3.13) (push) Canceled after 0s
CI / test (3.14) (push) Canceled after 0s
CI / package (push) Canceled after 0s
CI / precommit-and-security (push) Canceled after 11s
CI / typecheck (push) Canceled after 11s

This commit is contained in:
2026-09-25 11:16:19 +01:00
parent 427daa7f1a
commit aded37d491
64 changed files with 8201 additions and 24 deletions
+52
View File
@@ -0,0 +1,52 @@
# Security policy
`schedls` writes scheduler configuration and, when run as root, writes files in
privileged locations. Security is therefore a primary design concern.
## Reporting a vulnerability
Report suspected vulnerabilities privately to the maintainer listed in
`pyproject.toml`. Do not open a public issue for a security-sensitive report.
## Promises
`schedls` does not:
- run a background daemon;
- listen on a network port;
- make network requests;
- automatically invoke `sudo`, `su`, `pkexec`, or any other privilege
escalation mechanism;
- execute discovered scheduled commands;
- open an editor or pager while managing jobs;
- use a shell internally for helper commands (`shell=True` is forbidden);
- modify unmanaged schedules by default.
## Security model
See [docs/security-model.md](docs/security-model.md) for the threat model and
the mitigations implemented in this repository.
## Release checklist
Before every release:
```text
[ ] No new shell=True usage
[ ] No automatic privilege escalation
[ ] No new implicit command execution
[ ] No pager/editor invocation under privilege
[ ] Unit serialization tests pass
[ ] Cron serialization tests pass
[ ] Symlink tests pass
[ ] Atomic-write tests pass
[ ] Trusted-directory ownership/mode tests pass
[ ] Helper resolution ownership tests pass
[ ] Unit-name path traversal tests pass
[ ] Log sanitization tests pass
[ ] Dependency audit passes
[ ] JSON schema changes reviewed
[ ] New mutating operations support --dry-run
[ ] New mutating operations have clear confirmation behavior
[ ] Documentation describes new filesystem/state changes
```