Product Requirements
Section 02

Feature Specification

This catalogue translates the stack specification and product brief into implementation-facing feature records. It is deliberately broader than v1: the Release lane column separates MVP commitments from post-v1 candidates without losing traceability.

ID conventions

  • Feature IDs use FEAT-<AREA>-<NNN>.
  • Journey IDs in User Journey Flows reference these feature IDs.
  • UI IDs are not canonical yet. Any UI references here use reserved UI-* placeholders that should be replaced by the post-Phase 5 UI inventory.

Feature catalogue

IDNameRelease laneDescriptionUser valueDependenciesTechnical constraintsHigh-level acceptance criteria
FEAT-ONB-001Animated welcomeMVPFirst-run welcome surface showing the outcome of colouring rather than a feature tour.Users understand the product emotionally before being asked for data or account details.FEAT-CAN-001, FEAT-LIB-001, FEAT-OBS-001.Must respect reduce-motion settings and avoid blocking first launch.A new install sees the welcome once; animation is replaced by a still or instant transition when reduce motion is enabled; the next step is reachable with one clear action.
FEAT-ONB-002Cultural theme personalisationMVPMulti-select preference capture for cultural themes: textiles, carnival, portraits, family, children, symbols, traditions, and landscapes.Users receive a library that feels relevant from the first session.FEAT-ID-001, FEAT-LIB-002, FEAT-DATA-001.At least one theme required; values must match the profile taxonomy in the data model.Selected themes persist to profiles.cultural_themes; the library reveal uses those themes; users can later update the preference in settings.
FEAT-ONB-003Audience selection and child modeMVPCaptures whether the app is for self, a child, or both, and sets child-mode defaults.Parents and children get safer defaults without creating a separate child profile system.FEAT-ID-001, FEAT-SET-003, FEAT-OBS-003.Child mode must restrict behavioural analytics; advanced child profiles are out of MVP.Audience persists to profiles.audience; child-mode analytics policy is applied when relevant; users can change the setting later.
FEAT-ONB-004Accessibility quick-setMVPCaptures always-show-numbers, reduce-motion inheritance, and pattern-fill preference during onboarding.Users with accessibility needs do not have to hunt through settings before colouring.FEAT-ACC-001, FEAT-ACC-002, FEAT-ACC-003, FEAT-ID-001.Always-show-numbers defaults on; reduce motion inherits from the OS by default.Preferences persist to profiles.accessibility; canvas and palette read the saved values; defaults match the product brief.
FEAT-ONB-005Personalised library revealMVPShows the user what their onboarding answers unlocked, with a featured starter artwork.The first library view feels tailored and gives users an immediate next step.FEAT-ONB-002, FEAT-LIB-001, FEAT-LIB-002, FEAT-CONT-001.Must not depend on a slow network path during the first reveal; starter content should be available without visible spinner delay.Library reveal includes personalised copy or rows; one free starter artwork is prominent; selecting it opens the guided first-play path.
FEAT-ONB-006Guided first tapsMVPLightweight in-canvas guidance for palette selection and first cell fill.Users learn by doing rather than reading a feature tour.FEAT-CAN-001, FEAT-PAL-001, FEAT-CAN-003.Guidance must be dismissible, accessible, and limited to the starter path.First play shows no more than two instructional prompts; prompts do not block colouring after completion or dismissal; repeat users do not see the same guidance unnecessarily.
FEAT-ONB-007Founder’s noteMVPA short founder message shown after first completion or a large-artwork milestone.Builds trust at the moment value has already been experienced.FEAT-PROG-003, FEAT-OPEN-001.Copy and signature treatment are tracked as OD-10; must be dismissible.Note appears after the first qualifying milestone; dismissal persists; it never appears before the aha moment.
FEAT-ONB-008Soft account promptMVPOffers account creation for sync and persistence after first value.Users understand why an account helps without being forced into sign-up before play.FEAT-ID-002, FEAT-PROG-004.Must be non-blocking; purchase still requires authenticated state.Prompt appears after value is delivered; users can dismiss and keep playing; accepting opens the account upgrade flow.
FEAT-ONB-009Notification pre-permissionMVPExplains the value of new-artwork notifications before the OS prompt.Users can make an informed opt-in decision.FEAT-NOT-001, FEAT-ONB-002, FEAT-OPEN-003.OS prompt only fires after explicit in-app opt-in; copy is tracked as OD-12.Sample notification references selected themes; decline path is clear; OS prompt is not triggered on decline.
FEAT-RET-001First-steps checklistMVPLibrary panel with first-session and early-retention tasks.Gives returning users a simple path back into value.FEAT-LIB-001, FEAT-PROG-003, FEAT-NOT-001, FEAT-IAP-001.Must survive app restarts for the first three sessions unless dismissed.Checklist tracks completed tasks; dismissal persists; tasks deep-link to relevant surfaces.
FEAT-LIB-001Library homeMVPBrowsable catalogue with featured, new, category, downloaded, in-progress, and completed groupings.Users can find content quickly and resume work.FEAT-DATA-002, FEAT-ID-001, FEAT-OBS-001.Catalogue reads require an anonymous JWT and RLS-published rows only.Published artworks render for anonymous users; continue/downloaded rows reflect local state; screen-reader labels include title, category, premium status, and progress.
FEAT-LIB-002Personalised rankingMVPReorders or highlights artworks using cultural theme and audience preferences.Users see relevant artwork without manual filtering.FEAT-ONB-002, FEAT-ONB-003, FEAT-DATA-002.Ranking must not expose draft or unpublished artwork; child mode must respect age/content filters.Chosen themes affect featured rows; child audience filters age-inappropriate items; changing preferences updates future ranking.
FEAT-LIB-003Category and theme browsingMVPLets users browse by category, cultural theme, difficulty, premium status, and availability.Users can intentionally explore the catalogue.FEAT-DATA-002, FEAT-CONT-001.Filters must work against local and remote catalogue states.Applying filters updates the visible list; empty states are helpful and recoverable; filters do not hide active in-progress work unexpectedly.
FEAT-LIB-004Downloaded artworks surfaceMVPDedicated view or row for offline-ready artworks.Users know what they can play without connectivity.FEAT-DL-002, FEAT-CACHE-001, FEAT-NET-001.Must be backed by local cache index, not only remote catalogue flags.Downloaded items remain visible offline; broken cache entries are repaired or removed during reconciliation; opening a downloaded artwork does not require a network round-trip.
FEAT-ART-001Artwork detailMVPDetail page with title, preview, category, difficulty, estimated time, region count, premium badge, progress, and artist credit.Users can decide what to play or buy before opening.FEAT-LIB-001, FEAT-DATA-002, FEAT-DL-001, FEAT-IAP-001.Detail must clearly separate free, owned premium, and locked premium states.All required metadata renders; primary action changes between download, play, buy, or restore path; artist credit is present.
FEAT-ART-002Artist credit and cultural contextMVPDisplays artist attribution and relevant cultural context on artwork detail.Representation feels intentional and credited.FEAT-CONT-001, FEAT-CULT-001.Context must be approved through cultural review before publication.Artist credit appears for each artwork; approved cultural notes can be displayed; unapproved draft content is not visible to regular users.
FEAT-DL-001Artwork download requestMVPRequests download URLs for free or entitled premium artwork.Users can get artwork bundles on demand.FEAT-DATA-002, FEAT-API-001, FEAT-IAP-003.Premium downloads must be authorised server-side; signed URLs expire after 15 minutes.Free artwork returns public URLs; premium owned artwork returns signed URLs; locked premium returns sign-in or paywall errors as specified.
FEAT-DL-002Bundle download and verificationMVPDownloads manifest, region data, preview, thumbnail, and optional line art, then verifies checksum.Users get reliable offline-ready content.FEAT-DL-001, FEAT-CACHE-001, FEAT-DATA-003.Downloads must be resumable; corrupt bundles must be discarded.Successful download persists the bundle atomically; checksum mismatch retries once and then shows a recoverable error; completion is tracked.
FEAT-CACHE-001Local artwork cacheMVPStores downloaded bundles under app-support and maintains a current-version pointer.Downloaded artwork survives restarts and works offline.FEAT-DL-002, FEAT-DATA-003.Cache may be removed by OS storage pressure; reconciliation must handle dangling pointers.Cached artwork opens offline; temp files older than 24 hours are cleaned; invalid cache entries are removed or re-downloaded.
FEAT-CACHE-002Content version reconciliationMVPDetects newer artwork versions and maps progress where possible.Users keep progress when content is updated safely.FEAT-CACHE-001, FEAT-PROG-001, FEAT-DATA-003.Region mapping can fail; old version may need to be kept until next launch.Compatible updates preserve progress; incompatible updates prompt the user to continue old version or restart; failed updates do not corrupt local progress.
FEAT-CAN-001Custom colouring canvasMVPCustomPainter-based rendering surface for unfilled outlines, filled regions, labels, highlights, and feedback.Users get the core colouring experience.FEAT-DATA-003, FEAT-CACHE-001, FEAT-ACC-001.One painter per canvas surface; do not create one widget per region; must meet Phase 0 budgets.F-small, F-typical, and F-stress fixtures render; pan and zoom remain responsive; canvas respects accessibility settings.
FEAT-CAN-002Zoom and panMVPInteractive navigation around the artwork surface.Users can colour detailed regions comfortably.FEAT-CAN-001.Must maintain frame-time target during scripted pan/zoom on F-stress.Users can zoom and pan smoothly; labels remain legible; no interaction is blocked by network state.
FEAT-CAN-003Tap-to-colour hit testingMVPConverts screen taps to canvas coordinates, finds candidate regions, and validates selected colour.Colouring feels precise and satisfying.FEAT-CAN-001, FEAT-PAL-001, FEAT-PROG-001.Use spatial index plus precise path hit test; 32 x 32 grid is MVP default.Correct taps fill the region; wrong taps show gentle feedback; F-stress tap latency and accuracy meet Phase 0 thresholds.
FEAT-CAN-004Region feedbackMVPVisual and haptic response for correct and incorrect taps.Users understand whether the interaction succeeded.FEAT-CAN-003, FEAT-ACC-003.Must be calm, brief, and reduce-motion aware.Correct fill commits visually; incorrect tap pulses the correct palette swatch or area without harsh interruption; haptics can be disabled by OS setting.
FEAT-PAL-001Numbered paletteMVPOrdered palette with numbered colours, display names, selected state, and remaining-count context.Users can choose colours and understand what remains.FEAT-DATA-003, FEAT-ACC-002, FEAT-CAN-003.Palette must be accessible to screen readers and not rely on colour alone.Swatches expose number, name, and remaining cells; selected state is clear; completed colours are dimmed and moved to the end.
FEAT-PAL-002Highlight remaining regionsMVPOptional gentle highlight for unfilled cells matching the selected colour.Helps users find small or scattered remaining regions.FEAT-PAL-001, FEAT-CAN-001, FEAT-ACC-003.Must be reduce-motion aware and avoid heavy animation.Activating highlight marks matching unfilled regions briefly; it does not affect progress state; it is available from the canvas palette controls.
FEAT-PROG-001Local progress bitsetMVPStores completed regions, counts, percentage, last selected colour, and timestamps locally.Users never lose colouring progress during normal play.FEAT-CAN-003, FEAT-DATA-004.Store completed regions as a bitset, not JSON; progress is monotonic.Filling a region updates bitset, count, percentage, and last-played timestamp; progress reloads after app restart.
FEAT-PROG-002Opportunistic progress syncMVPSyncs local progress to backend and merges via bitset union.Progress can follow the user across devices after account upgrade.FEAT-ID-001, FEAT-ID-002, FEAT-API-002.No colouring interaction may wait on sync; retry with exponential backoff.Offline changes queue locally; server returns merged progress; sync failures are logged and recoverable.
FEAT-PROG-003Completion stateMVPDetects completed artworks and records completion timestamp.Users get closure and the app can trigger follow-on moments.FEAT-PROG-001, FEAT-ONB-007, FEAT-RET-001.Completion must be derived from bitset/count consistency.Artwork marks complete at 100%; library and detail surfaces update; founder note and checklist can respond to completion.
FEAT-ID-001Anonymous identityMVPCreates an anonymous authenticated session and profile on first launch.Users can browse, colour, and sync locally without sign-up friction.FEAT-DATA-001, FEAT-API-001.There is no signed-out catalogue surface; all reads use JWT and RLS.First launch creates a profiles row with is_anonymous = true; anonymous users can browse, download free artworks, and save progress.
FEAT-ID-002Account upgradeMVPPromotes anonymous users to signed-in accounts or merges with existing accounts.Users can keep progress across devices and purchases.FEAT-ID-001, FEAT-PROG-002, FEAT-API-003.Existing-account merge must union progress bitsets and remove orphan anonymous data.New account promotion preserves auth.uid() when applicable; existing account sign-in merges progress; user returns to the prior task after completion.
FEAT-ID-003Sign-in providersMVPEmail, Apple, and Google sign-in through InsForge Auth.Users can choose familiar account methods.FEAT-ID-002, FEAT-API-003.Platform sign-in must meet App Store and Google Play requirements.Supported providers complete successfully; failures show recoverable errors; tokens are stored securely.
FEAT-IAP-001Content pack catalogueMVPDisplays content packs and artwork membership.Users can understand the value of a pack before purchasing.FEAT-DATA-005, FEAT-LIB-001, FEAT-ART-001.Content packs are the only paid model at launch.Pack cards list included artworks or theme; owned status is clear; subscription copy does not appear in MVP.
FEAT-IAP-002Paywall sheetMVPPresents pack purchase options when locked premium content is requested.Users can unlock content at the moment of intent.FEAT-IAP-001, FEAT-ID-002, FEAT-OBS-002.Paywall belongs at premium download intent, not onboarding.Locked premium tap opens paywall; anonymous users are prompted to sign in before purchase; restore action is available.
FEAT-IAP-003Native purchase flowMVPExecutes Apple StoreKit 2 or Google Billing purchase for packs.Users can buy premium content through trusted platform flows.FEAT-IAP-002, FEAT-API-004, FEAT-ID-002.Receipt validation is exclusively server-side; client never grants entitlement by itself.Purchase start, success, failure, and cancellation are handled; receipt is sent to backend; UI reflects entitlement after validation.
FEAT-IAP-004Restore purchasesMVPRestores existing platform purchases and reconciles entitlements.Users recover purchases on new devices or reinstalls.FEAT-IAP-003, FEAT-API-004, FEAT-ID-002.Anonymous users cannot restore until signed in.Restore path is available from paywall and settings; successful restore unlocks covered artwork; failed restore explains next action.
FEAT-SET-001Settings homeMVPCentral settings for account, accessibility, preferences, notifications, restore purchases, and support/reporting links.Users can manage the app without hunting through surfaces.FEAT-ID-001, FEAT-ACC-001, FEAT-NOT-001, FEAT-IAP-004.Child mode must gate external links and purchase-sensitive actions where required.Settings reflect current profile state; changes persist; inaccessible or restricted actions explain why.
FEAT-SET-002Accessibility settingsMVPLets users update always-show-numbers, pattern fills, and reduce-motion behaviour.Users can tune the canvas to their needs after onboarding.FEAT-ACC-001, FEAT-ACC-002, FEAT-ACC-003.Canvas must apply changes without corrupting progress.Changing each setting updates the next canvas render; settings persist across app restarts.
FEAT-SET-003Child mode settingMVPLets users review or change child-mode state and audience preference.Parents can correct onboarding choices.FEAT-ONB-003, FEAT-OBS-003.Behavioural analytics policy must update immediately when child mode changes.Enabling child mode strips behavioural analytics identifiers; disabling it resumes normal analytics only after explicit setting change.
FEAT-NOT-001New-artwork notificationsMVPOpt-in push notifications for new artworks in selected themes.Users can return when relevant new content arrives.FEAT-ONB-009, FEAT-DATA-001, platform push services.Strictly opt-in; OS prompt only follows pre-permission screen.Users can opt in or out; notifications reference selected themes where possible; disabled permission state is handled gracefully.
FEAT-ACC-001Always-show numbersMVPRegion number labels are visible and legible at every zoom level.Users who cannot rely on colour can still play.FEAT-CAN-001, FEAT-DATA-003.Numbers cannot be hidden by canvas zoom; halo contrast is required.Every region with a label point shows a readable number; labels remain readable during zoom; setting defaults on.
FEAT-ACC-002Screen-reader semanticsMVPExposes palette, library, detail, and canvas completion information to assistive technologies.Screen-reader users can understand state and available actions.FEAT-LIB-001, FEAT-ART-001, FEAT-PAL-001, FEAT-CAN-001.Canvas semantics must avoid overwhelming region-by-region noise.Palette swatches announce number, name, and remaining cells; library cards announce title/category/premium/progress; canvas exposes region count and completion percentage.
FEAT-ACC-003Motion, contrast, and tap accessibilityMVPReduce-motion support, pattern fills, colour-blind validation, and snap-to-nearest small region.Users with varied sensory and motor needs can play reliably.FEAT-CAN-001, FEAT-CONT-003, FEAT-SET-002.Validator flags tiny regions and palette issues; snap radius is 16 px for small regions.Pattern fills can be enabled; reduce motion replaces animation with instant transitions; tiny-region taps are forgiving; palette passes colour-vision simulations or requires sign-off.
FEAT-CONT-001Curated artwork libraryMVPLaunch library of approximately 25 culturally reviewed artworks.Users get enough high-quality content to evaluate and return.FEAT-CULT-001, FEAT-ART-002, FEAT-CONT-002.Cultural review is a publish gate; no user-generated content in MVP.Launch-ready artworks have metadata, preview, thumbnail, bundles, artist credit, and approved cultural review.
FEAT-CONT-002Artwork publishing pipelineMVPInternal workflow from concept to authoring, segmentation, validation, review, upload, preview, and publish.The team can ship new content without manual database surgery.FEAT-CONT-003, FEAT-CULT-001, FEAT-ADMIN-001.Full admin dashboard is out of MVP; tooling-only flow is acceptable.Valid artwork can be uploaded and previewed internally; approved content can be published; rejected content returns notes to the artist.
FEAT-CONT-003Bundle validatorMVPValidates path closure, indices, palette references, tap-target flags, assets, manifest version, and colour-vision simulations.Reduces broken artwork and inaccessible content before users see it.FEAT-DATA-003, FEAT-ACC-003, FEAT-CONT-002.Errors block publish; warnings require explicit sign-off.Invalid bundles are rejected with actionable errors; warnings are recorded; published bundles have required files and metadata.
FEAT-CULT-001Cultural review workflowMVPNamed cultural reviewer reviews artwork and metadata before publication.Protects representation quality and cultural trust.FEAT-CONT-001, FEAT-CONT-002, FEAT-DATA-006.Review status must gate publish; reviewer/admin access controlled by roles.Artwork cannot publish without approved status; reviewer notes are stored; changes-requested state returns content to production.
FEAT-ADMIN-001Admin upload toolingMVPTooling for metadata creation, upload URL generation, draft updates, preview, publish, and unpublish.Operators can manage content safely for launch.FEAT-API-005, FEAT-CONT-002, FEAT-CULT-001.Admin endpoints require admin role; service-role keys never reach clients.Admin can create draft, upload assets, request review, publish approved artwork, and unpublish when needed.
FEAT-OBS-001Product analytics taxonomyMVPTracks a small set of events for opening, browsing, downloading, colouring, completion, paywall, purchase, and sync failure.The team can evaluate activation, reliability, and monetisation without blanket tracking.FEAT-LIB-001, FEAT-DL-002, FEAT-CAN-003, FEAT-IAP-002.Child mode disables behavioural analytics; EU-region/self-hostable PostHog preferred.Events match the initial taxonomy; child-mode users only emit allowed events; event properties avoid sensitive content.
FEAT-OBS-002Purchase and paywall analyticsMVPTracks paywall views, purchase starts, successes, and failures.Product can understand pack conversion and failure points.FEAT-IAP-002, FEAT-IAP-003.Must not duplicate store receipt data into analytics.Paywall and purchase events fire once per action; failure reasons are coarse and non-sensitive.
FEAT-OBS-003Crash and performance monitoringMVPSentry crash reporting, performance traces, and custom canvas timers.Engineering can catch regressions before rollout expands.FEAT-CAN-001, FEAT-DL-002, FEAT-PROG-002.Child mode may send crash signals but strips user identifiers.Crash-free sessions are visible; canvas timers report key budgets; backend function errors are logged.
FEAT-NET-001Offline and retry handlingMVPHandles offline browsing of cached content, download failures, and sync retries.Users can keep colouring calmly through poor connectivity.FEAT-CACHE-001, FEAT-PROG-002, FEAT-DL-002.Colouring interactions never depend on network round-trips.Offline downloaded artwork opens; failed downloads can retry; sync queue backs off and recovers.
FEAT-REL-001CI/CD and release gatesMVPBuild, test, release, Sentry, analytics, accessibility, and store-compliance gates.Reduces release risk and makes quality measurable.FEAT-OBS-003, FEAT-ACC-003, FEAT-CAN-001.Phase 0 pass is required before full production implementation.Release build can be produced; Phase 0 metrics recorded; accessibility and compliance checks are completed before store submission.
FEAT-DEEP-001Native deep linksPost-v1 candidateNative universal links and app links for artwork, pack, or notification entry points.Users can land directly on relevant content.FEAT-LIB-001, FEAT-ART-001, FEAT-NOT-001.Attribution providers are deferred; native links preferred.Supported links route to the correct surface; missing or locked content recovers to detail/paywall; invalid links land on library.
FEAT-ADS-001Ad-supported free tierRoadmap candidateOptional ad-funded access model.Could widen access without immediate purchase.FEAT-OBS-001, FEAT-SET-003, ad-network compliance.Open decision OD-01 recommends omitting at launch; child mode cannot load behavioural ads.No implementation before first-cohort retention data; any later version must obey child-mode privacy policy.
FEAT-SUB-001Subscription tierRoadmap candidateRecurring access to premium content.Could support heavier content investment after pack demand is proven.FEAT-IAP-003, FEAT-IAP-004, FEAT-DATA-005.OD-02 resolved subscription out of MVP; store notification handling needed.No subscription appears in MVP UI; future subscription must not break pack entitlements.
FEAT-UGC-001User-generated contentRoadmap candidateUsers submit or create artwork.Could increase content volume and community value.FEAT-CULT-001, moderation, reporting, storage quotas.Explicitly out of MVP; must follow the same review pipeline as commissioned work.No public UGC in MVP; future UGC cannot bypass review or safety controls.
FEAT-ACH-001AchievementsRoadmap candidateBadges, streaks, or advanced completion goals.May increase retention for motivated users.FEAT-PROG-003, FEAT-OBS-001.Must not make the product feel noisy or overly game-like.MVP only supports lightweight first-steps checklist; any future achievement system remains optional and calm.
FEAT-SOC-001Social and sharingRoadmap candidateSharing completed artwork or social profile mechanics.Could support organic discovery.FEAT-PROG-003, privacy review, content rights.Public profiles are out of MVP; child-mode sharing needs strict controls.No social graph in MVP; future sharing must respect child mode and artist rights.
FEAT-CHILD-001Advanced child profilesRoadmap candidateMultiple child profiles, parental controls, and age-specific libraries.Families could manage distinct children and preferences.FEAT-SET-003, legal review, profile model changes.Explicitly out of MVP; current MVP uses child-mode flag only.No multi-child management in MVP; future design requires privacy and compliance review.
FEAT-AUDIO-001Audio narrationRoadmap candidateAudio guidance, story narration, or cultural context narration.Could deepen educational value and accessibility.FEAT-ART-002, media storage, accessibility review.Out of MVP; must not affect canvas performance budgets.No audio surface in MVP; future audio must be downloadable or gracefully streamable.
FEAT-AI-001AI artwork generationRoadmap candidateAI-assisted or generated artwork.Could increase content production speed.Legal review, cultural review, content pipeline changes.Explicitly out of MVP; cultural authenticity risk is high.No AI-generated launch content unless approved by a future policy and review process.
FEAT-MERCH-001MerchandiseRoadmap candidatePhysical or digital merchandise tied to completed artwork.Could create additional revenue paths.Commerce platform, fulfilment, rights clearance.Out of MVP and unrelated to the initial canvas risk.No merchandise flows in MVP; future commerce must be separated from colouring performance-critical paths.

