a3094dea2b
CI / benchmark-publish (pull_request) Has been skipped
CI / push-validation (pull_request) Successful in 17s
CI / build (pull_request) Successful in 23s
CI / typecheck (pull_request) Successful in 48s
CI / helm (pull_request) Successful in 53s
CI / lint (pull_request) Successful in 3m21s
CI / quality (pull_request) Successful in 3m42s
CI / integration_tests (pull_request) Successful in 4m3s
CI / e2e_tests (pull_request) Successful in 4m5s
CI / security (pull_request) Successful in 4m6s
CI / unit_tests (pull_request) Successful in 5m41s
CI / docker (pull_request) Successful in 1m33s
CI / coverage (pull_request) Successful in 10m22s
CI / status-check (pull_request) Successful in 1s
CI / benchmark-regression (pull_request) Successful in 57m14s
CI / push-validation (push) Successful in 20s
CI / helm (push) Successful in 21s
CI / quality (push) Successful in 41s
CI / typecheck (push) Successful in 48s
CI / security (push) Successful in 51s
CI / build (push) Successful in 1m0s
CI / lint (push) Successful in 3m18s
CI / benchmark-regression (push) Has been skipped
CI / e2e_tests (push) Successful in 3m40s
CI / unit_tests (push) Successful in 7m26s
CI / docker (push) Successful in 1m37s
CI / integration_tests (push) Successful in 9m33s
CI / coverage (push) Successful in 10m27s
CI / status-check (push) Successful in 2s
CI / benchmark-publish (push) Has been cancelled
Three implementation contracts clarified in response to security/correctness bugs surfaced by the bug hunt pool: 1. Path containment: Sandbox path validation MUST use Path.is_relative_to() not string prefix comparison. String prefix allows /tmp/sandboxmalicious to pass a /tmp/sandbox root check. Canonical implementation provided. 2. Datetime handling: All stored ISO timestamp comparisons MUST parse back to timezone-aware datetime objects before comparing. String comparison of ISO timestamps is incorrect when timezone offsets differ in format. Canonical parse_utc_ts() pattern provided. 3. Plugin protocol validation: Protocol compliance MUST be checked structurally via issubclass() — never by instantiating the plugin class. Instantiation runs __init__ side effects before the plugin is approved. These are minor clarifications (implementation contracts, not architectural changes) added to the existing Security and Extensibility sections. Refs: BUG-HUNT issues #7336 (path traversal), #7341 (datetime comparison), #7331 (plugin instantiation)