Skip to content

WIP: feat(collections): add collection versioning#813

Draft
vcnainala wants to merge 10 commits into
developmentfrom
feature/collection-versioning
Draft

WIP: feat(collections): add collection versioning#813
vcnainala wants to merge 10 commits into
developmentfrom
feature/collection-versioning

Conversation

@vcnainala

Copy link
Copy Markdown
Member

Summary

  • Add collection lineage versioning: new collections row per release with shared CNPC identifier, is_latest flag, and SUPERSEDED audit-only prior versions
  • Implement curator workflow via Filament (create version → import CSV → preview → process) backed by CollectionVersionImporter orchestration (validate → SMILES diff → import → revoke exclusives → enrich/publish → archive old → mint DOIs)
  • Scope public search, stats, exports, and collection pages to latest published versions; show version history and revoked compounds on data source pages

Commits

Commit Description
feat(collections): add versioning schema and models Migration, models, SUPERSEDED status
feat(collections): add version migration orchestration services Diff, revoke, strip, waiter, importer
feat(collections): add version import and preview artisan commands CLI entry points
feat(doi): support versioned and base DataCite DOI suffixes .vN and base DOI
fix(scheduler): skip collections during active version migration Legacy scheduler guard
feat(filament): add collection version management actions Dashboard UI
feat(collections): add public version history and revoked compounds UI Public pages
feat(search): scope stats, search, and exports to latest collections is_latest filters
test(collections): add version diff and scheduler guard coverage Unit tests
docs(collections): document version migration curator workflow Docs

Test plan

  • Run migration: ./vendor/bin/sail artisan migrate
  • Run unit tests: ./vendor/bin/sail test --filter='CollectionVersionDiff|LegacySchedulerVersionGuard'
  • Create new version from a published collection in Filament dashboard
  • Import CSV entries, preview migration counts, process new version end-to-end
  • Verify old collection is SUPERSEDED with archived entries; new collection is PUBLISHED and is_latest
  • Confirm public collection page shows version history and revoked compounds when applicable
  • Confirm search/stats/exports only surface latest published collections
  • Verify versioned DOIs (.vN) and base DOI minting via DataCite (staging)

Notes

  • WIP — pending full integration testing with Horizon/redis for validate-molecules batch
  • Unrelated local changes (Rdkit migration, docker-compose, package-lock) intentionally excluded from this branch

vcnainala added 10 commits June 7, 2026 21:36
Introduce lineage columns on collections, archived entries flag, revocation
audit table, and SUPERSEDED status for audit-only prior releases.
Add diff-by-SMILES, provenance stripping, exclusive molecule revocation,
batch validation waiter, version creator, and import orchestrator.
Expose coconut:import-collection-version and coconut:preview-collection-version
for curator-driven release migrations.
Mint per-version DOIs (e.g. .v2) and a base DOI that resolves to the latest
release within a collection lineage.
Prevent legacy entries-process and entries-import jobs from touching
collections with pending or processing version_migration_status.
Add create-version, preview migration, and process migration actions on the
collection view page with superseded archive UI in relation managers.
Show lineage version picker and dropped exclusive compounds on the collection
data source page with optional ?version= query support.
Filter public listings, dashboard widgets, and export queries to is_latest
published collections so superseded releases remain audit-only.
Verify SMILES-based diff logic and legacy scheduler exclusion for collections
in version migration states.
Describe create-version, CSV import, preview, and process steps for releasing
new collection versions with audit retention.
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.

1 participant