ADRs (proposed): Photos, Files, Tasks data model #561

Closed
kayg wants to merge 1 commit from issue/adrs-photos-files-tasks into dev
Owner

Docs only. Three proposed ADRs for kayg's review. Do not merge until kayg says so.

Numbers start at 0050, because 0049 is in #537 (not merged) and 0041–0042 are on the client branch.

  • 0050 Photos: originals, sidecars and processing (#505)

    • storage layout and lossless Apple originals;
    • XMP sidecars, with our own reader and writer;
    • Live Photo, burst, RAW+JPEG and edit grouping, with the time-based fallback;
    • WebP thumbnails, embedded previews first;
    • the sandboxed worker;
    • OCR, SigLIP2 and faces;
    • sqlite-vec bit search plus re-rank, with the 200k gate;
    • kiddo geocoding, zip imports, tus and the IETF draft;
    • the 120 fps timeline;
    • versions to pin and the open checks.
  • 0051 Files: one real tree with smart views (#559)

    • one tree, the watcher and reconcile scans;
    • uploads and WebDAV in calternaldav;
    • previews, reflink versions and one Trash;
    • sharing and search;
    • automatic dedupe (F11 still needs kayg's confirmation);
    • offline pins.

    It amends 0027's dedupe.

  • 0052 Tasks: the data model (#560). The UI is out of scope (design grill 2026-10-18).

    • checkbox = task, task notes, frontmatter only;
    • the atomic status/checkbox sync;
    • recurrence with the rrule crate;
    • depends-on, time-spent and completed;
    • renames and deletes;
    • Obsidian conversion;
    • the shared NLP core;
    • reminders and batch ticks;
    • the test plan.

Each ADR has its context, decision, why, rejected alternatives, failure modes, consequences, open questions with recommended answers, and an ordered implementation plan with acceptance tests and benchmarks. Sources: memory decision files, calternal-research/*-2026-10-17.md (the bench results win where they disagree), ADRs 0040–0049, and #505, #412, #534 and #539.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WCcFhwwgMK66k9LMVqogNJ

Docs only. Three **proposed** ADRs for kayg's review. **Do not merge until kayg says so.** Numbers start at 0050, because 0049 is in #537 (not merged) and 0041–0042 are on the client branch. - **0050 Photos: originals, sidecars and processing** (#505) - storage layout and lossless Apple originals; - XMP sidecars, with our own reader and writer; - Live Photo, burst, RAW+JPEG and edit grouping, with the time-based fallback; - WebP thumbnails, embedded previews first; - the sandboxed worker; - OCR, SigLIP2 and faces; - sqlite-vec bit search plus re-rank, with the 200k gate; - kiddo geocoding, zip imports, tus and the IETF draft; - the 120 fps timeline; - versions to pin and the open checks. - **0051 Files: one real tree with smart views** (#559) - one tree, the watcher and reconcile scans; - uploads and WebDAV in calternaldav; - previews, reflink versions and one Trash; - sharing and search; - automatic dedupe (**F11 still needs kayg's confirmation**); - offline pins. It amends 0027's dedupe. - **0052 Tasks: the data model** (#560). **The UI is out of scope** (design grill 2026-10-18). - checkbox = task, task notes, frontmatter only; - the atomic status/checkbox sync; - recurrence with the rrule crate; - depends-on, time-spent and completed; - renames and deletes; - Obsidian conversion; - the shared NLP core; - reminders and batch ticks; - the test plan. Each ADR has its context, decision, why, rejected alternatives, failure modes, consequences, open questions with recommended answers, and an ordered implementation plan with acceptance tests and benchmarks. Sources: memory decision files, `calternal-research/*-2026-10-17.md` (the bench results win where they disagree), ADRs 0040–0049, and #505, #412, #534 and #539. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01WCcFhwwgMK66k9LMVqogNJ
ADRs (proposed): Photos, Files, Tasks data model
Some checks failed
CI / server (pull_request) Successful in 30s
CI / rust (pull_request) Successful in 1m55s
CI / web (pull_request) Failing after 28s
6a2a2eb0be
0050 Photos: untouched originals in Photos/YYYY/YYYY-MM-DD, XMP sidecars
with our own reader/writer, grouping rebuilt from files (content ids,
bursts, edits, RAW+JPEG, time-based Live Photo fallback), WebP ladder
with embedded previews first, the sandboxed worker (self re-exec,
landlock, seccomp, rlimits, two lanes, self-test, fail closed), OCR
always on the server, SigLIP2 precision chosen on real photos, faces
opt-in, sqlite-vec bit search + float re-rank with a 200k gate, kiddo
geocoding, zip imports in the worker, tus + IETF uploads, the 120 fps
timeline contract, pinned versions and open checks.

0051 Files: one real tree with Notes and Photos as smart views, curated
root, watcher + reconcile scans, uploads, WebDAV in calternaldav,
sandboxed previews, reflink versions with retention, one Trash, SH1-SH10
sharing, FTS5 search, automatic FIDEDUPERANGE dedupe (F11 pending), and
offline pins. Amends 0027's dedupe.

0052 Tasks (data model only, UI out of scope): checkbox = task, task
notes, frontmatter as the only truth, atomic status/checkbox sync via
the bulk-edit job, recurrence with the rrule crate, depends-on,
time-spent, renames and deletes, Obsidian conversion, one shared NLP
core, reminders, batch ticks, and a test plan.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WCcFhwwgMK66k9LMVqogNJ
Author
Owner

housekeeping #1009: needs-decision.

Proposed Photos/Files/Tasks ADR bundle. New Files plan #962 and Tasks ADR 0066 overlap, while Photos remains undecided. Do not revive conflicting ADR numbers or close the full bundle as landed.

original head: 6a2a2eb0bec35e5728d1e0211104acbba89007f4. against dev cd7f84432febfc63b788fbb9b9f9950452982d74, git cherry reports 1 unmatched and 0 equivalent patches. the landing audit lists each candidate missing commit and stable patch match in pr-561.md; unmatched patches can include superseded behavior.

left open, source branch unchanged. no rebase or new test claim for this decision lane.

housekeeping #1009: needs-decision. Proposed Photos/Files/Tasks ADR bundle. New Files plan #962 and Tasks ADR 0066 overlap, while Photos remains undecided. Do not revive conflicting ADR numbers or close the full bundle as landed. original head: `6a2a2eb0bec35e5728d1e0211104acbba89007f4`. against dev `cd7f84432febfc63b788fbb9b9f9950452982d74`, git cherry reports 1 unmatched and 0 equivalent patches. the [landing audit](https://git.kayg.org/attachments/fe3c09dc-dea3-47a0-92e2-b44a777083e5) lists each candidate missing commit and stable patch match in `pr-561.md`; unmatched patches can include superseded behavior. left open, source branch unchanged. no rebase or new test claim for this decision lane.
Author
Owner

Closing as superseded (kayg agreed 11-09): Files → plan #962 (merged), Tasks data model → ADR 0066, Photos → plan #1018. The branch stays as an archive ref.

Closing as superseded (kayg agreed 11-09): Files → plan #962 (merged), Tasks data model → ADR 0066, Photos → plan #1018. The branch stays as an archive ref.
kayg closed this pull request 2026-11-09 06:28:31 +00:00
Some checks failed
CI / server (pull_request) Successful in 30s
CI / rust (pull_request) Successful in 1m55s
CI / web (pull_request) Failing after 28s

Pull request closed

Sign in to join this conversation.
No reviewers
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!561
No description provided.