Add no-match reason tags + post-vote follow-up strips to printing-tag queue - #12
Merged
Merged
Conversation
… queue Seeds a new reason-code Tag taxonomy (custom-art, altered-frame, upscaled, ai-art, no-collector-line, non-english) via a management command rather than a data migration, and adds PrintingConfirmStrip/NoMatchReasonStrip follow-ups after a printing vote, styled with the queue's existing blue candidate-card visual language. Adds isBorderless to PrintingCandidate. See docs/features/printing-tags.md Stage 4 for the migration-vs-command rationale (backend suite evidence) and the seed_no_match_reason_tags activation step required post-deploy.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016i9S7LQsCL3FGaih3ZTRBJ
Reuses the existing, already-cached useGetTagsQuery hook (no new endpoint/fetch) to filter NoMatchReasonStrip down to tags that actually exist, so an instance that hasn't run seed_no_match_reason_tags yet degrades gracefully instead of 400ing on every tap.
WilfordGrimley
marked this pull request as ready for review
July 14, 2026 09:26
WilfordGrimley
added a commit
that referenced
this pull request
Jul 14, 2026
…#13) Stage 4 (no-match reason tags + follow-up strips) is live: seed command run, both strip variants proven end-to-end against the real production API and cleaned up afterward. Also documents an operational gap hit during activation: docker compose up -d django recreates the container with a new internal IP, but nginx's upstream resolves the django hostname once at its own startup and doesn't pick up the change -- causes a full 502 until nginx itself is restarted too.
This was referenced Jul 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
custom-art,altered-frame,upscaled,ai-art,no-collector-line,non-english) via a management command, not a data migration — see docs/features/printing-tags.md Stage 4 for why the migration approach broke 5 unrelated tests and was reverted.PrintingTagQueue.tsx:PrintingConfirmStrip(after a resolved vote, pre-filled fromfullArt/isBorderless) andNoMatchReasonStrip(after an explicit no-match vote), styled with the queue's existing blue candidate-card look.isBorderlesstoPrintingCandidate(was missing; needed for the confirm strip's pre-fill).Deviation from spec (flagging explicitly)
Spec said "data migration" for the tag seeding. First pass did exactly that; running the full backend suite surfaced 5 new failures (
test_views.py::TestGetTags::*,test_tag_votes.py::TestPostTagConsensus::test_returns_an_entry_for_every_seeded_tag) because those tests assert a fresh DB has zero realTagrows, and a migration seeds unconditionally at DB-setup time (including the test DB). Switched to a management command, mirroring the existingseed_default_tagspattern exactly (which is deliberately not migration-driven for the same reason). Full details + evidence in docs/features/printing-tags.md Stage 4.Activation step required post-merge
manage.py seed_no_match_reason_tagsmust be run once after this deploys, orNoMatchReasonStripvotes 400 (Tag.objects.getmisses raiseBadRequestException, not a silent no-op). Confirmed live:Full Art/Borderless(used by the confirm strip) already exist in production, so that strip needs no activation step.Test plan
npm run build, Jest (123/123;comparison.test.tsskipped — pre-existing Node 20 vs required Node 22+ gap, unrelated to this PR)Holding as draft for review, per usual.