Journal CalDAV write silently drops VALARM components #392

Closed
opened 2026-09-29 04:18:56 +00:00 by kayg · 8 comments
Owner

The local API probe received 201 for a Journal VEVENT PUT containing a nested VALARM (ACTION:DISPLAY without a trigger). The Journal Log model has no alarm field, and the adapter ignores VALARM components, so a successful write can lose alarm data. I filed a separate issue with the reproduction because fixing Journal DAV behavior would change calternal-dav, outside this quota job.

The local API probe received `201` for a Journal VEVENT PUT containing a nested VALARM (`ACTION:DISPLAY` without a trigger). The Journal Log model has no alarm field, and the adapter ignores VALARM components, so a successful write can lose alarm data. I filed a separate issue with the reproduction because fixing Journal DAV behavior would change `calternal-dav`, outside this quota job.
Author
Owner

Fixed on job/sec-batch in commits cd152bd3 and 71acd832. A Journal Log entry has no alarm field. The CalDAV parser now rejects both a VALARM without TRIGGER and a valid VALARM instead of accepting a PUT that silently drops reminder data. The parser regression covers both forms, and the real-server Journal DAV adversarial section completed without an alarm-acceptance finding. I kept the Apple Reminders implementation in reminders.rs untouched.

Fixed on job/sec-batch in commits cd152bd3 and 71acd832. A Journal Log entry has no alarm field. The CalDAV parser now rejects both a VALARM without TRIGGER and a valid VALARM instead of accepting a PUT that silently drops reminder data. The parser regression covers both forms, and the real-server Journal DAV adversarial section completed without an alarm-acceptance finding. I kept the Apple Reminders implementation in reminders.rs untouched.
Author
Owner

Claude review of job/sec-batch (edce1e84): do not reject Journal VALARMs. Apple Calendar adds default alerts to many events, so a 4xx on a VALARM breaks normal Apple sync; the rule from #393/DESIGN is: never reject a well-formed Apple request, preserve what calternal cannot represent. Store alarms losslessly with the log entry (the same way #358 keeps reminder VALARMs in the calternal-dav frontmatter map, or a block property on the log line) and return them unchanged on GET/REPORT. Only a malformed VALARM (#379: no TRIGGER) is a 4xx.

Claude review of job/sec-batch (edce1e84): **do not reject Journal VALARMs**. Apple Calendar adds default alerts to many events, so a 4xx on a VALARM breaks normal Apple sync; the rule from #393/DESIGN is: never reject a well-formed Apple request, preserve what calternal cannot represent. Store alarms losslessly with the log entry (the same way #358 keeps reminder VALARMs in the calternal-dav frontmatter map, or a block property on the log line) and return them unchanged on GET/REPORT. Only a malformed VALARM (#379: no TRIGGER) is a 4xx.
Author
Owner

Note for job sec-batch: dev now has #394's probe (tests/adversarial/dav_probe_contracts.py, commit ecf706df) asserting that an ignored Journal alarm is NOT stored. When you switch Journal VALARMs to lossless preservation, flip that probe to assert the alarm IS returned unchanged on GET/REPORT (keep its broken-server regression).

Note for job sec-batch: dev now has #394's probe (tests/adversarial/dav_probe_contracts.py, commit ecf706df) asserting that an ignored Journal alarm is NOT stored. When you switch Journal VALARMs to lossless preservation, flip that probe to assert the alarm IS returned unchanged on GET/REPORT (keep its broken-server regression).
Author
Owner

Starting integration work on job/merge-batch at 669fb3bff218c9cd7a4fbdc551f4d33359478fad (merge-base with origin/dev: 369ab6a2f9fc673e3564b94857fbecfeb04df404). Initial worktree is clean. I am following the integration brief to fix merged API conflicts, preserve area-calendar behavior and VALARM round trips, then run the requested gates.

Starting integration work on `job/merge-batch` at `669fb3bff218c9cd7a4fbdc551f4d33359478fad` (merge-base with `origin/dev`: `369ab6a2f9fc673e3564b94857fbecfeb04df404`). Initial worktree is clean. I am following the integration brief to fix merged API conflicts, preserve area-calendar behavior and VALARM round trips, then run the requested gates.
Author
Owner

Finding from source review: apple_replay.rs first asserts that /dav/calendars/{USER}/journal/ returns 410 Gone, then later PUTs the default-alert VALARM to /journal/ and expects 201. DESIGN §46 retires that collection in favor of per-area collections. The VALARM round-trip assertions should use the untagged collection. The Notes migration set now contains version 18 (Reminders wire epoch) followed by version 19 (area deletes), while vtodo_wire_upgrade_rotates_sync_epoch_once removes the last item; I will make that setup exclude version 18 by number and retain its rotate-once assertions.

