feat: Major Research Platform Overhaul (Phases A-E)#34
Merged
Conversation
…ry labels, action result log, loop failure detail - Delete 6 noise hypotheses via backend/scripts/cleanup_hypotheses.py - Remove Studies tile from dashboard counters grid - Update discovery select label to 'Insight window:', add latest feed subtitle - Add persistent ActionResultLog (localStorage, max 50, collapsible) - Add error SSE event in research loop with failure detail panel - Show cycles_completed, last_experiment, elapsed time on loop failure - Timeout-specific messaging when stall_reason === 'timeout' Co-Authored-By: Oz <oz-agent@warp.dev>
…ck, anchor lifecycle - Add SSE event bus (backend/glossa_lab/api/events.py) with /api/v1/events/stream - Add foundation check automation (backend/glossa_lab/api/foundation.py) with POST /check, GET /status, PATCH /config, 15-min auto-check background task - Emit insight_trigger events on loop complete, staging archive, discovery fetch - Add anchor candidate auto-lifecycle: approved→verified→auto-archived when SA improves; rejected→expired after 7 days; auto-archive to anchor_staging_archive.json - Add POST /staging/archive endpoint for manual archive override - Mark foundation dirty on anchor changes and loop completion - Frontend: 20-min throttled insight auto-refresh with SSE subscription, freshness indicator (countdown/up-to-date/waiting), configurable interval (10/15/20/30/60m stored in localStorage) - DeciphermentPanel: foundation auto-check status display with toggle button - ResearchLoopPanel: lifecycle stage badges (staged→approved→verified→archived), auto-verified count in all-reviewed CTA - Register events_router and foundation_automation_router in main.py - Start foundation auto-check background task on app startup Co-Authored-By: Oz <oz-agent@warp.dev>
…nalyze cycle, failure handling, result feedback Co-Authored-By: Oz <oz-agent@warp.dev>
…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>
…s, A/B language templates, cross-culture matrix - Add experiment_ledger.json and EXPERIMENT_LEDGER.md cataloging all 60+ phase files - Add EXPERIMENT_METADATA dict + GET /api/v1/experiments/metadata endpoint - Create experiment_graph_contact_zone.py (KLDivergence, Synthesis, ABComparison) - Create experiment_graph_ab_language.py (AnchoredSALanguageAB, LMConsistencyMatrix) - Create experiment_graph_cross_culture.py (CulturalContactMatrix, ScriptFamilyClassifier) - Register all new node modules in experiment_graph.py ATOMIC_NODES - Add ExperimentLedgerEntry type + getExperimentMetadata API in frontend api.ts - Add ExperimentRegistry collapsible component in DashboardView with category filter chips, status badges, and description tooltips Co-Authored-By: Oz <oz-agent@warp.dev>
…lifecycle (resolve DashboardView conflict) Co-Authored-By: Oz <oz-agent@warp.dev>
…mplates (keep dist from HEAD) Co-Authored-By: Oz <oz-agent@warp.dev>
…fs, sign seeding (resolve main.py router conflict) Co-Authored-By: Oz <oz-agent@warp.dev>
…ailure handling (resolve SSE event conflicts) Co-Authored-By: Oz <oz-agent@warp.dev>
…Phase E compatibility, seed canonical_signs, scaffold.yml verification_tools - ai_tools.py: fix create_job() and create_text() called with positional dict instead of keyword args (was breaking run_pipeline and acquire_corpus actions) - research_loop.py: fix indentation from conflict resolution, restore 'staged' action support in staging_action endpoint (re-stage / unstage) - test_research_loop.py + test_research_loop_deep.py: update for Phase E compatibility — filter to node_complete entries, mock _blitz_mine, accept 'proposal' selection_method, accept integrated_research_loop* protocol name - backend/scripts/seed_canonical_signs.py: seeded 611 canonical signs from INDUS_FINAL_ANCHORS.json and anchor_sets table - scaffold.yml: add verification_tools (backend: pytest, frontend: playwright) - Remove merge conflict resolution helper scripts Co-Authored-By: Oz <oz-agent@warp.dev>
- test_install_gpu.py: add @_skip_gpu_script marker to GPU-001..007
so they skip cleanly when install_gpu.py is absent (GPU machines only)
instead of crashing with ModuleNotFoundError
- test_research_loop_deep.py: fix test_db_persistence_survives_restart
* add all Phase E attrs to manually-constructed ResearchLoop.__new__
(corpus_seqs, high/low/blocker_signs, anchors, cycle_analyses,
max_cycle_timeout, _proposal_engine)
* mock _execute_with_corpus_timeout(template, timeout) to return fast
* mock verify_before_run via glossa_lab.loop_proposal to always pass
(this test verifies DB persistence, not corpus analysis or verify)
- experiment_graph_ab_language.py: remove unused 'math' and 'random' imports
- experiment_graph_cross_culture.py: remove unused 'Any' import
Result: 486 passed (was 8 fail), 9 skipped (was 2), 0 fail
Co-Authored-By: Oz <oz-agent@warp.dev>
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
Five-phase overhaul of Glossa Lab integrating all child agent branches (A-E) into a single tested, release-ready merge.
What changed
Phase A — Cleanup and User-Visible Fixes
Phase B — Automated Insight and Foundation Updates
/api/v1/events/stream) — triggers insight refresh after loop complete, staging archive, discovery fetchPhase C — Experiment Consolidation and New Templates
backend/glossa_lab/experiment_ledger.json+EXPERIMENT_LEDGER.md) — 68-entry catalog of all phase files with category/status/keep-reccontact_zone_kl_v1,contact_zone_synthesis_v1,contact_zone_ab_v1ab_dravidian_vs_sanskrit,ab_dravidian_vs_munda,ab_dravidian_vs_hebrewcross_culture_contact_matrix_v1,script_family_classifier_v1GET /api/v1/experiments/metadataendpointPhase D — Signs and Corpus Analytical Surfaces
GET /api/v1/signs,GET /api/v1/signs/{sign_id},GET /api/v1/signs/summaryPhase E — Integrated Research Loop Upgrade (Propose → Build → Verify → Run → Analyze)
loop_proposal.py: ProposalEngine, build_experiment, verify_before_run, analyze_resultoutputs/partial_loop_result.jsonon any failureBug fixes (discovered during integration)
ai_tools.py:create_job()andcreate_text()were called with positional dicts — fixed to keyword args (was breaking run_pipeline and acquire_corpus actions in production)research_loop.py: restoredaction="staged"support in staging_action endpoint (re-stage / unstage was silently failing)CI status
Backend restart required
New routers registered:
/api/v1/events/stream,/api/v1/foundation/*,/api/v1/signs/*,/api/v1/experiments/metadataNew background task: foundation auto-check (15-min interval)
Conversation · Plan
Co-Authored-By: Oz oz-agent@warp.dev