Supporting infrastructure dependencies

The MVP catalogue above references additional FEAT-* IDs in its “Depends on” column that do not have standalone rows in the feature table because they are implementation primitives specified in the stack specification rather than user-facing product surfaces. They are nonetheless part of v1 scope and bind the v1 freeze packet by reference. Each ID below points at the spec section that defines its behaviour and acceptance criteria. Treat these as MVP-lane work.

IDConcernDefined in
FEAT-DATA-001profiles data model — anonymous identity, child mode, cultural themes, accessibility defaults/spec/06-data-model/, /spec/07-data-layer/ §7.8
FEAT-DATA-002Catalogue data model — artworks, categories, cultural_themes, pack_artworks/spec/06-data-model/
FEAT-DATA-003Artwork bundle data model — manifest, regions, palettes, label points, version/spec/06-data-model/ §6.2 (CLRX v1)
FEAT-DATA-004Progress data model — user_artwork_progress.completed_regions bitset, timestamps/spec/07-data-layer/ §7.4
FEAT-DATA-005Entitlements data model — packs, entitlements, receipts, Family Sharing propagation/spec/07-data-layer/ §7.5
FEAT-DATA-006Editorial data model — artists, moderation_reviews, cultural review status/spec/07-data-layer/ §7.7
FEAT-API-001Catalogue read APIs — PostgREST-style endpoints with RLS-published rows only/spec/08-api/
FEAT-API-002Progress sync API — bitset union merge/spec/08-api/, /spec/07-data-layer/ §7.4
FEAT-API-003Auth and profile APIs — anonymous session, account promotion, sign-in providers/spec/08-api/, /spec/07-data-layer/ §7.8
FEAT-API-004Purchase validation API — Apple ASSN v2 / Google Play Developer API/spec/08-api/, /spec/04-features/ §4.7
FEAT-API-005Admin APIs — upload URL generation, draft/publish/unpublish, review state/spec/08-api/
FEAT-PROG-004Soft account-prompt trigger — fires after first satisfying fill or completion/spec/09-user-flows/ §9.7 (screen 10)
FEAT-OPEN-001Founder’s note copy resolution (tracks OD-10)/spec/20-open/ OD-10
FEAT-OPEN-003Pre-permission notification copy resolution (tracks OD-12)/spec/20-open/ OD-12

