Notes test process exits with SIGSEGV after reconciliation contention #1136

Open
opened 2026-10-05 11:37:56 +00:00 by kayg · 15 comments
Owner

Observed while running #1110's required per-crate Notes gate on the busy build host.

Command: CARGO_PROFILE_DEV_DEBUG=line-tables-only CARGO_INCREMENTAL=0 CARGO_BUILD_JOBS=4 cargo test -p calternal-plugin-notes -- --test-threads=4
Branch job/tags-1110, code based on origin/dev 929a2627f. This job changes the Notes writer mutex lookup; it changes no native library code. Cause and reproducibility of the native exit are not established.

Verbatim output:

thread 'tests::seven_hundred_notes_reconcile_without_feedback' (1000048) panicked at crates/plugins/notes/src/lib.rs:8962:59:
called `Result::unwrap()` on an `Err` value: ApiError(503, ErrorEnvelope { error: ApiError { code: ServiceUnavailable, message: "Index is busy; retry shortly", details: None } }, true)
test result: FAILED. 282 passed; 1 failed; 2 ignored; 0 measured; 0 filtered out; finished in 461.21s
error: test failed, to rerun pass `-p calternal-plugin-notes --lib`
Caused by:
  process didn't exit successfully: `/home/kayg/build/targets/tags-1110/debug/deps/calternal_plugin_notes-776d209c149f66f4 --test-threads=4` (signal: 11, SIGSEGV: invalid memory reference)

Expected: a failed assertion exits as a normal Rust test failure, without a native crash. The 503 may be load contention; SIGSEGV needs a separate root-cause check. The job retains the output and runs the failing test once in isolation without changing its expectations. The merge round must distinguish shared-host contention from a native cleanup bug.

Observed while running #1110's required per-crate Notes gate on the busy build host. Command: CARGO_PROFILE_DEV_DEBUG=line-tables-only CARGO_INCREMENTAL=0 CARGO_BUILD_JOBS=4 cargo test -p calternal-plugin-notes -- --test-threads=4 Branch job/tags-1110, code based on origin/dev 929a2627f. This job changes the Notes writer mutex lookup; it changes no native library code. Cause and reproducibility of the native exit are not established. Verbatim output: ``` thread 'tests::seven_hundred_notes_reconcile_without_feedback' (1000048) panicked at crates/plugins/notes/src/lib.rs:8962:59: called `Result::unwrap()` on an `Err` value: ApiError(503, ErrorEnvelope { error: ApiError { code: ServiceUnavailable, message: "Index is busy; retry shortly", details: None } }, true) test result: FAILED. 282 passed; 1 failed; 2 ignored; 0 measured; 0 filtered out; finished in 461.21s error: test failed, to rerun pass `-p calternal-plugin-notes --lib` Caused by: process didn't exit successfully: `/home/kayg/build/targets/tags-1110/debug/deps/calternal_plugin_notes-776d209c149f66f4 --test-threads=4` (signal: 11, SIGSEGV: invalid memory reference) ``` Expected: a failed assertion exits as a normal Rust test failure, without a native crash. The 503 may be load contention; SIGSEGV needs a separate root-cause check. The job retains the output and runs the failing test once in isolation without changing its expectations. The merge round must distinguish shared-host contention from a native cleanup bug.
Author
Owner

The isolated rerun passed without a native exit:

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 284 filtered out; finished in 129.40s

The original full-suite failure and SIGSEGV remain recorded. No assertion or status expectation was changed. The failure's cause is not established by this isolated pass.

The isolated rerun passed without a native exit: ``` test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 284 filtered out; finished in 129.40s ``` The original full-suite failure and SIGSEGV remain recorded. No assertion or status expectation was changed. The failure's cause is not established by this isolated pass.
Author
Owner

Starting #1136 investigation on branch job/segv-1136. HEAD/base: 04afb0043c (merge-base with local origin/dev); origin/dev tracking ref: de654a42ac. Working tree was clean. I will reproduce on origin/dev and wip/tags-1110 before changing the Notes implementation.