Finding from source review: `apple_replay.rs` first asserts that `/dav/calendars/{USER}/journal/` returns 410 Gone, then later PUTs the default-alert VALARM to `/journal/` and expects 201. DESIGN §46 retires that collection in favor of per-area collections. The VALARM round-trip assertions should use the `untagged` collection. The Notes migration set now contains version 18 (Reminders wire epoch) followed by version 19 (area deletes), while `vtodo_wire_upgrade_rotates_sync_epoch_once` removes the last item; I will make that setup exclude version 18 by number and retain its rotate-once assertions.
Author
Owner

merge-batch: resumed and finished (Claude, after the Codex usage limit)

Head: 87813cedb4f785f63c357e832697f1e863da604e on job/merge-batch (not pushed, dev not moved).

Fixes (commit 87813cedb)

  • crates/calternal-dav/tests/apple_replay.rs: the #392 VALARM section still wrote to the retired journal/ collection (410 Gone since #356). It now uses untagged/. After that the default-alert PUT got 412: the macOS capture put-new-event-default-alert.ics has the same date, start, end and SUMMARY ("Created on Mac") as put-new-event.ics, which the test creates just before. Area calendars dedupe by areas::same_log_event, so 412 is the correct product answer. The test now gives the alert event its own title; the Apple VALARM stays byte-exact and the round-trip and REPORT assertions are unchanged. No product code changed.
  • crates/plugins/notes/src/lib.rs: vtodo_wire_upgrade_rotates_sync_epoch_once now removes migration 18 by version (and asserts it existed) instead of popping the last one (19, area deletes). The epoch-rotates-once assertions are unchanged.
  • calternal-server E0599: not a code error; it compiles once apps/web/build exists.

Gates (verbatim)

== cargo fmt --check
fmt: ok (exit 0)
== clippy calternal-dav
    Checking proptest v1.11.0
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 9m 26s
exit 0
== test calternal-dav
test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit 0
== clippy calternal-plugin-notes
    Checking calternal-plugin-notes v0.0.1 (/home/kayg/Developer/calternal-wt/merge-batch/crates/plugins/notes)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 15m 49s
exit 0
== test calternal-plugin-notes
test result: ok. 122 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 47.83s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit 0
== clippy calternal-cli
    Checking calternal-cli v0.0.1 (/home/kayg/Developer/calternal-wt/merge-batch/crates/calternal-cli)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 10m 11s
exit 0
== test calternal-cli
test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.77s
test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.07s
exit 0
== clippy calternal-server
    Checking calternal-plugin-analytics v0.0.1 (/home/kayg/Developer/calternal-wt/merge-batch/crates/plugins/analytics)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 60m 14s
exit 0
== test calternal-server
test result: ok. 82 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 5.70s
exit 0
== clippy calternal-fs
    Checking proptest v1.11.0
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.88s
exit 0
== test calternal-fs
test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.47s
test result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.08s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit 0
== bun run check
$ node scripts/check-type-tokens.mjs && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json
Text sizes use shared role tokens.
1790726016486 START "/home/kayg/Developer/calternal-wt/merge-batch/apps/web"
1790726016502 COMPLETED 1879 FILES 0 ERRORS 0 WARNINGS 0 FILES_WITH_PROBLEMS
exit 0
== bun run test
 Test Files  129 passed (129)
      Tests  825 passed (825)
exit 0
== check-generated
Saved lockfile
✨ openapi-typescript 7.13.0
🚀 ../../contracts/openapi.json → src/generated.ts [467ms]
exit 0
== adversarial unittest
----------------------------------------------------------------------
Ran 11 tests in 0.004s

FAILED (errors=1)
exit 1
== GATES DONE

The adversarial python3 -m unittest error is an import of test_search_result_matching → search_chaos.py. At import time that module reads ADVERSARIAL_WORK_DIR and the bearer files, which only tests/adversarial/run.sh creates against a live server. The module is the same on base 369ab6a2f, and this batch does not change it, so the error is from the environment, not from the batch. The other 10 tests pass.

Fast-forward status

