colibri/docs/internal/sessions/2026-05-27-scheduler-freebsd-store-isolation-finding.md

1.8 KiB

Colibri Scheduler / FreeBSD Store Isolation Finding

Date: 27.maj.2026
Repo: Clawdie/Colibri
Finding commit: ceaeaee — scheduler T1.3 landed
Fix commit: a48afa1fix: harden scheduler tests and FreeBSD store isolation
Status: Fixed and verified

Finding

After pulling ceaeaee, the Linux-side direction was good, but FreeBSD validation exposed a real test-isolation bug:

failed to open coordination store at "/var/db/colibri/colibri.sqlite":
I/O error: Permission denied (os error 13)

Root cause: daemon::tests::test_daemon_state_creation used DaemonConfig::from_env(), which on FreeBSD resolves the default production/service SQLite path:

/var/db/colibri/colibri.sqlite

Unit tests must not require production service paths or root permissions.

Fix

test_daemon_state_creation now overrides:

  • data_dir
  • socket_path
  • db_path

with an isolated temp directory before constructing DaemonState.

Additional hardening

While reviewing the scheduler, the follow-up also hardened edge cases:

  • cron fields accept leading-zero forms such as 00 12 01 06 01
  • cron schedules fire at most once per matching minute, even with a 30s daemon tick
  • pick_agent no longer assigns required-capability tasks to zero-match agents
  • empty required-capability tasks can still select a general available agent

Verification

Commands run after the fix:

cargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo build --workspace --release

Result:

89 tests passed, 0 failed
release build OK

Conclusion

T1.3 scheduler remains accepted, but a48afa1 is the correct green baseline after FreeBSD-safe test isolation and scheduler edge-case hardening.