Summary
The vocab loader (load_packs) supports multi-pack composition since v1.2.0 (RFC-018). It accepts pack name strings; collisions raise ManifestError. v1.9.0 ships with 2 packs (starter + expressive-baseline) loaded together; the workflow works end-to-end. But the loader's conflict-resolution behavior under heavier multi-pack scenarios hasn't been stress-tested.
What this RFC would argue
- Pack-versioning shape. Semver per pack? Lockfile (chemigram.lock)? How does a photographer pin a specific version of a vendor pack vs floating to latest?
- Vendor-pack distribution. PyPI? GitHub releases? A vendor-pack repo with a registry? Fetch-and-cache mechanism?
- Cross-pack name collision rules. Currently first-load-wins (or error?). What's the right policy when starter ships
exposure and a vendor ships exposure with different magnitudes? Namespacing? Explicit override?
- Pack endorsement / curation. When vendors ship packs, does the project curate or just list? Quality bar?
- Cross-pack composition stress-tests. What happens when 5 packs load with overlapping entries?
Why this is keyboard-only (v1.10.0 candidate)
Pure RFC drafting + a few stress tests against the existing loader. No darktable required.
Related
- RFC-018 / ADR-063+ADR-064 (multi-pack loading shipped v1.2.0)
- RFC-027 (multi-photographer review; the social companion)
- ADR-046 (vocabulary pack distribution — historical)
🤖 Generated with Claude Code
Summary
The vocab loader (
load_packs) supports multi-pack composition since v1.2.0 (RFC-018). It accepts pack name strings; collisions raiseManifestError. v1.9.0 ships with 2 packs (starter + expressive-baseline) loaded together; the workflow works end-to-end. But the loader's conflict-resolution behavior under heavier multi-pack scenarios hasn't been stress-tested.What this RFC would argue
exposureand a vendor shipsexposurewith different magnitudes? Namespacing? Explicit override?Why this is keyboard-only (v1.10.0 candidate)
Pure RFC drafting + a few stress tests against the existing loader. No darktable required.
Related
🤖 Generated with Claude Code