Counted as 14 supporting-infrastructure records alongside the 53 user-facing catalogue rows above. The freeze packet binds both sets.

Feature dependency map

flowchart TD
    ID["FEAT-ID-001 Anonymous identity"] --> LIB["FEAT-LIB-001 Library home"]
    ID --> ONB["FEAT-ONB-002/003/004 Onboarding preferences"]
    ONB --> RANK["FEAT-LIB-002 Personalised ranking"]
    LIB --> ART["FEAT-ART-001 Artwork detail"]
    ART --> DL["FEAT-DL-001 Download request"]
    DL --> CACHE["FEAT-CACHE-001 Local cache"]
    CACHE --> CAN["FEAT-CAN-001 Custom canvas"]
    CAN --> PAL["FEAT-PAL-001 Numbered palette"]
    PAL --> HIT["FEAT-CAN-003 Tap-to-colour"]
    HIT --> PROG["FEAT-PROG-001 Local progress bitset"]
    PROG --> SYNC["FEAT-PROG-002 Progress sync"]
    ART --> PAY["FEAT-IAP-002 Paywall sheet"]
    PAY --> BUY["FEAT-IAP-003 Native purchase"]
    BUY --> ENT["FEAT-IAP-004 Restore / entitlement reconciliation"]
    ENT --> DL
    CONT["FEAT-CONT-002 Publishing pipeline"] --> VAL["FEAT-CONT-003 Bundle validator"]
    VAL --> CULT["FEAT-CULT-001 Cultural review"]
    CULT --> LIB

