neotoma 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/dist/actions.js +2 -2
- package/dist/actions.js.map +1 -1
- package/dist/cli/bootstrap.js +0 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +158 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/crypto/auth.js +1 -1
- package/dist/crypto/auth.js.map +1 -1
- package/dist/mcp_ws_bridge.js +1 -1
- package/dist/mcp_ws_bridge.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/services/field_converters.js +3 -3
- package/dist/services/field_converters.js.map +1 -1
- package/dist/services/field_validation.js +1 -1
- package/dist/services/field_validation.js.map +1 -1
- package/dist/services/mcp_auth.js +1 -1
- package/dist/services/mcp_auth.js.map +1 -1
- package/dist/services/mcp_oauth.js +1 -1
- package/dist/services/mcp_oauth.js.map +1 -1
- package/dist/services/parquet_reader.js +1 -1
- package/dist/services/parquet_reader.js.map +1 -1
- package/dist/services/public_key_registry.js +2 -2
- package/dist/services/public_key_registry.js.map +1 -1
- package/package.json +27 -7
- package/.claude/CLAUDE.md +0 -81
- package/.claude/rules/agent_constraints.md +0 -201
- package/.claude/rules/agent_instructions_sync_rules.md +0 -100
- package/.claude/rules/agent_test_execution.md +0 -358
- package/.claude/rules/autonomous_execution.md +0 -119
- package/.claude/rules/bug_fix_detection.md +0 -145
- package/.claude/rules/bug_learning.md +0 -154
- package/.claude/rules/checkpoint_management.md +0 -194
- package/.claude/rules/configuration_management.md +0 -159
- package/.claude/rules/content_style_enforcement.md +0 -141
- package/.claude/rules/dependency_installation.md +0 -148
- package/.claude/rules/document_loading_order.md +0 -197
- package/.claude/rules/documentation_rules.md +0 -169
- package/.claude/rules/downstream_doc_updates.md +0 -269
- package/.claude/rules/env_check.md +0 -55
- package/.claude/rules/environment_variables_1password.md +0 -315
- package/.claude/rules/environment_variables_env_file.md +0 -124
- package/.claude/rules/feature_unit_detection.md +0 -132
- package/.claude/rules/file_naming.md +0 -34
- package/.claude/rules/git_remote_sync.md +0 -242
- package/.claude/rules/instruction_documentation.md +0 -287
- package/.claude/rules/native_browser_debugging.md +0 -68
- package/.claude/rules/plan_execution_testing.md +0 -101
- package/.claude/rules/plan_format.md +0 -38
- package/.claude/rules/post_build_testing.md +0 -162
- package/.claude/rules/prefer_cli_tools.md +0 -233
- package/.claude/rules/readme_maintenance.md +0 -156
- package/.claude/rules/release_detection.md +0 -95
- package/.claude/rules/release_status_readme_update.md +0 -62
- package/.claude/rules/risk_management.md +0 -170
- package/.claude/rules/security.md +0 -168
- package/.claude/rules/social_media_conventions.md +0 -42
- package/.claude/rules/test_first_workflow.md +0 -344
- package/.claude/rules/worktree_env.md +0 -56
- package/.claude/settings.json +0 -5
- package/.claude/skills/commit.md +0 -762
- package/.claude/skills/create_feature_unit.md +0 -176
- package/.claude/skills/create_release.md +0 -428
- package/.claude/skills/fix_feature_bug.md +0 -93
- package/.claude/skills/pull.md +0 -314
- package/.claude/skills/setup_symlinks.md +0 -228
- package/.codex/config.toml +0 -92
- package/.cursor/commands/analyze.md +0 -574
- package/.cursor/commands/commit.md +0 -768
- package/.cursor/commands/create_feature_unit.md +0 -182
- package/.cursor/commands/create_prototype.md +0 -95
- package/.cursor/commands/create_release.md +0 -434
- package/.cursor/commands/create_rule.md +0 -296
- package/.cursor/commands/debug.md +0 -985
- package/.cursor/commands/final_review.md +0 -97
- package/.cursor/commands/fix_feature_bug.md +0 -99
- package/.cursor/commands/manage_error_debugging.md +0 -186
- package/.cursor/commands/migrate_plans.md +0 -499
- package/.cursor/commands/publish.md +0 -559
- package/.cursor/commands/pull.md +0 -320
- package/.cursor/commands/push.md +0 -259
- package/.cursor/commands/report.md +0 -1506
- package/.cursor/commands/report_error.md +0 -1505
- package/.cursor/commands/run_feature_workflow.md +0 -83
- package/.cursor/commands/setup_commands.md +0 -87
- package/.cursor/commands/setup_symlinks.md +0 -234
- package/.cursor/commands/sync_env_from_1password.md +0 -321
- package/.cursor/commands.json +0 -100
- package/.cursor/environment.json +0 -5
- package/.cursor/mcp.json.template +0 -16
- package/.cursor/plans/agent_skills_analysis_aac0f1b6.plan.md +0 -949
- package/.cursor/plans/agent_trust_framework_eb38ca7d.plan.md +0 -634
- package/.cursor/plans/all-storage-unstructured_provenance_df0b7a8f.plan.md +0 -112
- package/.cursor/plans/automated_error_debugging_cloud_agents.plan.md +0 -526
- package/.cursor/plans/automated_error_debugging_cursor_cli.plan.md +0 -599
- package/.cursor/plans/automated_error_debugging_localhost_clarified.plan.md +0 -510
- package/.cursor/plans/bug_report_and_contribution_client_guidance.plan.md +0 -143
- package/.cursor/plans/convert_1password_sync_to_mcp_343ca61c.plan.md +0 -282
- package/.cursor/plans/debug_pending_errors_command.plan.md +0 -531
- package/.cursor/plans/error_reporting_command_8868f27b.plan.md +0 -255
- package/.cursor/plans/mcp-cli-action-item-01-openapi-core.plan.md +0 -30
- package/.cursor/plans/mcp-cli-action-item-02-openapi-mcp-cli-mapping.plan.md +0 -18
- package/.cursor/plans/mcp-cli-action-item-03-cli-equivalent-logging.plan.md +0 -18
- package/.cursor/plans/mcp-cli-action-item-06-error-taxonomy.plan.md +0 -18
- package/.cursor/plans/mcp-cli-action-item-07-fixture-replay-graphs.plan.md +0 -18
- package/.cursor/plans/mcp-cli-action-item-08-cli-reference-executor.plan.md +0 -18
- package/.cursor/plans/mcp-cli-action-item-09-mcp-tools-atomic.plan.md +0 -18
- package/.cursor/plans/mcp-cli-action-item-10-canonical-walkthrough.plan.md +0 -18
- package/.cursor/plans/mcp-cli-action-item-11-fixtures-expected-outputs.plan.md +0 -18
- package/.cursor/plans/mcp-cli-action-item-12-failure-gallery.plan.md +0 -18
- package/.cursor/plans/mcp_source-path_documentation_5ce48609.plan.md +0 -83
- package/.cursor/plans/me_and_get_authenticated_user_response_updates.plan.md +0 -125
- package/.cursor/plans/multi-llm_provider_support_3fdeb361.plan.md +0 -120
- package/.cursor/plans/plan_migration_command_integrated.plan.md +0 -393
- package/.cursor/plans/schema_icon_enhancements_plan.md +0 -533
- package/.cursor/plans/site-react-tailwind-parity.plan.md +0 -82
- package/.cursor/plans/sources-first-ingestion-v8.plan.md +0 -0
- package/.cursor/plans/sources-first_ingestion_v10_baef2ba2.plan.md +0 -363
- package/.cursor/plans/test_coverage_gap_analysis_9cb70022.plan.md +0 -39
- package/.cursor/port_to_foundation_analysis.md +0 -217
- package/.cursor/rules/agent_constraints.mdc +0 -210
- package/.cursor/rules/autonomous_execution.mdc +0 -128
- package/.cursor/rules/configuration_management.mdc +0 -168
- package/.cursor/rules/cursor_rules_editing.mdc +0 -99
- package/.cursor/rules/cursor_rules_sync.mdc +0 -74
- package/.cursor/rules/cursor_rules_sync_requirement.mdc +0 -156
- package/.cursor/rules/developer_agent_instructions_sync_rules.mdc +0 -109
- package/.cursor/rules/document_loading_order.mdc +0 -206
- package/.cursor/rules/instruction_documentation.mdc +0 -296
- package/.cursor/rules/risk_management.mdc +0 -179
- package/.cursor/rules/security.mdc +0 -177
- package/.cursor/skipped_records/companies_skipped.json +0 -27
- package/.cursor/skipped_records/contacts_skipped.json +0 -23
- package/.cursor/skipped_records/goals_skipped.json +0 -7
- package/.cursor/skipped_records/people_skipped.json +0 -14
- package/.cursor/skipped_records/projects_skipped.json +0 -39
- package/.cursor/worktrees.json +0 -12
- package/.dockerignore +0 -9
- package/.env.example +0 -84
- package/.eslintrc.json +0 -11
- package/.github/workflows/deploy-pages-site.yml +0 -55
- package/.gitmodules +0 -12
- package/.husky/pre-commit +0 -42
- package/.mcp.json +0 -13
- package/.nvmrc +0 -1
- package/.prettierrc.json +0 -7
- package/.vscode/extensions.json +0 -5
- package/.vscode/settings.json +0 -47
- package/CONTRIBUTING.md +0 -23
- package/Dockerfile +0 -28
- package/SECURITY.md +0 -41
- package/components.json +0 -21
- package/cursor_rules_manifest.json +0 -28
- package/dist/__fixtures__/helpers.d.ts +0 -91
- package/dist/__fixtures__/helpers.d.ts.map +0 -1
- package/dist/__fixtures__/helpers.js +0 -384
- package/dist/__fixtures__/helpers.js.map +0 -1
- package/dist/__fixtures__/types.d.ts +0 -285
- package/dist/__fixtures__/types.d.ts.map +0 -1
- package/dist/__fixtures__/types.js +0 -7
- package/dist/__fixtures__/types.js.map +0 -1
- package/dist/__fixtures__/validation.d.ts +0 -45
- package/dist/__fixtures__/validation.d.ts.map +0 -1
- package/dist/__fixtures__/validation.js +0 -311
- package/dist/__fixtures__/validation.js.map +0 -1
- package/dist/config/plaid.d.ts +0 -21
- package/dist/config/plaid.d.ts.map +0 -1
- package/dist/config/plaid.js +0 -38
- package/dist/config/plaid.js.map +0 -1
- package/dist/events/event_emitter.d.ts +0 -24
- package/dist/events/event_emitter.d.ts.map +0 -1
- package/dist/events/event_emitter.js +0 -85
- package/dist/events/event_emitter.js.map +0 -1
- package/dist/events/event_log.d.ts +0 -23
- package/dist/events/event_log.d.ts.map +0 -1
- package/dist/events/event_log.js +0 -77
- package/dist/events/event_log.js.map +0 -1
- package/dist/events/event_schema.d.ts +0 -58
- package/dist/events/event_schema.d.ts.map +0 -1
- package/dist/events/event_schema.js +0 -43
- package/dist/events/event_schema.js.map +0 -1
- package/dist/events/event_validator.d.ts +0 -23
- package/dist/events/event_validator.d.ts.map +0 -1
- package/dist/events/event_validator.js +0 -90
- package/dist/events/event_validator.js.map +0 -1
- package/dist/events/index.d.ts +0 -9
- package/dist/events/index.d.ts.map +0 -1
- package/dist/events/index.js +0 -9
- package/dist/events/index.js.map +0 -1
- package/dist/events/replay.d.ts +0 -27
- package/dist/events/replay.d.ts.map +0 -1
- package/dist/events/replay.js +0 -62
- package/dist/events/replay.js.map +0 -1
- package/dist/hashing/hash_chain.d.ts +0 -31
- package/dist/hashing/hash_chain.d.ts.map +0 -1
- package/dist/hashing/hash_chain.js +0 -52
- package/dist/hashing/hash_chain.js.map +0 -1
- package/dist/integrations/plaid/client.d.ts +0 -53
- package/dist/integrations/plaid/client.d.ts.map +0 -1
- package/dist/integrations/plaid/client.js +0 -224
- package/dist/integrations/plaid/client.js.map +0 -1
- package/dist/integrations/plaid/normalizers.d.ts +0 -26
- package/dist/integrations/plaid/normalizers.d.ts.map +0 -1
- package/dist/integrations/plaid/normalizers.js +0 -166
- package/dist/integrations/plaid/normalizers.js.map +0 -1
- package/dist/integrations/providers/asana.d.ts +0 -9
- package/dist/integrations/providers/asana.d.ts.map +0 -1
- package/dist/integrations/providers/asana.js +0 -62
- package/dist/integrations/providers/asana.js.map +0 -1
- package/dist/integrations/providers/base.d.ts +0 -17
- package/dist/integrations/providers/base.d.ts.map +0 -1
- package/dist/integrations/providers/base.js +0 -64
- package/dist/integrations/providers/base.js.map +0 -1
- package/dist/integrations/providers/facebook.d.ts +0 -9
- package/dist/integrations/providers/facebook.d.ts.map +0 -1
- package/dist/integrations/providers/facebook.js +0 -58
- package/dist/integrations/providers/facebook.js.map +0 -1
- package/dist/integrations/providers/gmail.d.ts +0 -10
- package/dist/integrations/providers/gmail.d.ts.map +0 -1
- package/dist/integrations/providers/gmail.js +0 -67
- package/dist/integrations/providers/gmail.js.map +0 -1
- package/dist/integrations/providers/index.d.ts +0 -6
- package/dist/integrations/providers/index.d.ts.map +0 -1
- package/dist/integrations/providers/index.js +0 -25
- package/dist/integrations/providers/index.js.map +0 -1
- package/dist/integrations/providers/instagram.d.ts +0 -9
- package/dist/integrations/providers/instagram.d.ts.map +0 -1
- package/dist/integrations/providers/instagram.js +0 -47
- package/dist/integrations/providers/instagram.js.map +0 -1
- package/dist/integrations/providers/metadata.d.ts +0 -25
- package/dist/integrations/providers/metadata.d.ts.map +0 -1
- package/dist/integrations/providers/metadata.js +0 -407
- package/dist/integrations/providers/metadata.js.map +0 -1
- package/dist/integrations/providers/types.d.ts +0 -39
- package/dist/integrations/providers/types.d.ts.map +0 -1
- package/dist/integrations/providers/types.js +0 -2
- package/dist/integrations/providers/types.js.map +0 -1
- package/dist/integrations/providers/x.d.ts +0 -9
- package/dist/integrations/providers/x.d.ts.map +0 -1
- package/dist/integrations/providers/x.js +0 -78
- package/dist/integrations/providers/x.js.map +0 -1
- package/dist/reducers/record_reducer.d.ts +0 -25
- package/dist/reducers/record_reducer.d.ts.map +0 -1
- package/dist/reducers/record_reducer.js +0 -93
- package/dist/reducers/record_reducer.js.map +0 -1
- package/dist/reducers/reducer_registry.d.ts +0 -47
- package/dist/reducers/reducer_registry.d.ts.map +0 -1
- package/dist/reducers/reducer_registry.js +0 -82
- package/dist/reducers/reducer_registry.js.map +0 -1
- package/dist/repositories/db/event_repo.d.ts +0 -14
- package/dist/repositories/db/event_repo.d.ts.map +0 -1
- package/dist/repositories/db/event_repo.js +0 -67
- package/dist/repositories/db/event_repo.js.map +0 -1
- package/dist/repositories/db/state_repo.d.ts +0 -14
- package/dist/repositories/db/state_repo.d.ts.map +0 -1
- package/dist/repositories/db/state_repo.js +0 -61
- package/dist/repositories/db/state_repo.js.map +0 -1
- package/dist/repositories/file/event_repo.d.ts +0 -18
- package/dist/repositories/file/event_repo.d.ts.map +0 -1
- package/dist/repositories/file/event_repo.js +0 -148
- package/dist/repositories/file/event_repo.js.map +0 -1
- package/dist/repositories/file/state_repo.d.ts +0 -21
- package/dist/repositories/file/state_repo.d.ts.map +0 -1
- package/dist/repositories/file/state_repo.js +0 -89
- package/dist/repositories/file/state_repo.js.map +0 -1
- package/dist/repositories/sqlite/supabase_adapter.d.ts +0 -135
- package/dist/repositories/sqlite/supabase_adapter.d.ts.map +0 -1
- package/dist/repositories/sqlite/supabase_adapter.js +0 -810
- package/dist/repositories/sqlite/supabase_adapter.js.map +0 -1
- package/dist/services/connectors.d.ts +0 -89
- package/dist/services/connectors.d.ts.map +0 -1
- package/dist/services/connectors.js +0 -248
- package/dist/services/connectors.js.map +0 -1
- package/dist/services/event_generation.d.ts +0 -37
- package/dist/services/event_generation.d.ts.map +0 -1
- package/dist/services/event_generation.js +0 -236
- package/dist/services/event_generation.js.map +0 -1
- package/dist/services/extraction/rules.d.ts +0 -26
- package/dist/services/extraction/rules.d.ts.map +0 -1
- package/dist/services/extraction/rules.js +0 -691
- package/dist/services/extraction/rules.js.map +0 -1
- package/dist/services/file_analysis.d.ts +0 -38
- package/dist/services/file_analysis.d.ts.map +0 -1
- package/dist/services/file_analysis.js +0 -325
- package/dist/services/file_analysis.js.map +0 -1
- package/dist/services/graph_builder.d.ts +0 -51
- package/dist/services/graph_builder.d.ts.map +0 -1
- package/dist/services/graph_builder.js +0 -279
- package/dist/services/graph_builder.js.map +0 -1
- package/dist/services/importers.d.ts +0 -28
- package/dist/services/importers.d.ts.map +0 -1
- package/dist/services/importers.js +0 -174
- package/dist/services/importers.js.map +0 -1
- package/dist/services/observation_ingestion.d.ts +0 -26
- package/dist/services/observation_ingestion.d.ts.map +0 -1
- package/dist/services/observation_ingestion.js +0 -364
- package/dist/services/observation_ingestion.js.map +0 -1
- package/dist/services/payload_compiler.d.ts +0 -36
- package/dist/services/payload_compiler.d.ts.map +0 -1
- package/dist/services/payload_compiler.js +0 -121
- package/dist/services/payload_compiler.js.map +0 -1
- package/dist/services/payload_identity.d.ts +0 -35
- package/dist/services/payload_identity.d.ts.map +0 -1
- package/dist/services/payload_identity.js +0 -101
- package/dist/services/payload_identity.js.map +0 -1
- package/dist/services/payload_schema.d.ts +0 -104
- package/dist/services/payload_schema.d.ts.map +0 -1
- package/dist/services/payload_schema.js +0 -46
- package/dist/services/payload_schema.js.map +0 -1
- package/dist/services/plaid_sync.d.ts +0 -77
- package/dist/services/plaid_sync.d.ts.map +0 -1
- package/dist/services/plaid_sync.js +0 -273
- package/dist/services/plaid_sync.js.map +0 -1
- package/dist/services/record_comparison.d.ts +0 -29
- package/dist/services/record_comparison.d.ts.map +0 -1
- package/dist/services/record_comparison.js +0 -84
- package/dist/services/record_comparison.js.map +0 -1
- package/dist/services/records.d.ts +0 -31
- package/dist/services/records.d.ts.map +0 -1
- package/dist/services/records.js +0 -184
- package/dist/services/records.js.map +0 -1
- package/dist/services/search.d.ts +0 -15
- package/dist/services/search.d.ts.map +0 -1
- package/dist/services/search.js +0 -81
- package/dist/services/search.js.map +0 -1
- package/dist/services/summary.d.ts +0 -5
- package/dist/services/summary.d.ts.map +0 -1
- package/dist/services/summary.js +0 -118
- package/dist/services/summary.js.map +0 -1
- package/docs/NEOTOMA_MANIFEST.md +0 -152
- package/docs/api/rest_api.md +0 -466
- package/docs/architecture/agentic_portfolio_overview.md +0 -99
- package/docs/architecture/agentic_wallet_overview.md +0 -93
- package/docs/architecture/architectural_decisions.md +0 -462
- package/docs/architecture/architecture.md +0 -842
- package/docs/architecture/blockchain_readiness_assessment.md +0 -248
- package/docs/architecture/consistency.md +0 -539
- package/docs/architecture/conversational_ux_architecture.md +0 -240
- package/docs/architecture/determinism.md +0 -762
- package/docs/architecture/idempotence_pattern.md +0 -139
- package/docs/architecture/mcp_actions_assessment.md +0 -182
- package/docs/architecture/ner_vs_schema_first_extraction.md +0 -280
- package/docs/architecture/schema_expansion.md +0 -260
- package/docs/architecture/schema_handling.md +0 -209
- package/docs/architecture/source_material_model.md +0 -281
- package/docs/assets/neotoma_banner.png +0 -0
- package/docs/conventions/TEST_EXECUTION_IMPROVEMENTS.md +0 -205
- package/docs/conventions/always_on_rules_review.md +0 -66
- package/docs/conventions/code_conventions_implementation.md +0 -111
- package/docs/conventions/code_conventions_plan.md +0 -124
- package/docs/conventions/code_review_summary.md +0 -96
- package/docs/conventions/documentation_standards.md +0 -104
- package/docs/conventions/estimation_methodology.md +0 -146
- package/docs/conventions/file_naming_migration_status.md +0 -94
- package/docs/conventions/readme_generation_framework.md +0 -230
- package/docs/conventions/time_tracking_template.md +0 -60
- package/docs/conventions/writing_style_guide.md +0 -252
- package/docs/developer/agent_cli_configuration.md +0 -140
- package/docs/developer/agent_instructions_sync_rules.mdc +0 -97
- package/docs/developer/canonical_walkthrough.md +0 -137
- package/docs/developer/cli_agent_instructions.md +0 -141
- package/docs/developer/cli_overview.md +0 -207
- package/docs/developer/cli_reference.md +0 -518
- package/docs/developer/developer_preview_launch_checklist.md +0 -128
- package/docs/developer/developer_preview_storage.md +0 -35
- package/docs/developer/developer_release_manual_test_checklist.md +0 -209
- package/docs/developer/development_workflow.md +0 -308
- package/docs/developer/environment/CONNECTOR_SECRET_KEY_SETUP.md +0 -96
- package/docs/developer/environment/DEV_CONNECTOR_SECRET_KEY_EXPLANATION.md +0 -80
- package/docs/developer/environment/ENV_MAPPINGS_STATUS.md +0 -86
- package/docs/developer/environment/ENV_VAR_NAMING_STRATEGY.md +0 -145
- package/docs/developer/environment/MIGRATION_TO_SINGLE_VAR_NAMES.md +0 -89
- package/docs/developer/environment/QUICK_START_1PASSWORD.md +0 -126
- package/docs/developer/environment/README.md +0 -27
- package/docs/developer/environment/SETUP_ENV_MAPPINGS.md +0 -256
- package/docs/developer/environment_distinction_audit.md +0 -43
- package/docs/developer/fix_doc_inconsistencies_plan.md +0 -63
- package/docs/developer/getting_started.md +0 -100
- package/docs/developer/import_interpretation_debug.md +0 -69
- package/docs/developer/launchd_dev_servers.md +0 -51
- package/docs/developer/launchd_watch_build.md +0 -37
- package/docs/developer/mcp/instructions.md +0 -71
- package/docs/developer/mcp/invalid_connection_id_handling.md +0 -181
- package/docs/developer/mcp/tool_descriptions.yaml +0 -41
- package/docs/developer/mcp/unauthenticated.md +0 -30
- package/docs/developer/mcp_chatgpt_setup.md +0 -159
- package/docs/developer/mcp_claude_code_setup.md +0 -519
- package/docs/developer/mcp_https_testing.md +0 -178
- package/docs/developer/mcp_https_testing_status.md +0 -130
- package/docs/developer/mcp_https_tunnel_status.md +0 -147
- package/docs/developer/mcp_oauth_migration_guide.md +0 -196
- package/docs/developer/mcp_overview.md +0 -145
- package/docs/developer/mcp_server_examples_from_cursor_docs.md +0 -485
- package/docs/developer/observation_architecture_documentation_integration.md +0 -368
- package/docs/developer/release_orchestrator.md +0 -197
- package/docs/developer/repository_cleanup_plan.md +0 -87
- package/docs/developer/resolved_blockers.md +0 -49
- package/docs/developer/schema_initialization.md +0 -182
- package/docs/developer/secrets/README.md +0 -15
- package/docs/developer/secrets/secrets_architecture.md +0 -95
- package/docs/developer/secrets/secrets_manager_value.md +0 -53
- package/docs/developer/secrets/secrets_secure_approach.md +0 -103
- package/docs/developer/secrets/secrets_setup.md +0 -116
- package/docs/developer/shared_components_submodule_setup.md +0 -273
- package/docs/developer/spec_compliance_validation_system.md +0 -261
- package/docs/developer/test_coverage_gap_analysis_plan.md +0 -36
- package/docs/developer/tunnels.md +0 -327
- package/docs/developer/vite_troubleshooting.md +0 -111
- package/docs/doc_dependencies.yaml +0 -497
- package/docs/examples/schema_breaking_change_reconciliation.md +0 -515
- package/docs/feature_units/completed/FU-050/FU-050_spec.md +0 -341
- package/docs/feature_units/completed/FU-050/manifest.yaml +0 -330
- package/docs/feature_units/completed/FU-051/FU-051_spec.md +0 -173
- package/docs/feature_units/completed/FU-051/manifest.yaml +0 -229
- package/docs/feature_units/completed/FU-052/FU-052_spec.md +0 -158
- package/docs/feature_units/completed/FU-052/manifest.yaml +0 -188
- package/docs/feature_units/completed/FU-053/FU-053_spec.md +0 -144
- package/docs/feature_units/completed/FU-053/manifest.yaml +0 -145
- package/docs/feature_units/completed/FU-054/FU-054_spec.md +0 -144
- package/docs/feature_units/completed/FU-054/manifest.yaml +0 -139
- package/docs/feature_units/completed/FU-702/billing_spec.md +0 -413
- package/docs/feature_units/completed/FU-702/manifest.yaml +0 -418
- package/docs/feature_units/standards/DISCOVERY_CAGAN_ALIGNMENT.md +0 -214
- package/docs/feature_units/standards/creating_feature_units.md +0 -385
- package/docs/feature_units/standards/discovery_process.md +0 -821
- package/docs/feature_units/standards/error_protocol.md +0 -60
- package/docs/feature_units/standards/execution_instructions.md +0 -87
- package/docs/feature_units/standards/feature_unit_spec.md +0 -325
- package/docs/feature_units/standards/integration_test_execution.md +0 -127
- package/docs/feature_units/standards/manifest_template.yaml +0 -370
- package/docs/feature_units/standards/model_selection.md +0 -207
- package/docs/feature_units/standards/multi_agent_orchestration.md +0 -411
- package/docs/feature_units/standards/release_report_generation.md +0 -448
- package/docs/feature_units/standards/release_report_spec.md +0 -444
- package/docs/feature_units/standards/release_report_template.md +0 -76
- package/docs/feature_units/standards/spec_compliance_validation.md +0 -147
- package/docs/feature_units/standards/worker_agent_template.md +0 -191
- package/docs/foundation/ai_safety.md +0 -10
- package/docs/foundation/composability_analysis.md +0 -308
- package/docs/foundation/core_identity.md +0 -50
- package/docs/foundation/documentation_design_system.md +0 -505
- package/docs/foundation/entity_resolution.md +0 -34
- package/docs/foundation/layered_architecture.md +0 -99
- package/docs/foundation/mmry_comparison.md +0 -176
- package/docs/foundation/philosophy.md +0 -103
- package/docs/foundation/problem_statement.md +0 -41
- package/docs/foundation/product_positioning.md +0 -69
- package/docs/foundation/product_principles.md +0 -18
- package/docs/foundation/quality_requirements.md +0 -68
- package/docs/foundation/timeline_events.md +0 -19
- package/docs/foundation/user_workflows.md +0 -38
- package/docs/implementation/PARQUET_MCP_SERVER_FIXES.md +0 -373
- package/docs/implementation/PARQUET_SUPPORT_IMPLEMENTATION.md +0 -207
- package/docs/infrastructure/deployment.md +0 -372
- package/docs/legal/README.md +0 -51
- package/docs/legal/compliance.md +0 -854
- package/docs/legal/privacy_policy.md +0 -114
- package/docs/legal/privacy_policy_changelog.md +0 -49
- package/docs/legal/terms_of_service.md +0 -185
- package/docs/legal/terms_of_service_changelog.md +0 -62
- package/docs/migration/llm_extraction_removal.md +0 -387
- package/docs/migration/llm_interpretation_docs_update.md +0 -130
- package/docs/observability/logging.md +0 -50
- package/docs/observability/metrics_standard.md +0 -38
- package/docs/observability/tracing.md +0 -41
- package/docs/operations/debugging/README.md +0 -11
- package/docs/operations/debugging/error_debug_instructions.md +0 -55
- package/docs/operations/health_check.md +0 -73
- package/docs/operations/runbook.md +0 -88
- package/docs/prompts/llm_extraction_system_prompt.md +0 -31
- package/docs/proposals/IMPLEMENTATION_SUMMARY.md +0 -198
- package/docs/proposals/MIGRATION_REPORT.md +0 -65
- package/docs/proposals/PROPOSAL_TEMPLATE.md +0 -58
- package/docs/proposals/README.md +0 -57
- package/docs/proposals/agent-trust-framework.md +0 -621
- package/docs/proposals/conversation_turn_identity_reverts_forks.md +0 -144
- package/docs/proposals/document-v023-release.md +0 -898
- package/docs/proposals/iterative_chat_store_mcp_instructions.md +0 -155
- package/docs/proposals/llm_sampling_parameters_interpretation_config.md +0 -196
- package/docs/proposals/mcp-cli-action-items.md +0 -207
- package/docs/proposals/plan-migration-command-integrated-with-commit.md +0 -386
- package/docs/proposals/sources-first-ingestion-v10.md +0 -348
- package/docs/proposals/test-coverage-gap-analysis.md +0 -26
- package/docs/prototypes/PROTOTYPE_QUICKSTART.md +0 -56
- package/docs/prototypes/README.md +0 -74
- package/docs/reference/error_codes.md +0 -223
- package/docs/releases/archived/aspirational/README.md +0 -57
- package/docs/releases/archived/aspirational/v0.4.0/manifest.yaml +0 -94
- package/docs/releases/archived/aspirational/v0.4.0/release_plan.md +0 -51
- package/docs/releases/archived/aspirational/v0.5.0/manifest.yaml +0 -152
- package/docs/releases/archived/aspirational/v0.5.0/release_plan.md +0 -236
- package/docs/releases/archived/aspirational/v0.9.0/README.md +0 -78
- package/docs/releases/archived/aspirational/v0.9.0/manifest.yaml +0 -111
- package/docs/releases/archived/aspirational/v0.9.0/release_plan.md +0 -238
- package/docs/releases/archived/aspirational/v0.9.0/status.md +0 -89
- package/docs/releases/archived/aspirational/v1.0.0/UI_REFACTORING_PLAN.md +0 -239
- package/docs/releases/archived/aspirational/v1.0.0/acceptance_criteria.md +0 -88
- package/docs/releases/archived/aspirational/v1.0.0/approach_comparison.md +0 -558
- package/docs/releases/archived/aspirational/v1.0.0/architectural_impact_chat_ui.md +0 -195
- package/docs/releases/archived/aspirational/v1.0.0/blog_post_update_directives.md +0 -491
- package/docs/releases/archived/aspirational/v1.0.0/business_viability_discovery_plan.md +0 -135
- package/docs/releases/archived/aspirational/v1.0.0/compliance_reports/FU-100_compliance.md +0 -23
- package/docs/releases/archived/aspirational/v1.0.0/compliance_reports/FU-101_compliance.md +0 -23
- package/docs/releases/archived/aspirational/v1.0.0/compliance_reports/FU-102_compliance.md +0 -23
- package/docs/releases/archived/aspirational/v1.0.0/compliance_reports/FU-103_compliance.md +0 -23
- package/docs/releases/archived/aspirational/v1.0.0/compliance_reports/FU-105_compliance.md +0 -23
- package/docs/releases/archived/aspirational/v1.0.0/continuous_discovery_log.md +0 -77
- package/docs/releases/archived/aspirational/v1.0.0/continuous_discovery_plan.md +0 -145
- package/docs/releases/archived/aspirational/v1.0.0/cross_platform_signal_detection.md +0 -181
- package/docs/releases/archived/aspirational/v1.0.0/deployment_strategy.md +0 -115
- package/docs/releases/archived/aspirational/v1.0.0/discovery_checklist.md +0 -195
- package/docs/releases/archived/aspirational/v1.0.0/discovery_filtering_criteria.md +0 -197
- package/docs/releases/archived/aspirational/v1.0.0/discovery_filtering_keywords.md +0 -143
- package/docs/releases/archived/aspirational/v1.0.0/discovery_lead_sourcing_tools.md +0 -438
- package/docs/releases/archived/aspirational/v1.0.0/discovery_plan.md +0 -185
- package/docs/releases/archived/aspirational/v1.0.0/execution_schedule.md +0 -130
- package/docs/releases/archived/aspirational/v1.0.0/feasibility_validation_plan.md +0 -116
- package/docs/releases/archived/aspirational/v1.0.0/handle_registration.md +0 -263
- package/docs/releases/archived/aspirational/v1.0.0/implementation_logs/FU-100_implementation_log.md +0 -51
- package/docs/releases/archived/aspirational/v1.0.0/implementation_logs/FU-101_implementation_log.md +0 -51
- package/docs/releases/archived/aspirational/v1.0.0/implementation_logs/FU-102_implementation_log.md +0 -51
- package/docs/releases/archived/aspirational/v1.0.0/implementation_logs/FU-103_implementation_log.md +0 -51
- package/docs/releases/archived/aspirational/v1.0.0/implementation_logs/FU-105_implementation_log.md +0 -51
- package/docs/releases/archived/aspirational/v1.0.0/manifest.yaml +0 -160
- package/docs/releases/archived/aspirational/v1.0.0/marketing_agent_instructions.md +0 -209
- package/docs/releases/archived/aspirational/v1.0.0/marketing_automation_implementation.md +0 -996
- package/docs/releases/archived/aspirational/v1.0.0/marketing_automation_plan.md +0 -291
- package/docs/releases/archived/aspirational/v1.0.0/marketing_dogfooding_analysis.md +0 -295
- package/docs/releases/archived/aspirational/v1.0.0/marketing_metrics_plan.md +0 -120
- package/docs/releases/archived/aspirational/v1.0.0/marketing_plan.md +0 -280
- package/docs/releases/archived/aspirational/v1.0.0/marketing_segments_plan.md +0 -128
- package/docs/releases/archived/aspirational/v1.0.0/participant_recruitment_log.md +0 -392
- package/docs/releases/archived/aspirational/v1.0.0/post_launch_marketing_plan.md +0 -252
- package/docs/releases/archived/aspirational/v1.0.0/pre_launch_marketing_plan.md +0 -748
- package/docs/releases/archived/aspirational/v1.0.0/pre_mortem.md +0 -122
- package/docs/releases/archived/aspirational/v1.0.0/subscription_detection_strategy.md +0 -160
- package/docs/releases/archived/aspirational/v1.0.0/usability_discovery_plan.md +0 -115
- package/docs/releases/archived/aspirational/v1.0.0/value_discovery_plan.md +0 -279
- package/docs/releases/archived/aspirational/v1.0.0/visibility_timing_analysis.md +0 -402
- package/docs/releases/archived/aspirational/v2.0.0/status.md +0 -120
- package/docs/releases/archived/aspirational/v2.1.0/manifest.yaml +0 -469
- package/docs/releases/archived/aspirational/v2.2.0/manifest.yaml +0 -165
- package/docs/releases/archived/aspirational/v2.2.0/status.md +0 -283
- package/docs/releases/compliance_reports/all_fus_compliance_summary.md +0 -112
- package/docs/releases/in_progress/v0.2.0/agent_status.json +0 -420
- package/docs/releases/in_progress/v0.2.0/status.md +0 -90
- package/docs/releases/v0.1.0/agent_status.json +0 -242
- package/docs/releases/v0.1.0/agent_status.json.example +0 -76
- package/docs/releases/v0.1.0/compliance_reports/FU-000_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-002_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-050_compliance.md +0 -59
- package/docs/releases/v0.1.0/compliance_reports/FU-051_compliance.md +0 -39
- package/docs/releases/v0.1.0/compliance_reports/FU-052_compliance.md +0 -44
- package/docs/releases/v0.1.0/compliance_reports/FU-053_compliance.md +0 -25
- package/docs/releases/v0.1.0/compliance_reports/FU-054_compliance.md +0 -31
- package/docs/releases/v0.1.0/compliance_reports/FU-055_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-056_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-057_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-058_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-059_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-061_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-100_compliance.md +0 -97
- package/docs/releases/v0.1.0/compliance_reports/FU-104_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-200_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-201_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-202_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-203_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-204_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-205_compliance.md +0 -23
- package/docs/releases/v0.1.0/compliance_reports/FU-206_compliance.md +0 -23
- package/docs/releases/v0.1.0/execution_schedule.md +0 -174
- package/docs/releases/v0.1.0/fu_spec_status.md +0 -83
- package/docs/releases/v0.1.0/implementation_logs/FU-000_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-002_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-050_implementation_log.md +0 -111
- package/docs/releases/v0.1.0/implementation_logs/FU-051_implementation_log.md +0 -91
- package/docs/releases/v0.1.0/implementation_logs/FU-052_implementation_log.md +0 -81
- package/docs/releases/v0.1.0/implementation_logs/FU-053_implementation_log.md +0 -71
- package/docs/releases/v0.1.0/implementation_logs/FU-054_implementation_log.md +0 -71
- package/docs/releases/v0.1.0/implementation_logs/FU-055_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-056_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-057_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-058_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-059_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-061_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-100_implementation_log.md +0 -251
- package/docs/releases/v0.1.0/implementation_logs/FU-104_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-200_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-201_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-202_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-203_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-204_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-205_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/implementation_logs/FU-206_implementation_log.md +0 -51
- package/docs/releases/v0.1.0/integration_tests.md +0 -316
- package/docs/releases/v0.1.0/manifest.yaml +0 -291
- package/docs/releases/v0.1.0/mcp_actions_status.md +0 -101
- package/docs/releases/v0.1.0/release_plan.md +0 -196
- package/docs/releases/v0.1.0/status.md +0 -148
- package/docs/releases/v0.1.0/test_coverage_setup_notes.md +0 -39
- package/docs/releases/v0.1.1/manifest.yaml +0 -153
- package/docs/releases/v0.2.0/status.md +0 -167
- package/docs/releases/v0.2.1/acceptance_criteria.md +0 -200
- package/docs/releases/v0.2.1/execution_schedule.md +0 -114
- package/docs/releases/v0.2.1/feature_unit_overview.md +0 -246
- package/docs/releases/v0.2.1/integration_tests.md +0 -281
- package/docs/releases/v0.2.1/manifest.yaml +0 -141
- package/docs/releases/v0.2.1/release_plan.md +0 -211
- package/docs/releases/v0.2.1/status.md +0 -106
- package/docs/releases/v0.2.15/README.md +0 -79
- package/docs/releases/v0.2.15/migrations/01_add_source_graph_edges.sql +0 -109
- package/docs/releases/v0.2.15/migrations/02_drop_legacy_tables.sql +0 -130
- package/docs/releases/v0.2.2/execution_schedule.md +0 -123
- package/docs/releases/v0.2.2/integration_tests.md +0 -258
- package/docs/releases/v0.2.2/manifest.yaml +0 -108
- package/docs/releases/v0.2.2/release_plan.md +0 -246
- package/docs/releases/v0.2.2/status.md +0 -113
- package/docs/releases/v0.2.3/agent_skills_alignment.md +0 -738
- package/docs/releases/v0.2.3/enhancements_summary.md +0 -309
- package/docs/releases/v0.2.3/integration_guide.md +0 -3400
- package/docs/releases/v0.2.3/manifest.yaml +0 -212
- package/docs/releases/v0.2.3/mcp_actions.md +0 -491
- package/docs/releases/v0.2.3/plan_completion_review.md +0 -410
- package/docs/releases/v0.2.3/release_overview.md +0 -13
- package/docs/releases/v0.2.3/schema_extensions/agent_decision.md +0 -311
- package/docs/releases/v0.2.3/schema_extensions/agent_session.md +0 -464
- package/docs/releases/v0.2.3/schema_extensions/architectural_decision.md +0 -390
- package/docs/releases/v0.2.3/schema_extensions/codebase_entity.md +0 -404
- package/docs/releases/v0.2.3/schema_extensions/feature_unit.md +0 -307
- package/docs/releases/v0.2.3/schema_extensions/release.md +0 -338
- package/docs/releases/v0.2.3/schema_extensions/validation_result.md +0 -377
- package/docs/releases/v0.2.3/spec.md +0 -569
- package/docs/releases/v0.3.0/manifest.yaml +0 -77
- package/docs/releases/v0.3.0/migrations/01_add_source_graph_edges.sql +0 -110
- package/docs/releases/v0.3.0/migrations/02_drop_legacy_tables.sql +0 -131
- package/docs/releases/v0.3.0/status.md +0 -193
- package/docs/reports/AUTO_ENHANCEMENT_TEST_RESULTS.md +0 -51
- package/docs/reports/AUTO_ENHANCEMENT_TEST_SUMMARY.md +0 -64
- package/docs/reports/BIGINT_SERIALIZATION_DEBUG.md +0 -75
- package/docs/reports/BUG_LEARNING_PROTOCOL_ESTABLISHED.md +0 -179
- package/docs/reports/CONSOLE_LOG_MCP_PROTOCOL_FIX.md +0 -58
- package/docs/reports/CRYPTO_TRANSACTION_DISCREPANCY_RESOLUTION.md +0 -108
- package/docs/reports/CRYPTO_TRANSACTION_SIDE_BY_SIDE_COMPARISON.md +0 -165
- package/docs/reports/FAILING_TESTS_ANALYSIS.md +0 -140
- package/docs/reports/FAILING_TESTS_SUMMARY.md +0 -106
- package/docs/reports/FINAL_PARQUET_COMPARISON.md +0 -226
- package/docs/reports/FINAL_TEST_STATUS.md +0 -145
- package/docs/reports/LEGACY_REMOVAL_SUMMARY.md +0 -108
- package/docs/reports/MCP_ACTIONS_SUMMARY.md +0 -329
- package/docs/reports/MCP_ACTION_TEST_COVERAGE.md +0 -132
- package/docs/reports/MCP_SPEC_COMPARISON.md +0 -306
- package/docs/reports/MCP_SPEC_COMPARISON_UPDATED.md +0 -247
- package/docs/reports/MCP_SPEC_VOCABULARY_CONFORMANCE.md +0 -220
- package/docs/reports/MCP_TEST_SUITE_IMPLEMENTATION.md +0 -180
- package/docs/reports/MCP_TEST_SUITE_RESULTS.md +0 -182
- package/docs/reports/PARQUET_MCP_BUG_REPORT.md +0 -70
- package/docs/reports/PARQUET_MCP_STORAGE_COMPLETE.md +0 -214
- package/docs/reports/PARQUET_SAMPLE_FILES_CREATED.md +0 -49
- package/docs/reports/PARQUET_STORAGE_SUCCESS.md +0 -263
- package/docs/reports/PARQUET_VS_NEOTOMA_COMPARISON.md +0 -241
- package/docs/reports/REIMPORT_TASKS_BLOCKER.md +0 -50
- package/docs/reports/SAMPLE_FILE_STRUCTURE_UPDATE.md +0 -68
- package/docs/reports/SAMPLE_PARQUET_IMPORT_TEST_RESULTS.md +0 -91
- package/docs/reports/SCHEMA_ENHANCEMENT_STATUS.md +0 -84
- package/docs/reports/SCHEMA_ENHANCEMENT_TEST_RESULTS.md +0 -78
- package/docs/reports/TASK_RELOAD_BLOCKER.md +0 -40
- package/docs/reports/TEST_FIXES_SUMMARY.md +0 -96
- package/docs/reports/VOCABULARY_CONFORMANCE_REVIEW.md +0 -177
- package/docs/reports/WHY_TESTS_MISSED_BIGINT_ISSUE.md +0 -144
- package/docs/reports/beyond_rag_agent_memory_neotoma_architecture_report.md +0 -103
- package/docs/reports/dhh_clankers_with_claws_neotoma_report.md +0 -102
- package/docs/reports/dr_cintas_pageindex_structure_over_embeddings_report.md +0 -77
- package/docs/reports/failure_gallery.md +0 -97
- package/docs/reports/fixture_expansion_summary.md +0 -204
- package/docs/reports/mcp_action_names_review.md +0 -131
- package/docs/reports/mcp_cli_action_items_fidelity_report.md +0 -189
- package/docs/reports/neotoma_pdf_interpreted_as_note_investigation_2026_02_23.md +0 -89
- package/docs/reports/plan_execution_changes_report.md +0 -122
- package/docs/reports/schema_distinctions.md +0 -210
- package/docs/reports/schema_redundancy_analysis.md +0 -304
- package/docs/specs/FUNCTIONAL_REQUIREMENTS.md +0 -160
- package/docs/specs/GENERAL_REQUIREMENTS.md +0 -30
- package/docs/specs/ICP_PRIORITY_TIERS.md +0 -132
- package/docs/specs/ICP_PROFILES.md +0 -2345
- package/docs/specs/INTERNAL_MCP_RELEASE.md +0 -300
- package/docs/specs/MANIFEST_ALIGNMENT_SUMMARY.md +0 -162
- package/docs/specs/MCP_SPEC.md +0 -2275
- package/docs/specs/METRICS_REQUIREMENTS.md +0 -386
- package/docs/specs/MVP_EXECUTION_PLAN.md +0 -956
- package/docs/specs/MVP_FEATURE_UNITS.md +0 -1821
- package/docs/specs/MVP_OVERVIEW.md +0 -184
- package/docs/specs/NONFUNCTIONAL_REQUIREMENTS.md +0 -98
- package/docs/specs/ONBOARDING_SPEC.md +0 -591
- package/docs/specs/PARQUET_MCP_RESOURCES_SPEC.md +0 -328
- package/docs/specs/TEST_PLAN.md +0 -116
- package/docs/specs/UI_SPEC.md +0 -93
- package/docs/subsystems/accessibility.md +0 -48
- package/docs/subsystems/auth.md +0 -170
- package/docs/subsystems/deletion.md +0 -494
- package/docs/subsystems/entity_merge.md +0 -300
- package/docs/subsystems/errors.md +0 -82
- package/docs/subsystems/events.md +0 -50
- package/docs/subsystems/i18n.md +0 -42
- package/docs/subsystems/ingestion/ingestion.md +0 -772
- package/docs/subsystems/ingestion/state_machines.md +0 -49
- package/docs/subsystems/observation_architecture.md +0 -379
- package/docs/subsystems/privacy.md +0 -71
- package/docs/subsystems/record_types.md +0 -753
- package/docs/subsystems/reducer.md +0 -436
- package/docs/subsystems/relationships.md +0 -455
- package/docs/subsystems/schema.md +0 -1213
- package/docs/subsystems/schema_registry.md +0 -588
- package/docs/subsystems/schema_snapshots/.gitkeep +0 -6
- package/docs/subsystems/schema_snapshots/README.md +0 -209
- package/docs/subsystems/schema_snapshots/account/v1.0.json +0 -52
- package/docs/subsystems/schema_snapshots/address/v1.0.json +0 -79
- package/docs/subsystems/schema_snapshots/agent_message/v1.0.json +0 -96
- package/docs/subsystems/schema_snapshots/balance/v1.0.json +0 -64
- package/docs/subsystems/schema_snapshots/company/v1.0.json +0 -86
- package/docs/subsystems/schema_snapshots/contact/v1.0.json +0 -68
- package/docs/subsystems/schema_snapshots/contact/v1.1.json +0 -112
- package/docs/subsystems/schema_snapshots/contract/v1.0.json +0 -48
- package/docs/subsystems/schema_snapshots/conversation/v1.0.json +0 -102
- package/docs/subsystems/schema_snapshots/crypto_transaction/v1.0.json +0 -76
- package/docs/subsystems/schema_snapshots/email/v1.0.json +0 -87
- package/docs/subsystems/schema_snapshots/event/v1.0.json +0 -79
- package/docs/subsystems/schema_snapshots/exercise/v1.0.json +0 -72
- package/docs/subsystems/schema_snapshots/fixed_cost/v1.0.json +0 -112
- package/docs/subsystems/schema_snapshots/flow/v1.0.json +0 -84
- package/docs/subsystems/schema_snapshots/goal/v1.0.json +0 -71
- package/docs/subsystems/schema_snapshots/holding/v1.0.json +0 -75
- package/docs/subsystems/schema_snapshots/income/v1.0.json +0 -68
- package/docs/subsystems/schema_snapshots/liability/v1.0.json +0 -60
- package/docs/subsystems/schema_snapshots/location/v1.0.json +0 -79
- package/docs/subsystems/schema_snapshots/meal/v1.0.json +0 -68
- package/docs/subsystems/schema_snapshots/message/v1.0.json +0 -72
- package/docs/subsystems/schema_snapshots/note/v1.0.json +0 -64
- package/docs/subsystems/schema_snapshots/order/v1.0.json +0 -72
- package/docs/subsystems/schema_snapshots/person/v1.0.json +0 -86
- package/docs/subsystems/schema_snapshots/project/v1.0.json +0 -75
- package/docs/subsystems/schema_snapshots/property/v1.0.json +0 -64
- package/docs/subsystems/schema_snapshots/purchase/v1.0.json +0 -75
- package/docs/subsystems/schema_snapshots/relationship/v1.0.json +0 -63
- package/docs/subsystems/schema_snapshots/task/v1.0.json +0 -91
- package/docs/subsystems/schema_snapshots/tax_event/v1.0.json +0 -72
- package/docs/subsystems/schema_snapshots/tax_filing/v1.0.json +0 -83
- package/docs/subsystems/schema_snapshots/transaction/v1.0.json +0 -40
- package/docs/subsystems/schema_snapshots/transfer/v1.0.json +0 -76
- package/docs/subsystems/schema_snapshots/wallet/v1.0.json +0 -68
- package/docs/subsystems/search/search.md +0 -63
- package/docs/subsystems/sources.md +0 -493
- package/docs/subsystems/vector_ops.md +0 -72
- package/docs/templates/issue_template.md +0 -36
- package/docs/templates/pr_template.md +0 -74
- package/docs/testing/ROUTE_COVERAGE_MATRIX.md +0 -104
- package/docs/testing/WHY_PARTIAL_ROUTE_COVERAGE.md +0 -183
- package/docs/testing/automated_test_catalog.md +0 -353
- package/docs/testing/cli_command_coverage_review.md +0 -130
- package/docs/testing/fixtures_standard.md +0 -202
- package/docs/testing/test_coverage_audit_summary.md +0 -571
- package/docs/testing/testing_standard.md +0 -146
- package/docs/ui/DESIGN_SYSTEM_UPDATE_SUMMARY.md +0 -152
- package/docs/ui/SHADCN_INTEGRATION_COMPLETE.md +0 -255
- package/docs/ui/design_constraints_template.yaml +0 -228
- package/docs/ui/design_system/accessibility.md +0 -38
- package/docs/ui/design_system/authentication_components.md +0 -38
- package/docs/ui/design_system/billing_components.md +0 -36
- package/docs/ui/design_system/brand_alignment.md +0 -35
- package/docs/ui/design_system/color_palette.md +0 -95
- package/docs/ui/design_system/component_styles.md +0 -241
- package/docs/ui/design_system/dark_mode.md +0 -30
- package/docs/ui/design_system/empty_states.md +0 -47
- package/docs/ui/design_system/error_states.md +0 -35
- package/docs/ui/design_system/file_upload_components.md +0 -60
- package/docs/ui/design_system/future_considerations.md +0 -19
- package/docs/ui/design_system/iconography.md +0 -21
- package/docs/ui/design_system/icp_aesthetic_analysis.md +0 -35
- package/docs/ui/design_system/icp_preference_alignment.md +0 -33
- package/docs/ui/design_system/implementation_notes.md +0 -119
- package/docs/ui/design_system/loading_states.md +0 -40
- package/docs/ui/design_system/motion_and_animation.md +0 -45
- package/docs/ui/design_system/navigation_components.md +0 -63
- package/docs/ui/design_system/onboarding_components.md +0 -48
- package/docs/ui/design_system/responsive_design.md +0 -26
- package/docs/ui/design_system/search_components.md +0 -32
- package/docs/ui/design_system/settings_components.md +0 -29
- package/docs/ui/design_system/spacing_and_layout.md +0 -67
- package/docs/ui/design_system/style_guide.md +0 -395
- package/docs/ui/design_system/typography.md +0 -88
- package/docs/ui/design_system/visual_hierarchy.md +0 -64
- package/docs/ui/design_system.md +0 -124
- package/docs/ui/dsl_spec.md +0 -97
- package/docs/ui/patterns/dashboard.md +0 -58
- package/docs/ui/patterns/detail.md +0 -68
- package/docs/ui/patterns/list.md +0 -72
- package/docs/ui/patterns/navigation.md +0 -314
- package/docs/ui/patterns/settings.md +0 -52
- package/docs/ui/patterns/wizard.md +0 -53
- package/docs/ui/prototype_guide.md +0 -300
- package/docs/ui/shadcn_components.md +0 -189
- package/docs/ui/style_guide_updates.md +0 -74
- package/docs/vocabulary/canonical_terms.md +0 -318
- package/fly.toml +0 -29
- package/foundation/.cursor/rules/agent_constraints.mdc +0 -198
- package/foundation/.cursor/rules/agent_test_execution.mdc +0 -356
- package/foundation/.cursor/rules/autonomous_execution.mdc +0 -117
- package/foundation/.cursor/rules/behavioral_self_adaptation.mdc +0 -531
- package/foundation/.cursor/rules/bug_fix_detection.mdc +0 -142
- package/foundation/.cursor/rules/checkpoint_management.mdc +0 -191
- package/foundation/.cursor/rules/configuration_management.mdc +0 -156
- package/foundation/.cursor/rules/content_style_enforcement.mdc +0 -138
- package/foundation/.cursor/rules/dependency_installation.mdc +0 -146
- package/foundation/.cursor/rules/document_loading_order.mdc +0 -194
- package/foundation/.cursor/rules/documentation_rules.mdc +0 -166
- package/foundation/.cursor/rules/downstream_doc_updates.mdc +0 -266
- package/foundation/.cursor/rules/environment_variables_1password.mdc +0 -307
- package/foundation/.cursor/rules/environment_variables_env_file.mdc +0 -121
- package/foundation/.cursor/rules/feature_unit_detection.mdc +0 -129
- package/foundation/.cursor/rules/file_naming.mdc +0 -31
- package/foundation/.cursor/rules/git_remote_sync.mdc +0 -240
- package/foundation/.cursor/rules/instruction_documentation.mdc +0 -302
- package/foundation/.cursor/rules/native_browser_debugging.mdc +0 -65
- package/foundation/.cursor/rules/plan_execution_testing.mdc +0 -98
- package/foundation/.cursor/rules/post_build_testing.mdc +0 -159
- package/foundation/.cursor/rules/prefer_cli_tools.mdc +0 -234
- package/foundation/.cursor/rules/readme_maintenance.mdc +0 -153
- package/foundation/.cursor/rules/release_detection.mdc +0 -92
- package/foundation/.cursor/rules/release_status_readme_update.mdc +0 -64
- package/foundation/.cursor/rules/risk_management.mdc +0 -167
- package/foundation/.cursor/rules/security.mdc +0 -158
- package/foundation/.cursor/rules/test_first_workflow.mdc +0 -341
- package/foundation/.cursor/rules/worktree_env.mdc +0 -53
- package/foundation/.cursor/skills/analyze/SKILL.md +0 -566
- package/foundation/.cursor/skills/commit/SKILL.md +0 -782
- package/foundation/.cursor/skills/create-feature-unit/SKILL.md +0 -180
- package/foundation/.cursor/skills/create-prototype/SKILL.md +0 -91
- package/foundation/.cursor/skills/create-release/SKILL.md +0 -432
- package/foundation/.cursor/skills/create-rule/SKILL.md +0 -292
- package/foundation/.cursor/skills/debug/SKILL.md +0 -980
- package/foundation/.cursor/skills/final-review/SKILL.md +0 -93
- package/foundation/.cursor/skills/fix-feature-bug/SKILL.md +0 -100
- package/foundation/.cursor/skills/manage-error-debugging/SKILL.md +0 -182
- package/foundation/.cursor/skills/publish/SKILL.md +0 -554
- package/foundation/.cursor/skills/pull/SKILL.md +0 -315
- package/foundation/.cursor/skills/push/SKILL.md +0 -254
- package/foundation/.cursor/skills/report/SKILL.md +0 -1501
- package/foundation/.cursor/skills/report-error/SKILL.md +0 -1501
- package/foundation/.cursor/skills/run-feature-workflow/SKILL.md +0 -79
- package/foundation/.cursor/skills/setup-commands/SKILL.md +0 -28
- package/foundation/.cursor/skills/setup-cursor-copies/SKILL.md +0 -233
- package/foundation/.cursor/skills/sync-env-from-1password/SKILL.md +0 -302
- package/foundation/CONTRIBUTING.md +0 -202
- package/foundation/LICENSE +0 -22
- package/foundation/MIGRATION.md +0 -396
- package/foundation/README.md +0 -391
- package/foundation/agent_instructions/README.md +0 -559
- package/foundation/config/foundation-config.yaml +0 -498
- package/foundation/config/foundation_config.yaml +0 -475
- package/foundation/config/repo_adapters/personal.yaml +0 -40
- package/foundation/config/repo_adapters/template.yaml +0 -45
- package/foundation/conventions/code_conventions.md +0 -908
- package/foundation/conventions/documentation_standards.md +0 -459
- package/foundation/conventions/naming_patterns.yaml +0 -139
- package/foundation/conventions/testing_conventions.md +0 -374
- package/foundation/conventions/writing_style_guide.md +0 -221
- package/foundation/development/branch_strategy.md +0 -266
- package/foundation/development/feature_unit_workflow.md +0 -423
- package/foundation/development/pr_process.md +0 -385
- package/foundation/development/release_workflow.md +0 -2296
- package/foundation/development/templates/feature_unit_spec_template.md +0 -312
- package/foundation/development/templates/manifest_template_extended.yaml +0 -303
- package/foundation/development/templates/manifest_template_simple.yaml +0 -148
- package/foundation/development/workflow.md +0 -509
- package/foundation/development/worktree_setup.sh +0 -207
- package/foundation/scripts/README.md +0 -230
- package/foundation/scripts/__pycache__/op_sync_env_from_1password.cpython-314.pyc +0 -0
- package/foundation/scripts/install-foundation.sh +0 -232
- package/foundation/scripts/install_foundation.sh +0 -232
- package/foundation/scripts/op_sync_env_from_1password.py +0 -1007
- package/foundation/scripts/report_error_create_dirs.sh +0 -14
- package/foundation/scripts/report_error_generate_id.sh +0 -10
- package/foundation/scripts/report_error_update_queue.sh +0 -24
- package/foundation/scripts/report_error_validate_target.sh +0 -34
- package/foundation/scripts/report_error_wait_resolution.sh +0 -69
- package/foundation/scripts/validate_setup.sh +0 -147
- package/foundation/security/credential_management.md +0 -263
- package/foundation/security/pre_commit_audit.sh +0 -78
- package/foundation/security/security_rules.md +0 -163
- package/foundation/strategy/README.md +0 -279
- package/foundation/strategy/competitive_analysis_template.md +0 -271
- package/foundation/strategy/partnership_analysis_template.md +0 -423
- package/foundation/strategy/project_assessment_framework.md +0 -485
- package/foundation/strategy/relevance_analysis_template.md +0 -297
- package/foundation/tooling/README.md +0 -198
- package/foundation/validation/README.md +0 -120
- package/foundation-config.yaml +0 -543
- package/frontend/docs.html +0 -43
- package/frontend/frontend/.vite-prototype/deps/@noble_curves_ed25519__js.js +0 -2859
- package/frontend/frontend/.vite-prototype/deps/@noble_curves_ed25519__js.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/@noble_hashes_utils__js.js +0 -62
- package/frontend/frontend/.vite-prototype/deps/@noble_hashes_utils__js.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-dialog.js +0 -464
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-dialog.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-dropdown-menu.js +0 -1488
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-dropdown-menu.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-label.js +0 -84
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-label.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-scroll-area.js +0 -757
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-scroll-area.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-select.js +0 -1351
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-select.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-slot.js +0 -18
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-slot.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-toast.js +0 -675
- package/frontend/frontend/.vite-prototype/deps/@radix-ui_react-toast.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/@tanstack_react-table.js +0 -3254
- package/frontend/frontend/.vite-prototype/deps/@tanstack_react-table.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/_metadata.json +0 -187
- package/frontend/frontend/.vite-prototype/deps/chunk-557GXNYU.js +0 -23
- package/frontend/frontend/.vite-prototype/deps/chunk-557GXNYU.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-6FYWT56J.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-C7HFWHWH.js +0 -271
- package/frontend/frontend/.vite-prototype/deps/chunk-C7HFWHWH.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-CJDTXCAB.js +0 -49
- package/frontend/frontend/.vite-prototype/deps/chunk-CJDTXCAB.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-DC5AMYBS.js +0 -39
- package/frontend/frontend/.vite-prototype/deps/chunk-DC5AMYBS.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-F4FBYZZO.js +0 -2258
- package/frontend/frontend/.vite-prototype/deps/chunk-F4FBYZZO.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-GIBJ3MQP.js +0 -129
- package/frontend/frontend/.vite-prototype/deps/chunk-GIBJ3MQP.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-IMIZXM4S.js +0 -218
- package/frontend/frontend/.vite-prototype/deps/chunk-IMIZXM4S.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-K236IVZX.js +0 -21628
- package/frontend/frontend/.vite-prototype/deps/chunk-K236IVZX.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-LPO6FEV6.js +0 -21
- package/frontend/frontend/.vite-prototype/deps/chunk-LPO6FEV6.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-PZJDTVNM.js +0 -144
- package/frontend/frontend/.vite-prototype/deps/chunk-PZJDTVNM.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-RGYP7AMI.js +0 -1116
- package/frontend/frontend/.vite-prototype/deps/chunk-RGYP7AMI.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-SMVRXQSC.js +0 -928
- package/frontend/frontend/.vite-prototype/deps/chunk-SMVRXQSC.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-SPBFJIQZ.js +0 -49
- package/frontend/frontend/.vite-prototype/deps/chunk-SPBFJIQZ.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-UQF5EARV.js +0 -9
- package/frontend/frontend/.vite-prototype/deps/chunk-UQF5EARV.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-VEFHXNY4.js +0 -186
- package/frontend/frontend/.vite-prototype/deps/chunk-VEFHXNY4.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/chunk-Z55WIHBM.js +0 -349
- package/frontend/frontend/.vite-prototype/deps/chunk-Z55WIHBM.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/class-variance-authority.js +0 -51
- package/frontend/frontend/.vite-prototype/deps/class-variance-authority.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/clsx.js +0 -10
- package/frontend/frontend/.vite-prototype/deps/clsx.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/lucide-react.js +0 -31586
- package/frontend/frontend/.vite-prototype/deps/lucide-react.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/package.json +0 -3
- package/frontend/frontend/.vite-prototype/deps/papaparse.js +0 -431
- package/frontend/frontend/.vite-prototype/deps/papaparse.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/react-dom.js +0 -7
- package/frontend/frontend/.vite-prototype/deps/react-dom.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/react-dom_client.js +0 -39
- package/frontend/frontend/.vite-prototype/deps/react-dom_client.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/react.js +0 -6
- package/frontend/frontend/.vite-prototype/deps/react.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/react_jsx-dev-runtime.js +0 -913
- package/frontend/frontend/.vite-prototype/deps/react_jsx-dev-runtime.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/react_jsx-runtime.js +0 -7
- package/frontend/frontend/.vite-prototype/deps/react_jsx-runtime.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/sonner.js +0 -1139
- package/frontend/frontend/.vite-prototype/deps/sonner.js.map +0 -7
- package/frontend/frontend/.vite-prototype/deps/tailwind-merge.js +0 -2534
- package/frontend/frontend/.vite-prototype/deps/tailwind-merge.js.map +0 -7
- package/frontend/index.html +0 -38
- package/frontend/src/App.tsx +0 -15
- package/frontend/src/bridge/discovery.ts +0 -126
- package/frontend/src/bridge/index.ts +0 -9
- package/frontend/src/bridge/mcp.ts +0 -85
- package/frontend/src/bridge/types.ts +0 -24
- package/frontend/src/bridge/websocket.ts +0 -349
- package/frontend/src/components/AIAgentBridge.tsx +0 -75
- package/frontend/src/components/AboutPage.tsx +0 -102
- package/frontend/src/components/AppNavigationSidebar.tsx +0 -181
- package/frontend/src/components/AppSidebar.tsx +0 -206
- package/frontend/src/components/AuthErrorHandler.tsx +0 -23
- package/frontend/src/components/Dashboard.tsx +0 -303
- package/frontend/src/components/DashboardPage.tsx +0 -78
- package/frontend/src/components/EmptyPlaceholder.tsx +0 -58
- package/frontend/src/components/EntityDetail.tsx +0 -801
- package/frontend/src/components/EntityList.tsx +0 -409
- package/frontend/src/components/ErrorBoundary.tsx +0 -131
- package/frontend/src/components/FileUploadView.tsx +0 -246
- package/frontend/src/components/FloatingSettingsButton.tsx +0 -46
- package/frontend/src/components/Header.tsx +0 -43
- package/frontend/src/components/IntegrationsPage.tsx +0 -46
- package/frontend/src/components/InterpretationList.tsx +0 -246
- package/frontend/src/components/KeyManagementDialog.tsx +0 -227
- package/frontend/src/components/Layout.tsx +0 -67
- package/frontend/src/components/MCPChatGPTPage.tsx +0 -128
- package/frontend/src/components/MCPClaudePage.tsx +0 -112
- package/frontend/src/components/MCPCodeiumPage.tsx +0 -100
- package/frontend/src/components/MCPConfigurationPage.tsx +0 -624
- package/frontend/src/components/MCPConnectionDialog.tsx +0 -177
- package/frontend/src/components/MCPConnectionsList.tsx +0 -197
- package/frontend/src/components/MCPContinuePage.tsx +0 -90
- package/frontend/src/components/MCPCursorPage.tsx +0 -379
- package/frontend/src/components/MCPGeminiPage.tsx +0 -102
- package/frontend/src/components/MCPGitHubCopilotPage.tsx +0 -100
- package/frontend/src/components/MCPGrokPage.tsx +0 -99
- package/frontend/src/components/MCPJetBrainsPage.tsx +0 -107
- package/frontend/src/components/MCPManusPage.tsx +0 -104
- package/frontend/src/components/MCPSetupDialog.tsx +0 -268
- package/frontend/src/components/MCPVSCodePage.tsx +0 -100
- package/frontend/src/components/MCPWindsurfPage.tsx +0 -99
- package/frontend/src/components/MainApp.tsx +0 -19
- package/frontend/src/components/NotFound.tsx +0 -46
- package/frontend/src/components/OAuthPage.tsx +0 -426
- package/frontend/src/components/ObservationList.tsx +0 -277
- package/frontend/src/components/ProtectedRoute.tsx +0 -38
- package/frontend/src/components/QuickEntryPanel.tsx +0 -99
- package/frontend/src/components/RealtimeStatusIndicator.tsx +0 -32
- package/frontend/src/components/RecentActivityFeed.tsx +0 -198
- package/frontend/src/components/RelationshipDetail.tsx +0 -232
- package/frontend/src/components/RelationshipList.tsx +0 -269
- package/frontend/src/components/SchemaDetail.test.tsx +0 -53
- package/frontend/src/components/SchemaDetail.tsx +0 -230
- package/frontend/src/components/SchemaList.tsx +0 -228
- package/frontend/src/components/SearchResults.tsx +0 -318
- package/frontend/src/components/SeoHead.tsx +0 -40
- package/frontend/src/components/SitePage.tsx +0 -654
- package/frontend/src/components/SourceDetail.tsx +0 -382
- package/frontend/src/components/SourceTable.tsx +0 -243
- package/frontend/src/components/StyleGuide.md +0 -48
- package/frontend/src/components/StyleGuide.tsx +0 -2316
- package/frontend/src/components/TimelineView.tsx +0 -321
- package/frontend/src/components/UniversalSearch.tsx +0 -518
- package/frontend/src/components/design-system/BadgesPage.tsx +0 -47
- package/frontend/src/components/design-system/ButtonsPage.tsx +0 -67
- package/frontend/src/components/design-system/CardsPage.tsx +0 -31
- package/frontend/src/components/design-system/CollapsiblePage.tsx +0 -84
- package/frontend/src/components/design-system/ColorsPage.tsx +0 -125
- package/frontend/src/components/design-system/DesignSystemIndex.tsx +0 -73
- package/frontend/src/components/design-system/DesignSystemLayout.tsx +0 -22
- package/frontend/src/components/design-system/DesignSystemRouter.tsx +0 -43
- package/frontend/src/components/design-system/InputsPage.tsx +0 -40
- package/frontend/src/components/design-system/PageFormatsPage.tsx +0 -263
- package/frontend/src/components/design-system/ProgressPage.tsx +0 -54
- package/frontend/src/components/design-system/SkeletonPage.tsx +0 -68
- package/frontend/src/components/design-system/SpacingPage.tsx +0 -45
- package/frontend/src/components/design-system/StyleGuidePage.tsx +0 -313
- package/frontend/src/components/design-system/SwitchPage.tsx +0 -60
- package/frontend/src/components/design-system/TablesPage.tsx +0 -206
- package/frontend/src/components/design-system/TabsPage.tsx +0 -88
- package/frontend/src/components/design-system/TooltipPage.tsx +0 -94
- package/frontend/src/components/design-system/TypographyPage.tsx +0 -81
- package/frontend/src/components/icons/CursorIcon.tsx +0 -26
- package/frontend/src/components/quick-entry/ContactDialog.tsx +0 -177
- package/frontend/src/components/quick-entry/EventDialog.tsx +0 -204
- package/frontend/src/components/quick-entry/TaskDialog.tsx +0 -204
- package/frontend/src/components/quick-entry/TransactionDialog.tsx +0 -188
- package/frontend/src/components/ui/alert.tsx +0 -59
- package/frontend/src/components/ui/badge.tsx +0 -36
- package/frontend/src/components/ui/breadcrumb.tsx +0 -120
- package/frontend/src/components/ui/button.tsx +0 -56
- package/frontend/src/components/ui/card.tsx +0 -68
- package/frontend/src/components/ui/collapsible.tsx +0 -9
- package/frontend/src/components/ui/dialog.tsx +0 -81
- package/frontend/src/components/ui/dropdown-menu.tsx +0 -195
- package/frontend/src/components/ui/input-group.tsx +0 -26
- package/frontend/src/components/ui/input.tsx +0 -24
- package/frontend/src/components/ui/label.tsx +0 -19
- package/frontend/src/components/ui/progress.tsx +0 -26
- package/frontend/src/components/ui/scroll-area.tsx +0 -35
- package/frontend/src/components/ui/select.tsx +0 -173
- package/frontend/src/components/ui/separator.tsx +0 -31
- package/frontend/src/components/ui/sheet.tsx +0 -139
- package/frontend/src/components/ui/sidebar.tsx +0 -851
- package/frontend/src/components/ui/skeleton.tsx +0 -15
- package/frontend/src/components/ui/switch.tsx +0 -35
- package/frontend/src/components/ui/table-scroll-wrapper.tsx +0 -96
- package/frontend/src/components/ui/table.tsx +0 -127
- package/frontend/src/components/ui/tabs.tsx +0 -53
- package/frontend/src/components/ui/textarea.tsx +0 -23
- package/frontend/src/components/ui/toast.tsx +0 -122
- package/frontend/src/components/ui/toaster.tsx +0 -32
- package/frontend/src/components/ui/tooltip.tsx +0 -28
- package/frontend/src/components/ui/use-toast.ts +0 -194
- package/frontend/src/constants/integrations.ts +0 -51
- package/frontend/src/contexts/AuthContext.tsx +0 -205
- package/frontend/src/contexts/RealtimeContext.tsx +0 -119
- package/frontend/src/docs/DocumentationApp.tsx +0 -104
- package/frontend/src/docs/DocumentationDirectory.tsx +0 -159
- package/frontend/src/docs/DocumentationLayout.tsx +0 -31
- package/frontend/src/docs/DocumentationPage.tsx +0 -38
- package/frontend/src/docs/DocumentationSidebar.tsx +0 -15
- package/frontend/src/docs/MarkdownContent.tsx +0 -212
- package/frontend/src/docs/README.md +0 -198
- package/frontend/src/docs/main.tsx +0 -12
- package/frontend/src/hooks/use-mobile.tsx +0 -19
- package/frontend/src/hooks/useKeys.ts +0 -202
- package/frontend/src/hooks/useMCPConfig.ts +0 -175
- package/frontend/src/hooks/useRealtimeEntities.ts +0 -56
- package/frontend/src/hooks/useRealtimeObservations.ts +0 -56
- package/frontend/src/hooks/useRealtimeRelationships.ts +0 -56
- package/frontend/src/hooks/useRealtimeSources.ts +0 -53
- package/frontend/src/hooks/useRealtimeTimeline.ts +0 -53
- package/frontend/src/hooks/useSettings.ts +0 -95
- package/frontend/src/hooks/useStorageQuota.ts +0 -65
- package/frontend/src/hooks/useTheme.tsx +0 -42
- package/frontend/src/index.css +0 -247
- package/frontend/src/lib/api_client.ts +0 -8
- package/frontend/src/lib/auth.ts +0 -100
- package/frontend/src/lib/idempotency.ts +0 -25
- package/frontend/src/lib/utils.ts +0 -7
- package/frontend/src/main.tsx +0 -40
- package/frontend/src/sample-data/sets-medium.csv +0 -55
- package/frontend/src/sample-data/sets-medium.ts +0 -45
- package/frontend/src/shared/.eslintrc.json +0 -35
- package/frontend/src/shared/.github/README.md +0 -55
- package/frontend/src/shared/.github/workflows/ci.yml +0 -88
- package/frontend/src/shared/.github/workflows/release.yml +0 -34
- package/frontend/src/shared/.github/workflows/setup.yml +0 -56
- package/frontend/src/shared/README.md +0 -163
- package/frontend/src/shared/SETUP.md +0 -121
- package/frontend/src/shared/components.json +0 -20
- package/frontend/src/shared/package-lock.json +0 -4508
- package/frontend/src/shared/package.json +0 -78
- package/frontend/src/shared/src/components/AppSidebar.tsx +0 -77
- package/frontend/src/shared/src/components/ErrorBoundary.tsx +0 -87
- package/frontend/src/shared/src/components/Layout.tsx +0 -262
- package/frontend/src/shared/src/components/ui/breadcrumb.tsx +0 -115
- package/frontend/src/shared/src/components/ui/button.tsx +0 -56
- package/frontend/src/shared/src/components/ui/calendar.tsx +0 -211
- package/frontend/src/shared/src/components/ui/input.tsx +0 -22
- package/frontend/src/shared/src/components/ui/popover.tsx +0 -29
- package/frontend/src/shared/src/components/ui/separator.tsx +0 -29
- package/frontend/src/shared/src/components/ui/sheet.tsx +0 -140
- package/frontend/src/shared/src/components/ui/sidebar.tsx +0 -519
- package/frontend/src/shared/src/components/ui/skeleton.tsx +0 -15
- package/frontend/src/shared/src/components/ui/tooltip.tsx +0 -28
- package/frontend/src/shared/src/hooks/use-mobile.tsx +0 -19
- package/frontend/src/shared/src/index.css +0 -75
- package/frontend/src/shared/src/index.ts +0 -34
- package/frontend/src/shared/src/lib/utils.ts +0 -6
- package/frontend/src/shared/tailwind.config.mjs +0 -67
- package/frontend/src/shared/tsconfig.json +0 -29
- package/frontend/src/site/seo_metadata.ts +0 -133
- package/frontend/src/site/site_data.test.ts +0 -36
- package/frontend/src/site/site_data.ts +0 -575
- package/frontend/src/store/README.md +0 -10
- package/frontend/src/utils/api_access.ts +0 -24
- package/frontend/src/utils/csv.test.ts +0 -42
- package/frontend/src/utils/csv.ts +0 -45
- package/frontend/src/utils/csv_summary.ts +0 -139
- package/frontend/src/utils/debounce.ts +0 -24
- package/frontend/src/utils/entity_display.test.ts +0 -334
- package/frontend/src/utils/entity_display.ts +0 -23
- package/frontend/src/utils/entity_type_formatter.ts +0 -56
- package/frontend/src/utils/error_utils.ts +0 -137
- package/frontend/src/utils/property_keys.ts +0 -36
- package/frontend/src/utils/schema_icons.test.ts +0 -59
- package/frontend/src/utils/schema_icons.ts +0 -229
- package/frontend/src/utils/time.ts +0 -37
- package/frontend/src/vite-env.d.ts +0 -14
- package/frontend/tsconfig.json +0 -27
- package/frontend/tsconfig.node.json +0 -11
- package/mcp/web-scraper/README.md +0 -475
- package/mcp/web-scraper/SETUP.md +0 -150
- package/mcp/web-scraper/__init__.py +0 -3
- package/mcp/web-scraper/chatgpt_scraper_mcp_server.py +0 -435
- package/mcp/web-scraper/create_repo.sh +0 -50
- package/mcp/web-scraper/imports/spotify/playlist_3i0FY58V7n8XIUyWDm3AYA.json +0 -1052
- package/mcp/web-scraper/nytimes_article.json +0 -7
- package/mcp/web-scraper/plugins/__init__.py +0 -3
- package/mcp/web-scraper/plugins/chatgpt_scraper.py +0 -105
- package/mcp/web-scraper/plugins/metacast_scraper.py +0 -828
- package/mcp/web-scraper/plugins/nyt_podcast_scraper.py +0 -538
- package/mcp/web-scraper/plugins/spotify_scraper.py +0 -618
- package/mcp/web-scraper/plugins/twitter_scraper.py +0 -576
- package/mcp/web-scraper/plugins/url_body_fetcher.py +0 -172
- package/mcp/web-scraper/pytest.ini +0 -11
- package/mcp/web-scraper/requirements-test.txt +0 -6
- package/mcp/web-scraper/requirements.txt +0 -6
- package/mcp/web-scraper/run-web-scraper-mcp.sh +0 -38
- package/mcp/web-scraper/scrape_spotify_playlist.py +0 -77
- package/mcp/web-scraper/scraper.py +0 -819
- package/mcp/web-scraper/scraper_base.py +0 -88
- package/mcp/web-scraper/scraper_registry.py +0 -32
- package/mcp/web-scraper/scripts/scrape_tweet_and_verify_referenced.py +0 -65
- package/mcp/web-scraper/store_songs_to_parquet.py +0 -120
- package/mcp/web-scraper/tests/__init__.py +0 -0
- package/mcp/web-scraper/tests/conftest.py +0 -40
- package/mcp/web-scraper/tests/integration/__init__.py +0 -0
- package/mcp/web-scraper/tests/unit/__init__.py +0 -0
- package/mcp/web-scraper/tests/unit/test_source_detection.py +0 -60
- package/mcp/web-scraper/web_scraper_mcp_server.py +0 -639
- package/openapi.yaml +0 -2071
- package/playwright/fixtures/servers.ts +0 -180
- package/playwright/global_setup.ts +0 -3
- package/playwright/tests/auto-enhancement.spec.ts +0 -370
- package/playwright/tests/coverage-map.json +0 -135
- package/playwright/tests/design-system.spec.ts +0 -216
- package/playwright/tests/entity-detail.spec.ts +0 -268
- package/playwright/tests/entity-list.spec.ts +0 -266
- package/playwright/tests/floating-settings-button.spec.ts +0 -95
- package/playwright/tests/graph-integrity.spec.ts +0 -344
- package/playwright/tests/helpers.ts +0 -560
- package/playwright/tests/interpretations.spec.ts +0 -285
- package/playwright/tests/mcp-configuration.spec.ts +0 -208
- package/playwright/tests/mcp-relationships.spec.ts +0 -631
- package/playwright/tests/mcp-store-retrieve.spec.ts +0 -288
- package/playwright/tests/not-found.spec.ts +0 -30
- package/playwright/tests/oauth-flow.spec.ts +0 -790
- package/playwright/tests/observations.spec.ts +0 -295
- package/playwright/tests/relationship-detail.spec.ts +0 -305
- package/playwright/tests/relationships-list.spec.ts +0 -275
- package/playwright/tests/schema-detail.spec.ts +0 -300
- package/playwright/tests/schemas-list.spec.ts +0 -262
- package/playwright/tests/search-flow.spec.ts +0 -216
- package/playwright/tests/site-page.spec.ts +0 -23
- package/playwright/tests/source-detail.spec.ts +0 -300
- package/playwright/tests/sources-list.spec.ts +0 -254
- package/playwright/tests/upload-flow.spec.ts +0 -279
- package/playwright/tsconfig.json +0 -17
- package/playwright/types.d.ts +0 -14
- package/playwright/utils/servers.ts +0 -435
- package/playwright.config.ts +0 -77
- package/postcss.config.mjs +0 -7
- package/scripts/add_ngrok_mapping.py +0 -99
- package/scripts/add_required_observation_fields.js +0 -96
- package/scripts/add_required_source_fields.js +0 -95
- package/scripts/analyze-data-dir-schemas.js +0 -256
- package/scripts/analyze_data_dir_for_schemas.ts +0 -378
- package/scripts/analyze_low_confidence_fields.ts +0 -235
- package/scripts/analyze_schema_redundancies.ts +0 -228
- package/scripts/apply_documentation_rules.sh +0 -81
- package/scripts/apply_file_naming_convention.sh +0 -75
- package/scripts/backfill_entity_embeddings.ts +0 -95
- package/scripts/branch.js +0 -47
- package/scripts/build_github_pages_site.tsx +0 -65
- package/scripts/check-playwright-coverage.ts +0 -159
- package/scripts/check_agent_conversations.js +0 -72
- package/scripts/check_agent_status.js +0 -156
- package/scripts/check_auto_enhancement_status.ts +0 -215
- package/scripts/check_auto_test_schemas.ts +0 -43
- package/scripts/check_claude_sync.sh +0 -35
- package/scripts/check_raw_fragments.ts +0 -46
- package/scripts/check_remaining_eligibility.ts +0 -46
- package/scripts/check_remaining_fields.ts +0 -58
- package/scripts/check_sendgrid_credits.sh +0 -122
- package/scripts/check_sendgrid_email_logs.sh +0 -150
- package/scripts/check_snapshot_schema.ts +0 -18
- package/scripts/check_sources.ts +0 -34
- package/scripts/check_stale_snapshots.ts +0 -80
- package/scripts/cleanup-auto-test-schemas.ts +0 -80
- package/scripts/cleanup_test_schemas.ts +0 -275
- package/scripts/com.neotoma.dev-servers.plist.template +0 -27
- package/scripts/com.neotoma.watch-build.plist.template +0 -27
- package/scripts/complete_submodule_setup.sh +0 -101
- package/scripts/configure_sendgrid_dns.sh +0 -162
- package/scripts/copy-env-to-worktree.js +0 -109
- package/scripts/copy_pdf_worker_wrapper.js +0 -19
- package/scripts/create_sample_parquet_files.py +0 -120
- package/scripts/create_sample_parquet_files.ts +0 -146
- package/scripts/create_sample_parquet_files_mcp.ts +0 -196
- package/scripts/create_sample_parquet_files_simple.sh +0 -132
- package/scripts/cursor-worktree-init.sh +0 -24
- package/scripts/debug-ssl.sh +0 -86
- package/scripts/debug_pdf_extraction.ts +0 -69
- package/scripts/debug_vec_knn.ts +0 -69
- package/scripts/dev-proxy.js +0 -406
- package/scripts/dev-serve.js +0 -349
- package/scripts/disable-dns.sh +0 -47
- package/scripts/doctor.ts +0 -97
- package/scripts/export_schema_snapshots.ts +0 -253
- package/scripts/fix-ssl-cert.sh +0 -72
- package/scripts/fix_mcp_phase1_tests.sh +0 -51
- package/scripts/fix_observation_column_names.js +0 -51
- package/scripts/fix_observation_priority_ordering.js +0 -45
- package/scripts/fix_observation_properties_to_fields.js +0 -48
- package/scripts/fix_sqlite_schema_mismatch.js +0 -75
- package/scripts/generate-dev-cert.sh +0 -69
- package/scripts/generate_pdf_fixtures.ts +0 -330
- package/scripts/generate_schema_icons.ts +0 -216
- package/scripts/get_branch_ports.js +0 -56
- package/scripts/get_mcp_token.sh +0 -47
- package/scripts/get_secrets_for_agents.js +0 -45
- package/scripts/ingest_data_dir.ts +0 -215
- package/scripts/ingest_finances_data.ts +0 -255
- package/scripts/initialize-schemas.ts +0 -350
- package/scripts/install_launchd_dev_servers.js +0 -54
- package/scripts/install_launchd_watch_build.js +0 -53
- package/scripts/instruct_agents_credential_setup.js +0 -130
- package/scripts/instruct_agents_env_check.js +0 -99
- package/scripts/instruct_agents_run_tests_until_passing.js +0 -128
- package/scripts/kill_port.js +0 -174
- package/scripts/linters/sync_agent_instructions_pre_commit.sh +0 -34
- package/scripts/manage_error_debugging.sh +0 -228
- package/scripts/manually_queue_enhancements.ts +0 -156
- package/scripts/merge-dev.js +0 -319
- package/scripts/migrate_auto_enhanced_fields.ts +0 -83
- package/scripts/migrate_env_to_secrets.js +0 -69
- package/scripts/migrate_plans.ts +0 -870
- package/scripts/monitor_and_fix_snapshots.ts +0 -165
- package/scripts/move_docs_rules_to_cursor.js +0 -54
- package/scripts/move_docs_rules_to_cursor.sh +0 -24
- package/scripts/neotoma-npm-reserve/README.md +0 -8
- package/scripts/neotoma-npm-reserve/package.json +0 -10
- package/scripts/notify_agents_env_vars.js +0 -109
- package/scripts/notify_agents_setup_script.js +0 -148
- package/scripts/notify_running_agents_credentials.js +0 -177
- package/scripts/pdf_worker_polyfill.mjs +0 -27
- package/scripts/pick-port.js +0 -108
- package/scripts/postinstall.js +0 -84
- package/scripts/process_remaining_eligible.ts +0 -70
- package/scripts/prototypes/run-prototype.sh +0 -40
- package/scripts/prune-merged-branches.js +0 -115
- package/scripts/recompute_bob.ts +0 -64
- package/scripts/recompute_snapshots.ts +0 -72
- package/scripts/release_orchestrator.js +0 -1995
- package/scripts/remove_duplicate_source_fields.js +0 -61
- package/scripts/rename-branch-from-commit.js +0 -111
- package/scripts/respawn_agents_with_credentials.js +0 -358
- package/scripts/respawn_single_agent.js +0 -324
- package/scripts/run-dev-server-with-tunnel-url.sh +0 -16
- package/scripts/run-dev-task.js +0 -160
- package/scripts/run_dev_servers_launchd.sh +0 -14
- package/scripts/run_integration_tests.js +0 -523
- package/scripts/run_migrations.js +0 -55
- package/scripts/run_neotoma_mcp_stdio.sh +0 -11
- package/scripts/run_neotoma_mcp_stdio_dev_watch.sh +0 -10
- package/scripts/run_neotoma_mcp_stdio_prod.sh +0 -11
- package/scripts/run_neotoma_mcp_stdio_prod_watch.sh +0 -12
- package/scripts/run_watch_build_launchd.sh +0 -18
- package/scripts/scrape_nytimes_article.py +0 -182
- package/scripts/scrape_nytimes_simple.py +0 -152
- package/scripts/secrets_manager.js +0 -232
- package/scripts/send_agent_followup.js +0 -136
- package/scripts/setup-data-symlink.js +0 -88
- package/scripts/setup-dns.sh +0 -54
- package/scripts/setup-env-copy-hook.sh +0 -67
- package/scripts/setup-foundation-symlink.js +0 -45
- package/scripts/setup-https-tunnel.sh +0 -409
- package/scripts/setup-test-env.sh +0 -18
- package/scripts/setup_agent_credentials.sh +0 -27
- package/scripts/setup_agent_environment.sh +0 -39
- package/scripts/setup_claude_instructions.sh +0 -437
- package/scripts/setup_cloudflare_email_routing.sh +0 -158
- package/scripts/setup_shared_submodule.sh +0 -100
- package/scripts/simulate_npm_install.js +0 -70
- package/scripts/spec_compliance_patterns.js +0 -260
- package/scripts/sync-env-from-1password.sh +0 -100
- package/scripts/sync_mcp_configs.js +0 -106
- package/scripts/test-base64-store.ts +0 -53
- package/scripts/test-error-handling.ts +0 -44
- package/scripts/test-file-path-store.ts +0 -142
- package/scripts/test-raw-fragments-idempotence.ts +0 -157
- package/scripts/test-raw-fragments-insert.ts +0 -88
- package/scripts/test-store-response-structure.ts +0 -125
- package/scripts/test-store-structured-response.ts +0 -126
- package/scripts/test_agent_env_spawn.js +0 -82
- package/scripts/test_confidence.ts +0 -36
- package/scripts/test_dsnp_parquet_reading.ts +0 -72
- package/scripts/test_mcp_semantic_search.ts +0 -36
- package/scripts/test_parquet_ingestion.ts +0 -52
- package/scripts/test_raw_fragments_in_response.ts +0 -31
- package/scripts/test_sendgrid_smtp.sh +0 -45
- package/scripts/test_store_parquet_via_mcp.ts +0 -66
- package/scripts/trigger_error_debug_cli.js +0 -271
- package/scripts/unblock_agents.js +0 -208
- package/scripts/validate-coverage-map.ts +0 -187
- package/scripts/validate-doc-dependencies.js +0 -410
- package/scripts/validate_all_fu_compliance.js +0 -752
- package/scripts/validate_schema_sync.ts +0 -135
- package/scripts/validate_spec_compliance.js +0 -669
- package/scripts/watch_site.js +0 -68
- package/scripts/wipe-local-database.js +0 -191
- package/scripts/with_branch_ports.js +0 -496
- package/site_pages/.nojekyll +0 -0
- package/site_pages/FAVICON_CANDIDATES.md +0 -22
- package/site_pages/favicon-1-diamond.svg +0 -3
- package/site_pages/favicon-2-n-box.svg +0 -10
- package/site_pages/favicon-3-waves.svg +0 -3
- package/site_pages/favicon-4-n-minimal.svg +0 -3
- package/site_pages/favicon-5-bars.svg +0 -5
- package/site_pages/favicon.svg +0 -10
- package/site_pages/index.html +0 -40
- package/site_pages/robots.txt +0 -4
- package/site_pages/sitemap.xml +0 -5
- package/src/actions.ts +0 -4468
- package/src/cli/agent_instructions_scan.ts +0 -793
- package/src/cli/bootstrap.ts +0 -35
- package/src/cli/config.ts +0 -338
- package/src/cli/format.ts +0 -337
- package/src/cli/index.ts +0 -11417
- package/src/cli/init_abort.ts +0 -7
- package/src/cli/mcp_config_scan.ts +0 -1359
- package/src/cli/pack_rat.ts +0 -134
- package/src/config/record_types.ts +0 -562
- package/src/config.ts +0 -164
- package/src/crypto/agent_identity.ts +0 -46
- package/src/crypto/auth.ts +0 -110
- package/src/crypto/column_encryption.ts +0 -109
- package/src/crypto/crypto.test.ts +0 -311
- package/src/crypto/envelope.ts +0 -240
- package/src/crypto/export.ts +0 -131
- package/src/crypto/index.ts +0 -13
- package/src/crypto/key_derivation.ts +0 -176
- package/src/crypto/keys.ts +0 -85
- package/src/crypto/mcp_auth_token.ts +0 -35
- package/src/crypto/signature.ts +0 -50
- package/src/crypto/types.ts +0 -48
- package/src/db.ts +0 -66
- package/src/embeddings.ts +0 -76
- package/src/index.ts +0 -25
- package/src/mcp_ws_bridge.ts +0 -222
- package/src/middleware/encrypt_response.ts +0 -39
- package/src/normalize.ts +0 -351
- package/src/record_types.test.ts +0 -36
- package/src/reducers/index.ts +0 -5
- package/src/reducers/observation_reducer.ts +0 -458
- package/src/reducers/relationship_reducer.ts +0 -291
- package/src/repositories/db/capability_repo.ts +0 -29
- package/src/repositories/file/capability_repo.ts +0 -29
- package/src/repositories/index.ts +0 -7
- package/src/repositories/interfaces.ts +0 -112
- package/src/repositories/sqlite/__tests__/local_db_adapter.test.ts +0 -138
- package/src/repositories/sqlite/local_db_adapter.ts +0 -961
- package/src/repositories/sqlite/sqlite_client.ts +0 -378
- package/src/server.ts +0 -6157
- package/src/services/__tests__/csv_chunking.test.ts +0 -125
- package/src/services/__tests__/deletion.test.ts +0 -358
- package/src/services/__tests__/entity_semantic_search.test.ts +0 -45
- package/src/services/__tests__/local_auth.test.ts +0 -52
- package/src/services/__tests__/local_entity_embedding.test.ts +0 -108
- package/src/services/__tests__/mcp_oauth.test.ts +0 -407
- package/src/services/__tests__/oauth_key_gate.test.ts +0 -50
- package/src/services/__tests__/oauth_state.test.ts +0 -40
- package/src/services/__tests__/schema_icon_service.test.ts +0 -151
- package/src/services/auto_enhancement_processor.ts +0 -237
- package/src/services/capability_registry.ts +0 -202
- package/src/services/correction.ts +0 -87
- package/src/services/csv_chunking.ts +0 -128
- package/src/services/csv_row_extraction.ts +0 -124
- package/src/services/dashboard_stats.ts +0 -115
- package/src/services/deletion.ts +0 -482
- package/src/services/deletion_monitor.ts +0 -314
- package/src/services/encryption_service.ts +0 -110
- package/src/services/entity_merge.ts +0 -100
- package/src/services/entity_queries.ts +0 -518
- package/src/services/entity_resolution.ts +0 -367
- package/src/services/entity_semantic_search.ts +0 -64
- package/src/services/entity_snapshot_embedding.ts +0 -115
- package/src/services/field_canonicalization.ts +0 -393
- package/src/services/field_converters.ts +0 -173
- package/src/services/field_validation.ts +0 -173
- package/src/services/file_text_extraction.ts +0 -213
- package/src/services/finances_field_mapping.ts +0 -473
- package/src/services/gdpr_deletion.ts +0 -497
- package/src/services/interpretation.ts +0 -939
- package/src/services/llm_extraction.ts +0 -548
- package/src/services/local_auth.ts +0 -154
- package/src/services/local_entity_embedding.ts +0 -196
- package/src/services/mcp_auth.ts +0 -75
- package/src/services/mcp_oauth.ts +0 -1625
- package/src/services/mcp_oauth_errors.ts +0 -139
- package/src/services/oauth_key_gate.ts +0 -116
- package/src/services/oauth_state.ts +0 -70
- package/src/services/observation_identity.ts +0 -161
- package/src/services/observation_storage.ts +0 -162
- package/src/services/parquet_reader.ts +0 -375
- package/src/services/public_key_registry.ts +0 -103
- package/src/services/raw_fragments.ts +0 -217
- package/src/services/raw_storage.ts +0 -267
- package/src/services/relationships.ts +0 -495
- package/src/services/schema_definitions.ts +0 -2041
- package/src/services/schema_icon_service.ts +0 -260
- package/src/services/schema_inference.ts +0 -401
- package/src/services/schema_recommendation.ts +0 -1475
- package/src/services/schema_registry.ts +0 -1403
- package/src/services/snapshot_computation.ts +0 -92
- package/src/services/source_identity.ts +0 -22
- package/src/services/timeline_events.ts +0 -198
- package/src/shared/action_handlers/entity_handlers.ts +0 -115
- package/src/shared/action_schemas.test.ts +0 -59
- package/src/shared/action_schemas.ts +0 -317
- package/src/shared/api_client.ts +0 -86
- package/src/shared/contract_mappings.ts +0 -646
- package/src/shared/entity_display_name.ts +0 -64
- package/src/shared/local_transport.ts +0 -126
- package/src/shared/openapi_schema.ts +0 -175
- package/src/shared/openapi_types.ts +0 -2810
- package/src/shared/record_display_summary.ts +0 -133
- package/src/utils/__tests__/csv_summary.test.ts +0 -53
- package/src/utils/__tests__/lucide_icons.test.ts +0 -133
- package/src/utils/chat.test.ts +0 -42
- package/src/utils/chat.ts +0 -35
- package/src/utils/csv.test.ts +0 -41
- package/src/utils/csv.ts +0 -77
- package/src/utils/csv_summary.ts +0 -195
- package/src/utils/log_encrypt.ts +0 -144
- package/src/utils/logger.ts +0 -94
- package/src/utils/lucide_icons.ts +0 -279
- package/src/utils/property_keys.test.ts +0 -109
- package/src/utils/property_keys.ts +0 -66
- package/src/utils/property_sanitizer.test.ts +0 -105
- package/src/utils/property_sanitizer.ts +0 -135
- package/src/version_check.test.ts +0 -107
- package/src/version_check.ts +0 -58
- package/supabase/.temp/cli-latest +0 -0
- package/tailwind.config.mjs +0 -134
- package/tests/TEST_ACTION_MATRIX.md +0 -387
- package/tests/agent/mcp_instruction_behavior.test.ts +0 -72
- package/tests/agent/runner/agent_runner.ts +0 -27
- package/tests/agent/runner/claude_code_runner.ts +0 -128
- package/tests/agent/runner/cursor_cli_runner.ts +0 -7
- package/tests/cli/api_client_offline_fallback.test.ts +0 -89
- package/tests/cli/cli_admin_commands.test.ts +0 -268
- package/tests/cli/cli_api_commands.test.ts +0 -75
- package/tests/cli/cli_auth_commands.test.ts +0 -67
- package/tests/cli/cli_command_coverage_guard.test.ts +0 -50
- package/tests/cli/cli_correction_commands.test.ts +0 -277
- package/tests/cli/cli_direct_invocation_parity.test.ts +0 -46
- package/tests/cli/cli_entity_commands.test.ts +0 -324
- package/tests/cli/cli_entity_subcommands.test.ts +0 -422
- package/tests/cli/cli_infra_commands.test.ts +0 -475
- package/tests/cli/cli_mcp_commands.test.ts +0 -51
- package/tests/cli/cli_observation_commands.test.ts +0 -232
- package/tests/cli/cli_query_commands.test.ts +0 -369
- package/tests/cli/cli_relationship_commands.test.ts +0 -410
- package/tests/cli/cli_schema_commands.test.ts +0 -296
- package/tests/cli/cli_session_startup_ux.test.ts +0 -112
- package/tests/cli/cli_smoke.test.ts +0 -456
- package/tests/cli/cli_source_commands.test.ts +0 -214
- package/tests/cli/cli_stats_commands.test.ts +0 -51
- package/tests/cli/cli_store_commands.test.ts +0 -339
- package/tests/cli/cli_timeline_commands.test.ts +0 -294
- package/tests/cli/config.test.ts +0 -36
- package/tests/cli/config_api_discovery.test.ts +0 -91
- package/tests/cli/test_command_detection.test.ts +0 -128
- package/tests/cli/test_debug_tty.test.ts +0 -32
- package/tests/contract/contract_mapping.test.ts +0 -131
- package/tests/contract/contract_mcp_cli_parity.test.ts +0 -223
- package/tests/contract/openapi_schema.test.ts +0 -15
- package/tests/fixtures/README.md +0 -22
- package/tests/fixtures/agent_mcp/insurance_policy.txt +0 -5
- package/tests/fixtures/agent_mcp_cases.json +0 -137
- package/tests/fixtures/csv/sample_balances.csv +0 -7
- package/tests/fixtures/csv/sample_contacts.csv +0 -6
- package/tests/fixtures/csv/sample_crypto_transactions.csv +0 -6
- package/tests/fixtures/csv/sample_flows.csv +0 -7
- package/tests/fixtures/csv/sample_holdings.csv +0 -7
- package/tests/fixtures/csv/sample_income.csv +0 -7
- package/tests/fixtures/csv/sample_purchases.csv +0 -7
- package/tests/fixtures/csv/sample_tax_events.csv +0 -7
- package/tests/fixtures/csv/sample_transactions.csv +0 -7
- package/tests/fixtures/csv/sample_transfers.csv +0 -6
- package/tests/fixtures/expected/contact_snapshot.json +0 -19
- package/tests/fixtures/expected/transaction_snapshot.json +0 -21
- package/tests/fixtures/helpers.ts +0 -522
- package/tests/fixtures/json/account.json +0 -63
- package/tests/fixtures/json/argument.json +0 -39
- package/tests/fixtures/json/balance.json +0 -56
- package/tests/fixtures/json/belief.json +0 -44
- package/tests/fixtures/json/contact.json +0 -83
- package/tests/fixtures/json/contract.json +0 -62
- package/tests/fixtures/json/crypto_transaction.json +0 -67
- package/tests/fixtures/json/domain.json +0 -41
- package/tests/fixtures/json/emotion.json +0 -31
- package/tests/fixtures/json/fixed_cost.json +0 -75
- package/tests/fixtures/json/flow.json +0 -71
- package/tests/fixtures/json/habit.json +0 -54
- package/tests/fixtures/json/habit_completion.json +0 -31
- package/tests/fixtures/json/habit_objective.json +0 -40
- package/tests/fixtures/json/holding.json +0 -65
- package/tests/fixtures/json/income.json +0 -59
- package/tests/fixtures/json/liability.json +0 -50
- package/tests/fixtures/json/order.json +0 -62
- package/tests/fixtures/json/outcome.json +0 -56
- package/tests/fixtures/json/process.json +0 -43
- package/tests/fixtures/json/property.json +0 -52
- package/tests/fixtures/json/purchase.json +0 -66
- package/tests/fixtures/json/research.json +0 -53
- package/tests/fixtures/json/strategy.json +0 -68
- package/tests/fixtures/json/task_attachment.json +0 -62
- package/tests/fixtures/json/task_comment.json +0 -54
- package/tests/fixtures/json/task_dependency.json +0 -51
- package/tests/fixtures/json/task_story.json +0 -53
- package/tests/fixtures/json/tax_event.json +0 -60
- package/tests/fixtures/json/tax_filing.json +0 -61
- package/tests/fixtures/json/transaction.json +0 -62
- package/tests/fixtures/json/transfer.json +0 -60
- package/tests/fixtures/json/wallet.json +0 -51
- package/tests/fixtures/json/workout.json +0 -45
- package/tests/fixtures/pdf/sample-upload.txt +0 -2
- package/tests/fixtures/pdf/sample_bank_statement.md +0 -32
- package/tests/fixtures/pdf/sample_bank_statement.pdf +0 -0
- package/tests/fixtures/pdf/sample_contract.md +0 -27
- package/tests/fixtures/pdf/sample_contract.pdf +0 -0
- package/tests/fixtures/pdf/sample_exercise.md +0 -31
- package/tests/fixtures/pdf/sample_exercise.pdf +0 -0
- package/tests/fixtures/pdf/sample_holding_statement.md +0 -29
- package/tests/fixtures/pdf/sample_holding_statement.pdf +0 -0
- package/tests/fixtures/pdf/sample_invoice.md +0 -27
- package/tests/fixtures/pdf/sample_invoice.pdf +0 -108
- package/tests/fixtures/pdf/sample_meal.md +0 -28
- package/tests/fixtures/pdf/sample_meal.pdf +0 -111
- package/tests/fixtures/pdf/sample_note.md +0 -28
- package/tests/fixtures/pdf/sample_note.pdf +0 -0
- package/tests/fixtures/pdf/sample_receipt.md +0 -28
- package/tests/fixtures/pdf/sample_receipt.pdf +0 -0
- package/tests/fixtures/pdf/sample_research.md +0 -31
- package/tests/fixtures/pdf/sample_research.pdf +0 -0
- package/tests/fixtures/pdf/sample_tax_form.md +0 -38
- package/tests/fixtures/pdf/sample_tax_form.pdf +0 -0
- package/tests/fixtures/pdf/sample_transaction_receipt.md +0 -28
- package/tests/fixtures/pdf/sample_transaction_receipt.pdf +0 -0
- package/tests/fixtures/replay_graph.test.ts +0 -125
- package/tests/fixtures/sample_invoice.pdf +0 -1
- package/tests/fixtures/types.ts +0 -321
- package/tests/fixtures/validation.ts +0 -333
- package/tests/helpers/cleanup_helpers.ts +0 -550
- package/tests/helpers/create_test_parquet.ts +0 -187
- package/tests/helpers/cross_layer_helpers.ts +0 -130
- package/tests/helpers/mcp_action_helper.ts +0 -55
- package/tests/helpers/mcp_spec_validators.ts +0 -433
- package/tests/helpers/test_data_helpers.ts +0 -226
- package/tests/helpers/test_schema_helpers.ts +0 -264
- package/tests/integration/cli_to_mcp_entities.test.ts +0 -211
- package/tests/integration/cli_to_mcp_relationships.test.ts +0 -196
- package/tests/integration/cli_to_mcp_schemas.test.ts +0 -232
- package/tests/integration/cli_to_mcp_stats_snapshots.test.ts +0 -67
- package/tests/integration/cli_to_mcp_store.test.ts +0 -249
- package/tests/integration/dashboard_stats.test.ts +0 -180
- package/tests/integration/entity_queries.test.ts +0 -666
- package/tests/integration/field_converters.test.ts +0 -266
- package/tests/integration/fixture_mcp_store_replay.test.ts +0 -255
- package/tests/integration/gdpr_deletion.test.ts +0 -433
- package/tests/integration/llm_extraction.test.ts +0 -554
- package/tests/integration/mcp_actions_matrix.test.ts +0 -969
- package/tests/integration/mcp_auto_enhancement.test.ts +0 -659
- package/tests/integration/mcp_auto_schema_creation.test.ts +0 -658
- package/tests/integration/mcp_correction_variations.test.ts +0 -641
- package/tests/integration/mcp_entity_creation.test.ts +0 -333
- package/tests/integration/mcp_entity_variations.test.ts +0 -474
- package/tests/integration/mcp_graph_variations.test.ts +0 -380
- package/tests/integration/mcp_npm_check_update.test.ts +0 -54
- package/tests/integration/mcp_query_variations.test.ts +0 -392
- package/tests/integration/mcp_relationship_variations.test.ts +0 -433
- package/tests/integration/mcp_resource_variations.test.ts +0 -423
- package/tests/integration/mcp_resources.test.ts +0 -452
- package/tests/integration/mcp_schema_actions.test.ts +0 -673
- package/tests/integration/mcp_schema_variations.test.ts +0 -428
- package/tests/integration/mcp_store_parquet.test.ts +0 -466
- package/tests/integration/mcp_store_unstructured.test.ts +0 -413
- package/tests/integration/mcp_store_variations.test.ts +0 -452
- package/tests/integration/nonjson_csv_store_behavior.test.ts +0 -348
- package/tests/integration/nonjson_fixtures_mcp_replay.test.ts +0 -253
- package/tests/integration/observation_ingestion.test.ts +0 -362
- package/tests/integration/payload/payload_submission.test.ts +0 -296
- package/tests/integration/payload_compiler.test.ts +0 -347
- package/tests/integration/public_key_registry.test.ts +0 -204
- package/tests/integration/relationship_snapshots.test.ts +0 -235
- package/tests/integration/schema_recommendation_integration.test.ts +0 -418
- package/tests/integration/setup_v0.2.0_schemas.ts +0 -61
- package/tests/integration/v0.2.0_ingestion.test.ts +0 -527
- package/tests/services/auto_enhancement_converter_detection.test.ts +0 -663
- package/tests/services/auto_enhancement_processor.test.ts +0 -445
- package/tests/services/capability_registry.test.ts +0 -254
- package/tests/services/converter_detection_unit.test.ts +0 -168
- package/tests/services/encryption_service.test.ts +0 -147
- package/tests/services/entity_resolution.test.ts +0 -285
- package/tests/services/field_canonicalization.test.ts +0 -215
- package/tests/services/field_converters.test.ts +0 -211
- package/tests/services/field_validation.test.ts +0 -318
- package/tests/services/finances_field_mapping.test.ts +0 -245
- package/tests/services/interpretation.test.ts +0 -144
- package/tests/services/mcp_auth.test.ts +0 -34
- package/tests/services/observation_identity.test.ts +0 -154
- package/tests/services/payload_identity.test.ts +0 -325
- package/tests/services/payload_schema.test.ts +0 -282
- package/tests/services/raw_storage.test.ts +0 -546
- package/tests/services/schema_definitions.test.ts +0 -119
- package/tests/services/schema_recommendation.test.ts +0 -590
- package/tests/services/schema_registry_incremental.test.ts +0 -882
- package/tests/services/summary.test.ts +0 -26
- package/tests/unit/bigint_serialization.test.ts +0 -220
- package/tests/unit/observation_reducer_converters.test.ts +0 -430
- package/tests/unit/parquet_reader.test.ts +0 -155
- package/tests/unit/relationship_reducer.test.ts +0 -208
- package/tests/unit/schema_inference.test.ts +0 -358
- package/tests/unit/seo_metadata.test.ts +0 -52
- package/tsconfig.json +0 -22
- package/vite.config.ts +0 -165
- package/vitest.config.ts +0 -111
- package/vitest.global_setup.ts +0 -42
- package/vitest.setup.ts +0 -89
|
@@ -1,1213 +0,0 @@
|
|
|
1
|
-
# Neotoma Schema — Canonical Data Models and Evolution Rules
|
|
2
|
-
## Scope
|
|
3
|
-
This document covers:
|
|
4
|
-
- PostgreSQL table definitions
|
|
5
|
-
- JSONB property schemas for flexible fields
|
|
6
|
-
- Indexes and performance considerations
|
|
7
|
-
- Schema versioning and backward compatibility
|
|
8
|
-
- Migration safety rules
|
|
9
|
-
This document does NOT cover:
|
|
10
|
-
- Ingestion pipeline logic (see `docs/subsystems/ingestion/ingestion.md`)
|
|
11
|
-
- Entity resolution (see ingestion docs)
|
|
12
|
-
- Search indexing (see `docs/subsystems/search/search.md`)
|
|
13
|
-
## 1. Core Schema Principles
|
|
14
|
-
### 1.1 Foundational Invariants
|
|
15
|
-
These principles MUST be maintained across all schema changes:
|
|
16
|
-
1. **Immutability:** Once written, truth never changes (exceptions: metadata like `updated_at`)
|
|
17
|
-
2. **Provenance:** All data traces to source (file, timestamp, user)
|
|
18
|
-
3. **Determinism:** Same input → same schema structure
|
|
19
|
-
4. **Explainability:** All fields map to extraction source
|
|
20
|
-
5. **Flexibility:** JSONB for schema-specific `properties`
|
|
21
|
-
6. **Strong typing:** Core fields are strongly typed SQL columns
|
|
22
|
-
7. **No orphans:** All sources and observations have provenance; all relationships have valid endpoints
|
|
23
|
-
### 1.2 Schema Evolution Rules
|
|
24
|
-
**Additive Changes (Allowed):**
|
|
25
|
-
- ✅ Add new optional JSONB keys
|
|
26
|
-
- ✅ Add new indexes
|
|
27
|
-
- ✅ Add new tables
|
|
28
|
-
- ✅ Add new optional columns with defaults
|
|
29
|
-
**Breaking Changes (Forbidden in MVP):**
|
|
30
|
-
- ❌ Remove columns or tables
|
|
31
|
-
- ❌ Change column types (except widening, e.g., VARCHAR(50) → TEXT)
|
|
32
|
-
- ❌ Remove required JSONB keys
|
|
33
|
-
- ❌ Change JSONB key semantics
|
|
34
|
-
**Migration Requirements:**
|
|
35
|
-
- All migrations MUST be reversible (down migration)
|
|
36
|
-
- All migrations MUST preserve existing data
|
|
37
|
-
- All migrations MUST be tested on production-like data
|
|
38
|
-
## 2. Core Tables
|
|
39
|
-
### 2.1 `observations` Table
|
|
40
|
-
**Purpose:** Store granular, source-specific facts extracted from documents. Observations are the intermediate layer between documents and entity snapshots. Links to sources and interpretations for full provenance.
|
|
41
|
-
**Schema:**
|
|
42
|
-
```sql
|
|
43
|
-
CREATE TABLE observations (
|
|
44
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
45
|
-
entity_id TEXT NOT NULL,
|
|
46
|
-
entity_type TEXT NOT NULL,
|
|
47
|
-
schema_version TEXT NOT NULL,
|
|
48
|
-
source_id UUID REFERENCES sources(id),
|
|
49
|
-
interpretation_id UUID REFERENCES interpretations(id),
|
|
50
|
-
observed_at TIMESTAMPTZ NOT NULL,
|
|
51
|
-
specificity_score NUMERIC(3,2) CHECK (specificity_score BETWEEN 0 AND 1),
|
|
52
|
-
source_priority INTEGER DEFAULT 0,
|
|
53
|
-
fields JSONB NOT NULL,
|
|
54
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
55
|
-
user_id UUID NOT NULL,
|
|
56
|
-
idempotency_key TEXT
|
|
57
|
-
);
|
|
58
|
-
```
|
|
59
|
-
**Field Definitions:**
|
|
60
|
-
| Field | Type | Purpose | Mutable | Indexed |
|
|
61
|
-
| ----------------------- | ----------- | ------------------------------------------------- | ------- | ----------- |
|
|
62
|
-
| `id` | UUID | Unique observation ID | No | Primary key |
|
|
63
|
-
| `entity_id` | TEXT | Target entity ID (hash-based) | No | Yes |
|
|
64
|
-
| `entity_type` | TEXT | Entity type (person, company, invoice, etc.) | No | Yes |
|
|
65
|
-
| `schema_version` | TEXT | Schema version used for extraction | No | No |
|
|
66
|
-
| `source_id` | UUID | Source that produced this observation | No | Yes |
|
|
67
|
-
| `interpretation_id` | UUID | Interpretation that created this | No | Yes |
|
|
68
|
-
| `observed_at` | TIMESTAMPTZ | Timestamp when observation was made | No | Yes |
|
|
69
|
-
| `specificity_score` | NUMERIC | How specific this observation is (0-1) | No | No |
|
|
70
|
-
| `source_priority` | INTEGER | Priority of source (higher = more trusted) | No | No |
|
|
71
|
-
| `fields` | JSONB | Granular facts extracted from document | No | No |
|
|
72
|
-
| `created_at` | TIMESTAMPTZ | Observation creation timestamp | No | No |
|
|
73
|
-
| `user_id` | UUID | User who owns this observation | No | Yes |
|
|
74
|
-
| `idempotency_key` | TEXT | Client-provided key for correction idempotency | No | Yes |
|
|
75
|
-
**Source Priority Levels:**
|
|
76
|
-
| Source | Priority | Use Case |
|
|
77
|
-
|--------|----------|----------|
|
|
78
|
-
| AI interpretation | 0 | Automated extraction |
|
|
79
|
-
| `ingest_structured()` | 100 | Agent-provided facts |
|
|
80
|
-
| `correct()` | 1000 | User corrections (always wins) |
|
|
81
|
-
**Indexes:**
|
|
82
|
-
```sql
|
|
83
|
-
CREATE INDEX idx_observations_entity ON observations(entity_id, observed_at DESC);
|
|
84
|
-
CREATE INDEX idx_observations_source ON observations(source_id) WHERE source_id IS NOT NULL;
|
|
85
|
-
CREATE INDEX idx_observations_interpretation ON observations(interpretation_id) WHERE interpretation_id IS NOT NULL;
|
|
86
|
-
CREATE INDEX idx_observations_user ON observations(user_id);
|
|
87
|
-
CREATE INDEX idx_observations_idempotency_key ON observations(user_id, idempotency_key)
|
|
88
|
-
WHERE idempotency_key IS NOT NULL;
|
|
89
|
-
```
|
|
90
|
-
**RLS Policies:**
|
|
91
|
-
```sql
|
|
92
|
-
ALTER TABLE observations ENABLE ROW LEVEL SECURITY;
|
|
93
|
-
CREATE POLICY "Users read own observations" ON observations
|
|
94
|
-
FOR SELECT USING (user_id = auth.uid());
|
|
95
|
-
CREATE POLICY "Service role full access" ON observations
|
|
96
|
-
FOR ALL TO service_role USING (true) WITH CHECK (true);
|
|
97
|
-
```
|
|
98
|
-
**Notes:**
|
|
99
|
-
- Observations are immutable once created
|
|
100
|
-
- Multiple observations can exist for the same entity from different sources
|
|
101
|
-
- Reducers merge observations into entity snapshots deterministically
|
|
102
|
-
- `source_id` and `interpretation_id` provide full provenance chain
|
|
103
|
-
- Corrections use `source_priority = 1000` to override AI extraction
|
|
104
|
-
- See [`docs/subsystems/observation_architecture.md`](./observation_architecture.md) for details
|
|
105
|
-
- See [`docs/subsystems/sources.md`](./sources.md) for sources-first architecture
|
|
106
|
-
### 2.8 `entity_snapshots` Table
|
|
107
|
-
**Purpose:** Store deterministic reducer output representing current truth for entities. Snapshots are computed from observations.
|
|
108
|
-
**Schema:**
|
|
109
|
-
```sql
|
|
110
|
-
CREATE TABLE entity_snapshots (
|
|
111
|
-
entity_id TEXT PRIMARY KEY,
|
|
112
|
-
entity_type TEXT NOT NULL,
|
|
113
|
-
schema_version TEXT NOT NULL,
|
|
114
|
-
snapshot JSONB NOT NULL,
|
|
115
|
-
computed_at TIMESTAMPTZ NOT NULL,
|
|
116
|
-
observation_count INTEGER NOT NULL,
|
|
117
|
-
last_observation_at TIMESTAMPTZ NOT NULL,
|
|
118
|
-
provenance JSONB NOT NULL,
|
|
119
|
-
user_id UUID NOT NULL,
|
|
120
|
-
embedding vector(1536)
|
|
121
|
-
);
|
|
122
|
-
```
|
|
123
|
-
**Field Definitions:**
|
|
124
|
-
| Field | Type | Purpose | Mutable | Indexed |
|
|
125
|
-
| --------------------- | ----------- | -------------------------------------------------------- | ------- | ----------- |
|
|
126
|
-
| `entity_id` | TEXT | Entity ID (hash-based, primary key) | No | Primary key |
|
|
127
|
-
| `entity_type` | TEXT | Entity type (person, company, invoice, etc.) | No | Yes |
|
|
128
|
-
| `schema_version` | TEXT | Schema version used for snapshot computation | No | No |
|
|
129
|
-
| `snapshot` | JSONB | Current truth, computed by reducer | Yes | Yes (GIN) |
|
|
130
|
-
| `computed_at` | TIMESTAMPTZ | When snapshot was computed | Yes | No |
|
|
131
|
-
| `observation_count` | INTEGER | Number of observations merged | Yes | No |
|
|
132
|
-
| `last_observation_at` | TIMESTAMPTZ | Timestamp of most recent observation | Yes | No |
|
|
133
|
-
| `provenance` | JSONB | Maps field → observation_id, traces each field to source | Yes | No |
|
|
134
|
-
| `user_id` | UUID | User who owns this entity | No | Yes |
|
|
135
|
-
| `embedding` | vector(1536)| Optional embedding for semantic similarity search | Yes | Yes (ivfflat) |
|
|
136
|
-
**Indexes:**
|
|
137
|
-
```sql
|
|
138
|
-
CREATE INDEX idx_snapshots_type ON entity_snapshots(entity_type);
|
|
139
|
-
CREATE INDEX idx_snapshots_user ON entity_snapshots(user_id);
|
|
140
|
-
CREATE INDEX idx_snapshots_snapshot ON entity_snapshots USING GIN(snapshot);
|
|
141
|
-
CREATE INDEX idx_entity_snapshots_embedding ON entity_snapshots
|
|
142
|
-
USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100)
|
|
143
|
-
WHERE embedding IS NOT NULL;
|
|
144
|
-
```
|
|
145
|
-
**Notes:**
|
|
146
|
-
- Snapshots are recomputed when new observations arrive
|
|
147
|
-
- Provenance enables full traceability: snapshot field → observation → document
|
|
148
|
-
- Reducers are deterministic: same observations + merge rules → same snapshot
|
|
149
|
-
- See [`docs/subsystems/reducer.md`](./reducer.md) for reducer patterns
|
|
150
|
-
|
|
151
|
-
**Local/SQLite schema additions for entity semantic search (when sqlite-vec loaded):**
|
|
152
|
-
- `entity_embeddings_vec`: vec0 virtual table, `embedding float[1536]`. Stores embeddings for KNN similarity search.
|
|
153
|
-
- `entity_embedding_rows`: Maps vec rowid to entity metadata. Columns: `rowid` (PK, matches vec rowid), `entity_id` (UNIQUE), `user_id`, `entity_type`, `merged`. See [`docs/subsystems/vector_ops.md`](./vector_ops.md) for local path details.
|
|
154
|
-
|
|
155
|
-
### 2.9 `schema_registry` Table
|
|
156
|
-
**Purpose:** Manage config-driven schema definitions, versions, and merge policies. Enables runtime schema evolution without code deployments.
|
|
157
|
-
**Schema:**
|
|
158
|
-
```sql
|
|
159
|
-
CREATE TABLE schema_registry (
|
|
160
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
161
|
-
entity_type TEXT NOT NULL,
|
|
162
|
-
schema_version TEXT NOT NULL,
|
|
163
|
-
schema_definition JSONB NOT NULL,
|
|
164
|
-
reducer_config JSONB NOT NULL,
|
|
165
|
-
active BOOLEAN DEFAULT true,
|
|
166
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
167
|
-
UNIQUE(entity_type, schema_version)
|
|
168
|
-
);
|
|
169
|
-
```
|
|
170
|
-
**Field Definitions:**
|
|
171
|
-
| Field | Type | Purpose | Mutable | Indexed |
|
|
172
|
-
| ------------------- | ----------- | -------------------------------------------- | ------- | ----------- |
|
|
173
|
-
| `id` | UUID | Unique registry entry ID | No | Primary key |
|
|
174
|
-
| `entity_type` | TEXT | Entity type (person, company, invoice, etc.) | No | Yes |
|
|
175
|
-
| `schema_version` | TEXT | Schema version (e.g., "1.0", "1.1") | No | Yes |
|
|
176
|
-
| `schema_definition` | JSONB | Field definitions, types, validators | No | No |
|
|
177
|
-
| `reducer_config` | JSONB | Merge policies per field | No | No |
|
|
178
|
-
| `active` | BOOLEAN | Whether this version is active | Yes | Yes |
|
|
179
|
-
| `created_at` | TIMESTAMPTZ | When schema version was created | No | No |
|
|
180
|
-
**Indexes:**
|
|
181
|
-
```sql
|
|
182
|
-
CREATE INDEX idx_schema_active ON schema_registry(entity_type, active) WHERE active = true;
|
|
183
|
-
```
|
|
184
|
-
**Notes:**
|
|
185
|
-
- Schema definitions include field types, validators, and constraints
|
|
186
|
-
- Reducer config defines merge strategies per field (last_write, highest_priority, most_specific, merge_array)
|
|
187
|
-
- Only one active schema version per entity_type at a time
|
|
188
|
-
- See [`docs/subsystems/schema_registry.md`](./schema_registry.md) for details
|
|
189
|
-
- Public schema snapshots are exported to [`docs/subsystems/schema_snapshots/`](./schema_snapshots/) for reference (run `npm run schema:export` to update)
|
|
190
|
-
### 2.10 `raw_fragments` Table
|
|
191
|
-
**Purpose:** Store unknown fields that don't match current schemas. Enables schema discovery and automated promotion. Links to sources and interpretations for full provenance.
|
|
192
|
-
**Schema:**
|
|
193
|
-
```sql
|
|
194
|
-
CREATE TABLE raw_fragments (
|
|
195
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
196
|
-
source_id UUID REFERENCES sources(id),
|
|
197
|
-
interpretation_id UUID REFERENCES interpretations(id),
|
|
198
|
-
entity_type TEXT NOT NULL,
|
|
199
|
-
fragment_key TEXT NOT NULL,
|
|
200
|
-
fragment_value JSONB NOT NULL,
|
|
201
|
-
fragment_envelope JSONB NOT NULL,
|
|
202
|
-
frequency_count INTEGER DEFAULT 1,
|
|
203
|
-
first_seen TIMESTAMPTZ DEFAULT NOW(),
|
|
204
|
-
last_seen TIMESTAMPTZ DEFAULT NOW(),
|
|
205
|
-
user_id UUID NOT NULL,
|
|
206
|
-
created_at TIMESTAMPTZ DEFAULT NOW()
|
|
207
|
-
);
|
|
208
|
-
```
|
|
209
|
-
**Field Definitions:**
|
|
210
|
-
| Field | Type | Purpose | Mutable | Indexed |
|
|
211
|
-
| ----------------------- | ----------- | ------------------------------------------------------ | ------- | ----------- |
|
|
212
|
-
| `id` | UUID | Unique fragment ID | No | Primary key |
|
|
213
|
-
| `source_id` | UUID | Source that produced this fragment | No | Yes |
|
|
214
|
-
| `interpretation_id` | UUID | Interpretation that produced this fragment | No | Yes |
|
|
215
|
-
| `entity_type` | TEXT | Entity type (e.g., "invoice", "transaction", "task") | No | No |
|
|
216
|
-
| `fragment_key` | TEXT | Field name/key | No | Yes |
|
|
217
|
-
| `fragment_value` | JSONB | Field value | No | No |
|
|
218
|
-
| `fragment_envelope` | JSONB | Type metadata (type, confidence, etc.) | No | No |
|
|
219
|
-
| `frequency_count` | INTEGER | How many times this fragment appeared | Yes | Yes |
|
|
220
|
-
| `first_seen` | TIMESTAMPTZ | When fragment first appeared | No | No |
|
|
221
|
-
| `last_seen` | TIMESTAMPTZ | When fragment last appeared | Yes | No |
|
|
222
|
-
| `user_id` | UUID | User who owns this fragment | No | Yes |
|
|
223
|
-
| `created_at` | TIMESTAMPTZ | When this fragment row was recorded | No | No |
|
|
224
|
-
**Indexes:**
|
|
225
|
-
```sql
|
|
226
|
-
CREATE INDEX idx_fragments_source ON raw_fragments(source_id) WHERE source_id IS NOT NULL;
|
|
227
|
-
CREATE INDEX idx_fragments_run ON raw_fragments(interpretation_run) WHERE interpretation_run IS NOT NULL;
|
|
228
|
-
CREATE INDEX idx_fragments_frequency ON raw_fragments(fragment_key, frequency_count DESC);
|
|
229
|
-
CREATE INDEX idx_fragments_user ON raw_fragments(user_id);
|
|
230
|
-
```
|
|
231
|
-
**RLS Policies:**
|
|
232
|
-
```sql
|
|
233
|
-
ALTER TABLE raw_fragments ENABLE ROW LEVEL SECURITY;
|
|
234
|
-
CREATE POLICY "Users read own raw_fragments" ON raw_fragments
|
|
235
|
-
FOR SELECT USING (user_id = auth.uid());
|
|
236
|
-
CREATE POLICY "Service role full access" ON raw_fragments
|
|
237
|
-
FOR ALL TO service_role USING (true) WITH CHECK (true);
|
|
238
|
-
```
|
|
239
|
-
**Notes:**
|
|
240
|
-
- Raw fragments accumulate until patterns emerge
|
|
241
|
-
- Automated schema promotion analyzes fragments to propose schema updates
|
|
242
|
-
- Frequency tracking enables pattern detection
|
|
243
|
-
- `source_id` and `interpretation_id` provide full provenance
|
|
244
|
-
- See [`docs/architecture/schema_expansion.md`](../architecture/schema_expansion.md) for promotion pipeline
|
|
245
|
-
- See [`docs/subsystems/sources.md`](./sources.md) for sources-first architecture
|
|
246
|
-
### 2.11 `sources` Table
|
|
247
|
-
**Purpose:** Store raw content with content-addressed deduplication. Central to the sources-first ingestion architecture.
|
|
248
|
-
**Schema:**
|
|
249
|
-
```sql
|
|
250
|
-
CREATE TABLE sources (
|
|
251
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
252
|
-
content_hash TEXT NOT NULL,
|
|
253
|
-
idempotency_key TEXT,
|
|
254
|
-
storage_url TEXT NOT NULL,
|
|
255
|
-
storage_status TEXT NOT NULL DEFAULT 'uploaded',
|
|
256
|
-
mime_type TEXT NOT NULL,
|
|
257
|
-
file_name TEXT,
|
|
258
|
-
byte_size INTEGER NOT NULL,
|
|
259
|
-
source_type TEXT NOT NULL,
|
|
260
|
-
source_agent_id TEXT,
|
|
261
|
-
source_metadata JSONB DEFAULT '{}',
|
|
262
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
263
|
-
user_id UUID NOT NULL,
|
|
264
|
-
CONSTRAINT unique_content_per_user UNIQUE(content_hash, user_id)
|
|
265
|
-
);
|
|
266
|
-
```
|
|
267
|
-
**Field Definitions:**
|
|
268
|
-
| Field | Type | Purpose | Mutable | Indexed |
|
|
269
|
-
| ----------------- | ----------- | ----------------------------------------------- | ------- | ----------- |
|
|
270
|
-
| `id` | UUID | Unique source ID | No | Primary key |
|
|
271
|
-
| `content_hash` | TEXT | SHA-256 hash of content | No | Yes |
|
|
272
|
-
| `idempotency_key` | TEXT | Client-provided key for ingest idempotency | No | Yes |
|
|
273
|
-
| `storage_url` | TEXT | URL in object storage | No | No |
|
|
274
|
-
| `storage_status` | TEXT | 'uploaded', 'pending', 'failed' | Yes | Yes |
|
|
275
|
-
| `mime_type` | TEXT | MIME type of content | No | No |
|
|
276
|
-
| `file_name` | TEXT | Original filename (optional) | No | No |
|
|
277
|
-
| `byte_size` | INTEGER | Size in bytes | No | No |
|
|
278
|
-
| `source_type` | TEXT | Type: 'file_upload', 'agent_submission', etc. | No | No |
|
|
279
|
-
| `source_agent_id` | TEXT | Agent ID if submitted via MCP | No | No |
|
|
280
|
-
| `source_metadata` | JSONB | Additional metadata | No | No |
|
|
281
|
-
| `created_at` | TIMESTAMPTZ | When source was created | No | Yes |
|
|
282
|
-
| `user_id` | UUID | User who owns this source | No | Yes |
|
|
283
|
-
**Indexes:**
|
|
284
|
-
```sql
|
|
285
|
-
CREATE INDEX idx_sources_hash ON sources(content_hash);
|
|
286
|
-
CREATE INDEX idx_sources_user ON sources(user_id);
|
|
287
|
-
CREATE INDEX idx_sources_created ON sources(created_at DESC);
|
|
288
|
-
CREATE INDEX idx_sources_idempotency_key ON sources(user_id, idempotency_key)
|
|
289
|
-
WHERE idempotency_key IS NOT NULL;
|
|
290
|
-
```
|
|
291
|
-
**RLS Policies:**
|
|
292
|
-
```sql
|
|
293
|
-
ALTER TABLE sources ENABLE ROW LEVEL SECURITY;
|
|
294
|
-
CREATE POLICY "Users read own sources" ON sources
|
|
295
|
-
FOR SELECT USING (user_id = auth.uid());
|
|
296
|
-
CREATE POLICY "Service role full access" ON sources
|
|
297
|
-
FOR ALL TO service_role USING (true) WITH CHECK (true);
|
|
298
|
-
```
|
|
299
|
-
**Notes:**
|
|
300
|
-
- Content-addressed storage: same content = same hash
|
|
301
|
-
- Per-user deduplication via `(content_hash, user_id)` unique constraint
|
|
302
|
-
- Storage path convention: `sources/{user_id}/{content_hash}`
|
|
303
|
-
- See [`docs/subsystems/sources.md`](./sources.md) for complete architecture
|
|
304
|
-
### 2.12 `interpretations` Table
|
|
305
|
-
**Purpose:** Track versioned interpretation attempts. Enables audit trail of how raw content was interpreted and supports reinterpretation without losing history.
|
|
306
|
-
**Schema:**
|
|
307
|
-
```sql
|
|
308
|
-
CREATE TABLE interpretations (
|
|
309
|
-
id TEXT PRIMARY KEY,
|
|
310
|
-
source_id TEXT,
|
|
311
|
-
interpretation_config TEXT,
|
|
312
|
-
status TEXT,
|
|
313
|
-
started_at TEXT,
|
|
314
|
-
completed_at TEXT,
|
|
315
|
-
observations_created INTEGER,
|
|
316
|
-
user_id TEXT,
|
|
317
|
-
created_at TEXT,
|
|
318
|
-
error_message TEXT,
|
|
319
|
-
unknown_fields_count INTEGER
|
|
320
|
-
);
|
|
321
|
-
```
|
|
322
|
-
**Field Definitions:**
|
|
323
|
-
| Field | Type | Purpose | Mutable | Indexed |
|
|
324
|
-
| ------------------------- | ----------- | ----------------------------------------------- | ------- | ----------- |
|
|
325
|
-
| `id` | TEXT | Unique interpretation ID | No | Primary key |
|
|
326
|
-
| `source_id` | TEXT | Source being interpreted | No | Yes |
|
|
327
|
-
| `interpretation_config` | TEXT (JSON) | Config used (model, version, params) | No | No |
|
|
328
|
-
| `status` | TEXT | 'pending', 'running', 'completed', 'failed' | Yes | Yes |
|
|
329
|
-
| `error_message` | TEXT | Error details if failed | Yes | No |
|
|
330
|
-
| `observations_created` | INTEGER | Count of observations created | Yes | No |
|
|
331
|
-
| `unknown_fields_count` | INTEGER | Count of unknown fields routed to raw_fragments | Yes | No |
|
|
332
|
-
| `started_at` | TEXT | When interpretation started (ISO 8601) | Yes | No |
|
|
333
|
-
| `completed_at` | TEXT | When interpretation completed (ISO 8601) | Yes | No |
|
|
334
|
-
| `created_at` | TEXT | When interpretation was created (ISO 8601) | No | No |
|
|
335
|
-
| `user_id` | TEXT | User who owns this interpretation | No | Yes |
|
|
336
|
-
**Indexes:**
|
|
337
|
-
```sql
|
|
338
|
-
CREATE INDEX idx_interpretations_source ON interpretations(source_id);
|
|
339
|
-
CREATE INDEX idx_interpretations_status ON interpretations(status);
|
|
340
|
-
```
|
|
341
|
-
**Notes:**
|
|
342
|
-
- Interpretation is non-deterministic but auditable via `interpretation_config`
|
|
343
|
-
- Reinterpretation creates NEW record; never modifies existing
|
|
344
|
-
- Unknown fields count tracked; actual fields stored in `raw_fragments`
|
|
345
|
-
- Timeout handling via `timeout_at` and `heartbeat_at` columns
|
|
346
|
-
### 2.13 `upload_queue` Table
|
|
347
|
-
**Purpose:** Async retry queue for failed storage uploads. Enables resilient ingestion when object storage is temporarily unavailable.
|
|
348
|
-
**Schema:**
|
|
349
|
-
```sql
|
|
350
|
-
CREATE TABLE upload_queue (
|
|
351
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
352
|
-
source_id UUID NOT NULL REFERENCES sources(id),
|
|
353
|
-
temp_file_path TEXT NOT NULL,
|
|
354
|
-
content_hash TEXT NOT NULL,
|
|
355
|
-
byte_size INTEGER NOT NULL,
|
|
356
|
-
retry_count INTEGER DEFAULT 0,
|
|
357
|
-
max_retries INTEGER DEFAULT 5,
|
|
358
|
-
next_retry_at TIMESTAMPTZ DEFAULT NOW(),
|
|
359
|
-
error_message TEXT,
|
|
360
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
361
|
-
user_id UUID NOT NULL
|
|
362
|
-
);
|
|
363
|
-
```
|
|
364
|
-
**Indexes:**
|
|
365
|
-
```sql
|
|
366
|
-
CREATE INDEX idx_upload_queue_retry ON upload_queue(next_retry_at)
|
|
367
|
-
WHERE retry_count < max_retries;
|
|
368
|
-
CREATE INDEX idx_upload_queue_user ON upload_queue(user_id);
|
|
369
|
-
```
|
|
370
|
-
**Notes:**
|
|
371
|
-
- Background worker processes queue every 5 minutes
|
|
372
|
-
- Exponential backoff: 30s, 60s, 120s, 300s, 600s
|
|
373
|
-
- After max retries, source marked as `storage_status = 'failed'`
|
|
374
|
-
### 2.14 `storage_usage` Table
|
|
375
|
-
**Purpose:** Track per-user storage consumption and interpretation quotas.
|
|
376
|
-
**Schema:**
|
|
377
|
-
```sql
|
|
378
|
-
CREATE TABLE storage_usage (
|
|
379
|
-
user_id UUID PRIMARY KEY,
|
|
380
|
-
total_bytes BIGINT DEFAULT 0,
|
|
381
|
-
total_sources INTEGER DEFAULT 0,
|
|
382
|
-
last_calculated TIMESTAMPTZ DEFAULT NOW(),
|
|
383
|
-
interpretation_count_month INTEGER DEFAULT 0,
|
|
384
|
-
interpretation_limit_month INTEGER DEFAULT 100,
|
|
385
|
-
billing_month TEXT DEFAULT to_char(NOW(), 'YYYY-MM')
|
|
386
|
-
);
|
|
387
|
-
```
|
|
388
|
-
**Functions:**
|
|
389
|
-
```sql
|
|
390
|
-
CREATE OR REPLACE FUNCTION increment_storage_usage(
|
|
391
|
-
p_user_id UUID,
|
|
392
|
-
p_bytes BIGINT
|
|
393
|
-
) RETURNS void AS $$
|
|
394
|
-
BEGIN
|
|
395
|
-
INSERT INTO storage_usage (user_id, total_bytes, total_sources, last_calculated)
|
|
396
|
-
VALUES (p_user_id, p_bytes, 1, NOW())
|
|
397
|
-
ON CONFLICT (user_id) DO UPDATE SET
|
|
398
|
-
total_bytes = storage_usage.total_bytes + p_bytes,
|
|
399
|
-
total_sources = storage_usage.total_sources + 1,
|
|
400
|
-
last_calculated = NOW();
|
|
401
|
-
END;
|
|
402
|
-
$$ LANGUAGE plpgsql;
|
|
403
|
-
CREATE OR REPLACE FUNCTION increment_interpretation_count(
|
|
404
|
-
p_user_id UUID
|
|
405
|
-
) RETURNS void AS $$
|
|
406
|
-
DECLARE
|
|
407
|
-
current_billing_month TEXT := to_char(NOW(), 'YYYY-MM');
|
|
408
|
-
BEGIN
|
|
409
|
-
INSERT INTO storage_usage (user_id, interpretation_count_month, billing_month)
|
|
410
|
-
VALUES (p_user_id, 1, current_billing_month)
|
|
411
|
-
ON CONFLICT (user_id) DO UPDATE SET
|
|
412
|
-
interpretation_count_month = CASE
|
|
413
|
-
WHEN storage_usage.billing_month = current_billing_month
|
|
414
|
-
THEN storage_usage.interpretation_count_month + 1
|
|
415
|
-
ELSE 1
|
|
416
|
-
END,
|
|
417
|
-
billing_month = current_billing_month;
|
|
418
|
-
END;
|
|
419
|
-
$$ LANGUAGE plpgsql;
|
|
420
|
-
```
|
|
421
|
-
**Notes:**
|
|
422
|
-
- Interpretation quota resets monthly
|
|
423
|
-
- Default limit: 100/month (free tier)
|
|
424
|
-
### 2.15 `entity_merges` Table
|
|
425
|
-
**Purpose:** Audit log for entity merge operations. Tracks when duplicate entities are merged.
|
|
426
|
-
**Schema:**
|
|
427
|
-
```sql
|
|
428
|
-
CREATE TABLE entity_merges (
|
|
429
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
430
|
-
user_id UUID NOT NULL,
|
|
431
|
-
from_entity_id TEXT NOT NULL REFERENCES entities(id),
|
|
432
|
-
to_entity_id TEXT NOT NULL REFERENCES entities(id),
|
|
433
|
-
reason TEXT,
|
|
434
|
-
merged_by TEXT NOT NULL,
|
|
435
|
-
observations_rewritten INTEGER NOT NULL DEFAULT 0,
|
|
436
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
437
|
-
CONSTRAINT entity_merges_no_self_merge CHECK (from_entity_id <> to_entity_id)
|
|
438
|
-
);
|
|
439
|
-
```
|
|
440
|
-
**Indexes:**
|
|
441
|
-
```sql
|
|
442
|
-
CREATE UNIQUE INDEX idx_entity_merges_from_unique ON entity_merges(user_id, from_entity_id);
|
|
443
|
-
CREATE INDEX idx_entity_merges_user ON entity_merges(user_id);
|
|
444
|
-
CREATE INDEX idx_entity_merges_to ON entity_merges(user_id, to_entity_id);
|
|
445
|
-
```
|
|
446
|
-
**RLS Policies:**
|
|
447
|
-
```sql
|
|
448
|
-
ALTER TABLE entity_merges ENABLE ROW LEVEL SECURITY;
|
|
449
|
-
CREATE POLICY "Users read own entity_merges" ON entity_merges
|
|
450
|
-
FOR SELECT USING (user_id = auth.uid());
|
|
451
|
-
CREATE POLICY "Service role full access" ON entity_merges
|
|
452
|
-
FOR ALL TO service_role USING (true) WITH CHECK (true);
|
|
453
|
-
```
|
|
454
|
-
**Notes:**
|
|
455
|
-
- `from_entity_id` and `to_entity_id` are TEXT (matching `entities.id` type)
|
|
456
|
-
- Unique constraint on `(user_id, from_entity_id)` prevents merge chains
|
|
457
|
-
- Merge rewrites observations, not the original entity record
|
|
458
|
-
- See [`docs/subsystems/entity_merge.md`](./entity_merge.md) for merge semantics
|
|
459
|
-
### 2.16 `relationship_observations` Table
|
|
460
|
-
**Purpose:** Store observations about relationships from multiple sources. Enables deterministic merging and provenance tracking for relationships.
|
|
461
|
-
|
|
462
|
-
**Schema:**
|
|
463
|
-
```sql
|
|
464
|
-
CREATE TABLE relationship_observations (
|
|
465
|
-
id UUID PRIMARY KEY,
|
|
466
|
-
relationship_key TEXT NOT NULL,
|
|
467
|
-
relationship_type TEXT NOT NULL,
|
|
468
|
-
source_entity_id TEXT NOT NULL,
|
|
469
|
-
target_entity_id TEXT NOT NULL,
|
|
470
|
-
source_id UUID REFERENCES sources(id),
|
|
471
|
-
interpretation_id UUID REFERENCES interpretations(id),
|
|
472
|
-
observed_at TIMESTAMPTZ NOT NULL,
|
|
473
|
-
specificity_score NUMERIC(3,2),
|
|
474
|
-
source_priority INTEGER NOT NULL DEFAULT 0,
|
|
475
|
-
metadata JSONB NOT NULL DEFAULT '{}',
|
|
476
|
-
canonical_hash TEXT NOT NULL,
|
|
477
|
-
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
478
|
-
user_id UUID NOT NULL,
|
|
479
|
-
UNIQUE(source_id, interpretation_id, relationship_key, canonical_hash, user_id)
|
|
480
|
-
);
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
**Field Definitions:**
|
|
484
|
-
|
|
485
|
-
| Field | Type | Purpose | Mutable | Indexed |
|
|
486
|
-
| --------------------- | ----------- | ------------------------------------------------------------- | ------- | ----------- |
|
|
487
|
-
| `id` | UUID | Deterministic observation ID (hash-based) | No | Primary key |
|
|
488
|
-
| `relationship_key` | TEXT | Composite key: `{type}:{source_entity_id}:{target_entity_id}` | No | Yes |
|
|
489
|
-
| `relationship_type` | TEXT | Relationship type (PART_OF, CORRECTS, REFERS_TO, etc.) | No | Yes |
|
|
490
|
-
| `source_entity_id` | TEXT | Source entity ID | No | Yes |
|
|
491
|
-
| `target_entity_id` | TEXT | Target entity ID | No | Yes |
|
|
492
|
-
| `source_id` | UUID | Source that created this observation | No | Yes |
|
|
493
|
-
| `interpretation_id` | UUID | Interpretation run that created this observation (nullable) | No | Yes |
|
|
494
|
-
| `observed_at` | TIMESTAMPTZ | When observation was made | No | Yes |
|
|
495
|
-
| `specificity_score` | NUMERIC | How specific this observation is (0-1) | No | No |
|
|
496
|
-
| `source_priority` | INTEGER | Priority of source (higher = more trusted) | No | No |
|
|
497
|
-
| `metadata` | JSONB | Relationship metadata fields | No | No |
|
|
498
|
-
| `canonical_hash` | TEXT | Hash of canonicalized metadata for idempotence | No | No |
|
|
499
|
-
| `created_at` | TIMESTAMPTZ | When observation was created | No | No |
|
|
500
|
-
| `user_id` | UUID | User who owns this observation | No | Yes |
|
|
501
|
-
|
|
502
|
-
**Indexes:**
|
|
503
|
-
```sql
|
|
504
|
-
CREATE INDEX idx_relationship_observations_key ON relationship_observations(relationship_key);
|
|
505
|
-
CREATE INDEX idx_relationship_observations_type ON relationship_observations(relationship_type);
|
|
506
|
-
CREATE INDEX idx_relationship_observations_source_entity ON relationship_observations(source_entity_id);
|
|
507
|
-
CREATE INDEX idx_relationship_observations_target_entity ON relationship_observations(target_entity_id);
|
|
508
|
-
CREATE INDEX idx_relationship_observations_source ON relationship_observations(source_id);
|
|
509
|
-
CREATE INDEX idx_relationship_observations_interpretation ON relationship_observations(interpretation_id);
|
|
510
|
-
CREATE INDEX idx_relationship_observations_user ON relationship_observations(user_id);
|
|
511
|
-
```
|
|
512
|
-
|
|
513
|
-
**Notes:**
|
|
514
|
-
- Multiple sources can create observations about the same relationship
|
|
515
|
-
- Observations are immutable; corrections create new observations with higher priority
|
|
516
|
-
- Unique constraint prevents duplicate observations from same source
|
|
517
|
-
- See [`docs/subsystems/relationships.md`](./relationships.md) for observation patterns
|
|
518
|
-
|
|
519
|
-
### 2.18 `relationship_snapshots` Table
|
|
520
|
-
**Purpose:** Store computed snapshots of relationships, representing current truth merged from observations.
|
|
521
|
-
|
|
522
|
-
**Schema:**
|
|
523
|
-
```sql
|
|
524
|
-
CREATE TABLE relationship_snapshots (
|
|
525
|
-
relationship_key TEXT PRIMARY KEY,
|
|
526
|
-
relationship_type TEXT NOT NULL,
|
|
527
|
-
source_entity_id TEXT NOT NULL,
|
|
528
|
-
target_entity_id TEXT NOT NULL,
|
|
529
|
-
schema_version TEXT NOT NULL DEFAULT '1.0',
|
|
530
|
-
snapshot JSONB NOT NULL DEFAULT '{}',
|
|
531
|
-
computed_at TIMESTAMPTZ NOT NULL,
|
|
532
|
-
observation_count INTEGER NOT NULL DEFAULT 0,
|
|
533
|
-
last_observation_at TIMESTAMPTZ NOT NULL,
|
|
534
|
-
provenance JSONB NOT NULL DEFAULT '{}',
|
|
535
|
-
user_id UUID NOT NULL
|
|
536
|
-
);
|
|
537
|
-
```
|
|
538
|
-
|
|
539
|
-
**Field Definitions:**
|
|
540
|
-
|
|
541
|
-
| Field | Type | Purpose | Mutable | Indexed |
|
|
542
|
-
| --------------------- | ----------- | ---------------------------------------------------------- | ------- | ----------- |
|
|
543
|
-
| `relationship_key` | TEXT | Composite primary key | No | Primary key |
|
|
544
|
-
| `relationship_type` | TEXT | Relationship type | No | Yes |
|
|
545
|
-
| `source_entity_id` | TEXT | Source entity ID | No | Yes |
|
|
546
|
-
| `target_entity_id` | TEXT | Target entity ID | No | Yes |
|
|
547
|
-
| `schema_version` | TEXT | Schema version used for snapshot computation | No | No |
|
|
548
|
-
| `snapshot` | JSONB | Current truth (merged metadata), computed by reducer | Yes | Yes (GIN) |
|
|
549
|
-
| `computed_at` | TIMESTAMPTZ | When snapshot was computed | Yes | No |
|
|
550
|
-
| `observation_count` | INTEGER | Number of observations merged | Yes | No |
|
|
551
|
-
| `last_observation_at` | TIMESTAMPTZ | Timestamp of most recent observation | Yes | No |
|
|
552
|
-
| `provenance` | JSONB | Maps metadata field → observation_id for traceability | Yes | No |
|
|
553
|
-
| `user_id` | UUID | User who owns this relationship | No | Yes |
|
|
554
|
-
|
|
555
|
-
**Indexes:**
|
|
556
|
-
```sql
|
|
557
|
-
CREATE INDEX idx_relationship_snapshots_type ON relationship_snapshots(relationship_type);
|
|
558
|
-
CREATE INDEX idx_relationship_snapshots_source_entity ON relationship_snapshots(source_entity_id);
|
|
559
|
-
CREATE INDEX idx_relationship_snapshots_target_entity ON relationship_snapshots(target_entity_id);
|
|
560
|
-
CREATE INDEX idx_relationship_snapshots_user ON relationship_snapshots(user_id);
|
|
561
|
-
CREATE INDEX idx_relationship_snapshots_snapshot ON relationship_snapshots USING GIN(snapshot);
|
|
562
|
-
```
|
|
563
|
-
|
|
564
|
-
**Notes:**
|
|
565
|
-
- Snapshots are recomputed when new relationship observations arrive
|
|
566
|
-
- Provenance enables full traceability: metadata field → observation → source
|
|
567
|
-
- Reducers are deterministic: same observations + merge rules → same snapshot
|
|
568
|
-
- See [`docs/subsystems/reducer.md`](./reducer.md) for reducer patterns
|
|
569
|
-
|
|
570
|
-
## 3. JSONB `fields` Schema (Observations)
|
|
571
|
-
### 3.1 Overview
|
|
572
|
-
The `fields` JSONB field in `observations` stores [entity schema](#entity-schema)-specific [extracted](#extraction) fields. Each [entity type](#entity-type) (e.g., `invoice`) has a well-defined `fields` structure based on its [entity schema](#entity-schema).
|
|
573
|
-
|
|
574
|
-
**Design Principles:**
|
|
575
|
-
- **[Entity schema](#entity-schema)-driven:** Structure defined by [entity type](#entity-type) and [entity schema](#entity-schema)
|
|
576
|
-
- **Flat where possible:** Avoid deep nesting
|
|
577
|
-
- **Null-safe:** Missing keys = absent data (not errors)
|
|
578
|
-
- **Versioned:** Include `schema_version` if structure evolves
|
|
579
|
-
### 3.2 Example: FinancialRecord
|
|
580
|
-
```json
|
|
581
|
-
{
|
|
582
|
-
"schema_version": "1.0",
|
|
583
|
-
"document_type": "invoice",
|
|
584
|
-
"invoice_number": "INV-2024-001",
|
|
585
|
-
"amount": 1500.0,
|
|
586
|
-
"currency": "USD",
|
|
587
|
-
"date_issued": "2024-01-15T00:00:00Z",
|
|
588
|
-
"date_due": "2024-02-15T00:00:00Z",
|
|
589
|
-
"vendor_name": "Acme Corp",
|
|
590
|
-
"vendor_address": "123 Main St, City, State, 12345",
|
|
591
|
-
"line_items": [
|
|
592
|
-
{
|
|
593
|
-
"description": "Consulting services",
|
|
594
|
-
"quantity": 10,
|
|
595
|
-
"unit_price": 150.0,
|
|
596
|
-
"total": 1500.0
|
|
597
|
-
}
|
|
598
|
-
],
|
|
599
|
-
"payment_status": "unpaid",
|
|
600
|
-
"notes": "Net 30 terms"
|
|
601
|
-
}
|
|
602
|
-
```
|
|
603
|
-
**Key Paths (for indexing and queries):**
|
|
604
|
-
- `properties->>'invoice_number'`
|
|
605
|
-
- `properties->>'amount'`
|
|
606
|
-
- `properties->>'date_issued'`
|
|
607
|
-
- `properties->>'vendor_name'`
|
|
608
|
-
### 3.3 Example: IdentityDocument
|
|
609
|
-
```json
|
|
610
|
-
{
|
|
611
|
-
"schema_version": "1.0",
|
|
612
|
-
"document_type": "passport",
|
|
613
|
-
"full_name": "John Doe",
|
|
614
|
-
"passport_number": "P12345678",
|
|
615
|
-
"nationality": "US",
|
|
616
|
-
"date_of_birth": "1990-01-15",
|
|
617
|
-
"date_issued": "2020-01-01",
|
|
618
|
-
"date_expiry": "2030-01-01",
|
|
619
|
-
"issuing_authority": "U.S. Department of State",
|
|
620
|
-
"place_of_birth": "New York, NY"
|
|
621
|
-
}
|
|
622
|
-
```
|
|
623
|
-
**Key Paths:**
|
|
624
|
-
- `properties->>'passport_number'`
|
|
625
|
-
- `properties->>'date_expiry'`
|
|
626
|
-
- `properties->>'full_name'`
|
|
627
|
-
### 3.4 Example: TravelDocument
|
|
628
|
-
```json
|
|
629
|
-
{
|
|
630
|
-
"schema_version": "1.0",
|
|
631
|
-
"document_type": "flight_itinerary",
|
|
632
|
-
"booking_reference": "ABC123",
|
|
633
|
-
"passenger_name": "John Doe",
|
|
634
|
-
"departure_airport": "SFO",
|
|
635
|
-
"arrival_airport": "JFK",
|
|
636
|
-
"departure_datetime": "2024-03-15T08:00:00Z",
|
|
637
|
-
"arrival_datetime": "2024-03-15T16:30:00Z",
|
|
638
|
-
"airline": "United Airlines",
|
|
639
|
-
"flight_number": "UA1234",
|
|
640
|
-
"seat": "12A",
|
|
641
|
-
"fare": 450.0,
|
|
642
|
-
"currency": "USD"
|
|
643
|
-
}
|
|
644
|
-
```
|
|
645
|
-
**Key Paths:**
|
|
646
|
-
- `properties->>'departure_datetime'`
|
|
647
|
-
- `properties->>'arrival_datetime'`
|
|
648
|
-
- `properties->>'booking_reference'`
|
|
649
|
-
### 3.5 Example: Contract
|
|
650
|
-
```json
|
|
651
|
-
{
|
|
652
|
-
"schema_version": "1.0",
|
|
653
|
-
"document_type": "contract",
|
|
654
|
-
"contract_type": "service_agreement",
|
|
655
|
-
"contract_number": "CNT-2024-001",
|
|
656
|
-
"parties": [
|
|
657
|
-
{
|
|
658
|
-
"name": "Acme Corp",
|
|
659
|
-
"role": "client"
|
|
660
|
-
},
|
|
661
|
-
{
|
|
662
|
-
"name": "Service Provider Inc",
|
|
663
|
-
"role": "vendor"
|
|
664
|
-
}
|
|
665
|
-
],
|
|
666
|
-
"effective_date": "2024-01-15T00:00:00Z",
|
|
667
|
-
"expiration_date": "2025-01-15T00:00:00Z",
|
|
668
|
-
"total_value": 50000.0,
|
|
669
|
-
"currency": "USD",
|
|
670
|
-
"key_terms": ["Net 30 payment", "Termination with 30 days notice"],
|
|
671
|
-
"status": "active"
|
|
672
|
-
}
|
|
673
|
-
```
|
|
674
|
-
**Key Paths:**
|
|
675
|
-
- `properties->>'contract_number'`
|
|
676
|
-
- `properties->>'effective_date'`
|
|
677
|
-
- `properties->>'expiration_date'`
|
|
678
|
-
- `properties->'parties'->0->>'name'`
|
|
679
|
-
**Tier 1 ICP Use Cases:**
|
|
680
|
-
- Knowledge workers: Legal research, due diligence, contract analysis
|
|
681
|
-
- Founders: Company contracts, vendor agreements, investor agreements
|
|
682
|
-
### 3.6 Example: Message (Email/Chat)
|
|
683
|
-
```json
|
|
684
|
-
{
|
|
685
|
-
"schema_version": "1.0",
|
|
686
|
-
"document_type": "email",
|
|
687
|
-
"thread_id": "thread_abc123",
|
|
688
|
-
"message_id": "msg_xyz789",
|
|
689
|
-
"subject": "Project Update Q1 2024",
|
|
690
|
-
"sender": "john@example.com",
|
|
691
|
-
"sender_name": "John Doe",
|
|
692
|
-
"recipients": ["team@example.com"],
|
|
693
|
-
"cc": [],
|
|
694
|
-
"bcc": [],
|
|
695
|
-
"sent_at": "2024-03-15T10:30:00Z",
|
|
696
|
-
"body": "Here's the Q1 update...",
|
|
697
|
-
"attachments": ["report.pdf"],
|
|
698
|
-
"labels": ["work", "project-update"]
|
|
699
|
-
}
|
|
700
|
-
```
|
|
701
|
-
**Key Paths:**
|
|
702
|
-
- `properties->>'sender'`
|
|
703
|
-
- `properties->>'sent_at'`
|
|
704
|
-
- `properties->>'subject'`
|
|
705
|
-
- `properties->>'thread_id'`
|
|
706
|
-
**Tier 1 ICP Use Cases:**
|
|
707
|
-
- Knowledge workers: Client communications, project tracking
|
|
708
|
-
- Founders: Team communications, investor updates
|
|
709
|
-
- AI-Native Operators: Email attachment import via Gmail integration
|
|
710
|
-
### 3.7 Example: Document (Generic Knowledge Asset)
|
|
711
|
-
```json
|
|
712
|
-
{
|
|
713
|
-
"schema_version": "1.0",
|
|
714
|
-
"document_type": "research_paper",
|
|
715
|
-
"title": "Market Analysis Q1 2024",
|
|
716
|
-
"author": "Research Team",
|
|
717
|
-
"published_date": "2024-03-01T00:00:00Z",
|
|
718
|
-
"summary": "Analysis of market trends...",
|
|
719
|
-
"tags": ["market-research", "q1-2024"],
|
|
720
|
-
"source": "internal",
|
|
721
|
-
"page_count": 25,
|
|
722
|
-
"language": "en"
|
|
723
|
-
}
|
|
724
|
-
```
|
|
725
|
-
**Key Paths:**
|
|
726
|
-
- `properties->>'title'`
|
|
727
|
-
- `properties->>'published_date'`
|
|
728
|
-
- `properties->>'tags'`
|
|
729
|
-
- `properties->>'source'`
|
|
730
|
-
**Tier 1 ICP Use Cases:**
|
|
731
|
-
- Knowledge workers: Research papers, project documentation, client deliverables
|
|
732
|
-
- Founders: Product documentation, user research, competitive analysis
|
|
733
|
-
- AI-Native Operators: Research synthesis, knowledge assets
|
|
734
|
-
### 3.8 Example: Note
|
|
735
|
-
```json
|
|
736
|
-
{
|
|
737
|
-
"schema_version": "1.0",
|
|
738
|
-
"document_type": "note",
|
|
739
|
-
"title": "Meeting Notes - Product Planning",
|
|
740
|
-
"content": "Discussed feature X...",
|
|
741
|
-
"tags": ["meeting", "product"],
|
|
742
|
-
"created_at": "2024-03-15T14:00:00Z",
|
|
743
|
-
"source": "manual_entry"
|
|
744
|
-
}
|
|
745
|
-
```
|
|
746
|
-
**Key Paths:**
|
|
747
|
-
- `properties->>'title'`
|
|
748
|
-
- `properties->>'created_at'`
|
|
749
|
-
- `properties->>'tags'`
|
|
750
|
-
**Tier 1 ICP Use Cases:**
|
|
751
|
-
- All Tier 1 ICPs: Free-form notes, meeting notes, markdown files, journals
|
|
752
|
-
### 3.9 Generic Fallback: Document
|
|
753
|
-
For unrecognized document types:
|
|
754
|
-
```json
|
|
755
|
-
{
|
|
756
|
-
"schema_version": "1.0",
|
|
757
|
-
"document_type": "pdf",
|
|
758
|
-
"filename": "document.pdf",
|
|
759
|
-
"page_count": 5,
|
|
760
|
-
"extracted_text": "...",
|
|
761
|
-
"language": "en"
|
|
762
|
-
}
|
|
763
|
-
```
|
|
764
|
-
### 3.10 Querying JSONB Fields (Observations)
|
|
765
|
-
**Example Queries:**
|
|
766
|
-
**Find all invoices over $1000:**
|
|
767
|
-
```sql
|
|
768
|
-
SELECT * FROM observations
|
|
769
|
-
WHERE entity_type = 'invoice'
|
|
770
|
-
AND (fields->>'amount')::numeric > 1000;
|
|
771
|
-
```
|
|
772
|
-
**Find passports expiring soon:**
|
|
773
|
-
```sql
|
|
774
|
-
SELECT * FROM observations
|
|
775
|
-
WHERE entity_type = 'passport'
|
|
776
|
-
AND (fields->>'date_expiry')::date < NOW() + INTERVAL '6 months';
|
|
777
|
-
```
|
|
778
|
-
**Find flights departing next week:**
|
|
779
|
-
```sql
|
|
780
|
-
SELECT * FROM observations
|
|
781
|
-
WHERE entity_type = 'flight'
|
|
782
|
-
AND (fields->>'departure_datetime')::timestamptz BETWEEN NOW() AND NOW() + INTERVAL '7 days';
|
|
783
|
-
```
|
|
784
|
-
|
|
785
|
-
### 3.11 [Extraction](#extraction) Metadata Structure
|
|
786
|
-
Unknown fields and validation warnings are stored in the `raw_fragments` table. This is part of the **three-layer storage model** that preserves all [extracted](#extraction) data while maintaining [entity schema](#entity-schema) compliance in observation `fields`.
|
|
787
|
-
|
|
788
|
-
**Three-Layer Storage Model:**
|
|
789
|
-
- `raw_text`: Immutable original [extracted](#extraction) text ([stored](#storing) with [source](#source))
|
|
790
|
-
- `fields`: [Entity schema](#entity-schema)-compliant fields only (deterministic, queryable) in [observations](#observation)
|
|
791
|
-
- `raw_fragments`: Unknown fields, warnings, quality indicators (preservation layer)
|
|
792
|
-
|
|
793
|
-
**Purpose:**
|
|
794
|
-
- Preserve all extracted data (zero data loss)
|
|
795
|
-
- Maintain schema compliance in `fields` for deterministic queries
|
|
796
|
-
- Provide extraction quality metrics for debugging and schema evolution
|
|
797
|
-
- Enable future automatic schema expansion based on patterns in `unknown_fields`
|
|
798
|
-
**Structure:**
|
|
799
|
-
```typescript
|
|
800
|
-
interface ExtractionMetadata {
|
|
801
|
-
unknown_fields?: Record<string, unknown>;
|
|
802
|
-
warnings?: Array<{
|
|
803
|
-
type: "missing_required" | "unknown_field" | "validation_error";
|
|
804
|
-
field?: string;
|
|
805
|
-
message: string;
|
|
806
|
-
value?: unknown;
|
|
807
|
-
}>;
|
|
808
|
-
extraction_quality: {
|
|
809
|
-
fields_extracted_count: number;
|
|
810
|
-
fields_filtered_count: number;
|
|
811
|
-
matched_patterns?: string[];
|
|
812
|
-
confidence_score?: number;
|
|
813
|
-
};
|
|
814
|
-
}
|
|
815
|
-
```
|
|
816
|
-
**Example:**
|
|
817
|
-
```json
|
|
818
|
-
{
|
|
819
|
-
"unknown_fields": {
|
|
820
|
-
"purchase_order": "PO-789",
|
|
821
|
-
"internal_cost_center": "CC-456"
|
|
822
|
-
},
|
|
823
|
-
"warnings": [
|
|
824
|
-
{
|
|
825
|
-
"type": "unknown_field",
|
|
826
|
-
"field": "purchase_order",
|
|
827
|
-
"message": "Field 'purchase_order' not defined for type 'invoice' - preserved in extraction_metadata"
|
|
828
|
-
},
|
|
829
|
-
{
|
|
830
|
-
"type": "missing_required",
|
|
831
|
-
"field": "date_due",
|
|
832
|
-
"message": "Required field 'date_due' missing for type 'invoice'"
|
|
833
|
-
}
|
|
834
|
-
],
|
|
835
|
-
"extraction_quality": {
|
|
836
|
-
"fields_extracted_count": 7,
|
|
837
|
-
"fields_filtered_count": 2,
|
|
838
|
-
"matched_patterns": ["invoice_number_pattern", "amount_due_pattern"]
|
|
839
|
-
}
|
|
840
|
-
}
|
|
841
|
-
```
|
|
842
|
-
**Key Paths (for indexing and queries):**
|
|
843
|
-
- `fragment_key` — Unknown field name
|
|
844
|
-
- `fragment_value` — Unknown field value
|
|
845
|
-
- `fragment_envelope->'reason'` — Classification for raw fragment
|
|
846
|
-
**Usage Patterns:**
|
|
847
|
-
**Find [observations](#observation) with [extraction](#extraction) warnings:**
|
|
848
|
-
```sql
|
|
849
|
-
SELECT * FROM raw_fragments
|
|
850
|
-
WHERE fragment_type = 'unknown_field';
|
|
851
|
-
```
|
|
852
|
-
**Access unknown fields when needed:**
|
|
853
|
-
```sql
|
|
854
|
-
SELECT
|
|
855
|
-
id,
|
|
856
|
-
fragment_key,
|
|
857
|
-
fragment_value,
|
|
858
|
-
source_id
|
|
859
|
-
FROM raw_fragments
|
|
860
|
-
WHERE fragment_type = 'unknown_field';
|
|
861
|
-
```
|
|
862
|
-
**Find [observations](#observation) with high field filtering (potential [entity schema](#entity-schema) expansion candidates):**
|
|
863
|
-
```sql
|
|
864
|
-
SELECT
|
|
865
|
-
fragment_key,
|
|
866
|
-
COUNT(*) as frequency_count
|
|
867
|
-
FROM raw_fragments
|
|
868
|
-
WHERE fragment_type = 'unknown_field'
|
|
869
|
-
GROUP BY fragment_key
|
|
870
|
-
HAVING COUNT(*) > 3;
|
|
871
|
-
```
|
|
872
|
-
|
|
873
|
-
**Indexes:**
|
|
874
|
-
```sql
|
|
875
|
-
-- Index for querying raw_fragments (unknown fields)
|
|
876
|
-
CREATE INDEX idx_raw_fragments_frequency
|
|
877
|
-
ON raw_fragments(fragment_key, frequency_count DESC);
|
|
878
|
-
-- Index for unknown fields analysis by source
|
|
879
|
-
CREATE INDEX idx_raw_fragments_source
|
|
880
|
-
ON raw_fragments(source_id) WHERE fragment_type = 'unknown_field';
|
|
881
|
-
```
|
|
882
|
-
|
|
883
|
-
**Related Documentation:**
|
|
884
|
-
- Layered storage model: `docs/architecture/schema_handling.md`
|
|
885
|
-
- Field validation patterns: See [entity schema](#entity-schema) definitions in `docs/subsystems/schema_registry.md`
|
|
886
|
-
- Automatic schema expansion: `docs/architecture/schema_expansion.md` (post-MVP)
|
|
887
|
-
## 4. Entity and Event Schema
|
|
888
|
-
### 4.1 `entities` Table
|
|
889
|
-
**Purpose:** Store canonical entities (people, companies, locations) with deterministic IDs, including user isolation and merge tracking.
|
|
890
|
-
```sql
|
|
891
|
-
CREATE TABLE entities (
|
|
892
|
-
id TEXT PRIMARY KEY, -- Deterministic hash-based ID
|
|
893
|
-
entity_type TEXT NOT NULL, -- 'person', 'company', 'location'
|
|
894
|
-
canonical_name TEXT NOT NULL, -- Normalized name
|
|
895
|
-
aliases JSONB DEFAULT '[]', -- Array of alternate names
|
|
896
|
-
metadata JSONB DEFAULT '{}',
|
|
897
|
-
first_seen_at TIMESTAMP WITH TIME ZONE,
|
|
898
|
-
last_seen_at TIMESTAMP WITH TIME ZONE,
|
|
899
|
-
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
900
|
-
user_id UUID NOT NULL,
|
|
901
|
-
merged_to_entity_id TEXT REFERENCES entities(id),
|
|
902
|
-
merged_at TIMESTAMPTZ
|
|
903
|
-
);
|
|
904
|
-
```
|
|
905
|
-
**Extensions:**
|
|
906
|
-
| Field | Type | Purpose |
|
|
907
|
-
| --------------------- | ----------- | ----------------------------------------------- |
|
|
908
|
-
| `user_id` | UUID | User who owns this entity (user isolation) |
|
|
909
|
-
| `merged_to_entity_id` | TEXT | Target entity if this entity was merged |
|
|
910
|
-
| `merged_at` | TIMESTAMPTZ | Timestamp when merge occurred |
|
|
911
|
-
**Indexes:**
|
|
912
|
-
```sql
|
|
913
|
-
CREATE INDEX idx_entities_user ON entities(user_id);
|
|
914
|
-
CREATE INDEX idx_entities_user_type ON entities(user_id, entity_type);
|
|
915
|
-
CREATE INDEX idx_entities_user_type_name ON entities(user_id, entity_type, canonical_name);
|
|
916
|
-
CREATE INDEX idx_entities_merged ON entities(user_id, merged_to_entity_id)
|
|
917
|
-
WHERE merged_to_entity_id IS NOT NULL;
|
|
918
|
-
```
|
|
919
|
-
**RLS Policies:**
|
|
920
|
-
```sql
|
|
921
|
-
ALTER TABLE entities ENABLE ROW LEVEL SECURITY;
|
|
922
|
-
CREATE POLICY "Users read own entities" ON entities
|
|
923
|
-
FOR SELECT USING (user_id = auth.uid());
|
|
924
|
-
CREATE POLICY "Service role full access - entities" ON entities
|
|
925
|
-
FOR ALL TO service_role USING (true) WITH CHECK (true);
|
|
926
|
-
```
|
|
927
|
-
**Merge Semantics:**
|
|
928
|
-
- Merged entities have `merged_to_entity_id` set to target entity
|
|
929
|
-
- Default queries should exclude merged entities: `WHERE merged_to_entity_id IS NULL`
|
|
930
|
-
- See [`docs/subsystems/entity_merge.md`](./entity_merge.md) for complete merge behavior
|
|
931
|
-
### 4.2 `timeline_events` Table
|
|
932
|
-
```sql
|
|
933
|
-
CREATE TABLE timeline_events (
|
|
934
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
935
|
-
event_type TEXT NOT NULL, -- 'InvoiceIssued', 'FlightBooked'
|
|
936
|
-
event_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
|
|
937
|
-
source_id UUID REFERENCES sources(id),
|
|
938
|
-
source_field TEXT, -- Field that generated event
|
|
939
|
-
entity_ids JSONB DEFAULT '[]', -- Array of entity IDs
|
|
940
|
-
metadata JSONB DEFAULT '{}',
|
|
941
|
-
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
942
|
-
user_id UUID NOT NULL
|
|
943
|
-
);
|
|
944
|
-
```
|
|
945
|
-
**Graph Edges:**
|
|
946
|
-
- `source → entity`: Which entities are mentioned in a source
|
|
947
|
-
- `source → event`: Which events are derived from a source
|
|
948
|
-
- `event → entity`: Which entities are involved in an event
|
|
949
|
-
## 5. Row-Level Security (RLS)
|
|
950
|
-
### 5.1 RLS Architecture
|
|
951
|
-
All user-owned tables have RLS enabled with user isolation. The security model is:
|
|
952
|
-
- **Client keys** (`anon`, `authenticated`): SELECT-only access via RLS
|
|
953
|
-
- **Service role**: Full access for all mutations (MCP server uses service_role)
|
|
954
|
-
- **User identity**: Enforced at MCP layer and stamped into rows
|
|
955
|
-
### 5.2 User-Isolated Tables
|
|
956
|
-
The following tables are user-scoped with RLS policies:
|
|
957
|
-
| Table | User Column | RLS Policy |
|
|
958
|
-
|-------|-------------|------------|
|
|
959
|
-
| `sources` | `user_id` | SELECT for own data |
|
|
960
|
-
| `interpretations` | `user_id` | SELECT for own data |
|
|
961
|
-
| `observations` | `user_id` | SELECT for own data |
|
|
962
|
-
| `entity_snapshots` | `user_id` | SELECT for own data |
|
|
963
|
-
| `entities` | `user_id` | SELECT for own data |
|
|
964
|
-
| `raw_fragments` | `user_id` | SELECT for own data |
|
|
965
|
-
| `entity_merges` | `user_id` | SELECT for own data |
|
|
966
|
-
**Standard RLS Policy Pattern:**
|
|
967
|
-
```sql
|
|
968
|
-
ALTER TABLE <table_name> ENABLE ROW LEVEL SECURITY;
|
|
969
|
-
-- Users can only read their own data
|
|
970
|
-
CREATE POLICY "Users read own <table_name>" ON <table_name>
|
|
971
|
-
FOR SELECT USING (user_id = auth.uid());
|
|
972
|
-
-- Service role has full access for mutations
|
|
973
|
-
CREATE POLICY "Service role full access" ON <table_name>
|
|
974
|
-
FOR ALL TO service_role USING (true) WITH CHECK (true);
|
|
975
|
-
```
|
|
976
|
-
### 5.3 Entity Snapshots RLS
|
|
977
|
-
```sql
|
|
978
|
-
ALTER TABLE entity_snapshots ENABLE ROW LEVEL SECURITY;
|
|
979
|
-
CREATE POLICY "Users read own snapshots" ON entity_snapshots
|
|
980
|
-
FOR SELECT USING (user_id = auth.uid());
|
|
981
|
-
CREATE POLICY "Service role full access" ON entity_snapshots
|
|
982
|
-
FOR ALL TO service_role USING (true) WITH CHECK (true);
|
|
983
|
-
```
|
|
984
|
-
### 5.5 Security Invariants
|
|
985
|
-
1. **No client writes**: All INSERT/UPDATE/DELETE via MCP server using `service_role` key
|
|
986
|
-
2. **User stamping**: `user_id` explicitly set by MCP server from authenticated context
|
|
987
|
-
3. **Storage URLs**: Opaque, never exposed to clients; all reads via MCP server + ownership check
|
|
988
|
-
4. **Cross-user prevention**: All operations validate `user_id` match; merge cannot cross users
|
|
989
|
-
## 6. Schema Migration Protocol
|
|
990
|
-
### 6.1 Migration File Structure
|
|
991
|
-
**Location:** `migrations/`
|
|
992
|
-
**Naming:** `YYYYMMDDHHMMSS_description.sql`
|
|
993
|
-
**Example:** `20240115103000_add_file_name_to_sources.sql`
|
|
994
|
-
**Template:**
|
|
995
|
-
```sql
|
|
996
|
-
-- Migration: Add file_name column to sources
|
|
997
|
-
-- Date: 2024-01-15
|
|
998
|
-
-- Author: System
|
|
999
|
-
-- UP Migration
|
|
1000
|
-
ALTER TABLE sources ADD COLUMN IF NOT EXISTS file_name TEXT;
|
|
1001
|
-
-- Create index (if needed)
|
|
1002
|
-
-- CREATE INDEX idx_sources_file_name ON sources(file_name);
|
|
1003
|
-
-- Backfill (if needed, deterministic only)
|
|
1004
|
-
-- UPDATE sources SET file_name = ... WHERE file_name IS NULL;
|
|
1005
|
-
-- DOWN Migration (commented, for reference)
|
|
1006
|
-
-- ALTER TABLE sources DROP COLUMN IF EXISTS file_name;
|
|
1007
|
-
```
|
|
1008
|
-
### 6.2 Migration Safety Rules
|
|
1009
|
-
**MUST:**
|
|
1010
|
-
1. **Test on staging:** Run migration on production-like data first
|
|
1011
|
-
2. **Measure performance:** Check migration runtime and lock duration
|
|
1012
|
-
3. **Add defaults:** New columns MUST have defaults (no breaking changes)
|
|
1013
|
-
4. **Preserve data:** Never delete data without explicit approval
|
|
1014
|
-
5. **Document changes:** Include purpose and rollback plan in migration file
|
|
1015
|
-
6. **Version properties schema:** Bump `schema_version` if changing JSONB structure
|
|
1016
|
-
**MUST NOT:**
|
|
1017
|
-
1. **Block production:** Migrations MUST NOT lock tables for >1 second
|
|
1018
|
-
2. **Break clients:** Schema changes MUST be backward-compatible
|
|
1019
|
-
3. **Lose data:** Never DROP COLUMN without backup
|
|
1020
|
-
4. **Change semantics:** Existing JSONB keys MUST retain their meaning
|
|
1021
|
-
5. **Depend on nondeterminism:** Backfills MUST be deterministic
|
|
1022
|
-
### 6.3 Testing Migrations
|
|
1023
|
-
**Pre-Migration Checklist:**
|
|
1024
|
-
- [ ] Migration tested on local DB with production-like data
|
|
1025
|
-
- [ ] Migration runtime measured (< 1s for tables < 100K rows)
|
|
1026
|
-
- [ ] Rollback tested (down migration works)
|
|
1027
|
-
- [ ] Application code updated to handle new schema
|
|
1028
|
-
- [ ] JSONB `schema_version` bumped if applicable
|
|
1029
|
-
- [ ] Documentation updated
|
|
1030
|
-
**Post-Migration Verification:**
|
|
1031
|
-
- [ ] All indexes rebuilt successfully
|
|
1032
|
-
- [ ] Query performance unchanged or improved
|
|
1033
|
-
- [ ] No application errors in logs
|
|
1034
|
-
- [ ] RLS policies still enforce correctly
|
|
1035
|
-
## 7. Schema Versioning
|
|
1036
|
-
### 7.1 JSONB Schema Versions
|
|
1037
|
-
Each [entity type](#entity-type) SHOULD include `schema_version` in observation `fields`:
|
|
1038
|
-
```json
|
|
1039
|
-
{
|
|
1040
|
-
"schema_version": "1.0.0",
|
|
1041
|
-
...
|
|
1042
|
-
}
|
|
1043
|
-
```
|
|
1044
|
-
**Semantic Versioning (major.minor.patch):**
|
|
1045
|
-
- **Major (X.0.0)**: Breaking changes
|
|
1046
|
-
- Removing fields
|
|
1047
|
-
- Changing field types
|
|
1048
|
-
- Making optional fields required
|
|
1049
|
-
- **Minor (x.Y.0)**: Additive, backward-compatible changes
|
|
1050
|
-
- Adding optional fields
|
|
1051
|
-
- Adding converters
|
|
1052
|
-
- **Patch (x.y.Z)**: Non-functional changes
|
|
1053
|
-
- Documentation updates
|
|
1054
|
-
|
|
1055
|
-
**When to bump version:**
|
|
1056
|
-
- **Major**: Removing fields, changing types, making fields required
|
|
1057
|
-
- **Minor**: Adding optional fields, adding converters
|
|
1058
|
-
- **Patch**: Documentation, formatting
|
|
1059
|
-
|
|
1060
|
-
**Backward Compatibility:**
|
|
1061
|
-
- Old schema versions MUST remain readable
|
|
1062
|
-
- Application MUST handle missing fields gracefully
|
|
1063
|
-
- Observations are immutable - they keep their original `schema_version`
|
|
1064
|
-
- Snapshots use the active schema and must handle missing fields from old observations
|
|
1065
|
-
**Example Version Migration:**
|
|
1066
|
-
```typescript
|
|
1067
|
-
function migrateFinancialRecordProperties(properties: any): any {
|
|
1068
|
-
const version = properties.schema_version || "1.0";
|
|
1069
|
-
if (version === "1.0") {
|
|
1070
|
-
// Migrate 1.0 → 2.0
|
|
1071
|
-
return {
|
|
1072
|
-
...properties,
|
|
1073
|
-
schema_version: "2.0",
|
|
1074
|
-
// Add new field with default
|
|
1075
|
-
payment_method: properties.payment_method || "unknown",
|
|
1076
|
-
};
|
|
1077
|
-
}
|
|
1078
|
-
return properties; // Already latest version
|
|
1079
|
-
}
|
|
1080
|
-
```
|
|
1081
|
-
## 8. Performance and Indexing Strategy
|
|
1082
|
-
### 8.1 Index Usage Patterns
|
|
1083
|
-
**GIN Indexes (JSONB):**
|
|
1084
|
-
- Good for: `properties @> {'key': 'value'}` (containment queries)
|
|
1085
|
-
- Cost: Slower writes, larger storage
|
|
1086
|
-
**B-Tree Indexes (Scalar Columns):**
|
|
1087
|
-
- Good for: Range queries, sorting (`created_at`, `type`)
|
|
1088
|
-
- Cost: Minimal
|
|
1089
|
-
**Vector Indexes (ivfflat):**
|
|
1090
|
-
- Good for: Similarity search (`embedding <-> query_vector`)
|
|
1091
|
-
- Cost: Approximate results, tuning required
|
|
1092
|
-
**Composite Indexes:**
|
|
1093
|
-
- Good for: Multi-column queries (`external_source`, `external_id`)
|
|
1094
|
-
### 8.2 Query Optimization Tips
|
|
1095
|
-
**Use Indexed Columns First:**
|
|
1096
|
-
```sql
|
|
1097
|
-
-- Good: Uses idx_observations_entity
|
|
1098
|
-
SELECT * FROM observations WHERE entity_type = 'invoice';
|
|
1099
|
-
-- Bad: Full table scan (if no index on JSONB path)
|
|
1100
|
-
SELECT * FROM observations WHERE fields->>'amount' = '1000';
|
|
1101
|
-
```
|
|
1102
|
-
**Add Expression Indexes for Common JSONB Queries:**
|
|
1103
|
-
```sql
|
|
1104
|
-
CREATE INDEX idx_observations_amount ON observations ((fields->>'amount')::numeric)
|
|
1105
|
-
WHERE entity_type = 'invoice';
|
|
1106
|
-
```
|
|
1107
|
-
**Use `EXPLAIN ANALYZE`:**
|
|
1108
|
-
```sql
|
|
1109
|
-
EXPLAIN ANALYZE SELECT * FROM observations WHERE entity_type = 'invoice';
|
|
1110
|
-
```
|
|
1111
|
-
## 9. Schema Testing Requirements
|
|
1112
|
-
### 9.1 Unit Tests
|
|
1113
|
-
**Test JSONB Schema Validation:**
|
|
1114
|
-
```typescript
|
|
1115
|
-
test("FinancialRecord properties are valid", () => {
|
|
1116
|
-
const properties = {
|
|
1117
|
-
schema_version: "1.0",
|
|
1118
|
-
invoice_number: "INV-001",
|
|
1119
|
-
amount: 1500.0,
|
|
1120
|
-
currency: "USD",
|
|
1121
|
-
};
|
|
1122
|
-
expect(validateFinancialRecordProperties(properties)).toBe(true);
|
|
1123
|
-
});
|
|
1124
|
-
```
|
|
1125
|
-
### 9.2 Integration Tests
|
|
1126
|
-
**Test Source Insert/Fetch:**
|
|
1127
|
-
```typescript
|
|
1128
|
-
test("insert and fetch source", async () => {
|
|
1129
|
-
const source = await insertSource({
|
|
1130
|
-
content_hash: "hash_123",
|
|
1131
|
-
mime_type: "text/plain",
|
|
1132
|
-
storage_url: "file:///tmp/source.txt",
|
|
1133
|
-
});
|
|
1134
|
-
const fetched = await fetchSource(source.id);
|
|
1135
|
-
expect(fetched.content_hash).toBe("hash_123");
|
|
1136
|
-
});
|
|
1137
|
-
```
|
|
1138
|
-
### 9.3 Migration Tests
|
|
1139
|
-
**Test Up/Down Migrations:**
|
|
1140
|
-
```typescript
|
|
1141
|
-
test("migration adds file_name column", async () => {
|
|
1142
|
-
await runMigration("20240115_add_file_name_to_sources.sql");
|
|
1143
|
-
const columns = await getTableColumns("sources");
|
|
1144
|
-
expect(columns).toContain("file_name");
|
|
1145
|
-
await rollbackMigration("20240115_add_file_name_to_sources.sql");
|
|
1146
|
-
const columnsAfter = await getTableColumns("sources");
|
|
1147
|
-
expect(columnsAfter).not.toContain("file_name");
|
|
1148
|
-
});
|
|
1149
|
-
```
|
|
1150
|
-
## 10. Schema Invariants (MUST/MUST NOT)
|
|
1151
|
-
### MUST
|
|
1152
|
-
1. **All sources MUST have `id`, `content_hash`, `created_at`**
|
|
1153
|
-
2. **All observations MUST have `entity_id`, `entity_type`, `fields`**
|
|
1154
|
-
3. **`entity_type` MUST map to a known schema**
|
|
1155
|
-
4. **All foreign keys MUST reference valid sources/entities** (no orphans)
|
|
1156
|
-
5. **Migrations MUST be reversible**
|
|
1157
|
-
6. **Migrations MUST preserve existing data**
|
|
1158
|
-
7. **JSONB schemas MUST include `schema_version`**
|
|
1159
|
-
8. **All indexes MUST be documented**
|
|
1160
|
-
9. **RLS policies MUST be enabled on all tables**
|
|
1161
|
-
10. **All timestamps MUST be `TIMESTAMPTZ`** (timezone-aware)
|
|
1162
|
-
### MUST NOT
|
|
1163
|
-
1. **MUST NOT change core column types** (e.g., `id` UUID → TEXT)
|
|
1164
|
-
2. **MUST NOT remove columns without migration**
|
|
1165
|
-
3. **MUST NOT change JSONB key semantics** without versioning
|
|
1166
|
-
4. **MUST NOT create circular foreign keys** (no cycles)
|
|
1167
|
-
5. **MUST NOT store PII in unencrypted logs** (RLS applies)
|
|
1168
|
-
6. **MUST NOT use `SERIAL` IDs** (use UUID for distributed safety)
|
|
1169
|
-
7. **MUST NOT skip `schema_version`** in new schemas
|
|
1170
|
-
8. **MUST NOT create unbounded arrays** in JSONB (performance risk)
|
|
1171
|
-
## Agent Instructions
|
|
1172
|
-
### When to Load This Document
|
|
1173
|
-
Load `docs/subsystems/schema.md` when:
|
|
1174
|
-
- Modifying database schema (adding tables, columns, indexes)
|
|
1175
|
-
- Working with `properties` JSONB fields
|
|
1176
|
-
- Creating or running migrations
|
|
1177
|
-
- Querying observations with complex JSONB filters
|
|
1178
|
-
- Planning data model changes
|
|
1179
|
-
- Debugging schema-related issues
|
|
1180
|
-
### Required Co-Loaded Documents
|
|
1181
|
-
- `docs/NEOTOMA_MANIFEST.md` (immutability, provenance)
|
|
1182
|
-
- `docs/architecture/architecture.md` (layer boundaries)
|
|
1183
|
-
- `docs/architecture/determinism.md` (deterministic migrations)
|
|
1184
|
-
- `docs/subsystems/ingestion/ingestion.md` (how properties are populated)
|
|
1185
|
-
- `docs/private/migration/migrations_lifecycle.md` (migration process)
|
|
1186
|
-
### Constraints Agents Must Enforce
|
|
1187
|
-
1. **All schema changes MUST be additive** (no breaking changes)
|
|
1188
|
-
2. **All migrations MUST be reversible**
|
|
1189
|
-
3. **All JSONB schemas MUST include `schema_version`**
|
|
1190
|
-
4. **All new columns MUST have defaults**
|
|
1191
|
-
5. **All foreign keys MUST cascade appropriately** (ON DELETE CASCADE where logical)
|
|
1192
|
-
6. **All RLS policies MUST be maintained**
|
|
1193
|
-
7. **All indexes MUST be justified** (performance tests required)
|
|
1194
|
-
8. **All properties MUST map to extraction logic** (documented in ingestion)
|
|
1195
|
-
### Forbidden Patterns
|
|
1196
|
-
- Removing columns without migration
|
|
1197
|
-
- Changing column types without compatibility plan
|
|
1198
|
-
- Creating circular foreign keys
|
|
1199
|
-
- Storing PII in logs or unprotected fields
|
|
1200
|
-
- Using non-deterministic defaults (e.g., `random()`)
|
|
1201
|
-
- Unbounded JSONB arrays (performance risk)
|
|
1202
|
-
- Missing `schema_version` in new JSONB schemas
|
|
1203
|
-
### Validation Checklist
|
|
1204
|
-
- [ ] Schema change is additive only
|
|
1205
|
-
- [ ] Migration file created with up/down paths
|
|
1206
|
-
- [ ] Migration tested on staging data
|
|
1207
|
-
- [ ] New columns have defaults
|
|
1208
|
-
- [ ] JSONB `schema_version` bumped if applicable
|
|
1209
|
-
- [ ] Indexes created for new query patterns
|
|
1210
|
-
- [ ] RLS policies updated if needed
|
|
1211
|
-
- [ ] Documentation updated
|
|
1212
|
-
- [ ] Application code handles new schema
|
|
1213
|
-
- [ ] Tests cover new fields/tables
|