Not fast-forwardable. origin/dev moved to 9a91f2df5 (crossday-469, mac-verify #356, mail-m2). git merge-tree shows no textual conflict, but mac-verify changes calternal-dav/src/protocol.rs and tests/apple_replay.rs (area DELETE/MOVE without If-Match). Per the brief, I did not merge dev again. A merge of origin/dev must be followed by a rerun of the dav/notes/server gates.

## merge-batch: resumed and finished (Claude, after the Codex usage limit) Head: `87813cedb4f785f63c357e832697f1e863da604e` on `job/merge-batch` (not pushed, dev not moved). ### Fixes (commit 87813cedb) - `crates/calternal-dav/tests/apple_replay.rs`: the #392 VALARM section still wrote to the retired `journal/` collection (410 Gone since #356). It now uses `untagged/`. After that the default-alert PUT got **412**: the macOS capture `put-new-event-default-alert.ics` has the same date, start, end and SUMMARY ("Created on Mac") as `put-new-event.ics`, which the test creates just before. Area calendars dedupe by `areas::same_log_event`, so 412 is the correct product answer. The test now gives the alert event its own title; the Apple VALARM stays byte-exact and the round-trip and REPORT assertions are unchanged. No product code changed. - `crates/plugins/notes/src/lib.rs`: `vtodo_wire_upgrade_rotates_sync_epoch_once` now removes migration **18** by version (and asserts it existed) instead of popping the last one (19, area deletes). The epoch-rotates-once assertions are unchanged. - `calternal-server` E0599: not a code error; it compiles once `apps/web/build` exists. ### Gates (verbatim) ``` == cargo fmt --check fmt: ok (exit 0) == clippy calternal-dav Checking proptest v1.11.0 Finished `dev` profile [unoptimized + debuginfo] target(s) in 9m 26s exit 0 == test calternal-dav test result: ok. 32 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit 0 == clippy calternal-plugin-notes Checking calternal-plugin-notes v0.0.1 (/home/kayg/Developer/calternal-wt/merge-batch/crates/plugins/notes) Finished `dev` profile [unoptimized + debuginfo] target(s) in 15m 49s exit 0 == test calternal-plugin-notes test result: ok. 122 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 47.83s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit 0 == clippy calternal-cli Checking calternal-cli v0.0.1 (/home/kayg/Developer/calternal-wt/merge-batch/crates/calternal-cli) Finished `dev` profile [unoptimized + debuginfo] target(s) in 10m 11s exit 0 == test calternal-cli test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.77s test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.07s exit 0 == clippy calternal-server Checking calternal-plugin-analytics v0.0.1 (/home/kayg/Developer/calternal-wt/merge-batch/crates/plugins/analytics) Finished `dev` profile [unoptimized + debuginfo] target(s) in 60m 14s exit 0 == test calternal-server test result: ok. 82 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 5.70s exit 0 == clippy calternal-fs Checking proptest v1.11.0 Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.88s exit 0 == test calternal-fs test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.47s test result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 13.08s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit 0 == bun run check $ node scripts/check-type-tokens.mjs && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json Text sizes use shared role tokens. 1790726016486 START "/home/kayg/Developer/calternal-wt/merge-batch/apps/web" 1790726016502 COMPLETED 1879 FILES 0 ERRORS 0 WARNINGS 0 FILES_WITH_PROBLEMS exit 0 == bun run test Test Files 129 passed (129) Tests 825 passed (825) exit 0 == check-generated Saved lockfile ✨ openapi-typescript 7.13.0 🚀 ../../contracts/openapi.json → src/generated.ts [467ms] exit 0 == adversarial unittest ---------------------------------------------------------------------- Ran 11 tests in 0.004s FAILED (errors=1) exit 1 == GATES DONE ``` The adversarial `python3 -m unittest` error is an import of `test_search_result_matching` → `search_chaos.py`. At import time that module reads `ADVERSARIAL_WORK_DIR` and the bearer files, which only `tests/adversarial/run.sh` creates against a live server. The module is the same on base `369ab6a2f`, and this batch does not change it, so the error is from the environment, not from the batch. The other 10 tests pass. ### Fast-forward status **Not fast-forwardable.** `origin/dev` moved to `9a91f2df5` (crossday-469, mac-verify #356, mail-m2). `git merge-tree` shows no textual conflict, but mac-verify changes `calternal-dav/src/protocol.rs` and `tests/apple_replay.rs` (area DELETE/MOVE without If-Match). Per the brief, I did not merge dev again. A merge of origin/dev must be followed by a rerun of the dav/notes/server gates.
Author
Owner

merge-batch: origin/dev (9a91f2df5) merged, gates rerun

Head: d86a05b5001ab506b6864afbd67b61295995d9b8 (fast-forward of origin/dev 9a91f2df5; not pushed, dev not moved).

  • 39777e806 merges origin/dev. There were no textual conflicts. protocol.rs and apple_replay.rs keep both behaviours: the #392 VALARM checks run on untagged/, and mac-verify's apple_calendar_move_and_delete_without_if_match replay (missing If-Match on DELETE/MOVE, moved alias gone) is a separate test. Both pass.
  • 1a6d31643 fixes a semantic conflict. The #469 test reported_crossday_log_projects_exact_start_and_end_dates built a JournalEvent without the #392 alarms field (E0063). It now sets alarms: Vec::new().
  • d86a05b50 fixes contract drift from dev. #469 merged without regenerating the contract: the Task view gained start_time, scheduled_time and due_time, and by_day gained a summary. check-generated.sh failed until the files were regenerated.
  • Migrations: the notes test removes migration 18 by version (notes newest is 19). The only other positional migration code is two Files tests. They pop but assert the popped version (15, 14), and 15 is still the newest Files migration, so a change would fail loudly.

Gates after the merge (verbatim). Full run on 39777e806:

== web build
Checked 629 installs across 747 packages (no changes) [1.84s]
See https://rolldown.rs/reference/InputOptions.checks#bundlertimings for more details.

== cargo fmt --check
fmt: ok (exit 0)
== clippy calternal-dav
error: could not compile `calternal-dav` (lib test) due to 1 previous error
warning: build failed, waiting for other jobs to finish...
exit 101
== test calternal-dav
error[E0063]: missing field `alarms` in initializer of `JournalEvent`
error: could not compile `calternal-dav` (lib test) due to 1 previous error
exit 101
== clippy calternal-plugin-notes
    Checking calternal-plugin-notes v0.0.1 (/home/kayg/Developer/calternal-wt/merge-batch/crates/plugins/notes)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.75s
exit 0
== test calternal-plugin-notes
test result: ok. 123 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 45.73s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit 0
== clippy calternal-server
    Checking calternal-plugin-mail v0.0.1 (/home/kayg/Developer/calternal-wt/merge-batch/crates/plugins/mail)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 53.58s
exit 0
== test calternal-server
test result: ok. 83 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 5.89s
exit 0
== clippy calternal-fs
    Checking calternal-fs v0.1.0 (/home/kayg/Developer/calternal-wt/merge-batch/crates/calternal-fs)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.12s
exit 0
== test calternal-fs
test result: ok. 39 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.47s
test result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 22.80s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit 0
== bun run check
$ node scripts/check-type-tokens.mjs && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json
Text sizes use shared role tokens.
1790726886985 START "/home/kayg/Developer/calternal-wt/merge-batch/apps/web"
1790726886999 COMPLETED 1908 FILES 0 ERRORS 0 WARNINGS 0 FILES_WITH_PROBLEMS
exit 0
== bun run test
 Test Files  131 passed (131)
      Tests  845 passed (845)
exit 0
== check-generated
             start_time?: string | null;
             status: string;
             tags: string[];
exit 1
== adversarial unittest
----------------------------------------------------------------------
Ran 11 tests in 0.003s

FAILED (errors=1)
exit 1
== GATES DONE

Rerun after the two fixes (on d86a05b50):

== cargo fmt --check
exit 0
== clippy calternal-dav
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.29s
exit 0
== test calternal-dav
test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 31 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
exit 0
== check-generated
✨ openapi-typescript 7.13.0
🚀 ../../contracts/openapi.json → src/generated.ts [443.2ms]
exit 0
== git status
== bun run check (apps/web, after regenerated types)
1790727235962 START "/home/kayg/Developer/calternal-wt/merge-batch/apps/web"
1790727235979 COMPLETED 1908 FILES 0 ERRORS 0 WARNINGS 0 FILES_WITH_PROBLEMS
exit 0

The two fix commits touch only a dav test fixture and the generated contract/types. The notes, server and fs gates and bun run test from the full run still apply.

The adversarial python3 -m unittest error is the same one as before: search_chaos.py needs the ADVERSARIAL_WORK_DIR that run.sh creates against a live server. It exists unchanged on base and dev; the batch does not touch it.

## merge-batch: origin/dev (9a91f2df5) merged, gates rerun Head: `d86a05b5001ab506b6864afbd67b61295995d9b8` (fast-forward of `origin/dev` `9a91f2df5`; not pushed, dev not moved). - `39777e806` merges origin/dev. There were no textual conflicts. `protocol.rs` and `apple_replay.rs` keep both behaviours: the #392 VALARM checks run on `untagged/`, and mac-verify's `apple_calendar_move_and_delete_without_if_match` replay (missing If-Match on DELETE/MOVE, moved alias gone) is a separate test. Both pass. - `1a6d31643` fixes a semantic conflict. The #469 test `reported_crossday_log_projects_exact_start_and_end_dates` built a `JournalEvent` without the #392 `alarms` field (E0063). It now sets `alarms: Vec::new()`. - `d86a05b50` fixes contract drift from dev. #469 merged without regenerating the contract: the Task view gained `start_time`, `scheduled_time` and `due_time`, and `by_day` gained a summary. `check-generated.sh` failed until the files were regenerated. - Migrations: the notes test removes migration 18 by version (notes newest is 19). The only other positional migration code is two Files tests. They pop but assert the popped version (15, 14), and 15 is still the newest Files migration, so a change would fail loudly. ### Gates after the merge (verbatim). Full run on 39777e806: ``` == web build Checked 629 installs across 747 packages (no changes) [1.84s] See https://rolldown.rs/reference/InputOptions.checks#bundlertimings for more details. == cargo fmt --check fmt: ok (exit 0) == clippy calternal-dav error: could not compile `calternal-dav` (lib test) due to 1 previous error warning: build failed, waiting for other jobs to finish... exit 101 == test calternal-dav error[E0063]: missing field `alarms` in initializer of `JournalEvent` error: could not compile `calternal-dav` (lib test) due to 1 previous error exit 101 == clippy calternal-plugin-notes Checking calternal-plugin-notes v0.0.1 (/home/kayg/Developer/calternal-wt/merge-batch/crates/plugins/notes) Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.75s exit 0 == test calternal-plugin-notes test result: ok. 123 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 45.73s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit 0 == clippy calternal-server Checking calternal-plugin-mail v0.0.1 (/home/kayg/Developer/calternal-wt/merge-batch/crates/plugins/mail) Finished `dev` profile [unoptimized + debuginfo] target(s) in 53.58s exit 0 == test calternal-server test result: ok. 83 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 5.89s exit 0 == clippy calternal-fs Checking calternal-fs v0.1.0 (/home/kayg/Developer/calternal-wt/merge-batch/crates/calternal-fs) Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.12s exit 0 == test calternal-fs test result: ok. 39 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.47s test result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 22.80s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit 0 == bun run check $ node scripts/check-type-tokens.mjs && svelte-kit sync && svelte-check --tsconfig ./tsconfig.json Text sizes use shared role tokens. 1790726886985 START "/home/kayg/Developer/calternal-wt/merge-batch/apps/web" 1790726886999 COMPLETED 1908 FILES 0 ERRORS 0 WARNINGS 0 FILES_WITH_PROBLEMS exit 0 == bun run test Test Files 131 passed (131) Tests 845 passed (845) exit 0 == check-generated start_time?: string | null; status: string; tags: string[]; exit 1 == adversarial unittest ---------------------------------------------------------------------- Ran 11 tests in 0.003s FAILED (errors=1) exit 1 == GATES DONE ``` ### Rerun after the two fixes (on d86a05b50): ``` == cargo fmt --check exit 0 == clippy calternal-dav Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.29s exit 0 == test calternal-dav test result: ok. 33 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 31 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s exit 0 == check-generated ✨ openapi-typescript 7.13.0 🚀 ../../contracts/openapi.json → src/generated.ts [443.2ms] exit 0 == git status == bun run check (apps/web, after regenerated types) 1790727235962 START "/home/kayg/Developer/calternal-wt/merge-batch/apps/web" 1790727235979 COMPLETED 1908 FILES 0 ERRORS 0 WARNINGS 0 FILES_WITH_PROBLEMS exit 0 ``` The two fix commits touch only a dav test fixture and the generated contract/types. The notes, server and fs gates and `bun run test` from the full run still apply. The adversarial `python3 -m unittest` error is the same one as before: `search_chaos.py` needs the `ADVERSARIAL_WORK_DIR` that `run.sh` creates against a live server. It exists unchanged on base and dev; the batch does not touch it.
Author
Owner

Merged into dev at d86a05b50 and pushed. Deploy status is on #203.

Merged into dev at d86a05b50 and pushed. Deploy status is on #203.
kayg closed this issue 2026-09-30 00:29:53 +00:00
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#392
No description provided.