Technical constraint register

Constraint IDApplies toConstraintSource
TC-001Canvas, palette, progressThe canvas uses a single CustomPainter; region-per-widget rendering is rejected.Engineering considerations
TC-002Canvas, downloads, cachePhase 0 performance budgets must pass on the same release build before production implementation advances.Development phases
TC-003ProgressCompleted regions are stored as a bitset; JSON storage is rejected.Data layer & RLS
TC-004Identity, catalogueEvery install has an anonymous authenticated session; there is no signed-out catalogue.Data layer & RLS
TC-005Premium contentClient never grants premium access; entitlement and receipt validation are server-side.API & function surface
TC-006DownloadsPremium bundles use signed URLs with 15-minute expiry; resumed downloads request fresh URLs.API & function surface
TC-007AccessibilityNumbers remain visible at every zoom level; colour alone cannot be the only signal.Accessibility
TC-008Child modeBehavioural analytics are disabled in child mode except app_opened and crash signals.Observability & analytics
TC-009ContentCultural review gates publication; review is process infrastructure, not marketing copy.Cultural authenticity
TC-010MonetisationMVP has content packs only; subscription, rewarded ads, and behavioural advertising are omitted.Core features

V1 reduction summary

The MVP should include the anonymous-first onboarding, personalised library, artwork detail, download/cache, custom canvas, palette, progress, accessibility baseline, content packs, restore purchases, content pipeline, cultural review, observability, and release gates. The following remain candidate features after v1 reduction: ads, subscriptions, user-generated content, complex achievements, social, advanced child profiles, audio narration, AI artwork generation, merchandise, and a full admin dashboard.