Files
lightcraft/plan/STATUS.md
T

4.1 KiB

Status

Last updated 2026-10-10.

Where we stand

  • Forked from upstream; Phase 0 (brand configuration, licence, plan/, tracker, Immich test server) in progress.
  • Tracker (docs/parity.md, cargo xtask parity): 581 counted rows, 394 ✅ · 51 🟡 · 109 ⬜ · 27 🚫. Weighted completion 75.7% of 554 in-scope rows (P0 98.2% of 200 · P1 91.4% of 162 · P2 38.7% of 191). The drop from 80.0% is the Classic reopenings and the rows added from PLAN.md §2, not a regression.
  • The 10 IMM-* rows are in the document but not counted yet: xtask/src/parity.rs accepts only the LR, LRC, MENU, KEY and KEYC prefixes (add "IMM" to is_row_id).

Phase 0 checklist

Item State
0.1 Fork, upstream remote, fork-base tag, docs/upstream-merge.md in progress (other agents)
0.2 brand.toml + brand crate + brand check in progress (other agents)
0.3 Remove upstream branding in progress (other agents)
0.4 MIT licence, cargo deny in progress (other agents)
0.5 plan/ written and committed (only plan/observations/ ignored) done
0.5 Tracker: Classic rows reopened, PLAN.md §2 rows added, "Top gaps" de-duplicated, IMM section done (IMM counting needs the parity.rs change above)
0.5 plan/immich.md done (checked against Immich v3.3.1)
0.5 xtask/immich/compose.yml + `cargo xtask immich up down
0.6 Shared infrastructure see below

Shared infrastructure (Phase 0.6)

craft-fonts (CRAFT_FONTS_DIR)

  • An optional build input for CJK and other wide-coverage fonts, from a checkout of the craft-fonts repository.
  • crates/engine-export/build.rs reads CRAFT_FONTS_DIR (re-run when it changes). A relative path is resolved against the workspace root as well as the crate directory. If the directory is unreadable the build warns and continues without the fonts; with CRAFT_FONTS_REQUIRED set, a missing directory is a build error (use that in release builds).
  • With the fonts, export watermarks fall back to the bundled Japanese faces (Mincho on desktop, a Gothic face on the web build); without them, watermarks_work_without_craft_fonts keeps watermarks working with the default face.
  • The checkout lives outside the repository or in the git-ignored /craft-fonts; it is never committed. Typical use: CRAFT_FONTS_DIR=../craft-fonts cargo xtask run.
  • Phase 3's text crate takes over font loading and will read the same variable.

Raw corpus (cargo xtask corpus)

  • cargo xtask corpus prints where test corpora live: corpus/raw/ (CC0 raw.pixls.us samples) and corpus/images/ (optional CC0 / public-domain JPEG, PNG, TIFF, HEIC). The folder is git-ignored.
  • cargo xtask corpus --download fetches PngSuite and the pinned CC0 raw samples with curl and checks each file's SHA-256; a mismatching file is deleted and reported so it is fetched again next time.
  • Tests that need a corpus skip cleanly when it is absent, so CI without the corpus stays green; corpus-backed checks (for example crates/raw/tests/cr3_corpus.rs) run where it is present.

Never-crash standard

  • Confirmed: AGENTS.md carries the standard in its "Never crash (outranks feature work)" section: non-test code never panics (no unwrap, expect, panic!, unreachable!, todo!, unimplemented!), malformed input becomes an error the user or agent can act on, and a panic hook plus catch_unwind around command dispatch and import/export is the last-resort guard (panic = "unwind" on native). It links to the external full standard; that repository is not needed at build time.
  • AGENTS.md still names the upstream product in that section; the brand clean-up (Phase 0.2/0.3) owns that wording.

Immich test server

  • cargo xtask immich up starts Immich v3.3.1 on http://127.0.0.1:2284 (docker volumes xtask-immich_*), seed creates admin@example.invalid, an API key in target/immich/api-key and an album of 8 generated PNGs, down [--volumes] stops it (and wipes data). Re-running seed is safe: uploads come back as duplicates.