Skip to content

feat: originaux (§1.9), projection publiable (§4.11) et profil Projet (G.12) — 0.20.0 - #123

Merged
izo merged 1 commit into
mainfrom
claude/spec-coherence-repos-0obysg
Oct 20, 2026
Merged

izo merged 1 commit into
mainfrom
claude/spec-coherence-repos-0obysg

Conversation

@izo

@izo izo commented Oct 20, 2026

Copy link
Copy Markdown
Owner

Refs #121. Cette PR aligne le plugin sur la spec 2.11-draft.

Jusqu'ici, un .RAF ou un .xmp placé dans media/ tombait en document joint et était proposé en téléchargement. L'ingestion l'aurait aussi publié, ce qui est le risque relevé sur izo/mdr-monorepo#244.

Changements

  • Adaptateur
    • Ajout de isOriginal().
    • classifyAttachment() rend null pour un original.
    • Les entrées files[] qui désignent un original sont écartées.
    • L'exclusion se fait dès le glob des documents joints : un fichier globbé en ?url est émis par Vite même si rien ne l'affiche. Il est copié dans dist/, ou inliné en base64 sous 4 Ko.
  • Ingestion
    • publishable(snapshot), isOriginalPath, isOriginalEntry.
    • Nouveau diagnostic guard-originals-excluded (info), avec ses champs count et bytes.
    • guard-oversize ne s'évalue plus que sur la projection publiable.
    • Règle 12 de §4.10 : une entrée attachments: vers un original produit attachment-not-found.
  • Schéma
    • Bloc project: tolérant : un statut ou une clé inconnus sont conservés.
    • ORIGINAL_EXTENSIONS et PROJECT_STATUSES exportés à la racine.
    • Preset project.
  • Corrigé au passage : .tif (spec 2.9) et les extensions image en majuscules sortaient en pièce jointe.
  • Fixtures resynchronisées sur izo/hyperfocale-spec main@51cbf73.
  • Version 0.20.0, avec CHANGELOG, README et CLAUDE.md à jour.

Vérifications

Commande Résultat
npm run typecheck 0 erreur
npm run test:unit 603 passés, 1 ignoré (27 fichiers)
npm run fixtures:check 207 fichiers conformes à 51cbf73
npm test (e2e) 63/63, dont 4 nouveaux sur une série atelier-2026 qui porte un RAW, un .xmp et un PDF
npm run pack:dry 131 fichiers, 170,3 kB

Écarts assumés

  • Collection du preset project : elle s'appelle work, pas projects. portfolio occupe projects depuis la 0.8.0, et un test interdit que deux presets partagent une collection.
  • Graphie mixte : une extension comme .Raf est écartée du rendu mais reste copiée au build. Le glob de Vite compare à la casse près, et seules les graphies tout en minuscules ou tout en majuscules y sont listées.

Côté consommateurs d'ingestion (MDR)

Le diff doit maintenant partir de publishable(target), et c'est la projection qu'il faut matérialiser et enregistrer comme snapshot publié. Le README donne l'exemple d'orchestration.

La publication npm et le tag v0.20.0 restent au propriétaire. Cette PR ne publie rien.


Generated by Claude Code

… (G.12) — 0.20.0

La spec 2.11-draft fait des RAW et des sidecars une troisième catégorie
de fichiers de media/. Lu par la 0.19, un dossier de travail proposait
ses .RAF et ses .xmp en téléchargement après la galerie, et l'ingestion
les aurait publiés : c'est le risque relevé sur mdr-monorepo#244, dont la
spec attend la correction ici plutôt que dans chaque site.

- helpers : isOriginal(), classifyAttachment() rend null pour un
  original, files[] écarte les originaux. L'exclusion se fait dès le glob
  des documents joints (src/helpers/index.ts) : un fichier globbé en ?url
  est émis par Vite même si rien ne le rend.
- ingest : publishable(), isOriginalPath(), isOriginalEntry() ;
  guard-originals-excluded (count, bytes) ; guard-oversize sur la
  projection ; règle 12 de §4.10 pour attachments: vers un original.
- schéma : bloc project: tolérant, ORIGINAL_EXTENSIONS et
  PROJECT_STATUSES à la racine ; preset project (collection work, la
  collection projects de G.12 étant celle de portfolio depuis la 0.8.0).
- corrigé au passage : .tif (spec 2.9) et les extensions image en
  majuscules sortaient en pièce jointe.
- fixtures resynchronisées sur izo/hyperfocale-spec main@51cbf73.

Refs #121

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUSDjd6BkMUR1HavjW3qsD
@izo
izo marked this pull request as ready for review October 20, 2026 13:32
@izo
izo merged commit a65a819 into main Oct 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants