125 lines
4.8 KiB
Markdown
125 lines
4.8 KiB
Markdown
# Implementation Plan
|
|
|
|
## Milestone 0 — Source reconnaissance + repository foundation
|
|
|
|
- verify Python package/CLI setup
|
|
- detect both expected source files:
|
|
- `data/raw/smk_all_da.json`
|
|
- `data/raw/smk_all_en.json`
|
|
- inspect actual top-level JSON structures without guessing
|
|
- compute bytes + SHA-256
|
|
- count/summarize records with bounded memory
|
|
- compare DA/EN identity sets
|
|
- write `source-manifest.json`
|
|
- document any structural surprises
|
|
|
|
Done when we understand the actual dumps well enough to implement the parser from evidence rather than assumptions.
|
|
|
|
## Milestone 1 — Streaming source loading + canonical schema
|
|
|
|
- implement bounded-memory loader for actual observed structure
|
|
- join DA/EN by `object_number`, never by row position
|
|
- preserve localized text where useful
|
|
- map stable non-language fields into canonical columns
|
|
- preserve source provenance/disagreements
|
|
- parse physical dimensions/units defensively
|
|
|
|
Done when a representative fixture/sample becomes deterministic canonical rows.
|
|
|
|
Status: source loading and pre-canonical audits complete. Stable source-row identity, lossless
|
|
logical Parquet, duplicate taxonomy, dimension vocabulary, palette/visual quality and DA/EN
|
|
precedence recommendations are documented. Canonical entities are implemented in Milestone 2
|
|
without collapsing duplicate `object_number` groups.
|
|
|
|
## Milestone 2 — Canonical entities + first analyzable corpus
|
|
|
|
- pair language rows only by SMK `id`
|
|
- preserve `object_number` as non-unique grouping metadata
|
|
- canonicalize fields with explicit provenance and conflicts
|
|
- resolve image bundles atomically
|
|
- preserve and normalize dimension observations without choosing conflicts
|
|
- freeze `smk-public-visual-v1` with machine-readable exclusion reasons
|
|
|
|
Status: complete. See `CANONICALIZATION.md` and `CORPUS_V1.md`. Visual/colour feature extraction
|
|
has not started.
|
|
|
|
## Milestone 3 — Deterministic per-artwork visual features
|
|
|
|
Implemented for frozen `smk-public-visual-v1`:
|
|
|
|
- perceptual centroid
|
|
- explicitly uniform bulk-palette weights and duplicate-colour handling
|
|
- sRGB -> OKLab -> OKLCH with achromatic hue semantics
|
|
- palette entropy/effective size with documented uniform-weight limitation
|
|
- palette spread
|
|
- weighted lightness/chroma variation
|
|
- hue concentration
|
|
- SMK visual fields + provenance
|
|
- physical/image geometry + logs
|
|
|
|
Status: complete. Raw features remain corpus-independent; no corpus normalization or similarity is
|
|
implemented. See `FEATURE_EXTRACTION_V1.md` and `FEATURE_EXAMPLES.md`.
|
|
|
|
## Milestone 4 — Corpus statistics + normalization
|
|
|
|
Status: complete. Profile every candidate scalar over frozen `smk-public-visual-v1`, preserve raw
|
|
OKLab semantics and missingness, generate robust-01/midrank-percentile/robust-z variants, add log
|
|
aspect and circular-hue diagnostics, and publish separate unweighted candidate families. See
|
|
`NORMALIZATION_V1.md` and `FEATURE_VECTOR_V1.md`.
|
|
|
|
## Milestone 5 — Pilot build
|
|
|
|
Status: complete as deterministic exact similarity. Three separately versioned profiles use
|
|
sample-calibrated component scales, explicit weights, shared-component missingness and explainable
|
|
contributions. QA examples, stability diagnostics and performance measurements are published in
|
|
`SIMILARITY_V1.md` and `SIMILARITY_EXAMPLES.md`.
|
|
|
|
## Milestone 6 — Similarity preparation
|
|
|
|
Status: enrichment-backed weighted color layer implemented separately from bulk v1. It provides a
|
|
resumable append-only source cache, weighted palettes/features v2, bulk/enrichment diagnostics and
|
|
an exact palette-transport similarity profile. See `ENRICHMENT_V1.md`, `WEIGHTED_PALETTES_V1.md`
|
|
and `WEIGHTED_SIMILARITY_V1.md`.
|
|
|
|
## Milestone 7 — First usable application + sonification
|
|
|
|
Status: complete. A compact read-only web catalog feeds one FastAPI + React service with search,
|
|
artwork detail, existing exact similarity profiles, explicit cached weighted similarity, and three
|
|
versioned deterministic browser-audio mappings. See `SONIFICATION_V1.md` and `WEB_UI_V1.md`.
|
|
|
|
## Milestone 8 — Similarity
|
|
|
|
Implement separate profiles rather than one magic similarity score:
|
|
|
|
- `color`
|
|
- `visual`
|
|
- `composition`
|
|
|
|
Use fast feature-vector candidate retrieval followed optionally by weighted-palette optimal-transport reranking. Do not precompute all pairs.
|
|
|
|
## Milestone 9 — Art Tone v1
|
|
|
|
Implement versioned, explainable sonification mapping separate from objective features.
|
|
|
|
Initial mapping:
|
|
|
|
- centroid hue -> chromatic pitch class
|
|
- physical area percentile -> register
|
|
- chroma -> velocity/richness
|
|
- lightness -> timbral brightness
|
|
- palette entropy -> complexity
|
|
- contrast -> attack
|
|
- hue concentration -> tonal purity
|
|
|
|
Emit exact inputs alongside every mapped result.
|
|
|
|
## Milestone 10 — Exploration
|
|
|
|
Only after Dataset v1 is trustworthy, start experimental interfaces/notebooks/apps:
|
|
|
|
- nearest-neighbour browser
|
|
- colour-space explorer
|
|
- timelines
|
|
- artist palette fingerprints
|
|
- mosaics
|
|
- sonification player
|