Starting #1136 investigation on branch job/segv-1136. HEAD/base: 04afb0043c559c59084e4ec12609bb9fe679cbf6 (merge-base with local origin/dev); origin/dev tracking ref: de654a42ac4f9a6dca83bed8e0eebc99706f7dfe. Working tree was clean. I will reproduce on origin/dev and wip/tags-1110 before changing the Notes implementation.
Author
Owner

Reproduction progress on origin/dev de654a42ac: loaded full-suite run 1 completed with 287 passed; 0 failed; 3 ignored (371.31s). seven_hundred_notes_reconcile_without_feedback passed. The host load average was 28.13 at the start of run 2; two CPU workers were active. No 503 or SIGSEGV occurred in this run. I am continuing the ten-run series and will also run the tags-1110 revision.

Reproduction progress on origin/dev de654a42ac4f9a6dca83bed8e0eebc99706f7dfe: loaded full-suite run 1 completed with `287 passed; 0 failed; 3 ignored` (371.31s). `seven_hundred_notes_reconcile_without_feedback` passed. The host load average was 28.13 at the start of run 2; two CPU workers were active. No 503 or SIGSEGV occurred in this run. I am continuing the ten-run series and will also run the tags-1110 revision.
Author
Owner

Updated reproduction evidence: origin/dev full-suite runs 2 through 5 have all exited normally with 287 passed; 0 failed; 3 ignored, including the 700-Note test. Run times were 313.9s, 347.1s and 475.3s for runs 3, 4 and 5 (run 2: 371.31s). The load average reached 46.37 during run 5. No Index is busy error or SIGSEGV appeared in these runs. The ten-run origin/dev series is continuing.

Updated reproduction evidence: origin/dev full-suite runs 2 through 5 have all exited normally with `287 passed; 0 failed; 3 ignored`, including the 700-Note test. Run times were 313.9s, 347.1s and 475.3s for runs 3, 4 and 5 (run 2: 371.31s). The load average reached 46.37 during run 5. No `Index is busy` error or SIGSEGV appeared in these runs. The ten-run origin/dev series is continuing.
Author
Owner

Reproduced the transient failure on origin/dev de654a42ac (loaded run 6): seven_hundred_notes_reconcile_without_feedback panicked at lib.rs:9475 on ApiError(503, ... "Index is busy; retry shortly") after 300.38s. The test process exited normally with code 101 (286 passed; 1 failed; 3 ignored); no SIGSEGV or signal 11 appears in the log. Load average at run start was 26.13. This establishes that the 503 itself is a normal Rust test failure on dev. I am continuing the remaining dev runs and the pinned tags-1110 comparison to investigate the separate SIGSEGV.

Reproduced the transient failure on origin/dev de654a42ac4f9a6dca83bed8e0eebc99706f7dfe (loaded run 6): `seven_hundred_notes_reconcile_without_feedback` panicked at lib.rs:9475 on `ApiError(503, ... "Index is busy; retry shortly")` after 300.38s. The test process exited normally with code 101 (`286 passed; 1 failed; 3 ignored`); no SIGSEGV or signal 11 appears in the log. Load average at run start was 26.13. This establishes that the 503 itself is a normal Rust test failure on dev. I am continuing the remaining dev runs and the pinned tags-1110 comparison to investigate the separate SIGSEGV.
Author
Owner

origin/dev reproduction matrix complete for de654a42ac: ten valid cargo test -p calternal-plugin-notes -- --test-threads=4 runs under two CPU workers; nine passed and one failed only at the target test with the 503 described above. All ten test processes exited without SIGSEGV. The additional tenth-valid-run result was 287 passed; 0 failed; 3 ignored for unit tests and 2 passed; 0 failed; 0 ignored for apple_replay (194.68s + 1.06s). The pinned job/tags-1110 revision is 7e16b84ce0, the ref observed at investigation start. Starting its run matrix now.

origin/dev reproduction matrix complete for de654a42ac4f9a6dca83bed8e0eebc99706f7dfe: ten valid `cargo test -p calternal-plugin-notes -- --test-threads=4` runs under two CPU workers; nine passed and one failed only at the target test with the 503 described above. All ten test processes exited without SIGSEGV. The additional tenth-valid-run result was `287 passed; 0 failed; 3 ignored` for unit tests and `2 passed; 0 failed; 0 ignored` for apple_replay (194.68s + 1.06s). The pinned job/tags-1110 revision is 7e16b84ce0e2d21c3ce438d064da5b1c65c78f19, the ref observed at investigation start. Starting its run matrix now.
Author
Owner

Pinned job/tags-1110 revision 7e16b84ce0: a gdb batch run of the exact Notes lib test executable with --test-threads=4 completed normally under CPU load. It reported 283 passed; 0 failed; 2 ignored in 271.80s, including the 700-Note test. Gdb reported sigsegv=False and Inferior 1 ... exited normally; therefore there is no native backtrace from this run. The ten full Cargo runs on this pinned revision are now in progress.

Pinned job/tags-1110 revision 7e16b84ce0e2d21c3ce438d064da5b1c65c78f19: a gdb batch run of the exact Notes lib test executable with `--test-threads=4` completed normally under CPU load. It reported `283 passed; 0 failed; 2 ignored` in 271.80s, including the 700-Note test. Gdb reported `sigsegv=False` and `Inferior 1 ... exited normally`; therefore there is no native backtrace from this run. The ten full Cargo runs on this pinned revision are now in progress.
Author
Owner

The pinned Tags gdb run passed normally with 283 unit tests and no SIGSEGV. The first Cargo matrix run passed 283 unit and 2 integration tests but rustdoc then failed with E0460 (mismatched calternal_fs/calternal_tags artifacts). I overlapped a main-checkout compile with the scratch checkout while both used the required preset CARGO_TARGET_DIR; later scratch runs also saw a stale calternal-plugin rlib without notes_writer. These are invalid reproductions, not native crashes. I am clearing the job target and restarting the Tags Cargo runs sequentially so only one checkout compiles into it at a time.

The pinned Tags gdb run passed normally with 283 unit tests and no SIGSEGV. The first Cargo matrix run passed 283 unit and 2 integration tests but rustdoc then failed with E0460 (mismatched `calternal_fs`/`calternal_tags` artifacts). I overlapped a main-checkout compile with the scratch checkout while both used the required preset CARGO_TARGET_DIR; later scratch runs also saw a stale `calternal-plugin` rlib without `notes_writer`. These are invalid reproductions, not native crashes. I am clearing the job target and restarting the Tags Cargo runs sequentially so only one checkout compiles into it at a time.
Author
Owner

After clearing the shared target, the pinned job/tags-1110 run set is stable. The second gdb run passed 283 unit tests, 2 ignored, and no SIGSEGV. The first three valid full cargo test -p calternal-plugin-notes -- --test-threads=4 runs passed; elapsed times were 243.1s, 383.7s and 420.9s. Each included the 700-Note test, and none returned Index is busy. The previous artifact-collision attempts are excluded. Seven clean Cargo runs remain.

After clearing the shared target, the pinned job/tags-1110 run set is stable. The second gdb run passed 283 unit tests, 2 ignored, and no SIGSEGV. The first three valid full `cargo test -p calternal-plugin-notes -- --test-threads=4` runs passed; elapsed times were 243.1s, 383.7s and 420.9s. Each included the 700-Note test, and none returned `Index is busy`. The previous artifact-collision attempts are excluded. Seven clean Cargo runs remain.
Author
Owner

