---
id: S02
parent: M008
milestone: M008
provides:
  - Hidden creator filtering in list_creators()
  - Clean search results without jargon banner
  - v0.8.0 version identifier
requires:
  []
affects:
  - S03
key_files:
  - backend/models.py
  - backend/routers/creators.py
  - alembic/versions/009_add_creator_hidden_flag.py
  - frontend/src/pages/SearchResults.tsx
  - frontend/src/App.css
  - frontend/src/components/AppFooter.tsx
  - frontend/package.json
key_decisions:
  - Manual migration instead of autogenerate (no DB connection from dev machine)
  - Removed fallbackUsed state entirely since TS strict mode flags unused variables
patterns_established:
  - Soft-delete via hidden boolean column for excluding records from public-facing queries while preserving data
observability_surfaces:
  - none
drill_down_paths:
  - .gsd/milestones/M008/slices/S02/tasks/T01-SUMMARY.md
  - .gsd/milestones/M008/slices/S02/tasks/T02-SUMMARY.md
duration: ""
verification_result: passed
completed_at: 2026-03-31T05:15:54.785Z
blocker_discovered: false
---

# S02: Trust & Credibility Cleanup

**Removed test data from Creators page, eliminated yellow jargon banner from search results, cleaned up footer version display, and bumped to v0.8.0.**

## What Happened

Two tasks addressed three credibility issues:

**T01 — Hide TestCreator:** Added a `hidden` boolean column to the Creator model (server_default='false'). Migration 009 adds the column and marks slug='testcreator' as hidden=true. The `list_creators()` endpoint now filters `Creator.hidden != True` on both the main query and total count query, so hidden creators don't appear in the browse page or affect pagination.

**T02 — Frontend cleanup (3 items):**
1. Removed the yellow "semantic search unavailable" fallback banner from SearchResults.tsx — both the JSX block and the `.search-fallback-banner` CSS rule. Also removed the `fallbackUsed` state variable (TS strict mode required it since the variable became unused after banner removal).
2. Simplified AppFooter to hide the commit info section entirely when `__GIT_COMMIT__` is 'dev', instead of displaying the unhelpful plain text "dev".
3. Bumped package.json version from 0.1.0 to 0.8.0.

Frontend build passes with zero errors.

## Verification

All slice-level checks pass:
- Creator model includes 'hidden' column (Python import check)
- No 'search-fallback-banner' references in SearchResults.tsx or App.css (grep returns 0 matches)
- package.json version is "0.8.0"
- `npm run build` succeeds with zero errors (built in 775ms)

## Requirements Advanced

- R007 — Creators browse page now filters out test/hidden creators, showing only real content
- R005 — Search results no longer show misleading yellow fallback banner

## Requirements Validated

None.

## New Requirements Surfaced

None.

## Requirements Invalidated or Re-scoped

None.

## Deviations

1. Migration written manually instead of via `alembic revision --autogenerate` — no DB connection from dev machine. Must verify model-migration sync on ub01.
2. Removed `fallbackUsed` state variable entirely — plan said to keep it but TS strict mode flagged it as unused after banner JSX removal, which would break the build.

## Known Limitations

alembic check cannot run locally — migration 009 must be verified and applied on ub01 during deployment.

## Follow-ups

Run `docker exec chrysopedia-api alembic upgrade head` on ub01 to apply migration 009 and verify TestCreator is hidden.

## Files Created/Modified

- `backend/models.py` — Added hidden: Mapped[bool] column to Creator class
- `backend/routers/creators.py` — Added Creator.hidden != True filter to list_creators() query and count query
- `alembic/versions/009_add_creator_hidden_flag.py` — New migration: adds hidden column and marks testcreator as hidden
- `frontend/src/pages/SearchResults.tsx` — Removed fallback banner JSX and fallbackUsed state
- `frontend/src/App.css` — Removed .search-fallback-banner CSS rule
- `frontend/src/components/AppFooter.tsx` — Hide commit section when __GIT_COMMIT__ is 'dev'
- `frontend/package.json` — Version bumped from 0.1.0 to 0.8.0
