Skip to content

feat(signs): Phase D — Signs view, corpus analytics, anchored sign cross-references#32

Draft
tbitcs wants to merge 1 commit into
phase-nextfrom
overhaul/signs
Draft

feat(signs): Phase D — Signs view, corpus analytics, anchored sign cross-references#32
tbitcs wants to merge 1 commit into
phase-nextfrom
overhaul/signs

Conversation

@tbitcs
Copy link
Copy Markdown
Contributor

@tbitcs tbitcs commented Jun 1, 2026

Phase D — Signs, Corpus Analytics, and Anchored Sign Cross-References

Backend

  • Signs API (�ackend/glossa_lab/api/signs.py): Three endpoints mounted at /api/v1/signs:
    • GET /signs — paginated, filterable sign list (deciphered, confidence, in_corpus, search)
    • GET /signs/summary — aggregate counts (total, deciphered, undeciphered, HIGH/MEDIUM/LOW, in_corpus)
    • GET /signs/{sign_id} — full detail with cross-references
  • In-memory sign index built lazily from INDUS_FINAL_ANCHORS.json (605 signs), anchor_sets DB table, and staging files
  • Router registered in main.py
  • Seed script (�ackend/scripts/seed_canonical_signs.py): Populates canonical_signs table from all anchor sources using sqlite3

Frontend

  • SignsView ( rontend/src/components/SignsView.tsx):
    • Header with summary stats (deciphered / undeciphered / known / in corpus)
    • Filter bar with confidence multi-select chips, search, in_corpus toggle
    • Two-column responsive grid of sign cards with SVG glyph placeholders (deterministic color based on sign_id hash)
    • Each card shows reading, confidence chip, corpus freq, cross-references (phase, DEDR, experiment), action buttons
    • Slide-over detail panel on click
    • Pagination
    • Tab bar switching between Signs Index and Corpus Analytics
  • CorpusAnalyticsPanel ( rontend/src/components/CorpusAnalyticsPanel.tsx):
    • World corpus catalogue table with language family, script type, tokens, reading direction
    • Overlap percentage heatmap bars
    • Contact Score placeholder column
    • Language family and script type filters
  • Navigation: Signs tab now renders SignsView (was SignDictionary), "View all signs →" button on Dashboard after DeciphermentPanel
  • API types: SignEntry, SignsSummary, SignsListResponse added to api.ts

Validation

px tsc -b --noEmit — 0 errors

px vite build — passes (232 modules, 1.99s)

  • Seed script finds 605 signs from INDUS_FINAL_ANCHORS.json (DB seeding runs at app startup)

Conversation: https://app.warp.dev/conversation/e3fbaec2-4a0b-454f-9c90-8d6c6289f60a
Run: https://oz.warp.dev/runs/019e84ec-7a7d-76c2-8174-7284911f65ae

This PR was generated with Oz.

…oss-references, canonical sign seeding

- Backend: Signs API (GET /signs, /signs/summary, /signs/{id}) with in-memory index from INDUS_FINAL_ANCHORS.json, anchor_sets DB, and staging files
- Backend: seed_canonical_signs.py script to populate canonical_signs table from all anchor sources
- Frontend: SignsView with filterable sign cards, SVG glyph placeholders, confidence chips, cross-references to experiments/DEDR/reports
- Frontend: CorpusAnalyticsPanel with world corpus catalogue table, language family/script filters, overlap bars, contact score placeholder
- Frontend: Navigation wired (Signs tab renders SignsView), dashboard link to signs view
- API types added to api.ts (SignEntry, SignsSummary, etc.)
- All TS errors resolved, vite build passes

Co-Authored-By: Oz <oz-agent@warp.dev>
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