Pinned job/tags-1110 reproduction update (commit 7e16b84ce0e2d21c3ce438d064da5b1c65c78f19): the clean sequential --test-threads=4 matrix has passed runs 1–6 under two CPU workers (runs 4–6 completed in 233.0s, 286.5s, and 295.1s). The full-suite GDB run also exited normally: 283 passed, 2 ignored; no SIGSEGV was observed, so GDB had no fault backtrace to capture. Four matrix runs remain. This does not establish the original SIGSEGV cause.

Pinned `job/tags-1110` reproduction update (commit `7e16b84ce0e2d21c3ce438d064da5b1c65c78f19`): the clean sequential `--test-threads=4` matrix has passed runs 1–6 under two CPU workers (runs 4–6 completed in 233.0s, 286.5s, and 295.1s). The full-suite GDB run also exited normally: 283 passed, 2 ignored; no SIGSEGV was observed, so GDB had no fault backtrace to capture. Four matrix runs remain. This does not establish the original SIGSEGV cause.
Author
Owner

A clean pinned job/tags-1110 run (7/10) produced another ordinary busy-error test failure under parallel Cargo load, with no SIGSEGV: tests::daily_log_projection_rebuild_resumes_without_markdown_writes panicked at its test .run(...).await.unwrap() with JobError { message: "Index is busy; retry shortly" }. The captured Rust backtrace starts at Result::unwrap in crates/plugins/notes/src/lib.rs:15601, then the test future and Tokio current-thread Runtime::block_on; it contains no native-library frame. Cargo reports exit 101, not signal 11. The failure is transient Index contention in a different heavy Notes test; the 700-Note test passed in that run. This explains the observed busy panic path, but does not explain the separate SIGSEGV described in the issue.

A clean pinned `job/tags-1110` run (7/10) produced another ordinary busy-error test failure under parallel Cargo load, with no SIGSEGV: `tests::daily_log_projection_rebuild_resumes_without_markdown_writes` panicked at its test `.run(...).await.unwrap()` with `JobError { message: "Index is busy; retry shortly" }`. The captured Rust backtrace starts at `Result::unwrap` in `crates/plugins/notes/src/lib.rs:15601`, then the test future and Tokio current-thread `Runtime::block_on`; it contains no native-library frame. Cargo reports exit 101, not signal 11. The failure is transient Index contention in a different heavy Notes test; the 700-Note test passed in that run. This explains the observed busy panic path, but does not explain the separate SIGSEGV described in the issue.
Author
Owner

Pinned job/tags-1110 run 9 reproduced the reported 700-Note failure under parallel load: tests::seven_hundred_notes_reconcile_without_feedback panicked at the first reconcile_user(...).await.unwrap() with ApiError(503, ... "Index is busy; retry shortly", true). The captured Rust backtrace is a normal unwrap_failed path through Tokio Runtime::block_on to this test; Cargo exited 101, with no signal 11. Run 10 is in progress. This directly supports adding the bounded transient-busy retry to both reconciliation passes while retaining all feedback-loop assertions.

Pinned `job/tags-1110` run 9 reproduced the reported 700-Note failure under parallel load: `tests::seven_hundred_notes_reconcile_without_feedback` panicked at the first `reconcile_user(...).await.unwrap()` with `ApiError(503, ... "Index is busy; retry shortly", true)`. The captured Rust backtrace is a normal `unwrap_failed` path through Tokio `Runtime::block_on` to this test; Cargo exited 101, with no signal 11. Run 10 is in progress. This directly supports adding the bounded transient-busy retry to both reconciliation passes while retaining all feedback-loop assertions.
Author
Owner

Completed the requested pinned job/tags-1110 sample: ten full cargo test -p calternal-plugin-notes -- --test-threads=4 runs under CPU load; results were 8 pass / 2 fail. Run 7 failed a separate 650-note Daily Log rebuild with the same transient JobError busy message; run 9 reproduced the target 700-Note test's transient 503; both were caught Rust test panics and exited 101. The 700-Note test passed in the other nine runs. GDB ran the full test binary and observed normal exit (283 passed, 2 ignored), no SIGSEGV and no native fault backtrace. Across ten origin/dev runs, the target test likewise had one normal 503 panic and no SIGSEGV. These observations show that unwrapping the marked busy error fails a Rust test normally; it does not itself produce a native crash in these reproductions. The issue's original SIGSEGV remains unreproduced, so no native library/call path can be assigned or root-cause fix claimed from current evidence.

