feat(v2): complete V2 upgrade#1
Merged
Merged
Conversation
…, validation E2E - Add conftest.py with deterministic synthetic fixtures (users, orders, products, dirty_orders, simpsons_paradox_data) - Add file_helpers.py for atomic writes, content hashing, directory management - Add test_file_helpers.py (27 tests), test_knowledge_infrastructure.py (28 tests), test_validation_e2e.py (37 tests) - Migrate test_lineage_tracker, test_synthesize_insights, test_multi_warehouse to pytest conventions (remove sys.path hacks, __main__ runners) - Delete test_cross_dataset.py (replaced by test_knowledge_infrastructure.py with no NovaMart dependency) - Update pyproject.toml: Python >=3.10, add pytest-cov, add markers (slow, integration, statistical) - Update ci.yml: remove download-data.sh step - Add V2_UPGRADE_MASTER_PLAN.md and BUILD_STATUS.yaml for tracking - All 214 tests pass in 2.45s with zero external data dependencies Co-Authored-By: Claude Opus 4.6 <[email protected]>
…d skills Delete all NovaMart-specific data (14 CSVs, metrics, schema, fallbacks, setup guides, download scripts). Refactor data_helpers, error_helpers, and connection_manager to resolve from active dataset manifest instead of hardcoded paths. Clean 25+ skills/agents/docs/templates of NovaMart references. Add docs/setup-guide.md and test_data_helpers_v2.py (13 tests). 227 tests pass. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Waves 1-8 of the V2 upgrade, building on the 0A/0B foundation: - Wave 1: Interview onboarding (/setup skill, first-run-welcome, setup-state schema) - Wave 2: Knowledge infrastructure (4-layer validators, corrections, learnings, archaeology, confidence scoring) - Wave 3: Self-learning loop (feedback capture, entity resolver, business context, archaeology helpers) - Wave 4: Pipeline engine (DAG walker enhancements, per-run dirs, comms-drafter, crash recovery) - Wave 5: Brand theming (theme loader, chart palette, WCAG lint, example brand theme) - Wave 6: Advanced capabilities (context loader, Notion ingest, business browser, theming docs) - Wave 7: CLAUDE.md mega-update, schema migration framework - Wave 8: E2E verification (YAML/JSON parse, imports, paths, NovaMart sweep, cold-start, smoke test) New helpers: 14 modules (entity_resolver, business_context, archaeology_helpers, miss_rate_logger, pipeline_state, theme_loader, chart_palette, context_loader, schema_migration, business_validation, health_check, metric_validator, chart_palette, check_imports). New tests: 18 test files, 606 total passing. Co-Authored-By: Claude Opus 4.6 <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Untrack active.yaml, setup-state.yaml, and user dataset directories so the repo stays clean when someone connects their own data. Co-Authored-By: Claude Opus 4.6 <[email protected]>
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
Test plan
pytest/run-pipelineworks end-to-end with a sample dataset🤖 Generated with Claude Code