Completed the requested pinned `job/tags-1110` sample: ten full `cargo test -p calternal-plugin-notes -- --test-threads=4` runs under CPU load; results were 8 pass / 2 fail. Run 7 failed a separate 650-note Daily Log rebuild with the same transient `JobError` busy message; run 9 reproduced the target 700-Note test's transient 503; both were caught Rust test panics and exited 101. The 700-Note test passed in the other nine runs. GDB ran the full test binary and observed normal exit (283 passed, 2 ignored), no SIGSEGV and no native fault backtrace. Across ten `origin/dev` runs, the target test likewise had one normal 503 panic and no SIGSEGV. These observations show that unwrapping the marked busy error fails a Rust test normally; it does not itself produce a native crash in these reproductions. The issue's original SIGSEGV remains unreproduced, so no native library/call path can be assigned or root-cause fix claimed from current evidence.
Author
Owner

Final report

Built and committed two Notes test fixes:

  • 7c7a8c614b329db9d89103639f2e15797687e257 — make setup_with_user honor its supplied User ID, matching the fixture contract.
  • 1def0601fc7f2eafc63b4ea27dc7517f4320d3cc — retry each 700-Note reconciliation with the existing bounded calternal_db::retry_when helper, and only when ApiError::retryable_busy marks SQLite BUSY/LOCKED. The operation is idempotent; the event-count and no-feedback assertions remain unchanged.

Reproduction and cause

On pinned origin/dev (de654a42ac4f9a6dca83bed8e0eebc99706f7dfe), ten full Notes runs with --test-threads=4 under CPU/parallel Cargo load had 9 passes and one ordinary 700-Note busy-error failure. On pinned job/tags-1110 (7e16b84ce0e2d21c3ce438d064da5b1c65c78f19), ten full runs had 8 passes and two ordinary busy-error failures: the target test once and a separate Daily Log rebuild test once. The target test passed in its other nine runs.

The target failure backtrace reaches Result::unwrap in seven_hundred_notes_reconcile_without_feedback (tags source line 8931), then Tokio Runtime::block_on and the test function. The error is the marked ApiError(503, "Index is busy; retry shortly", true). The separate job failure follows the same Rust panic path with JobError. Both exited with Cargo status 101. GDB also ran the pinned tags full test binary to normal exit (283 passed, 2 ignored). No run produced SIGSEGV, so there is no native fault backtrace or evidence tying the busy unwrap to a native library. The 503 unwrap explains a normal Rust test failure in reproduced cases; the reported SIGSEGV remains unreproduced, and its library/call path and root cause remain unknown.

Final gates

cargo fmt --check: no output; exit 0.

cargo clippy -p calternal-plugin-notes --all-targets -- -D warnings:
Finished dev profile [unoptimized + debuginfo] target(s) in 3m 41s

Three consecutive cargo test -p calternal-plugin-notes -- --test-threads=4 runs under two CPU workers:

  • Run 1: test result: ok. 287 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 249.51s; integration: test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.50s; doc tests: test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s.
  • Run 2: test result: ok. 287 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 289.59s; integration: test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.66s; doc tests: test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s.
  • Run 3: test result: ok. 287 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 344.31s; integration: test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; 0 finished in 1.55s; doc tests: test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s.

Focused regression test also passed under CPU load: test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 289 filtered out; finished in 88.52s.

Decisions and gaps

The design docs do not specify how this stress test handles transient SQLite contention. I used the shared bounded retry helper and its existing busy marker, and kept the retry test-only because the failure is in a test that directly invokes reconciliation. The original SIGSEGV root cause remains a known gap; this report does not claim it is fixed.

The required git fetch origin && git merge origin/dev was done once before final gates, at 96f21d57792e84d1cff366a05e92c4c623f99d16. The local origin/dev tracking ref advanced to a493c314edfd40027a72e0d7fc1cb97fa69b1eb9 while this job was running; the branch is now 16 commits behind that moving ref. I did not repeat the merge.

Head: 1def0601fc7f2eafc63b4ea27dc7517f4320d3cc.

## Final report Built and committed two Notes test fixes: - `7c7a8c614b329db9d89103639f2e15797687e257` — make `setup_with_user` honor its supplied User ID, matching the fixture contract. - `1def0601fc7f2eafc63b4ea27dc7517f4320d3cc` — retry each 700-Note reconciliation with the existing bounded `calternal_db::retry_when` helper, and only when `ApiError::retryable_busy` marks SQLite BUSY/LOCKED. The operation is idempotent; the event-count and no-feedback assertions remain unchanged. ## Reproduction and cause On pinned `origin/dev` (`de654a42ac4f9a6dca83bed8e0eebc99706f7dfe`), ten full Notes runs with `--test-threads=4` under CPU/parallel Cargo load had 9 passes and one ordinary 700-Note busy-error failure. On pinned `job/tags-1110` (`7e16b84ce0e2d21c3ce438d064da5b1c65c78f19`), ten full runs had 8 passes and two ordinary busy-error failures: the target test once and a separate Daily Log rebuild test once. The target test passed in its other nine runs. The target failure backtrace reaches `Result::unwrap` in `seven_hundred_notes_reconcile_without_feedback` (tags source line 8931), then Tokio `Runtime::block_on` and the test function. The error is the marked `ApiError(503, "Index is busy; retry shortly", true)`. The separate job failure follows the same Rust panic path with `JobError`. Both exited with Cargo status 101. GDB also ran the pinned tags full test binary to normal exit (283 passed, 2 ignored). No run produced SIGSEGV, so there is no native fault backtrace or evidence tying the busy unwrap to a native library. The 503 unwrap explains a normal Rust test failure in reproduced cases; the reported SIGSEGV remains unreproduced, and its library/call path and root cause remain unknown. ## Final gates `cargo fmt --check`: no output; exit 0. `cargo clippy -p calternal-plugin-notes --all-targets -- -D warnings`: `Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 41s` Three consecutive `cargo test -p calternal-plugin-notes -- --test-threads=4` runs under two CPU workers: - Run 1: `test result: ok. 287 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 249.51s`; integration: `test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.50s`; doc tests: `test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s`. - Run 2: `test result: ok. 287 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 289.59s`; integration: `test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.66s`; doc tests: `test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s`. - Run 3: `test result: ok. 287 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 344.31s`; integration: `test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; 0 finished in 1.55s`; doc tests: `test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s`. Focused regression test also passed under CPU load: `test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 289 filtered out; finished in 88.52s`. ## Decisions and gaps The design docs do not specify how this stress test handles transient SQLite contention. I used the shared bounded retry helper and its existing busy marker, and kept the retry test-only because the failure is in a test that directly invokes reconciliation. The original SIGSEGV root cause remains a known gap; this report does not claim it is fixed. The required `git fetch origin && git merge origin/dev` was done once before final gates, at `96f21d57792e84d1cff366a05e92c4c623f99d16`. The local `origin/dev` tracking ref advanced to `a493c314edfd40027a72e0d7fc1cb97fa69b1eb9` while this job was running; the branch is now 16 commits behind that moving ref. I did not repeat the merge. Head: `1def0601fc7f2eafc63b4ea27dc7517f4320d3cc`.
Author
Owner

Correction to the run 3 Apple replay integration line in my final report: the verbatim output was test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.55s.

Correction to the run 3 Apple replay integration line in my final report: the verbatim output was `test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.55s`.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#1136
No description provided.