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,1821 +0,0 @@
|
|
|
1
|
-
# Neotoma MVP Feature Units — Execution Plan
|
|
2
|
-
## Scope
|
|
3
|
-
This document covers:
|
|
4
|
-
- Complete inventory of MVP Feature Units (estimated 25-30)
|
|
5
|
-
- Execution order with dependencies
|
|
6
|
-
- Priority classification (P0 critical, P1 high, P2 medium)
|
|
7
|
-
- Estimated complexity and risk level
|
|
8
|
-
- Completion criteria for MVP launch
|
|
9
|
-
This document does NOT cover:
|
|
10
|
-
- Detailed Feature Unit specs (those go in `docs/feature_units/completed/`)
|
|
11
|
-
- Post-MVP features
|
|
12
|
-
- Agentic Portfolio or Agentic Wallet features
|
|
13
|
-
## MVP Completion Criteria
|
|
14
|
-
**MVP is complete when:**
|
|
15
|
-
1. ✅ All P0 and P1 Feature Units deployed
|
|
16
|
-
2. ✅ Core workflows functional (upload → extraction → timeline → AI query)
|
|
17
|
-
3. ✅ Acceptance criteria met (see `docs/specs/METRICS_REQUIREMENTS.md`)
|
|
18
|
-
4. ✅ All critical path tests passing (100% coverage)
|
|
19
|
-
5. ✅ Onboarding flow complete
|
|
20
|
-
6. ✅ MCP server operational with all 8 MVP actions (Plaid actions moved to post-MVP)
|
|
21
|
-
7. ✅ Multi-user support (auth + RLS) enables Tier 1 small teams (2–20 people)
|
|
22
|
-
8. ✅ Local storage / offline mode functional (local-first architecture)
|
|
23
|
-
**Revenue Alignment:** MVP must support Tier 1 ICPs including small teams to enable mid-market ACVs (€3k–€15k/yr or €250–€1,250 MRR). See [`docs/private/strategy_governance/revenue_timeline.md`](../private/strategy_governance/revenue_timeline.md) for revenue objectives.
|
|
24
|
-
## Release Strategy
|
|
25
|
-
**Internal MCP Release (Pre-MVP):**
|
|
26
|
-
An internal, MCP-only release precedes the full MVP. This release includes:
|
|
27
|
-
- Core backend services (file analysis, entity resolution, event generation, graph builder, search)
|
|
28
|
-
- 6 core MCP actions (store_record, retrieve_records, update_record, delete_record, upload_file, get_file_url)
|
|
29
|
-
- Single-user database (no RLS, no auth)
|
|
30
|
-
- No UI components
|
|
31
|
-
**Purpose:** Validate core capabilities via MCP integration with Cursor and ChatGPT before building UI and multi-user infrastructure.
|
|
32
|
-
See [`docs/specs/INTERNAL_MCP_RELEASE.md`](./INTERNAL_MCP_RELEASE.md) for complete specification.
|
|
33
|
-
**Full MVP (v1.0.0):**
|
|
34
|
-
Adds UI layer, multi-user support (auth + RLS), billing, onboarding, and provider integrations on top of the validated MCP foundation.
|
|
35
|
-
## Execution Order and Dependencies
|
|
36
|
-
### Phase 0: Foundation (Infrastructure)
|
|
37
|
-
**Goal:** Core infrastructure and database schema.
|
|
38
|
-
#### FU-000: Database Schema v1.0
|
|
39
|
-
- **Priority:** P0 (Critical)
|
|
40
|
-
- **Risk:** High (foundational)
|
|
41
|
-
- **Complexity:** Medium
|
|
42
|
-
- **Dependencies:** None
|
|
43
|
-
- **Deliverables:**
|
|
44
|
-
- Database schema with `records`, `record_relationships`, `plaid_items`, `plaid_sync_runs`, `external_connectors`, `external_sync_runs` tables
|
|
45
|
-
- RLS policies
|
|
46
|
-
- Indexes (GIN, B-tree, ivfflat)
|
|
47
|
-
- Migration scripts
|
|
48
|
-
- **Tests:** Schema validation, RLS policies, index coverage
|
|
49
|
-
- **Status:** ✅ Complete (existing)
|
|
50
|
-
#### FU-001: Crypto Infrastructure
|
|
51
|
-
- **Priority:** P0
|
|
52
|
-
- **Risk:** High (security)
|
|
53
|
-
- **Complexity:** High
|
|
54
|
-
- **Dependencies:** None
|
|
55
|
-
- **Deliverables:**
|
|
56
|
-
- X25519 key generation (encryption)
|
|
57
|
-
- Ed25519 key generation (signatures)
|
|
58
|
-
- Envelope encryption/decryption
|
|
59
|
-
- Request verification
|
|
60
|
-
- Public key registry
|
|
61
|
-
- **Tests:** Crypto primitives, key derivation, signature verification
|
|
62
|
-
- **Status:** ✅ Complete (existing in `src/crypto/`)
|
|
63
|
-
#### FU-002: Configuration Management
|
|
64
|
-
- **Priority:** P0
|
|
65
|
-
- **Risk:** Medium
|
|
66
|
-
- **Complexity:** Low
|
|
67
|
-
- **Dependencies:** None
|
|
68
|
-
- **Deliverables:**
|
|
69
|
-
- `src/config.ts` — Environment variable loading
|
|
70
|
-
- `src/config/record_types.ts` — Canonical type mappings
|
|
71
|
-
- `src/config/plaid.ts` — Plaid configuration
|
|
72
|
-
- **Tests:** Config validation, env var requirements
|
|
73
|
-
- **Status:** ✅ Complete (existing)
|
|
74
|
-
### Phase 0.5: Observation Architecture (Building on Event-Sourcing Foundation)
|
|
75
|
-
**Goal:** Implement four-layer truth model (Document → Entity → Observation → Snapshot) with reducers, schema registry, and relationships.
|
|
76
|
-
**Note:** This phase builds on the event-sourcing foundation (FU-050 through FU-054) which provides reducer infrastructure. Observation architecture enhances that foundation with observation-specific patterns.
|
|
77
|
-
#### FU-055: Observation Storage Layer
|
|
78
|
-
- **Priority:** P0
|
|
79
|
-
- **Risk:** Medium
|
|
80
|
-
- **Complexity:** Medium
|
|
81
|
-
- **Dependencies:** FU-050 (Event-Sourcing Foundation), FU-051 (Repository Abstractions), FU-052 (Reducer Versioning)
|
|
82
|
-
- **Deliverables:**
|
|
83
|
-
- Add `observations` table to database schema
|
|
84
|
-
- Add `entity_snapshots` table
|
|
85
|
-
- Add `raw_fragments` table
|
|
86
|
-
- Add indexes and RLS policies
|
|
87
|
-
- Repository interfaces: ObservationRepository, SnapshotRepository
|
|
88
|
-
- **Tests:**
|
|
89
|
-
- Repository interface tests
|
|
90
|
-
- CRUD operations
|
|
91
|
-
- Transaction handling
|
|
92
|
-
- RLS policy validation
|
|
93
|
-
- **Status:** ⏳ Not Started
|
|
94
|
-
- **Related Documents:**
|
|
95
|
-
- [`docs/subsystems/schema.md`](../subsystems/schema.md) — Database schema
|
|
96
|
-
- [`docs/subsystems/observation_architecture.md`](../subsystems/observation_architecture.md) — Observation architecture
|
|
97
|
-
#### FU-056: Enhanced Reducer Engine for Observations
|
|
98
|
-
- **Priority:** P0
|
|
99
|
-
- **Risk:** High
|
|
100
|
-
- **Complexity:** High
|
|
101
|
-
- **Dependencies:** FU-050 (Event-Sourcing Foundation), FU-052 (Reducer Versioning), FU-055 (Observation Storage)
|
|
102
|
-
- **Deliverables:**
|
|
103
|
-
- Extend existing reducer infrastructure for observation merging
|
|
104
|
-
- Implement merge strategies: `last_write`, `highest_priority`, `most_specific`, `merge_array`
|
|
105
|
-
- Add provenance tracking in snapshots
|
|
106
|
-
- Integrate with existing reducer versioning (FU-052)
|
|
107
|
-
- **Tests:**
|
|
108
|
-
- Merge strategy tests (all 4 strategies)
|
|
109
|
-
- Determinism tests (same observations → same snapshot)
|
|
110
|
-
- Out-of-order observation arrival
|
|
111
|
-
- Provenance tracking validation
|
|
112
|
-
- **Status:** ⏳ Not Started
|
|
113
|
-
- **Related Documents:**
|
|
114
|
-
- [`docs/subsystems/reducer.md`](../subsystems/reducer.md) — Reducer patterns
|
|
115
|
-
- [`docs/architecture/determinism.md`](../architecture/determinism.md) — Determinism requirements
|
|
116
|
-
#### FU-057: Schema Registry Service
|
|
117
|
-
- **Priority:** P0
|
|
118
|
-
- **Risk:** Medium
|
|
119
|
-
- **Complexity:** Medium
|
|
120
|
-
- **Dependencies:** FU-000 (Database Schema), FU-055 (Observation Storage)
|
|
121
|
-
- **Deliverables:**
|
|
122
|
-
- `schema_registry` table
|
|
123
|
-
- SchemaRegistry service for config-driven schemas
|
|
124
|
-
- Schema validation
|
|
125
|
-
- Schema versioning and migration support
|
|
126
|
-
- **Tests:**
|
|
127
|
-
- Schema registration
|
|
128
|
-
- Schema validation
|
|
129
|
-
- Active schema lookup
|
|
130
|
-
- Version migration
|
|
131
|
-
- **Status:** ⏳ Not Started
|
|
132
|
-
- **Related Documents:**
|
|
133
|
-
- [`docs/subsystems/schema_registry.md`](../subsystems/schema_registry.md) — Schema registry patterns
|
|
134
|
-
#### FU-058: Observation-Aware Ingestion Pipeline
|
|
135
|
-
- **Priority:** P0
|
|
136
|
-
- **Risk:** High
|
|
137
|
-
- **Complexity:** High
|
|
138
|
-
- **Dependencies:** FU-055 (Observation Storage), FU-056 (Enhanced Reducer), FU-100 (File Analysis), FU-101 (Entity Resolution)
|
|
139
|
-
- **Deliverables:**
|
|
140
|
-
- Integrate observation creation into ingestion pipeline
|
|
141
|
-
- Separate known fields vs raw_fragments
|
|
142
|
-
- Trigger observation reducer after entity resolution
|
|
143
|
-
- Emit state_events for observation creation (integrates with FU-050)
|
|
144
|
-
- **Tests:**
|
|
145
|
-
- Observation creation during ingestion
|
|
146
|
-
- Raw fragment storage
|
|
147
|
-
- Reducer invocation
|
|
148
|
-
- State event emission (FU-050 integration)
|
|
149
|
-
- **Status:** ⏳ Not Started
|
|
150
|
-
- **Related Documents:**
|
|
151
|
-
- [`docs/subsystems/ingestion/ingestion.md`](../subsystems/ingestion/ingestion.md) — Ingestion pipeline
|
|
152
|
-
- [`docs/subsystems/observation_architecture.md`](../subsystems/observation_architecture.md) — Observation architecture
|
|
153
|
-
#### FU-059: Relationship Types
|
|
154
|
-
- **Priority:** P0
|
|
155
|
-
- **Risk:** Low
|
|
156
|
-
- **Complexity:** Medium
|
|
157
|
-
- **Dependencies:** FU-055 (Observation Storage), FU-103 (Graph Builder)
|
|
158
|
-
- **Deliverables:**
|
|
159
|
-
- `relationships` table with typed edges
|
|
160
|
-
- Relationship service
|
|
161
|
-
- First-class relationship types: PART_OF, CORRECTS, REFERS_TO, SETTLES, DUPLICATE_OF
|
|
162
|
-
- Graph traversal queries
|
|
163
|
-
- **Tests:**
|
|
164
|
-
- Relationship creation
|
|
165
|
-
- Type validation
|
|
166
|
-
- Graph traversal
|
|
167
|
-
- Cycle detection
|
|
168
|
-
- **Status:** ⏳ Not Started
|
|
169
|
-
- **Related Documents:**
|
|
170
|
-
- [`docs/subsystems/relationships.md`](../subsystems/relationships.md) — Relationship patterns
|
|
171
|
-
#### FU-060: Automated Schema Promotion (Optional P1)
|
|
172
|
-
- **Priority:** P1 (Optional)
|
|
173
|
-
- **Risk:** Low
|
|
174
|
-
- **Complexity:** Medium
|
|
175
|
-
- **Dependencies:** FU-057 (Schema Registry), FU-058 (Observation-Aware Ingestion)
|
|
176
|
-
- **Deliverables:**
|
|
177
|
-
- Pattern detection from raw_fragments
|
|
178
|
-
- Frequency analytics
|
|
179
|
-
- Schema suggestion generation
|
|
180
|
-
- Manifest-based migration (integrates with FU-052)
|
|
181
|
-
- **Tests:**
|
|
182
|
-
- Pattern detection accuracy
|
|
183
|
-
- Frequency thresholds
|
|
184
|
-
- Manifest generation
|
|
185
|
-
- Migration execution
|
|
186
|
-
- **Status:** ⏳ Not Started
|
|
187
|
-
- **Related Documents:**
|
|
188
|
-
- [`docs/architecture/schema_expansion.md`](../architecture/schema_expansion.md) — Schema expansion patterns
|
|
189
|
-
#### FU-061: MCP Actions for Observation Architecture
|
|
190
|
-
- **Priority:** P0
|
|
191
|
-
- **Risk:** Medium
|
|
192
|
-
- **Complexity:** Medium
|
|
193
|
-
- **Dependencies:** FU-055 (Observation Storage), FU-056 (Enhanced Reducer), FU-059 (Relationship Types), FU-200 (MCP Server Core)
|
|
194
|
-
- **Deliverables:**
|
|
195
|
-
- New MCP actions:
|
|
196
|
-
- `get_entity_snapshot` — Get entity with provenance
|
|
197
|
-
- `list_observations` — Query observations for entity
|
|
198
|
-
- `get_field_provenance` — Trace field to source documents
|
|
199
|
-
- `create_relationship` — Create typed relationship
|
|
200
|
-
- `list_relationships` — Query entity relationships
|
|
201
|
-
- Update existing MCP actions to use snapshots
|
|
202
|
-
- **Tests:**
|
|
203
|
-
- MCP action execution
|
|
204
|
-
- Response validation
|
|
205
|
-
- Error handling
|
|
206
|
-
- Integration with existing actions
|
|
207
|
-
- **Status:** ⏳ Not Started
|
|
208
|
-
- **Related Documents:**
|
|
209
|
-
- [`docs/specs/MCP_SPEC.md`](./MCP_SPEC.md) — MCP specification
|
|
210
|
-
### Phase 1: Core Services (Domain Layer)
|
|
211
|
-
**Goal:** Deterministic extraction, entity resolution, graph construction.
|
|
212
|
-
#### FU-100: File Analysis Service
|
|
213
|
-
- **Priority:** P0
|
|
214
|
-
- **Risk:** High (core extraction)
|
|
215
|
-
- **Complexity:** High
|
|
216
|
-
- **Dependencies:** FU-000 (schema)
|
|
217
|
-
- **Deliverables:**
|
|
218
|
-
- PDF text extraction (pdf-parse)
|
|
219
|
-
- OCR for images (Tesseract)
|
|
220
|
-
- Schema type detection (rule-based, deterministic regex patterns)
|
|
221
|
-
- Field extraction per schema type (AI interpretation for unstructured files via interpretation service; rule-based for structured data)
|
|
222
|
-
- Content hash for deduplication
|
|
223
|
-
- PDFDocument fallback for unrecognized document types
|
|
224
|
-
- **Constraints (per NEOTOMA_MANIFEST.md):**
|
|
225
|
-
- **MUST use interpretation service for unstructured files** (auditable, idempotent via canonicalization + hashing)
|
|
226
|
-
- **MUST use deterministic extraction** (same input → same output)
|
|
227
|
-
- **MUST fallback to PDFDocument** for unrecognized types (not custom types)
|
|
228
|
-
- **MUST be schema-first** (type-driven extraction rules)
|
|
229
|
-
- **Tests:**
|
|
230
|
-
- Unit: Schema detection rules, field extraction regex determinism
|
|
231
|
-
- Property: Same file → same type + same fields (100 runs)
|
|
232
|
-
- Integration: Full analysis pipeline via interpretation service (AI interpretation with audit trail)
|
|
233
|
-
- E2E: Upload PDF → verify fields extracted deterministically
|
|
234
|
-
- **Acceptance:** >85% schema detection accuracy, >80% field extraction success rate, 100% deterministic (same input → same output)
|
|
235
|
-
- **Status:** 🔨 Needs Update (existing implementation uses OpenAI LLM; must be replaced with rule-based extraction)
|
|
236
|
-
- **Implementation Notes:**
|
|
237
|
-
- Current `src/services/file_analysis.ts` uses OpenAI for analysis
|
|
238
|
-
- **MUST remove:** `openai.chat.completions.create()` calls
|
|
239
|
-
- **MUST implement:** Rule-based schema detection (regex patterns per schema type)
|
|
240
|
-
- **MUST implement:** Rule-based field extraction (regex parsers per schema)
|
|
241
|
-
- **MUST implement:** PDFDocument fallback (not custom sanitized types)
|
|
242
|
-
- **MUST update:** `normalizeRecordType()` to return `'document'` (PDFDocument equivalent) for unrecognized types, not custom types
|
|
243
|
-
- See `docs/subsystems/ingestion/ingestion.md` section 5 for rule-based detection patterns
|
|
244
|
-
#### FU-100.5: Schema Compliance Verification
|
|
245
|
-
- **Priority:** P0
|
|
246
|
-
- **Risk:** Medium
|
|
247
|
-
- **Complexity:** Medium
|
|
248
|
-
- **Dependencies:** FU-100 ✅
|
|
249
|
-
- **Deliverables:**
|
|
250
|
-
- Automated compliance verification checks
|
|
251
|
-
- Verification checklist execution
|
|
252
|
-
- Compliance report generation
|
|
253
|
-
- **Tests:**
|
|
254
|
-
- Schema versioning audit
|
|
255
|
-
- Complete extraction coverage verification
|
|
256
|
-
- Field validation verification
|
|
257
|
-
- Type catalog alignment check
|
|
258
|
-
- Extraction metadata verification
|
|
259
|
-
- Two-tier system enforcement check
|
|
260
|
-
- Immutability enforcement verification
|
|
261
|
-
- Multi-pattern matching verification
|
|
262
|
-
- Determinism extended verification
|
|
263
|
-
- **Acceptance:** All 9 verification checklist items pass
|
|
264
|
-
- **Status:** 🔨 Pending (executed after FU-100 completion)
|
|
265
|
-
- **Implementation Notes:**
|
|
266
|
-
- See `docs/specs/MVP_EXECUTION_PLAN.md` FU-100.5 for complete verification checklist
|
|
267
|
-
- Automated checks via grep patterns and test suites
|
|
268
|
-
- Human review required for compliance approval
|
|
269
|
-
#### FU-101: Entity Resolution Service
|
|
270
|
-
- **Priority:** P0 (MVP-critical competitive differentiator)
|
|
271
|
-
- **Risk:** Medium
|
|
272
|
-
- **Complexity:** Medium
|
|
273
|
-
- **Dependencies:** FU-100 (extraction)
|
|
274
|
-
**Competitive Importance:** Entity resolution across all personal data (documents + agent-created data) is a core differentiator vs. conversation-only provider memory (ChatGPT, Claude, Gemini). Provider memory doesn't unify entities or resolve canonical IDs. This feature validates Neotoma's defensible positioning.
|
|
275
|
-
- **Deliverables:**
|
|
276
|
-
- Entity extraction from fields (vendor_name, full_name, etc.)
|
|
277
|
-
- Normalization rules (lowercase, trim, suffix removal)
|
|
278
|
-
- Deterministic entity ID generation (hash-based)
|
|
279
|
-
- Deduplication logic
|
|
280
|
-
- Entity-record edge creation
|
|
281
|
-
- **Tests:**
|
|
282
|
-
- Unit: ID generation determinism, normalization rules
|
|
283
|
-
- Property: Same name → same ID (100 runs)
|
|
284
|
-
- Integration: Extract + store + link
|
|
285
|
-
- **Acceptance:** 0 duplicate entities, 100% deterministic IDs
|
|
286
|
-
- **Status:** 🔨 Partial (entity extraction exists, needs canonical ID generation)
|
|
287
|
-
#### FU-102: Event Generation Service
|
|
288
|
-
- **Priority:** P0 (MVP-critical competitive differentiator)
|
|
289
|
-
- **Risk:** Medium
|
|
290
|
-
- **Complexity:** Medium
|
|
291
|
-
- **Dependencies:** FU-100 (extraction)
|
|
292
|
-
**Competitive Importance:** Timeline generation across all personal data (documents + agent-created data) is a core differentiator vs. conversation-only provider memory (ChatGPT, Claude, Gemini). Provider memory doesn't build chronological timelines across personal data. This feature validates Neotoma's defensible positioning.
|
|
293
|
-
- **Deliverables:**
|
|
294
|
-
- Date field detection per schema type
|
|
295
|
-
- Event type mapping (date_issued → InvoiceIssued)
|
|
296
|
-
- Deterministic event ID generation (hash-based)
|
|
297
|
-
- Event-record and event-entity edge creation
|
|
298
|
-
- Timeline ordering (chronological)
|
|
299
|
-
- **Tests:**
|
|
300
|
-
- Unit: Event ID determinism, date extraction
|
|
301
|
-
- Integration: Generate events + insert graph
|
|
302
|
-
- E2E: Upload → verify timeline
|
|
303
|
-
- **Acceptance:** 100% deterministic event IDs, timeline sorted correctly
|
|
304
|
-
- **Status:** 🔨 Partial (event extraction logic TBD)
|
|
305
|
-
#### FU-103: Graph Builder Service
|
|
306
|
-
- **Priority:** P0
|
|
307
|
-
- **Risk:** High (data integrity)
|
|
308
|
-
- **Complexity:** Medium
|
|
309
|
-
- **Dependencies:** FU-101 (entities), FU-102 (events)
|
|
310
|
-
- **Deliverables:**
|
|
311
|
-
- Transactional insert (record + entities + events + edges)
|
|
312
|
-
- Orphan node prevention
|
|
313
|
-
- Cycle detection
|
|
314
|
-
- Edge type validation
|
|
315
|
-
- **Tests:**
|
|
316
|
-
- Unit: Transaction rollback on error
|
|
317
|
-
- Integration: Graph integrity constraints
|
|
318
|
-
- Property: No orphans, no cycles
|
|
319
|
-
- **Acceptance:** 0 orphan nodes, 100% transactional inserts
|
|
320
|
-
- **Status:** 🔨 Partial (basic graph exists, needs integrity enforcement)
|
|
321
|
-
#### FU-104: Embedding Service
|
|
322
|
-
- **Priority:** P1
|
|
323
|
-
- **Risk:** Medium
|
|
324
|
-
- **Complexity:** Medium
|
|
325
|
-
- **Dependencies:** FU-100 (text extraction)
|
|
326
|
-
- **Deliverables:**
|
|
327
|
-
- OpenAI embedding generation (ada-002, 1536-dim)
|
|
328
|
-
- Async embedding queue (bounded eventual)
|
|
329
|
-
- Vector storage in PostgreSQL (pgvector)
|
|
330
|
-
- Embedding update on record changes
|
|
331
|
-
- **Tests:**
|
|
332
|
-
- Unit: Embedding generation determinism (same text + model → same vector)
|
|
333
|
-
- Integration: Async queue processing
|
|
334
|
-
- E2E: Upload → verify embedding within 10s
|
|
335
|
-
- **Acceptance:** <10s embedding generation (P95)
|
|
336
|
-
- **Status:** ✅ Complete (existing in `src/embeddings.ts`)
|
|
337
|
-
#### FU-105: Search Service
|
|
338
|
-
- **Priority:** P0
|
|
339
|
-
- **Risk:** Medium
|
|
340
|
-
- **Complexity:** Medium
|
|
341
|
-
- **Dependencies:** FU-104 (embeddings)
|
|
342
|
-
- **Deliverables:**
|
|
343
|
-
- Structured filters (type, properties, date range)
|
|
344
|
-
- Full-text search (GIN indexes)
|
|
345
|
-
- Deterministic ranking with tiebreakers
|
|
346
|
-
- Pagination
|
|
347
|
-
- **Constraints (per NEOTOMA_MANIFEST.md):**
|
|
348
|
-
- **MUST NOT use semantic search** (MVP constraint; structured search only)
|
|
349
|
-
- **MUST use deterministic ranking** (same query + same DB state → same order)
|
|
350
|
-
- **MUST use tiebreakers** (no nondeterministic ordering)
|
|
351
|
-
- **Tests:**
|
|
352
|
-
- Unit: Ranking algorithm determinism
|
|
353
|
-
- Property: Same query → same order (100 runs)
|
|
354
|
-
- Integration: Search with fixtures
|
|
355
|
-
- E2E: Search via UI
|
|
356
|
-
- **Acceptance:** <500ms P95 latency, 100% deterministic order
|
|
357
|
-
- **Status:** 🔨 Partial (basic search exists, needs deterministic ranking)
|
|
358
|
-
- **Implementation Notes:**
|
|
359
|
-
- Current implementation may include semantic search
|
|
360
|
-
- **MUST remove:** Vector similarity search from MVP
|
|
361
|
-
- **MUST remove:** Hybrid search (structured + semantic)
|
|
362
|
-
- **Post-MVP:** Semantic search will be added after MVP launch
|
|
363
|
-
- See `docs/subsystems/search/search.md` for structured search patterns
|
|
364
|
-
#### FU-106: Chat Transcript to JSON CLI Tool
|
|
365
|
-
- **Priority:** P1
|
|
366
|
-
- **Risk:** Low
|
|
367
|
-
- **Complexity:** Medium
|
|
368
|
-
- **Dependencies:** None (standalone CLI, outside Truth Layer)
|
|
369
|
-
- **Release:** Internal Release v0.2.0 (pre-MVP)
|
|
370
|
-
- **Deliverables:**
|
|
371
|
-
- CLI tool for converting chat transcripts (e.g., ChatGPT exports) to structured JSON files
|
|
372
|
-
- Support for common export formats (JSON, HTML, text)
|
|
373
|
-
- User-correctable field mapping (interactive mode)
|
|
374
|
-
- Deterministic JSON output with schema types from normalized transcript
|
|
375
|
-
- Documentation and usage examples
|
|
376
|
-
- **Constraints (per GENERAL_REQUIREMENTS.md):**
|
|
377
|
-
- **MUST be separate from Truth Layer** (non-deterministic interpretation prohibited in ingestion pipeline)
|
|
378
|
-
- **MAY use LLMs or heuristics** (not constrained by Truth Layer determinism requirements)
|
|
379
|
-
- **MUST output well-structured JSON** with schema types that can be ingested deterministically
|
|
380
|
-
- **SHOULD support user correction/review** before final JSON export
|
|
381
|
-
- **Tests:**
|
|
382
|
-
- Unit: Transcript parsing for each supported format
|
|
383
|
-
- Integration: Full CLI workflow (transcript → JSON → validate)
|
|
384
|
-
- E2E: CLI → Neotoma ingestion pipeline (JSON record ingestion)
|
|
385
|
-
- **Acceptance:** Can convert representative chat exports to JSON with >80% field accuracy
|
|
386
|
-
- **Status:** ⏳ Not Started
|
|
387
|
-
- **Implementation Notes:**
|
|
388
|
-
- CLI runs independently from Neotoma server (Node.js script in `scripts/` or separate package)
|
|
389
|
-
- Can use OpenAI/Anthropic APIs for interpretation (outside Truth Layer)
|
|
390
|
-
- Output JSON follows standard record format (type, properties, file_urls, summary)
|
|
391
|
-
- Each JSON file contains one record object with schema type and extracted properties
|
|
392
|
-
- See `docs/specs/GENERAL_REQUIREMENTS.md` for motivation and requirements
|
|
393
|
-
- Users run: `npm run chat-to-json -- input.json output_dir/`
|
|
394
|
-
### Phase 2: MCP Layer (Application Layer)
|
|
395
|
-
**Goal:** AI-safe access to truth via MCP actions.
|
|
396
|
-
#### FU-200: MCP Server Core
|
|
397
|
-
- **Priority:** P0
|
|
398
|
-
- **Risk:** High (AI interface)
|
|
399
|
-
- **Complexity:** High
|
|
400
|
-
- **Dependencies:** FU-000 (schema)
|
|
401
|
-
- **Deliverables:**
|
|
402
|
-
- MCP server initialization
|
|
403
|
-
- Tool registration
|
|
404
|
-
- Request validation (Zod schemas)
|
|
405
|
-
- Error envelope handling
|
|
406
|
-
- WebSocket bridge (optional)
|
|
407
|
-
- **Tests:**
|
|
408
|
-
- Unit: Schema validation
|
|
409
|
-
- Integration: MCP protocol compliance
|
|
410
|
-
- E2E: ChatGPT/Claude connection
|
|
411
|
-
- **Acceptance:** MCP server starts successfully, validates requests
|
|
412
|
-
- **Status:** ✅ Complete (existing in `src/server.ts`)
|
|
413
|
-
#### FU-201: MCP Action — store_record
|
|
414
|
-
- **Priority:** P0
|
|
415
|
-
- **Risk:** Medium
|
|
416
|
-
- **Complexity:** Medium (increased due to event-sourcing)
|
|
417
|
-
- **Dependencies:** FU-200 (MCP core), FU-050 (Event-Sourcing Foundation), FU-051 (Repository Abstractions)
|
|
418
|
-
- **Deliverables:**
|
|
419
|
-
- Input validation (type, properties required)
|
|
420
|
-
- Emit `RecordCreated` event via `EventRepository.appendEvent()`
|
|
421
|
-
- Apply reducer (`reduceRecordCreated`) to compute state
|
|
422
|
-
- Refresh materialized view after event emission
|
|
423
|
-
- Response with created record
|
|
424
|
-
- Error handling
|
|
425
|
-
- **Tests:**
|
|
426
|
-
- Unit: Validation logic, event emission, reducer application
|
|
427
|
-
- Integration: Store + retrieve, verify event emitted, verify state matches reducer output
|
|
428
|
-
- E2E: ChatGPT creates record
|
|
429
|
-
- Property: Event emission + reducer application → state consistent (100 runs)
|
|
430
|
-
- **Status:** ✅ Complete
|
|
431
|
-
#### FU-202: MCP Action — retrieve_records
|
|
432
|
-
- **Priority:** P0
|
|
433
|
-
- **Risk:** Medium
|
|
434
|
-
- **Complexity:** Medium
|
|
435
|
-
- **Dependencies:** FU-105 (search), FU-200 (MCP core), FU-051 (Repository Abstractions)
|
|
436
|
-
- **Deliverables:**
|
|
437
|
-
- Query parsing (type, properties, search, limit)
|
|
438
|
-
- Retrieve state via `StateRepository.getState()` (repository abstraction)
|
|
439
|
-
- Search service integration
|
|
440
|
-
- Deterministic result ordering
|
|
441
|
-
- Pagination
|
|
442
|
-
- **Tests:**
|
|
443
|
-
- Unit: Query parsing, repository usage
|
|
444
|
-
- Integration: Retrieve with filters, verify repository abstraction
|
|
445
|
-
- Property: Deterministic order
|
|
446
|
-
- **Status:** ✅ Complete
|
|
447
|
-
#### FU-203: MCP Action — update_record
|
|
448
|
-
- **Priority:** P0 (required for v0.1.0)
|
|
449
|
-
- **Risk:** Low
|
|
450
|
-
- **Complexity:** Medium (increased due to event-sourcing)
|
|
451
|
-
- **Dependencies:** FU-200 (MCP core), FU-050 (Event-Sourcing Foundation), FU-051 (Repository Abstractions)
|
|
452
|
-
- **Deliverables:**
|
|
453
|
-
- Update validation (id required)
|
|
454
|
-
- Emit `RecordUpdated` event via `EventRepository.appendEvent()`
|
|
455
|
-
- Apply reducer (`reduceRecordUpdated`) to compute updated state
|
|
456
|
-
- Refresh materialized view after event emission
|
|
457
|
-
- Property merging
|
|
458
|
-
- Response with updated record
|
|
459
|
-
- **Tests:**
|
|
460
|
-
- Unit: Merge logic, event emission, reducer application
|
|
461
|
-
- Integration: Update + retrieve, verify event emitted, verify state matches reducer output
|
|
462
|
-
- Property: Event emission + reducer application → state consistent (100 runs)
|
|
463
|
-
- **Status:** ✅ Complete
|
|
464
|
-
#### FU-204: MCP Action — delete_record
|
|
465
|
-
- **Priority:** P0 (required for v0.1.0)
|
|
466
|
-
- **Risk:** Medium (data loss)
|
|
467
|
-
- **Complexity:** Medium (increased due to event-sourcing)
|
|
468
|
-
- **Dependencies:** FU-200 (MCP core), FU-050 (Event-Sourcing Foundation), FU-051 (Repository Abstractions)
|
|
469
|
-
- **Deliverables:**
|
|
470
|
-
- Delete validation
|
|
471
|
-
- Emit `RecordDeleted` event via `EventRepository.appendEvent()`
|
|
472
|
-
- Apply reducer (`reduceRecordDeleted`) to mark record as deleted
|
|
473
|
-
- Refresh materialized view after event emission
|
|
474
|
-
- Cascade delete (edges, files)
|
|
475
|
-
- Response with confirmation
|
|
476
|
-
- **Tests:**
|
|
477
|
-
- Unit: Validation, event emission, reducer application
|
|
478
|
-
- Integration: Delete + verify gone, verify event emitted, verify state matches reducer output
|
|
479
|
-
- E2E: Delete via ChatGPT
|
|
480
|
-
- Property: Event emission + reducer application → state consistent (100 runs)
|
|
481
|
-
- **Status:** ✅ Complete
|
|
482
|
-
#### FU-205: MCP Action — upload_file
|
|
483
|
-
- **Priority:** P0
|
|
484
|
-
- **Risk:** High (core ingestion)
|
|
485
|
-
- **Complexity:** High
|
|
486
|
-
- **Dependencies:** FU-100 (file analysis), FU-200 (MCP core), FU-050 (Event-Sourcing Foundation), FU-051 (Repository Abstractions)
|
|
487
|
-
- **Deliverables:**
|
|
488
|
-
- File path validation
|
|
489
|
-
- Upload to storage (cloud storage or S3)
|
|
490
|
-
- Trigger file analysis (optional)
|
|
491
|
-
- Create record with extracted fields (uses `store_record` internally, inherits event-sourcing)
|
|
492
|
-
- Use `StateRepository` and `EventRepository` when creating records
|
|
493
|
-
- Response with record + file URL
|
|
494
|
-
- **Tests:**
|
|
495
|
-
- Unit: File validation
|
|
496
|
-
- Integration: Upload + analyze + store, verify event emitted for created record
|
|
497
|
-
- E2E: ChatGPT uploads file → sees extraction
|
|
498
|
-
- **Acceptance:** >95% upload success rate, <5s P95 latency
|
|
499
|
-
- **Status:** ✅ Complete
|
|
500
|
-
#### FU-206: MCP Action — get_file_url
|
|
501
|
-
- **Priority:** P1
|
|
502
|
-
- **Risk:** Low
|
|
503
|
-
- **Complexity:** Low
|
|
504
|
-
- **Dependencies:** FU-200 (MCP core)
|
|
505
|
-
- **Deliverables:**
|
|
506
|
-
- Signed URL generation
|
|
507
|
-
- Expiration handling
|
|
508
|
-
- **Tests:**
|
|
509
|
-
- Unit: URL signing
|
|
510
|
-
- Integration: Get URL + verify accessible
|
|
511
|
-
- **Status:** ✅ Complete
|
|
512
|
-
#### FU-207: MCP Plaid Integration
|
|
513
|
-
- **Priority:** Post-MVP (Tier 3+ use case)
|
|
514
|
-
- **Risk:** Medium
|
|
515
|
-
- **Complexity:** High
|
|
516
|
-
- **Dependencies:** FU-200 (MCP core)
|
|
517
|
-
- **Deliverables:**
|
|
518
|
-
- `plaid_create_link_token` action
|
|
519
|
-
- `plaid_exchange_public_token` action
|
|
520
|
-
- `plaid_sync` action
|
|
521
|
-
- `plaid_list_items` action
|
|
522
|
-
- Transaction import and normalization
|
|
523
|
-
- **Tests:**
|
|
524
|
-
- Unit: Token exchange, transaction mapping
|
|
525
|
-
- Integration: Full Plaid flow (sandbox)
|
|
526
|
-
- E2E: Connect Plaid → sync → see transactions
|
|
527
|
-
- **Status:** ✅ Complete (existing, but post-MVP)
|
|
528
|
-
- **Rationale:** Plaid (live bank transaction sync) serves Tier 3+ ICPs (Cross-Border Solopreneurs, Agentic Portfolio) better than Tier 1. Tier 1 needs document upload (PDF invoices/receipts/statements), not live account connections.
|
|
529
|
-
#### FU-208: MCP Provider Integrations
|
|
530
|
-
- **Priority:** P1
|
|
531
|
-
- **Risk:** Medium
|
|
532
|
-
- **Complexity:** High
|
|
533
|
-
- **Dependencies:** FU-200 (MCP core)
|
|
534
|
-
- **Deliverables:**
|
|
535
|
-
- `list_provider_catalog` action
|
|
536
|
-
- `sync_provider_imports` action
|
|
537
|
-
- Provider catalog (Gmail only for MVP)
|
|
538
|
-
- OAuth flows per provider
|
|
539
|
-
- Generic connector framework
|
|
540
|
-
- **Tests:**
|
|
541
|
-
- Unit: Provider catalog, sync logic
|
|
542
|
-
- Integration: Mock provider sync
|
|
543
|
-
- E2E: Connect provider → sync → see records
|
|
544
|
-
- **Status:** ✅ Complete (existing)
|
|
545
|
-
- **Note:** X and Instagram integrations are post-MVP. Only Gmail is included in MVP scope as it aligns with Tier 1 ICP needs (document import from email attachments).
|
|
546
|
-
### Phase 3: UI Layer (Presentation)
|
|
547
|
-
**Goal:** User-facing interface for truth inspection.
|
|
548
|
-
#### FU-300: UI Foundation
|
|
549
|
-
- **Priority:** P0
|
|
550
|
-
- **Risk:** Medium
|
|
551
|
-
- **Complexity:** Medium
|
|
552
|
-
- **Dependencies:** None (UI independent)
|
|
553
|
-
- **Deliverables:**
|
|
554
|
-
- React app scaffold (Vite + TypeScript)
|
|
555
|
-
- UI component library (shadcn/ui)
|
|
556
|
-
- Tailwind configuration
|
|
557
|
-
- Theme system (light/dark)
|
|
558
|
-
- Routing (path-based, no external router)
|
|
559
|
-
- State management
|
|
560
|
-
- **Design system implementation** (see `docs/ui/design_system.md`):
|
|
561
|
-
- Font configuration (Inter for UI, JetBrains Mono for monospace)
|
|
562
|
-
- Typography scale (h1-h4, body, small, monospace with correct sizes/weights/line-heights)
|
|
563
|
-
- Color palette (light/dark mode with semantic colors)
|
|
564
|
-
- Component styles (buttons, inputs, tables, cards, badges matching design system)
|
|
565
|
-
- Spacing scale implementation
|
|
566
|
-
- Border radius values (6px buttons/inputs, 8px cards, 4px badges)
|
|
567
|
-
- Interactive design system preview (`/design-system` route)
|
|
568
|
-
- **Tests:**
|
|
569
|
-
- Component: Button, card, dialog, table
|
|
570
|
-
- E2E: App loads successfully
|
|
571
|
-
- E2E: Design system preview accessible at `/design-system`
|
|
572
|
-
- **Acceptance:** All components match design system specifications, style guide displays all components correctly
|
|
573
|
-
- **Status:** 🔨 Partial (foundation exists, design system implementation in progress)
|
|
574
|
-
#### FU-301: Source List View
|
|
575
|
-
- **Priority:** P0
|
|
576
|
-
- **Risk:** Low
|
|
577
|
-
- **Complexity:** Medium
|
|
578
|
-
- **Dependencies:** FU-300 (UI foundation), MCP retrieve actions for source
|
|
579
|
-
- **Deliverables:**
|
|
580
|
-
- Table view with sortable columns (source, not deprecated records)
|
|
581
|
-
- Type filter dropdown (file types, structured data types)
|
|
582
|
-
- Search input (full-text across source)
|
|
583
|
-
- Pagination (load more)
|
|
584
|
-
- Click row → show source detail
|
|
585
|
-
- Uses `sources` table (NOT deprecated `records` table)
|
|
586
|
-
- **UI Pattern:** List (see `docs/ui/patterns/list.md`)
|
|
587
|
-
- **Tests:**
|
|
588
|
-
- Component: SourceNodeTable rendering
|
|
589
|
-
- Accessibility: Keyboard nav, ARIA labels
|
|
590
|
-
- E2E: Filter, search, sort, click
|
|
591
|
-
- Database: Queries use `sources` table, NOT `records`
|
|
592
|
-
- **Acceptance:** Displays all source, filters work, <2s load time, uses current architecture (no deprecated tables)
|
|
593
|
-
- **Status:** 🔨 Partial (existing RecordsTable.tsx needs refactoring to use `sources` table)
|
|
594
|
-
- **Migration Note:** Rename from "Records List View" to align with canonical vocabulary; refactor to query `sources` table instead of deprecated `records` table
|
|
595
|
-
#### FU-302: Source Detail View
|
|
596
|
-
- **Priority:** P0
|
|
597
|
-
- **Risk:** Low
|
|
598
|
-
- **Complexity:** Medium
|
|
599
|
-
- **Dependencies:** FU-300 (UI foundation), MCP retrieve actions for source, interpretations, observations
|
|
600
|
-
- **Deliverables:**
|
|
601
|
-
- Slide-out panel or modal
|
|
602
|
-
- Display source metadata (id, content_hash, mime_type, file_name, created_at)
|
|
603
|
-
- Display interpretations (AI interpretation runs with config: model, temperature, prompt_hash)
|
|
604
|
-
- Display observations (extracted facts with provenance)
|
|
605
|
-
- Display linked entities (from observations)
|
|
606
|
-
- Display linked events (timeline events)
|
|
607
|
-
- File preview (if applicable)
|
|
608
|
-
- Uses `sources`, `interpretations`, `observations` tables (NOT deprecated `records`)
|
|
609
|
-
- Actions: Reinterpret, Delete
|
|
610
|
-
- **UI Pattern:** Detail (see `docs/ui/patterns/detail.md`)
|
|
611
|
-
- **Tests:**
|
|
612
|
-
- Component: SourceNodeDetailsPanel
|
|
613
|
-
- Accessibility: Focus management, ESC to close
|
|
614
|
-
- E2E: Click source → see details with interpretations and observations
|
|
615
|
-
- Database: Queries use `sources`, `interpretations`, `observations` tables, NOT `records`
|
|
616
|
-
- **Acceptance:** All source metadata visible, interpretations shown with config, observations shown with provenance, entities/events linked
|
|
617
|
-
- **Status:** 🔨 Partial (existing RecordDetailsPanel.tsx needs refactoring to use `sources` + `interpretations` + `observations`)
|
|
618
|
-
- **Migration Note:** Rename from "Record Detail View" to align with canonical vocabulary; refactor to show source, interpretations, and observations (four-layer truth model)
|
|
619
|
-
#### FU-303: Timeline View
|
|
620
|
-
- **Priority:** P0
|
|
621
|
-
- **Risk:** Medium
|
|
622
|
-
- **Complexity:** Medium
|
|
623
|
-
- **Dependencies:** FU-102 (event generation), FU-300 (UI foundation)
|
|
624
|
-
- **Deliverables:**
|
|
625
|
-
- Chronological event list (sorted by event_timestamp)
|
|
626
|
-
- Group by date (day/month/year)
|
|
627
|
-
- Click event → navigate to source record
|
|
628
|
-
- Filter by date range
|
|
629
|
-
- Filter by event type
|
|
630
|
-
- Virtualized scrolling (if >100 events)
|
|
631
|
-
- **UI Pattern:** Custom timeline pattern
|
|
632
|
-
- **Tests:**
|
|
633
|
-
- Component: Timeline rendering, sorting
|
|
634
|
-
- Accessibility: Keyboard nav, time elements
|
|
635
|
-
- E2E: View timeline → click event → see record
|
|
636
|
-
- **Acceptance:** Events sorted chronologically, all source links work
|
|
637
|
-
- **Status:** ⏳ Not Started
|
|
638
|
-
#### FU-304: File Upload UI
|
|
639
|
-
- **Priority:** P0
|
|
640
|
-
- **Risk:** Medium
|
|
641
|
-
- **Complexity:** Medium
|
|
642
|
-
- **Dependencies:** FU-205 (upload_file MCP), FU-300 (UI foundation)
|
|
643
|
-
- **Deliverables:**
|
|
644
|
-
- Drag-and-drop zone
|
|
645
|
-
- File picker button
|
|
646
|
-
- **Bulk upload support** (multiple files, folder import)
|
|
647
|
-
- **Upload queue management** (track multiple uploads)
|
|
648
|
-
- **Progress tracking** (per-file and overall progress)
|
|
649
|
-
- **Resume on failure** (retry failed uploads)
|
|
650
|
-
- Upload progress indicator
|
|
651
|
-
- Success notification → navigate to source detail
|
|
652
|
-
- Error handling with retry
|
|
653
|
-
- **Tests:**
|
|
654
|
-
- Component: Upload zone states (idle, dragging, uploading, error)
|
|
655
|
-
- Component: Bulk upload (10+ files), queue management
|
|
656
|
-
- Accessibility: Keyboard upload, progress ARIA
|
|
657
|
-
- E2E: Upload file → see record
|
|
658
|
-
- E2E: Bulk upload → verify all files processed
|
|
659
|
-
- **Acceptance:** >95% upload success (user-initiated), <10s total time per file, bulk upload handles 50+ files
|
|
660
|
-
- **Status:** 🔨 Partial (upload exists in ChatPanel, needs dedicated upload UI)
|
|
661
|
-
#### FU-305: Dashboard View
|
|
662
|
-
- **Priority:** P1
|
|
663
|
-
- **Risk:** Low
|
|
664
|
-
- **Complexity:** Low
|
|
665
|
-
- **Dependencies:** FU-300 (UI foundation), MCP retrieve actions for source, entities, events
|
|
666
|
-
- **Deliverables:**
|
|
667
|
-
- Stats widgets (total source, entities by type, events, observations, interpretations)
|
|
668
|
-
- Recent source list (last 5)
|
|
669
|
-
- Entity count by type (companies, people, invoices, etc.)
|
|
670
|
-
- Quick actions (Upload, Search)
|
|
671
|
-
- Uses main objects from `docs/vocabulary/canonical_terms.md` (NOT deprecated records)
|
|
672
|
-
- **UI Pattern:** Dashboard (see `docs/ui/patterns/dashboard.md`)
|
|
673
|
-
- **Tests:**
|
|
674
|
-
- Component: Dashboard widgets
|
|
675
|
-
- E2E: Dashboard loads, stats accurate, uses correct tables
|
|
676
|
-
- Database: Queries use `sources`, `entities`, `observations` tables, NOT `records`
|
|
677
|
-
- **Acceptance:** Dashboard displays in <2s, shows stats for main objects (source, entities, observations, events)
|
|
678
|
-
- **Status:** ⏳ Not Started
|
|
679
|
-
- **Migration Note:** Dashboard stats should reflect main objects (source, entities, observations, events), not deprecated records
|
|
680
|
-
#### FU-306: Settings UI
|
|
681
|
-
- **Priority:** P2
|
|
682
|
-
- **Risk:** Low
|
|
683
|
-
- **Complexity:** Low
|
|
684
|
-
- **Dependencies:** FU-300 (UI foundation)
|
|
685
|
-
- **Deliverables:**
|
|
686
|
-
- User preferences (locale, timezone)
|
|
687
|
-
- Connected integrations list
|
|
688
|
-
- Theme toggle (light/dark)
|
|
689
|
-
- Account settings
|
|
690
|
-
- **UI Pattern:** Settings (see `docs/ui/patterns/settings.md`)
|
|
691
|
-
- **Tests:**
|
|
692
|
-
- Component: Settings form
|
|
693
|
-
- E2E: Change locale → verify formatting
|
|
694
|
-
- **Status:** 🔨 Partial (FloatingSettingsButton exists, needs full settings)
|
|
695
|
-
#### FU-307: Chat/AI Panel
|
|
696
|
-
- **Priority:** P0 → **EXCLUDED** (Architectural Decision)
|
|
697
|
-
- **Risk:** Medium
|
|
698
|
-
- **Complexity:** High
|
|
699
|
-
- **Dependencies:** FU-202 (retrieve_records), FU-300 (UI foundation)
|
|
700
|
-
- **Deliverables:**
|
|
701
|
-
- ~~Chat interface (user message, AI response)~~ **EXCLUDED**
|
|
702
|
-
- ~~MCP integration (retrieve_records via backend)~~ **EXCLUDED** (MCP integration handled via external agents)
|
|
703
|
-
- ~~Record references in responses~~ **EXCLUDED**
|
|
704
|
-
- ~~File upload from chat~~ **EXCLUDED** (upload UI separated)
|
|
705
|
-
- ~~Message history persistence~~ **EXCLUDED**
|
|
706
|
-
- **Architectural Decision:** Neotoma adopts MCP-first conversational architecture. All conversational interactions MUST be externalized to MCP-compatible agents (ChatGPT, Cursor, Claude). Internal chat UI violates architectural decision. See `docs/architecture/conversational_ux_architecture.md` for rationale.
|
|
707
|
-
- **Migration Path:**
|
|
708
|
-
- ChatPanel component exists but MUST be deprecated
|
|
709
|
-
- Extract deterministic operations (search, filter) to standalone components
|
|
710
|
-
- Remove conversational state management
|
|
711
|
-
- Create MCP integration documentation for external agents
|
|
712
|
-
- See `docs/releases/in_progress/v1.0.0/architectural_impact_chat_ui.md` for migration details
|
|
713
|
-
- **Status:** ❌ **EXCLUDED** (existing `ChatPanel.tsx` to be deprecated)
|
|
714
|
-
### Phase 4: Onboarding Flow
|
|
715
|
-
**Goal:** First-run experience (signup → first upload → activation).
|
|
716
|
-
#### FU-400: Onboarding Welcome Screen
|
|
717
|
-
- **Priority:** P0
|
|
718
|
-
- **Risk:** Low
|
|
719
|
-
- **Complexity:** Low
|
|
720
|
-
- **Dependencies:** FU-300 (UI foundation)
|
|
721
|
-
- **Deliverables:**
|
|
722
|
-
- Welcome message
|
|
723
|
-
- Value proposition (minimal, direct)
|
|
724
|
-
- Primary CTA: Upload First Document
|
|
725
|
-
- Skip link for returning users
|
|
726
|
-
- **Tests:**
|
|
727
|
-
- Component: WelcomeScreen
|
|
728
|
-
- Accessibility: Focus on CTA
|
|
729
|
-
- E2E: New user sees welcome → clicks upload
|
|
730
|
-
- **Acceptance:** >60% click-through to upload
|
|
731
|
-
- **Status:** ⏳ Not Started
|
|
732
|
-
#### FU-401: Onboarding Processing Indicator
|
|
733
|
-
- **Priority:** P0
|
|
734
|
-
- **Risk:** Low
|
|
735
|
-
- **Complexity:** Low
|
|
736
|
-
- **Dependencies:** FU-205 (upload_file)
|
|
737
|
-
- **Deliverables:**
|
|
738
|
-
- Step-by-step progress (Extracting text ✓, Detecting type ✓, etc.)
|
|
739
|
-
- Loading states per step
|
|
740
|
-
- Timeout handling (max 30s)
|
|
741
|
-
- **Tests:**
|
|
742
|
-
- Component: ProcessingIndicator
|
|
743
|
-
- Accessibility: Live region announcements
|
|
744
|
-
- E2E: Upload → see progress → see results
|
|
745
|
-
- **Acceptance:** User understands what's happening, no black box
|
|
746
|
-
- **Status:** ⏳ Not Started
|
|
747
|
-
#### FU-402: Onboarding Extraction Results
|
|
748
|
-
- **Priority:** P0
|
|
749
|
-
- **Risk:** Low
|
|
750
|
-
- **Complexity:** Medium
|
|
751
|
-
- **Dependencies:** FU-302 (source detail), FU-401 (processing)
|
|
752
|
-
- **Deliverables:**
|
|
753
|
-
- Show extracted fields with labels
|
|
754
|
-
- Highlight entities (visual distinction)
|
|
755
|
-
- Show timeline events
|
|
756
|
-
- CTAs: View Timeline, Upload Another, Ask AI
|
|
757
|
-
- **Tests:**
|
|
758
|
-
- Component: ExtractionResults
|
|
759
|
-
- E2E: Upload → see fields → click entity → see detail
|
|
760
|
-
- **Acceptance:** >50% view extraction results, >40% proceed to timeline
|
|
761
|
-
- **Status:** ⏳ Not Started
|
|
762
|
-
#### FU-403: Onboarding State Management
|
|
763
|
-
- **Priority:** P0
|
|
764
|
-
- **Risk:** Low
|
|
765
|
-
- **Complexity:** Low
|
|
766
|
-
- **Dependencies:** FU-400, FU-401, FU-402
|
|
767
|
-
- **Deliverables:**
|
|
768
|
-
- Onboarding state hook (useOnboardingState)
|
|
769
|
-
- Milestone tracking (first_upload, first_extraction_viewed, etc.)
|
|
770
|
-
- Persistence (localStorage + optional server sync)
|
|
771
|
-
- Resume logic (return to incomplete step)
|
|
772
|
-
- Completion detection
|
|
773
|
-
- **Tests:**
|
|
774
|
-
- Unit: State transitions
|
|
775
|
-
- Integration: Persist + resume
|
|
776
|
-
- E2E: Complete onboarding → state marked done
|
|
777
|
-
- **Acceptance:** 50% complete onboarding, persistent across sessions
|
|
778
|
-
- **Status:** ⏳ Not Started
|
|
779
|
-
### Phase 5: Integrations
|
|
780
|
-
**Goal:** External data sources (Gmail only for MVP).
|
|
781
|
-
#### FU-500: Plaid Link UI
|
|
782
|
-
- **Priority:** Post-MVP (Tier 3+ use case)
|
|
783
|
-
- **Risk:** Medium
|
|
784
|
-
- **Complexity:** Medium
|
|
785
|
-
- **Dependencies:** FU-207 (Plaid MCP), FU-300 (UI foundation)
|
|
786
|
-
- **Deliverables:**
|
|
787
|
-
- Plaid Link button
|
|
788
|
-
- OAuth flow (popup or redirect)
|
|
789
|
-
- Success callback → store item
|
|
790
|
-
- Initial sync trigger
|
|
791
|
-
- Connected accounts list
|
|
792
|
-
- **Tests:**
|
|
793
|
-
- Component: PlaidLinkButton
|
|
794
|
-
- Integration: Full OAuth flow (sandbox)
|
|
795
|
-
- E2E: Connect bank → see accounts → sync → see transactions
|
|
796
|
-
- **Acceptance:** Users can connect Plaid accounts, see transactions
|
|
797
|
-
- **Status:** 🔨 Partial (Plaid MCP exists, UI TBD)
|
|
798
|
-
- **Rationale:** Plaid (live bank transaction sync) serves Tier 3+ ICPs (Cross-Border Solopreneurs, Agentic Portfolio) better than Tier 1. Tier 1 needs document upload (PDF invoices/receipts/statements), not live account connections.
|
|
799
|
-
#### FU-501: External Provider Connectors UI
|
|
800
|
-
- **Priority:** P1
|
|
801
|
-
- **Risk:** Medium
|
|
802
|
-
- **Complexity:** High
|
|
803
|
-
- **Dependencies:** FU-208 (provider MCP), FU-300 (UI foundation)
|
|
804
|
-
- **Deliverables:**
|
|
805
|
-
- Provider catalog display
|
|
806
|
-
- Connect provider button (OAuth per provider)
|
|
807
|
-
- Connected providers list
|
|
808
|
-
- Sync trigger UI
|
|
809
|
-
- Sync status display
|
|
810
|
-
- **Tests:**
|
|
811
|
-
- Component: ProviderCatalog, ConnectorList
|
|
812
|
-
- Integration: OAuth flow per provider
|
|
813
|
-
- E2E: Connect Gmail → sync attachments → see records
|
|
814
|
-
- **Acceptance:** Users can connect and sync providers
|
|
815
|
-
- **Status:** 🔨 Partial (provider catalog exists, UI TBD)
|
|
816
|
-
- **Note:** Only Gmail provider UI is required for MVP. X and Instagram connectors are post-MVP.
|
|
817
|
-
### Phase 6: Search and Discovery
|
|
818
|
-
**Goal:** Find records across multiple dimensions.
|
|
819
|
-
#### FU-600: Advanced Search UI
|
|
820
|
-
- **Priority:** P1
|
|
821
|
-
- **Risk:** Low
|
|
822
|
-
- **Complexity:** Medium
|
|
823
|
-
- **Dependencies:** FU-105 (search service), FU-301 (source list)
|
|
824
|
-
- **Deliverables:**
|
|
825
|
-
- Search input with auto-complete
|
|
826
|
-
- Filter panel (type, date range, properties)
|
|
827
|
-
- Result highlighting
|
|
828
|
-
- Zero results state
|
|
829
|
-
- **Constraints (per NEOTOMA_MANIFEST.md):**
|
|
830
|
-
- **MUST NOT include semantic search toggle** (MVP constraint; structured search only)
|
|
831
|
-
- **Post-MVP:** Semantic search mode will be added after MVP launch
|
|
832
|
-
- **Tests:**
|
|
833
|
-
- Component: SearchInput, FilterPanel
|
|
834
|
-
- Accessibility: Keyboard shortcuts (/ to focus search)
|
|
835
|
-
- E2E: Search → filter → see results
|
|
836
|
-
- **Acceptance:** Search returns results in <500ms, zero results handled gracefully
|
|
837
|
-
- **Status:** 🔨 Partial (basic search exists in RecordsTable)
|
|
838
|
-
- **Implementation Notes:**
|
|
839
|
-
- Remove any semantic/hybrid search mode toggles from UI
|
|
840
|
-
- Structured filters only (type, properties, date range, full-text keyword)
|
|
841
|
-
#### FU-601: Entity Explorer UI
|
|
842
|
-
- **Priority:** **P0** (Promoted from P2 — MVP-critical for validating entity resolution differentiator)
|
|
843
|
-
- **Risk:** Low
|
|
844
|
-
- **Complexity:** Medium
|
|
845
|
-
- **Dependencies:** FU-101 (entity resolution), FU-300 (UI foundation)
|
|
846
|
-
- **Deliverables:**
|
|
847
|
-
- Entity list view (browse entities by type: company, person, location, invoice, etc.)
|
|
848
|
-
- Entity detail view (shows entity snapshot + observations + provenance)
|
|
849
|
-
- Entity detail shows all linked source (via observations)
|
|
850
|
-
- Entity detail shows all relationships (PART_OF, REFERS_TO, SETTLES, etc.)
|
|
851
|
-
- Entity graph visualization (basic, can defer advanced viz to post-MVP)
|
|
852
|
-
- Filter by entity type
|
|
853
|
-
- Search entities by canonical name
|
|
854
|
-
- **UI Pattern:** List + Detail (see `docs/ui/patterns/list.md`, `docs/ui/patterns/detail.md`)
|
|
855
|
-
- **Tests:**
|
|
856
|
-
- Component: EntityList, EntityDetail, EntitySnapshot display
|
|
857
|
-
- Accessibility: Keyboard nav, ARIA labels
|
|
858
|
-
- E2E: Browse entities → click entity → see entity snapshot with observations
|
|
859
|
-
- E2E: Entity detail shows provenance (which source contributed which fields)
|
|
860
|
-
- E2E: Entity detail shows relationships to other entities
|
|
861
|
-
- **Acceptance:** Users can browse all entities, see entity snapshots with provenance, see relationships, navigate to source
|
|
862
|
-
- **Status:** ⏳ Not Started (prototype exists in `EntityExplorerView.tsx`)
|
|
863
|
-
- **Promotion Rationale:**
|
|
864
|
-
- Entity resolution (FU-101) is MVP-critical competitive differentiator
|
|
865
|
-
- Without Entity Explorer, users cannot see the output of entity resolution
|
|
866
|
-
- Entity-centric UX is "Primary UX" per `docs/architecture/architectural_decisions.md` Section 8
|
|
867
|
-
- Validates competitive differentiation (entity resolution across personal data)
|
|
868
|
-
### Phase 7: Auth and Multi-User
|
|
869
|
-
**Goal:** User authentication and data isolation for team support.
|
|
870
|
-
#### FU-700: Authentication Flow
|
|
871
|
-
- **Priority:** P0 (Required for MVP — supports Tier 1 founders & small teams)
|
|
872
|
-
- **Risk:** High (security)
|
|
873
|
-
- **Complexity:** Medium
|
|
874
|
-
- **Dependencies:** None
|
|
875
|
-
- **Deliverables:**
|
|
876
|
-
- OAuth integration
|
|
877
|
-
- Signup/signin UI
|
|
878
|
-
- Password reset
|
|
879
|
-
- OAuth providers (Google, GitHub)
|
|
880
|
-
- Session management
|
|
881
|
-
- **Tests:**
|
|
882
|
-
- Integration: Signup, signin, signout
|
|
883
|
-
- E2E: Full auth flow
|
|
884
|
-
- Security: Token validation, session expiry
|
|
885
|
-
- **Acceptance:** Users can signup/signin, sessions secure
|
|
886
|
-
- **Status:** 🔨 Partial (OAuth integrated, UI TBD)
|
|
887
|
-
#### FU-701: Row-Level Security (RLS)
|
|
888
|
-
- **Priority:** P0 (Required for MVP — enables team data isolation)
|
|
889
|
-
- **Risk:** High (data isolation)
|
|
890
|
-
- **Complexity:** Medium
|
|
891
|
-
- **Dependencies:** FU-700 (auth), FU-000 (schema)
|
|
892
|
-
- **Deliverables:**
|
|
893
|
-
- Add `user_id` column to `records`
|
|
894
|
-
- RLS policies (users see only their records)
|
|
895
|
-
- Migration to backfill `user_id`
|
|
896
|
-
- Update MCP actions to filter by `auth.uid()`
|
|
897
|
-
- **Tests:**
|
|
898
|
-
- Integration: User A cannot see User B's records
|
|
899
|
-
- E2E: Multi-user isolation
|
|
900
|
-
- **Acceptance:** 100% user isolation, no data leaks
|
|
901
|
-
- **Status:** ⏳ Not Started
|
|
902
|
-
#### FU-703: Local Storage / Offline Mode
|
|
903
|
-
- **Priority:** P0 (Required for MVP — local-first architecture)
|
|
904
|
-
- **Risk:** Medium
|
|
905
|
-
- **Complexity:** High
|
|
906
|
-
- **Dependencies:** FU-001 (crypto infrastructure)
|
|
907
|
-
- **Deliverables:**
|
|
908
|
-
- SQLite WASM with OPFS VFS for persistent local storage
|
|
909
|
-
- Encrypted local datastore (end-to-end encryption)
|
|
910
|
-
- Local file processing and storage
|
|
911
|
-
- Chat message persistence (encrypted localStorage)
|
|
912
|
-
- WebWorker RPC for isolated datastore operations
|
|
913
|
-
- Local-first sync capabilities (optional server sync)
|
|
914
|
-
- **Tests:**
|
|
915
|
-
- Integration: Local datastore operations (CRUD)
|
|
916
|
-
- Integration: Encryption/decryption of local data
|
|
917
|
-
- E2E: Offline mode functionality
|
|
918
|
-
- E2E: Data persistence across sessions
|
|
919
|
-
- **Acceptance:**
|
|
920
|
-
- Local datastore functional offline
|
|
921
|
-
- Data encrypted at rest
|
|
922
|
-
- Persistence across browser sessions
|
|
923
|
-
- **Status:** ✅ Complete (existing in `frontend/src/store/`, `frontend/src/worker/`, `frontend/src/utils/local_files.ts`)
|
|
924
|
-
- **Rationale:** Local-first architecture enables offline functionality and data ownership. Users can work offline and sync when online. Aligns with Tier 1 ICP needs for data privacy and offline access.
|
|
925
|
-
#### FU-702: Billing and Subscription Management
|
|
926
|
-
- **Priority:** P1 (Required for revenue collection — enables M2 milestone: €5k MRR)
|
|
927
|
-
- **Risk:** Medium (payment processing, revenue critical)
|
|
928
|
-
- **Complexity:** High
|
|
929
|
-
- **Dependencies:** FU-700 (auth), FU-701 (RLS)
|
|
930
|
-
- **Deliverables:**
|
|
931
|
-
- Stripe integration (subscriptions, invoices, webhooks)
|
|
932
|
-
- Subscription management (create, update, cancel)
|
|
933
|
-
- Billing plans (individual: €250–€1,250/month, team: €500–€2,500/month)
|
|
934
|
-
- Invoice generation and history
|
|
935
|
-
- Usage tracking (records, API calls, storage)
|
|
936
|
-
- Billing UI (subscription management, invoices, usage dashboard)
|
|
937
|
-
- **Tests:**
|
|
938
|
-
- Unit: Pricing calculations, currency formatting, plan validation
|
|
939
|
-
- Integration: Stripe subscription creation, webhook handling, invoice generation
|
|
940
|
-
- E2E: User subscribes → sees active subscription → views invoices
|
|
941
|
-
- **Acceptance:**
|
|
942
|
-
- > 95% payment success rate
|
|
943
|
-
- Subscription creation works end-to-end
|
|
944
|
-
- Invoice generation functional
|
|
945
|
-
- Revenue tracking accurate (enables M2: €5k MRR)
|
|
946
|
-
- **Status:** ⏳ Not Started
|
|
947
|
-
- **Rationale:** Required for revenue collection to meet M2 milestone (€5k MRR by Jan 10, 2026). Enables Tier 1 ICPs (individuals and small teams) to pay after experiencing value. See [`docs/feature_units/completed/FU-702/billing_spec.md`](../feature_units/completed/FU-702/billing_spec.md) for full specification.
|
|
948
|
-
### Phase 8: Observability and Monitoring
|
|
949
|
-
**Goal:** Metrics, logs, traces for production readiness.
|
|
950
|
-
#### FU-800: Technical Metrics (Prometheus)
|
|
951
|
-
- **Priority:** P1
|
|
952
|
-
- **Risk:** Low
|
|
953
|
-
- **Complexity:** Medium
|
|
954
|
-
- **Dependencies:** All feature units (cross-cutting)
|
|
955
|
-
- **Deliverables:**
|
|
956
|
-
- Prometheus client library integration
|
|
957
|
-
- Instrument all MCP actions (counters, histograms)
|
|
958
|
-
- Instrument ingestion pipeline (duration, success rate)
|
|
959
|
-
- Instrument search (latency, result counts)
|
|
960
|
-
- Instrument graph operations (orphan detection, integrity)
|
|
961
|
-
- Metrics endpoint (`/metrics`) for Prometheus scraping
|
|
962
|
-
- Grafana dashboards (real-time operations, graph health)
|
|
963
|
-
- **Metrics:** Technical metrics from `docs/specs/METRICS_REQUIREMENTS.md`:
|
|
964
|
-
- `neotoma_record_upload_duration_ms`, `neotoma_search_duration_ms`
|
|
965
|
-
- `neotoma_extraction_errors_total`, `neotoma_mcp_error_rate`
|
|
966
|
-
- `neotoma_graph_orphan_nodes_total`, `neotoma_db_connection_pool_usage`
|
|
967
|
-
- **Tests:**
|
|
968
|
-
- Unit: Metric emission
|
|
969
|
-
- Integration: Verify metrics collected by Prometheus
|
|
970
|
-
- **Acceptance:** All required technical metrics instrumented
|
|
971
|
-
- **Status:** ⏳ Not Started
|
|
972
|
-
#### FU-803: Product Analytics (PostHog/Mixpanel)
|
|
973
|
-
- **Priority:** P1
|
|
974
|
-
- **Risk:** Low
|
|
975
|
-
- **Complexity:** Low
|
|
976
|
-
- **Dependencies:** FU-700 (auth) for user identification
|
|
977
|
-
- **Deliverables:**
|
|
978
|
-
- Product analytics integration (PostHog recommended for open-source, or Mixpanel)
|
|
979
|
-
- Event tracking for user actions:
|
|
980
|
-
- Signup, first upload, first extraction, first entity view, first timeline view
|
|
981
|
-
- Search queries, AI queries, entity clicks
|
|
982
|
-
- Funnel analysis (signup → upload → extraction → entity → timeline)
|
|
983
|
-
- Retention cohort tracking (day 1, week 1, month 1)
|
|
984
|
-
- User segmentation and behavior analysis
|
|
985
|
-
- Product health dashboard (DAU/WAU/MAU, activation rates, retention)
|
|
986
|
-
- **Metrics:** Product metrics from `docs/specs/METRICS_REQUIREMENTS.md`:
|
|
987
|
-
- `activation_first_upload_rate`, `activation_first_extraction_rate`
|
|
988
|
-
- `day_1_retention`, `week_1_retention`, `month_1_retention`
|
|
989
|
-
- `daily_active_users`, `weekly_active_users`
|
|
990
|
-
- **Tests:**
|
|
991
|
-
- Integration: Verify events tracked correctly
|
|
992
|
-
- E2E: Complete user journey → verify events in analytics platform
|
|
993
|
-
- **Acceptance:** All required product metrics tracked
|
|
994
|
-
- **Status:** ⏳ Not Started
|
|
995
|
-
- **Rationale:** Product analytics (activation, retention, funnels) requires different tooling than technical metrics (latency, errors). PostHog provides open-source alternative to Mixpanel with similar capabilities.
|
|
996
|
-
#### FU-801: Logging Infrastructure
|
|
997
|
-
- **Priority:** P1
|
|
998
|
-
- **Risk:** Low
|
|
999
|
-
- **Complexity:** Low
|
|
1000
|
-
- **Dependencies:** None
|
|
1001
|
-
- **Deliverables:**
|
|
1002
|
-
- Structured logging (Winston or Pino)
|
|
1003
|
-
- Log levels (error, warn, info, debug)
|
|
1004
|
-
- PII filtering (no properties logged)
|
|
1005
|
-
- trace_id injection
|
|
1006
|
-
- **Tests:**
|
|
1007
|
-
- Unit: Log formatting, PII filtering
|
|
1008
|
-
- Integration: Logs emitted correctly
|
|
1009
|
-
- **Acceptance:** All errors logged, no PII leaks
|
|
1010
|
-
- **Status:** 🔨 Partial (console logging exists, needs structured logging)
|
|
1011
|
-
#### FU-802: Distributed Tracing
|
|
1012
|
-
- **Priority:** P2
|
|
1013
|
-
- **Risk:** Low
|
|
1014
|
-
- **Complexity:** Medium
|
|
1015
|
-
- **Dependencies:** FU-801 (logging)
|
|
1016
|
-
- **Deliverables:**
|
|
1017
|
-
- Tracing library (OpenTelemetry or similar)
|
|
1018
|
-
- Span creation for critical paths
|
|
1019
|
-
- trace_id propagation
|
|
1020
|
-
- Trace export (Jaeger or similar)
|
|
1021
|
-
- **Tests:**
|
|
1022
|
-
- Integration: Verify spans created
|
|
1023
|
-
- E2E: Upload → verify full trace
|
|
1024
|
-
- **Acceptance:** All critical paths traced
|
|
1025
|
-
- **Status:** ⏳ Not Started
|
|
1026
|
-
### Phase 9: Polish and Hardening
|
|
1027
|
-
**Goal:** Production-ready stability and UX polish.
|
|
1028
|
-
#### FU-900: Error Handling UI
|
|
1029
|
-
- **Priority:** P1
|
|
1030
|
-
- **Risk:** Low
|
|
1031
|
-
- **Complexity:** Low
|
|
1032
|
-
- **Dependencies:** FU-300 (UI foundation)
|
|
1033
|
-
- **Deliverables:**
|
|
1034
|
-
- Error boundary component
|
|
1035
|
-
- Toast notifications
|
|
1036
|
-
- Error page (404, 500)
|
|
1037
|
-
- Retry mechanisms
|
|
1038
|
-
- User-friendly error messages
|
|
1039
|
-
- **Tests:**
|
|
1040
|
-
- Component: Error boundary, toast
|
|
1041
|
-
- E2E: Trigger error → see message → retry
|
|
1042
|
-
- **Acceptance:** All errors handled gracefully
|
|
1043
|
-
- **Status:** 🔨 Partial (toast exists, needs error boundary)
|
|
1044
|
-
#### FU-901: Loading States
|
|
1045
|
-
- **Priority:** P1
|
|
1046
|
-
- **Risk:** Low
|
|
1047
|
-
- **Complexity:** Low
|
|
1048
|
-
- **Dependencies:** FU-300 (UI foundation)
|
|
1049
|
-
- **Deliverables:**
|
|
1050
|
-
- Skeleton loaders
|
|
1051
|
-
- Spinner components
|
|
1052
|
-
- Progress bars
|
|
1053
|
-
- Consistent loading UX
|
|
1054
|
-
- **Tests:**
|
|
1055
|
-
- Component: Skeleton, spinner
|
|
1056
|
-
- E2E: Loading states visible during actions
|
|
1057
|
-
- **Acceptance:** No blank screens, loading indicators everywhere
|
|
1058
|
-
- **Status:** 🔨 Partial (some loading states exist)
|
|
1059
|
-
#### FU-902: Empty States
|
|
1060
|
-
- **Priority:** P1
|
|
1061
|
-
- **Risk:** Low
|
|
1062
|
-
- **Complexity:** Low
|
|
1063
|
-
- **Dependencies:** FU-300 (UI foundation)
|
|
1064
|
-
- **Deliverables:**
|
|
1065
|
-
- No records: "Upload your first document"
|
|
1066
|
-
- No search results: "No matches found"
|
|
1067
|
-
- No entities: "Entities will appear after upload"
|
|
1068
|
-
- No events: "Events will appear from dates in documents"
|
|
1069
|
-
- **Tests:**
|
|
1070
|
-
- Component: Empty state variants
|
|
1071
|
-
- E2E: New user sees empty states → uploads → empty states gone
|
|
1072
|
-
- **Acceptance:** All empty states handled
|
|
1073
|
-
- **Status:** 🔨 Partial (some empty states exist)
|
|
1074
|
-
#### FU-903: Accessibility Audit and Fixes
|
|
1075
|
-
- **Priority:** P1
|
|
1076
|
-
- **Risk:** Low
|
|
1077
|
-
- **Complexity:** Medium
|
|
1078
|
-
- **Dependencies:** All UI Feature Units
|
|
1079
|
-
- **Deliverables:**
|
|
1080
|
-
- jest-axe integration
|
|
1081
|
-
- Fix all A11y violations
|
|
1082
|
-
- Keyboard navigation audit
|
|
1083
|
-
- Screen reader testing
|
|
1084
|
-
- WCAG AA compliance
|
|
1085
|
-
- **Tests:**
|
|
1086
|
-
- All components: No axe violations
|
|
1087
|
-
- E2E: Full keyboard navigation flow
|
|
1088
|
-
- **Acceptance:** 0 A11y violations, WCAG AA compliant
|
|
1089
|
-
- **Status:** ⏳ Not Started
|
|
1090
|
-
#### FU-904: Internationalization Setup
|
|
1091
|
-
- **Priority:** P2
|
|
1092
|
-
- **Risk:** Low
|
|
1093
|
-
- **Complexity:** Medium
|
|
1094
|
-
- **Dependencies:** All UI Feature Units
|
|
1095
|
-
- **Deliverables:**
|
|
1096
|
-
- i18n library (react-i18next or similar)
|
|
1097
|
-
- Extract all UI strings to translation files
|
|
1098
|
-
- Locale detection
|
|
1099
|
-
- Date/number formatting per locale
|
|
1100
|
-
- Language switcher UI
|
|
1101
|
-
- **Tests:**
|
|
1102
|
-
- Unit: Translation coverage
|
|
1103
|
-
- E2E: Switch locale → verify UI language, dates formatted
|
|
1104
|
-
- **Acceptance:** All UI text translatable, locale formatting works
|
|
1105
|
-
- **Status:** ⏳ Not Started
|
|
1106
|
-
## Feature Unit Summary Table
|
|
1107
|
-
| ID | Name | Phase | Priority | Risk | Complexity | Status | Blocking |
|
|
1108
|
-
| -------- | ------------------------------ | ----- | ------------- | ------ | ---------- | ------------------------------------ | ------------------------------ |
|
|
1109
|
-
| FU-000 | Database Schema | 0 | P0 | High | Medium | ✅ Complete | None |
|
|
1110
|
-
| FU-001 | Crypto Infrastructure | 0 | P0 | High | High | ✅ Complete | None |
|
|
1111
|
-
| FU-002 | Configuration | 0 | P0 | Medium | Low | ✅ Complete | None |
|
|
1112
|
-
| FU-100 | File Analysis | 1 | P0 | High | High | 🔨 Needs Update | FU-000 |
|
|
1113
|
-
| FU-100.5 | Schema Compliance Verification | 1 | P0 | Medium | Medium | 🔨 Pending | FU-100 |
|
|
1114
|
-
| FU-101 | Entity Resolution | 1 | P0 | Medium | Medium | 🔨 Partial | FU-100 |
|
|
1115
|
-
| FU-102 | Event Generation | 1 | P0 | Medium | Medium | 🔨 Partial | FU-100 |
|
|
1116
|
-
| FU-103 | Graph Builder | 1 | P0 | High | Medium | 🔨 Partial | FU-101, FU-102 |
|
|
1117
|
-
| FU-104 | Embedding Service | 1 | P1 | Medium | Medium | ✅ Complete | FU-100 |
|
|
1118
|
-
| FU-105 | Search Service | 1 | P0 | Medium | Medium | 🔨 Partial | FU-104 |
|
|
1119
|
-
| FU-200 | MCP Server Core | 2 | P0 | High | High | ✅ Complete | FU-000 |
|
|
1120
|
-
| FU-201 | store_record | 2 | P0 | Medium | Medium | ✅ Complete | FU-200, FU-050, FU-051 |
|
|
1121
|
-
| FU-202 | retrieve_records | 2 | P0 | Medium | Medium | ✅ Complete | FU-105, FU-200, FU-051 |
|
|
1122
|
-
| FU-203 | update_record | 2 | P0 | Low | Medium | ✅ Complete | FU-200, FU-050, FU-051 |
|
|
1123
|
-
| FU-204 | delete_record | 2 | P0 | Medium | Medium | ✅ Complete | FU-200, FU-050, FU-051 |
|
|
1124
|
-
| FU-205 | upload_file | 2 | P0 | High | High | ✅ Complete | FU-100, FU-200, FU-050, FU-051 |
|
|
1125
|
-
| FU-206 | get_file_url | 2 | P1 | Low | Low | ✅ Complete | FU-200 |
|
|
1126
|
-
| FU-207 | Plaid Integration | 2 | Post-MVP | Medium | High | ✅ Complete | FU-200 |
|
|
1127
|
-
| FU-208 | Provider Integrations | 2 | P1 | Medium | High | ✅ Complete | FU-200 |
|
|
1128
|
-
| FU-300 | UI Foundation | 3 | P0 | Medium | Medium | 🔨 Partial | None |
|
|
1129
|
-
| FU-301 | Source List | 3 | P0 | Low | Medium | 🔨 Partial (needs refactor) | FU-300, MCP retrieve actions |
|
|
1130
|
-
| FU-302 | Source Detail | 3 | P0 | Low | Medium | 🔨 Partial (needs refactor) | FU-300, MCP retrieve actions |
|
|
1131
|
-
| FU-303 | Timeline View | 3 | P0 | Medium | Medium | ⏳ Not Started | FU-102, FU-300 |
|
|
1132
|
-
| FU-304 | File Upload UI | 3 | P0 | Medium | Medium | 🔨 Partial | FU-205, FU-300 |
|
|
1133
|
-
| FU-305 | Dashboard | 3 | P1 | Low | Low | ⏳ Not Started | FU-300, MCP retrieve actions |
|
|
1134
|
-
| FU-306 | Settings UI | 3 | P2 | Low | Low | 🔨 Partial | FU-300 |
|
|
1135
|
-
| FU-307 | Chat/AI Panel | 3 | P0 → EXCLUDED | Medium | High | ❌ EXCLUDED (Architectural Decision) | FU-202, FU-300 |
|
|
1136
|
-
| FU-400 | Onboarding Welcome | 4 | P0 | Low | Low | ⏳ Not Started | FU-300 |
|
|
1137
|
-
| FU-401 | Onboarding Progress | 4 | P0 | Low | Low | ⏳ Not Started | FU-205 |
|
|
1138
|
-
| FU-402 | Onboarding Results | 4 | P0 | Low | Medium | ⏳ Not Started | FU-302 |
|
|
1139
|
-
| FU-403 | Onboarding State | 4 | P0 | Low | Low | ⏳ Not Started | FU-400-402 |
|
|
1140
|
-
| FU-500 | Plaid Link UI | 5 | Post-MVP | Medium | Medium | 🔨 Partial | FU-207, FU-300 |
|
|
1141
|
-
| FU-501 | Provider Connectors UI | 5 | P1 | Medium | High | 🔨 Partial | FU-208, FU-300 |
|
|
1142
|
-
| FU-600 | Advanced Search UI | 6 | P1 | Low | Medium | 🔨 Partial | FU-105, FU-301 |
|
|
1143
|
-
| FU-601 | Entity Explorer | 6 | **P0** (from P2) | Low | Medium | ⏳ Not Started (prototype exists) | FU-101, FU-300 |
|
|
1144
|
-
| FU-700 | Authentication UI | 7 | P0 | High | Medium | 🔨 Partial | None |
|
|
1145
|
-
| FU-701 | RLS Implementation | 7 | P0 | High | Medium | ⏳ Not Started | FU-700, FU-000 |
|
|
1146
|
-
| FU-703 | Local Storage / Offline Mode | 7 | P0 | Medium | High | ✅ Complete | FU-001 |
|
|
1147
|
-
| FU-702 | Billing and Subscription | 7 | P1 | Medium | High | ⏳ Not Started | FU-700, FU-701 |
|
|
1148
|
-
| FU-800 | Technical Metrics (Prometheus) | 8 | P1 | Low | Medium | ⏳ Not Started | All FUs |
|
|
1149
|
-
| FU-803 | Product Analytics (PostHog) | 8 | P1 | Low | Low | ⏳ Not Started | FU-700 |
|
|
1150
|
-
| FU-801 | Logging | 8 | P1 | Low | Low | 🔨 Partial | None |
|
|
1151
|
-
| FU-802 | Tracing | 8 | P2 | Low | Medium | ⏳ Not Started | FU-801 |
|
|
1152
|
-
| FU-900 | Error Handling UI | 9 | P1 | Low | Low | 🔨 Partial | FU-300 |
|
|
1153
|
-
| FU-901 | Loading States | 9 | P1 | Low | Low | 🔨 Partial | FU-300 |
|
|
1154
|
-
| FU-902 | Empty States | 9 | P1 | Low | Low | 🔨 Partial | FU-300 |
|
|
1155
|
-
| FU-903 | A11y Audit | 9 | P1 | Low | Medium | ⏳ Not Started | All UI FUs |
|
|
1156
|
-
| FU-904 | i18n Setup | 9 | P2 | Low | Medium | ⏳ Not Started | All UI FUs |
|
|
1157
|
-
\*All P0 features required for MVP (includes multi-user support for Tier 1 founders & small teams)
|
|
1158
|
-
## Execution Roadmap
|
|
1159
|
-
### Minimum Viable MVP (P0 Only, Multi-User Support)
|
|
1160
|
-
**Complete:**
|
|
1161
|
-
- ✅ Phases 0-2 (infrastructure, services, MCP) — mostly done
|
|
1162
|
-
- ✅ Phase 3 core UI (list, detail, chat) — mostly done
|
|
1163
|
-
**Remaining P0 Work:**
|
|
1164
|
-
1. **FU-101:** Complete entity resolution with canonical IDs (MVP-critical competitive differentiator)
|
|
1165
|
-
2. **FU-102:** Complete event generation service (MVP-critical competitive differentiator: timelines)
|
|
1166
|
-
3. **FU-103:** Harden graph builder (zero orphans enforcement)
|
|
1167
|
-
4. **FU-105:** Add deterministic ranking to search
|
|
1168
|
-
5. **FU-303:** Build timeline view UI
|
|
1169
|
-
6. **FU-304:** Dedicated upload UI with bulk upload support
|
|
1170
|
-
7. **FU-400-403:** Complete onboarding flow (4 Feature Units)
|
|
1171
|
-
8. **FU-700:** Authentication UI (OAuth)
|
|
1172
|
-
9. **FU-701:** Row-Level Security (RLS) for data isolation (MVP-critical for privacy/control positioning)
|
|
1173
|
-
**Note:** FU-703 (Local Storage / Offline Mode) is already complete.
|
|
1174
|
-
**Competitive Rationale:** FU-101 (Entity Resolution) and FU-102 (Timelines) are MVP-critical because they validate Neotoma's competitive differentiation. Provider memory (ChatGPT, Claude, Gemini) is conversation-only and doesn't offer entity resolution or timelines across personal data. These features demonstrate Neotoma's structured personal data memory vs. conversation-only provider memory.
|
|
1175
|
-
**Remaining P1 Work (Revenue Critical):** 10. **FU-702:** Billing and Subscription Management (enables M2: €5k MRR)
|
|
1176
|
-
**Estimated:** 10-11 P0 Feature Units remaining + 1 P1 Feature Unit (billing) for revenue-enabled MVP
|
|
1177
|
-
**Note:** FU-703 (Local Storage / Offline Mode) is already complete, bringing total P0 FUs to 11-12 (including complete ones).
|
|
1178
|
-
**Multi-User Rationale:** Multi-user support (FU-700, FU-701) is required for Tier 1 ICP \"AI-Native Founders & Small Teams (2–20 people)\". These users initially adopt individually, then expand to team usage organically, enabling bottom-up B2B expansion and higher ACVs (€3k–€15k/yr per team). See [`docs/specs/ICP_PRIORITY_TIERS.md`](./ICP_PRIORITY_TIERS.md) and [`docs/private/strategy_governance/revenue_timeline.md`](../private/strategy_governance/revenue_timeline.md).
|
|
1179
|
-
### Full MVP (P0 + P1)
|
|
1180
|
-
**Additional P1 Work:** 8. **FU-305:** Dashboard view 9. **FU-501:** Provider connectors UI 10. **FU-600:** Advanced search UI 12. **FU-702:** Billing and Subscription Management (revenue critical) 13. **FU-800:** Technical metrics (Prometheus) instrumentation 14. **FU-803:** Product analytics (PostHog/Mixpanel) integration 14. **FU-801:** Complete structured logging 15. **FU-900-902:** Polish (error handling, loading, empty states) 16. **FU-903:** A11y audit and fixes
|
|
1181
|
-
**Estimated:** Additional 9-10 Feature Units for full MVP (includes billing)
|
|
1182
|
-
## Critical Path for MVP Launch
|
|
1183
|
-
**Execution Order (P0 Only):**
|
|
1184
|
-
```mermaid
|
|
1185
|
-
%%{init: {'theme':'neutral'}}%%
|
|
1186
|
-
graph TD
|
|
1187
|
-
FU101[FU-101: Entity Resolution] --> FU103[FU-103: Graph Builder]
|
|
1188
|
-
FU102[FU-102: Event Generation] --> FU103
|
|
1189
|
-
FU103 --> FU105[FU-105: Deterministic Search]
|
|
1190
|
-
FU105 --> FU303[FU-303: Timeline View]
|
|
1191
|
-
FU205[FU-205: upload_file MCP<br/>✅ Complete] --> FU304[FU-304: Upload UI]
|
|
1192
|
-
FU300[FU-300: UI Foundation<br/>🔨 Partial] --> FU301[FU-301: Source List<br/>🔨 Partial]
|
|
1193
|
-
FU300 --> FU302[FU-302: Source Detail<br/>🔨 Partial]
|
|
1194
|
-
FU300 --> FU400[FU-400: Welcome Screen]
|
|
1195
|
-
FU101[FU-101: Entity Resolution<br/>🔨 Partial] --> FU601[FU-601: Entity Explorer<br/>⏳ Not Started<br/>P0]
|
|
1196
|
-
FU300 --> FU601
|
|
1197
|
-
FU304 --> FU401[FU-401: Processing Indicator]
|
|
1198
|
-
FU401 --> FU402[FU-402: Extraction Results]
|
|
1199
|
-
FU302 --> FU402
|
|
1200
|
-
FU303 --> FU402
|
|
1201
|
-
FU400 --> FU403[FU-403: Onboarding State]
|
|
1202
|
-
FU401 --> FU403
|
|
1203
|
-
FU402 --> FU403
|
|
1204
|
-
FU403 --> FU700[FU-700: Authentication UI]
|
|
1205
|
-
FU700 --> FU701[FU-701: RLS Implementation]
|
|
1206
|
-
FU701 --> Launch[MVP Launch Ready]
|
|
1207
|
-
FU301 --> Launch
|
|
1208
|
-
FU302 --> Launch
|
|
1209
|
-
FU303 --> Launch
|
|
1210
|
-
FU304 --> Launch
|
|
1211
|
-
FU601 --> Launch
|
|
1212
|
-
style FU101 fill:#fff4e6
|
|
1213
|
-
style FU102 fill:#fff4e6
|
|
1214
|
-
style FU103 fill:#fff4e6
|
|
1215
|
-
style FU105 fill:#fff4e6
|
|
1216
|
-
style FU301 fill:#ffe6e6
|
|
1217
|
-
style FU302 fill:#ffe6e6
|
|
1218
|
-
style FU601 fill:#ffcccc
|
|
1219
|
-
style FU301 fill:#ffe6e6
|
|
1220
|
-
style FU302 fill:#ffe6e6
|
|
1221
|
-
style FU303 fill:#ffe6e6
|
|
1222
|
-
style FU601 fill:#ffcccc
|
|
1223
|
-
style FU304 fill:#ffe6e6
|
|
1224
|
-
style FU400 fill:#ffe6e6
|
|
1225
|
-
style FU401 fill:#ffe6e6
|
|
1226
|
-
style FU402 fill:#ffe6e6
|
|
1227
|
-
style FU403 fill:#ffe6e6
|
|
1228
|
-
style Launch fill:#e6ffe6
|
|
1229
|
-
```
|
|
1230
|
-
**Critical Path (8 Feature Units):**
|
|
1231
|
-
1. FU-101: Entity Resolution (2-3 days)
|
|
1232
|
-
2. FU-102: Event Generation (2-3 days)
|
|
1233
|
-
3. FU-103: Graph Builder Hardening (1-2 days)
|
|
1234
|
-
4. FU-105: Deterministic Search (1-2 days)
|
|
1235
|
-
5. FU-303: Timeline View UI (3-4 days)
|
|
1236
|
-
6. FU-304: Upload UI (2-3 days)
|
|
1237
|
-
7. FU-400-402: Onboarding Screens (4-5 days)
|
|
1238
|
-
8. FU-403: Onboarding State (1-2 days)
|
|
1239
|
-
**Note:** FU-703 (Local Storage / Offline Mode) is already complete and not on critical path.
|
|
1240
|
-
**Total Estimated:** 16-24 developer-days for minimal MVP
|
|
1241
|
-
## Cursor Agent Execution Estimates
|
|
1242
|
-
### Methodology
|
|
1243
|
-
Estimates account for:
|
|
1244
|
-
- **Spec writing:** Following `feature_unit_spec.md` template (1-3 hours per FU)
|
|
1245
|
-
- **Implementation:** Code changes (2-8 hours per FU depending on complexity)
|
|
1246
|
-
- **Testing:** Unit + integration + E2E (1-4 hours per FU)
|
|
1247
|
-
- **Documentation:** Updates to subsystem docs (0.5-1 hour per FU)
|
|
1248
|
-
- **Review cycles:** Iteration on spec/code (assume 1-2 cycles, 20% overhead)
|
|
1249
|
-
**Agent efficiency factors:**
|
|
1250
|
-
- ✅ **Accelerators:** Templates exist, architecture documented, patterns established
|
|
1251
|
-
- ⚠️ **Slowdowns:** High-risk FUs require careful review, determinism testing is thorough, cross-FU dependencies
|
|
1252
|
-
### Human (Mark) Participation Model
|
|
1253
|
-
Your involvement is modeled as **review and decision-making time** per Feature Unit, proportional to its risk and complexity:
|
|
1254
|
-
- **Low-touch FU (simple UI / low-risk glue):**
|
|
1255
|
-
- Examples: basic UI components, empty states, loading states.
|
|
1256
|
-
- **Your time:** ~0.25–0.5 hours (15–30 minutes) per FU for spec skim + single-pass code review.
|
|
1257
|
-
- **Medium-touch FU (non-trivial logic, moderate risk):**
|
|
1258
|
-
- Examples: new UI views, search UI, onboarding flow, metrics/logging.
|
|
1259
|
-
- **Your time:** ~0.5–1.0 hours per FU for spec review, code review, and 1 iteration.
|
|
1260
|
-
- **High-touch FU (schema, security, graph, auth, RLS):**
|
|
1261
|
-
- Examples: entities/events tables, graph builder, auth/RLS, tracing, i18n.
|
|
1262
|
-
- **Your time:** ~1.5–2.5 hours per FU for deep spec design, migration review, and 1–2 code iterations.
|
|
1263
|
-
This yields approximate **human time per FU**:
|
|
1264
|
-
- **Low complexity + low risk:** 0.25–0.5h
|
|
1265
|
-
- **Medium complexity and/or medium risk:** 0.5–1.0h
|
|
1266
|
-
- **High complexity and/or high risk:** 1.5–2.5h
|
|
1267
|
-
These ranges are applied to the scenarios below.
|
|
1268
|
-
### Summary by Scenario
|
|
1269
|
-
#### Scenario A: Minimal MVP (P0 Only, Multi-User Support)
|
|
1270
|
-
**Remaining P0 Work:**
|
|
1271
|
-
- Phase 3: FU-300 (design system completion) → 3-4 hours
|
|
1272
|
-
- Phase 1: FU-101, FU-102, FU-103, FU-105 → 16-22 hours
|
|
1273
|
-
- Phase 3: FU-303, FU-304 → 9-11 hours (includes bulk upload)
|
|
1274
|
-
- Phase 4: FU-400, FU-401, FU-402, FU-403 → 9-13 hours
|
|
1275
|
-
- Phase 7: FU-700, FU-701 → 9-11 hours (auth + RLS)
|
|
1276
|
-
**Note:** FU-703 (Local Storage / Offline Mode) is already complete (✅).
|
|
1277
|
-
**Agent Total:** 46-61 hours
|
|
1278
|
-
**Your Time (by touch intensity):**
|
|
1279
|
-
- Phase 3: 1 low-touch (FU-300 design system) → ~0.25–0.5h
|
|
1280
|
-
- Phase 1: 2 high-touch (FU-101, FU-102), 2 medium-touch (FU-103, FU-105) → ~4.5–7h
|
|
1281
|
-
- Phase 3: 2 medium-touch (FU-303, FU-304) → ~1–2h
|
|
1282
|
-
- Phase 4: 1 medium-touch (FU-402), 3 low-touch (FU-400, FU-401, FU-403) → ~1.5–3h
|
|
1283
|
-
- Phase 7: 2 high-touch (FU-700, FU-701) → ~3–5h
|
|
1284
|
-
**Your Total:** ~10.25–17.5 hours
|
|
1285
|
-
**Calendar:** 5-7 days (8-hour agent workdays with your reviews interleaved)
|
|
1286
|
-
**FUs Complete:** 30/40 (75%)
|
|
1287
|
-
#### Scenario B: Full MVP (P0 + P1, Multi-User Support) — RECOMMENDED
|
|
1288
|
-
**Scenario A PLUS:**
|
|
1289
|
-
- Phase 3: FU-305, FU-306 → 6-8 hours
|
|
1290
|
-
- Phase 5: FU-501 → 5-6 hours (FU-500 Plaid UI moved to post-MVP)
|
|
1291
|
-
- Phase 6: FU-600 → 4-5 hours
|
|
1292
|
-
- Phase 7: FU-702 → 12-16 hours (billing, revenue critical)
|
|
1293
|
-
- Phase 8: FU-800, FU-801 → 10-13 hours
|
|
1294
|
-
- Phase 9: FU-900, FU-901, FU-902, FU-903 → 11-15 hours
|
|
1295
|
-
**Agent Total:** 91-120 hours
|
|
1296
|
-
**Your Time (by touch intensity):**
|
|
1297
|
-
- Scenario A subset: ~10–17h (from above)
|
|
1298
|
-
- Phase 3 (P1): FU-305, FU-306 → 2 low/medium-touch FUs → ~1–2h
|
|
1299
|
-
- Phase 5: FU-501 (high) → ~1.5–2h (FU-500 Plaid UI moved to post-MVP)
|
|
1300
|
-
- Phase 6: FU-600 (medium) → ~0.5–1h
|
|
1301
|
-
- Phase 7: FU-702 (high) → ~2–3.5h (billing, revenue critical, requires careful review)
|
|
1302
|
-
- Phase 8: FU-800 (high), FU-801 (medium) → ~2–3.5h
|
|
1303
|
-
- Phase 9: FU-900, FU-901, FU-902 (low/medium), FU-903 (medium/high) → ~2–4h
|
|
1304
|
-
**Your Total:** ~20–32 hours
|
|
1305
|
-
**Calendar:** 10-13 days
|
|
1306
|
-
**FUs Complete:** 38/40 (95%)
|
|
1307
|
-
#### Scenario C: Full MVP (P0 + P1, Multi-User) — Same as Scenario B
|
|
1308
|
-
**Note:** Multi-user support (FU-700, FU-701) is now included in Scenario A and B as P0 requirements. Scenario C is identical to Scenario B.
|
|
1309
|
-
### Execution Timeline
|
|
1310
|
-
**Note:** For detailed week-by-week execution plans with Cursor commands and step-by-step workflows, see [`docs/specs/MVP_EXECUTION_PLAN.md`](./MVP_EXECUTION_PLAN.md).
|
|
1311
|
-
**High-Level Timeline:**
|
|
1312
|
-
- **Minimal MVP:** 7-9 days (5-7 days implementation + 1-2 days cleanup)
|
|
1313
|
-
- **Full MVP:** 12-15 days (10-13 days implementation + 1-2 days cleanup)
|
|
1314
|
-
**Velocity:** 2-3 FUs/day sustained, 8-10 agent-hours/day
|
|
1315
|
-
**Risk Buffer:** Add 20-30% for unforeseen complexity and review iterations.
|
|
1316
|
-
## Feature Unit Specifications
|
|
1317
|
-
Each Feature Unit requires:
|
|
1318
|
-
- **Spec Document:** Full specification following `docs/feature_units/standards/feature_unit_spec.md`
|
|
1319
|
-
- **Manifest:** YAML manifest following `docs/feature_units/standards/manifest_template.yaml`
|
|
1320
|
-
- **Implementation:** Code changes
|
|
1321
|
-
- **Tests:** Unit + integration + E2E
|
|
1322
|
-
- **Documentation:** Updates to subsystem docs if patterns change
|
|
1323
|
-
**Template Location:** `docs/feature_units/standards/`
|
|
1324
|
-
**Completed Feature Units:** Store in `docs/feature_units/completed/FU-XXX/`
|
|
1325
|
-
## Risks and Mitigations
|
|
1326
|
-
**Note:** For tactical risk mitigation processes and step-by-step review workflows, see [`docs/specs/MVP_EXECUTION_PLAN.md`](./MVP_EXECUTION_PLAN.md) section "Risk Mitigation".
|
|
1327
|
-
### High-Risk Feature Units
|
|
1328
|
-
| FU | Risk Category | Strategic Mitigation |
|
|
1329
|
-
| ------ | ------------------- | ------------------------------------------------------------- |
|
|
1330
|
-
| FU-000 | Data loss (schema) | Test migrations, backups, rollback plan |
|
|
1331
|
-
| FU-001 | Security (crypto) | Security audit, key management best practices |
|
|
1332
|
-
| FU-100 | Extraction accuracy | Test fixtures, manual validation, schema detection tests |
|
|
1333
|
-
| FU-103 | Graph integrity | Transactional inserts, orphan detection, integrity tests |
|
|
1334
|
-
| FU-200 | MCP contracts | Versioning, backward compatibility tests, contract validation |
|
|
1335
|
-
| FU-205 | File ingestion | Deduplication, content hashing, retry logic |
|
|
1336
|
-
| FU-700 | Auth security | Penetration testing, session management, token validation |
|
|
1337
|
-
| FU-701 | RLS isolation | Multi-user tests, data leak tests |
|
|
1338
|
-
**Strategic Mitigation Approach:**
|
|
1339
|
-
- All high-risk FUs require tech lead + 2 reviewer approval
|
|
1340
|
-
- Staging deployment before production
|
|
1341
|
-
- Real-time monitoring post-launch
|
|
1342
|
-
- Rollback plan documented
|
|
1343
|
-
## MVP Launch Checklist
|
|
1344
|
-
**Note:** For detailed launch readiness checklist with tactical verification steps, see [`docs/specs/MVP_EXECUTION_PLAN.md`](./MVP_EXECUTION_PLAN.md) section "Success Criteria".
|
|
1345
|
-
**Strategic Checklist:**
|
|
1346
|
-
**Technical Readiness:**
|
|
1347
|
-
- [ ] All P0 Feature Units complete (including FU-700, FU-701 for multi-user)
|
|
1348
|
-
- [ ] All critical path tests passing (100% coverage)
|
|
1349
|
-
- [ ] Graph integrity verified (0 orphans, 0 cycles)
|
|
1350
|
-
- [ ] Multi-user isolation verified (RLS policies tested)
|
|
1351
|
-
- [ ] Bulk upload tested (50+ files)
|
|
1352
|
-
- [ ] Post-MVP features disabled/flagged (semantic search, Plaid, X, Instagram)
|
|
1353
|
-
**Product Readiness:**
|
|
1354
|
-
- [ ] Onboarding flow complete
|
|
1355
|
-
- [ ] Core workflows functional (upload → extraction → timeline → AI query)
|
|
1356
|
-
- [ ] Empty states handled
|
|
1357
|
-
- [ ] Error states handled with retry
|
|
1358
|
-
**Acceptance Criteria:**
|
|
1359
|
-
- [ ] > 60% first-upload activation rate
|
|
1360
|
-
- [ ] > 95% upload success rate
|
|
1361
|
-
- [ ] <5s P95 upload latency
|
|
1362
|
-
- [ ] > 80% extraction success rate
|
|
1363
|
-
- [ ] 0 orphan nodes
|
|
1364
|
-
- [ ] 0 nondeterminism violations
|
|
1365
|
-
- [ ] <2% MCP hallucination rate
|
|
1366
|
-
**See:** `docs/specs/METRICS_REQUIREMENTS.md` for complete criteria
|
|
1367
|
-
## Post-MVP Roadmap (v1.1+)
|
|
1368
|
-
**P2 Feature Units (Nice-to-Have):**
|
|
1369
|
-
- FU-306: Full settings UI
|
|
1370
|
-
- FU-601: Entity explorer
|
|
1371
|
-
- FU-802: Distributed tracing
|
|
1372
|
-
- FU-904: Full i18n
|
|
1373
|
-
**Future Enhancements:**
|
|
1374
|
-
- LLM-assisted extraction (with deterministic fallback)
|
|
1375
|
-
- Semantic search (hybrid)
|
|
1376
|
-
- Real-time collaboration (async multi-user in MVP)
|
|
1377
|
-
- Team invitation and workspace management UI
|
|
1378
|
-
- Mobile app
|
|
1379
|
-
- Advanced analytics
|
|
1380
|
-
## Detailed Documentation References
|
|
1381
|
-
**For strategic planning and tracking:**
|
|
1382
|
-
- This document (MVP_FEATURE_UNITS.md) — Complete Feature Unit inventory, estimates, dependencies
|
|
1383
|
-
**For tactical execution in Cursor:**
|
|
1384
|
-
- [`docs/specs/MVP_EXECUTION_PLAN.md`](./MVP_EXECUTION_PLAN.md) — Step-by-step Cursor command workflows, daily execution patterns
|
|
1385
|
-
**For creating Feature Unit specs:**
|
|
1386
|
-
- [`docs/feature_units/standards/feature_unit_spec.md`](../feature_units/standards/feature_unit_spec.md) — Spec template
|
|
1387
|
-
- [`docs/feature_units/standards/manifest_template.yaml`](../feature_units/standards/manifest_template.yaml) — Manifest format
|
|
1388
|
-
- [`docs/feature_units/standards/execution_instructions.md`](../feature_units/standards/execution_instructions.md) — Implementation flow
|
|
1389
|
-
- [`docs/NEOTOMA_MANIFEST.md`](../NEOTOMA_MANIFEST.md) — Architectural constraints
|
|
1390
|
-
- [`docs/specs/IMPLEMENTATION_OVERWRITE_GUIDE.md`](./IMPLEMENTATION_OVERWRITE_GUIDE.md) — **Required code changes to comply with manifest**
|
|
1391
|
-
- [`docs/specs/METRICS_REQUIREMENTS.md`](./METRICS_REQUIREMENTS.md) — Success metrics
|
|
1392
|
-
## Cursor Agent Execution Estimates
|
|
1393
|
-
### Methodology
|
|
1394
|
-
Estimates account for:
|
|
1395
|
-
- **Spec writing:** Following `feature_unit_spec.md` template (1-3 hours per FU)
|
|
1396
|
-
- **Implementation:** Code changes (2-8 hours per FU depending on complexity)
|
|
1397
|
-
- **Testing:** Unit + integration + E2E (1-4 hours per FU)
|
|
1398
|
-
- **Documentation:** Updates to subsystem docs (0.5-1 hour per FU)
|
|
1399
|
-
- **Review cycles:** Iteration on spec/code (assume 1-2 cycles, 20% overhead)
|
|
1400
|
-
**Agent efficiency factors:**
|
|
1401
|
-
- ✅ **Accelerators:** Templates exist, architecture documented, patterns established
|
|
1402
|
-
- ⚠️ **Slowdowns:** High-risk FUs require careful review, determinism testing is thorough, cross-FU dependencies
|
|
1403
|
-
### Phase-by-Phase Estimates
|
|
1404
|
-
#### Phase 0: Foundation (✅ COMPLETE)
|
|
1405
|
-
**Status:** All infrastructure in place
|
|
1406
|
-
**Agent Time:** 0 hours (already done)
|
|
1407
|
-
#### Phase 1: Core Services
|
|
1408
|
-
**Remaining Work:**
|
|
1409
|
-
- **FU-101: Entity Resolution** — ⏳ NEW (not yet implemented)
|
|
1410
|
-
- Create `entities` table schema
|
|
1411
|
-
- Implement `generateEntityId()` (hash-based)
|
|
1412
|
-
- Implement `normalizeEntityValue()` with type-specific rules
|
|
1413
|
-
- Entity extraction from `properties` fields (vendor_name, full_name, etc.)
|
|
1414
|
-
- Entity-record edge insertion (transactional)
|
|
1415
|
-
- Migration to add entities table
|
|
1416
|
-
- **Agent Estimate:** 6-8 hours (complex: new table + deterministic logic + migration)
|
|
1417
|
-
- **FU-102: Event Generation** — ⏳ NEW (not yet implemented)
|
|
1418
|
-
- Create `events` table schema
|
|
1419
|
-
- Implement `generateEventId()` (hash-based)
|
|
1420
|
-
- Date field detection per schema type
|
|
1421
|
-
- Event type mapping (date_issued → InvoiceIssued)
|
|
1422
|
-
- Event-record and event-entity edge insertion
|
|
1423
|
-
- Migration to add events table
|
|
1424
|
-
- **Agent Estimate:** 5-7 hours (similar to FU-101, slightly simpler)
|
|
1425
|
-
- **FU-103: Graph Builder Hardening** — 🔨 PARTIAL (basic inserts exist, needs integrity)
|
|
1426
|
-
- Wrap all graph inserts in transactions
|
|
1427
|
-
- Add orphan node detection query
|
|
1428
|
-
- Add cycle detection query
|
|
1429
|
-
- Enforce referential integrity
|
|
1430
|
-
- Add pre-commit hooks for integrity checks
|
|
1431
|
-
- **Agent Estimate:** 3-4 hours (mostly testing and constraint enforcement)
|
|
1432
|
-
- **FU-105: Deterministic Search** — 🔨 PARTIAL (search exists, needs ranking)
|
|
1433
|
-
- Implement deterministic ranking algorithm with tiebreakers
|
|
1434
|
-
- Add tests for ranking consistency (100 runs → same order)
|
|
1435
|
-
- Document ranking logic
|
|
1436
|
-
- **Agent Estimate:** 2-3 hours (algorithm + tests)
|
|
1437
|
-
**Phase 1 Total:** 16-22 agent-hours
|
|
1438
|
-
#### Phase 2: MCP Layer (✅ COMPLETE)
|
|
1439
|
-
**Status:** All 12 actions implemented and tested
|
|
1440
|
-
**Agent Time:** 0 hours (already done)
|
|
1441
|
-
#### Phase 3: UI Layer
|
|
1442
|
-
**Remaining Work:**
|
|
1443
|
-
- **FU-303: Timeline View** — ⏳ NEW
|
|
1444
|
-
- Create TimelineView component
|
|
1445
|
-
- Fetch events via MCP or API
|
|
1446
|
-
- Chronological sorting UI
|
|
1447
|
-
- Date grouping (day/month/year headers)
|
|
1448
|
-
- Click event → navigate to record
|
|
1449
|
-
- Filter by date range
|
|
1450
|
-
- Virtualized scrolling (react-window)
|
|
1451
|
-
- **Agent Estimate:** 5-6 hours (new component, moderate complexity)
|
|
1452
|
-
- **FU-304: Upload UI Enhancement** — 🔨 PARTIAL (upload in ChatPanel, needs dedicated page)
|
|
1453
|
-
- Extract upload from ChatPanel into standalone component
|
|
1454
|
-
- Create dedicated /upload route
|
|
1455
|
-
- Enhanced drag-drop zone
|
|
1456
|
-
- **Bulk upload support** (multiple files, folder import)
|
|
1457
|
-
- **Upload queue management** (track multiple uploads)
|
|
1458
|
-
- **Progress tracking** (per-file and overall)
|
|
1459
|
-
- **Resume on failure** (retry failed uploads)
|
|
1460
|
-
- **Agent Estimate:** 4-5 hours (refactor + bulk upload features)
|
|
1461
|
-
- **FU-305: Dashboard** — ⏳ NEW
|
|
1462
|
-
- Create Dashboard component
|
|
1463
|
-
- Stats widgets (total records/entities/events)
|
|
1464
|
-
- Recent records widget
|
|
1465
|
-
- Quick actions
|
|
1466
|
-
- **Agent Estimate:** 3-4 hours (straightforward aggregation UI)
|
|
1467
|
-
- **FU-306: Settings UI** — 🔨 PARTIAL (FloatingSettingsButton exists, needs full page)
|
|
1468
|
-
- Create Settings page
|
|
1469
|
-
- Locale selector
|
|
1470
|
-
- Theme toggle
|
|
1471
|
-
- Connected integrations list
|
|
1472
|
-
- **Agent Estimate:** 3-4 hours (form UI)
|
|
1473
|
-
**Phase 3 Total:** 17-22 agent-hours (includes FU-300 design system completion)
|
|
1474
|
-
#### Phase 4: Onboarding Flow
|
|
1475
|
-
**All NEW:**
|
|
1476
|
-
- **FU-400: Welcome Screen** — ⏳
|
|
1477
|
-
- Create WelcomeScreen component
|
|
1478
|
-
- Copy and layout per spec
|
|
1479
|
-
- CTA button → upload
|
|
1480
|
-
- Skip link for returning users
|
|
1481
|
-
- **Agent Estimate:** 2-3 hours (simple static screen)
|
|
1482
|
-
- **FU-401: Processing Indicator** — ⏳
|
|
1483
|
-
- Create ProcessingIndicator component
|
|
1484
|
-
- Step-by-step progress (5 steps)
|
|
1485
|
-
- Live region for screen readers
|
|
1486
|
-
- Timeout handling
|
|
1487
|
-
- **Agent Estimate:** 2-3 hours (progress UI + accessibility)
|
|
1488
|
-
- **FU-402: Extraction Results** — ⏳
|
|
1489
|
-
- Create ExtractionResults component
|
|
1490
|
-
- Display fields, entities, events
|
|
1491
|
-
- Entity highlighting
|
|
1492
|
-
- CTAs (View Timeline, Upload Another, Ask AI)
|
|
1493
|
-
- **Agent Estimate:** 3-4 hours (layout + data display)
|
|
1494
|
-
- **FU-403: Onboarding State** — ⏳
|
|
1495
|
-
- Create useOnboardingState hook
|
|
1496
|
-
- localStorage persistence
|
|
1497
|
-
- Milestone tracking
|
|
1498
|
-
- Resume logic
|
|
1499
|
-
- Completion detection
|
|
1500
|
-
- **Agent Estimate:** 2-3 hours (state management)
|
|
1501
|
-
**Phase 4 Total:** 9-13 agent-hours
|
|
1502
|
-
#### Phase 5: Integrations (Post-MVP: FU-500 Plaid UI)
|
|
1503
|
-
**Remaining Work:**
|
|
1504
|
-
- **FU-500: Plaid Link UI** — 🔨 PARTIAL (POST-MVP, Tier 3+ use case)
|
|
1505
|
-
- PlaidLink component (use Plaid SDK)
|
|
1506
|
-
- OAuth flow handling
|
|
1507
|
-
- Success/error callbacks
|
|
1508
|
-
- Connected accounts display
|
|
1509
|
-
- **Agent Estimate:** 4-5 hours (third-party SDK integration)
|
|
1510
|
-
- **Note:** Moved to post-MVP. Plaid serves Tier 3+ ICPs (Cross-Border Solopreneurs, Agentic Portfolio), not Tier 1 MVP targets.
|
|
1511
|
-
- **FU-501: Provider Connectors UI** — 🔨 PARTIAL (catalog exists, UI TBD)
|
|
1512
|
-
- ProviderCatalog component
|
|
1513
|
-
- Connect button per provider
|
|
1514
|
-
- OAuth flow routing
|
|
1515
|
-
- Sync trigger UI
|
|
1516
|
-
- **Agent Estimate:** 5-6 hours (multiple providers, OAuth complexity)
|
|
1517
|
-
**Phase 5 Total:** 9-11 agent-hours
|
|
1518
|
-
#### Phase 6: Search and Discovery
|
|
1519
|
-
**Remaining Work:**
|
|
1520
|
-
- **FU-600: Advanced Search UI** — 🔨 PARTIAL (basic search exists, needs enhancement)
|
|
1521
|
-
- Advanced filter panel (date range, property filters)
|
|
1522
|
-
- Search mode toggle (keyword/semantic/both)
|
|
1523
|
-
- Auto-complete suggestions
|
|
1524
|
-
- Result highlighting
|
|
1525
|
-
- **Agent Estimate:** 4-5 hours (enhancement to existing)
|
|
1526
|
-
- **FU-601: Entity Explorer** — ⏳ NEW (P2, optional for MVP)
|
|
1527
|
-
- EntityList component
|
|
1528
|
-
- EntityDetail component
|
|
1529
|
-
- Graph visualization (optional)
|
|
1530
|
-
- **Agent Estimate:** 5-6 hours (new feature area)
|
|
1531
|
-
**Phase 6 Total (P1 only):** 4-5 agent-hours (excluding P2 FU-601)
|
|
1532
|
-
#### Phase 7: Auth and Multi-User (Required for MVP)
|
|
1533
|
-
**Required for Tier 1 founders & small teams (2–20 people):**
|
|
1534
|
-
- **FU-700: Authentication UI** — 🔨 PARTIAL
|
|
1535
|
-
- Signup/signin forms
|
|
1536
|
-
- Password reset flow
|
|
1537
|
-
- OAuth buttons
|
|
1538
|
-
- Session management
|
|
1539
|
-
- **Agent Estimate:** 4-5 hours (OAuth integration)
|
|
1540
|
-
- **Rationale:** Enables Tier 1 small team ICP; individual adoption → team expansion; supports mid-market ACVs (€3k–€15k/yr)
|
|
1541
|
-
- **FU-701: RLS Implementation** — ⏳ NEW
|
|
1542
|
-
- Add user_id column to records
|
|
1543
|
-
- Create RLS policies
|
|
1544
|
-
- Migration with backfill
|
|
1545
|
-
- Update all queries to filter by user
|
|
1546
|
-
- **Agent Estimate:** 5-6 hours (high-risk schema change + testing)
|
|
1547
|
-
- **Rationale:** Data isolation required for team support; enables bottom-up B2B expansion
|
|
1548
|
-
- **FU-702: Billing and Subscription Management** — ⏳ NEW (P1, Revenue Critical)
|
|
1549
|
-
- Stripe integration (subscriptions, invoices, webhooks)
|
|
1550
|
-
- Subscription management (create, update, cancel)
|
|
1551
|
-
- Billing plans (individual: €250–€1,250/month, team: €500–€2,500/month)
|
|
1552
|
-
- Invoice generation and history
|
|
1553
|
-
- Usage tracking (records, API calls, storage)
|
|
1554
|
-
- Billing UI (subscription management, invoices, usage dashboard)
|
|
1555
|
-
- **Agent Estimate:** 12-16 hours (high complexity: Stripe integration + UI + usage tracking)
|
|
1556
|
-
- **Rationale:** Required for revenue collection to meet M2 milestone (€5k MRR by Jan 10, 2026). Enables Tier 1 ICPs to pay after experiencing value. See [`docs/feature_units/completed/FU-702/billing_spec.md`](../feature_units/completed/FU-702/billing_spec.md) for full specification.
|
|
1557
|
-
**Phase 7 Total:** 21-27 agent-hours (9-11 for P0 auth/RLS + 12-16 for P1 billing)
|
|
1558
|
-
**Note:** Multi-user support (FU-700, FU-701) is P0 for MVP because Tier 1 includes "AI-Native Founders & Small Teams" who need team functionality. Billing (FU-702) is P1 but revenue-critical for M2 milestone. See [`docs/specs/ICP_PROFILES.md`](./ICP_PROFILES.md) section 3 for detailed small team ICP profile.
|
|
1559
|
-
#### Phase 8: Observability
|
|
1560
|
-
**Remaining Work:**
|
|
1561
|
-
- **FU-800: Technical Metrics (Prometheus)** — ⏳ NEW (P1)
|
|
1562
|
-
- Add Prometheus client library
|
|
1563
|
-
- Instrument all MCP actions (8 MVP actions × counters + histograms)
|
|
1564
|
-
- Instrument ingestion pipeline (duration, success rate)
|
|
1565
|
-
- Instrument search (latency, result counts)
|
|
1566
|
-
- Instrument graph operations (orphan detection, integrity)
|
|
1567
|
-
- Create /metrics endpoint for Prometheus scraping
|
|
1568
|
-
- Set up Grafana dashboards (real-time operations, graph health)
|
|
1569
|
-
- **Agent Estimate:** 6-8 hours (cross-cutting, touches many files)
|
|
1570
|
-
- **FU-803: Product Analytics (PostHog/Mixpanel)** — ⏳ NEW (P1)
|
|
1571
|
-
- Integrate PostHog (recommended) or Mixpanel
|
|
1572
|
-
- Track user events (signup, upload, extraction, entity view, timeline view, search, AI query)
|
|
1573
|
-
- Set up funnel analysis (signup → upload → extraction → entity → timeline)
|
|
1574
|
-
- Configure retention cohort tracking (day 1, week 1, month 1)
|
|
1575
|
-
- Create product health dashboard (DAU/WAU/MAU, activation rates)
|
|
1576
|
-
- **Agent Estimate:** 3-4 hours (event tracking, dashboard setup)
|
|
1577
|
-
- **Rationale:** Product analytics (activation, retention, funnels) requires different tooling than technical metrics. PostHog provides open-source alternative to Mixpanel.
|
|
1578
|
-
- **FU-801: Structured Logging** — 🔨 PARTIAL (console.log exists, needs structure)
|
|
1579
|
-
- Add Winston or Pino
|
|
1580
|
-
- Convert all console.log to structured logs
|
|
1581
|
-
- Add PII filtering
|
|
1582
|
-
- Add trace_id injection
|
|
1583
|
-
- **Agent Estimate:** 4-5 hours (refactor existing logs)
|
|
1584
|
-
- **FU-802: Distributed Tracing** — ⏳ NEW (P2, optional)
|
|
1585
|
-
- OpenTelemetry setup
|
|
1586
|
-
- Span instrumentation
|
|
1587
|
-
- Trace propagation
|
|
1588
|
-
- **Agent Estimate:** 6-7 hours (new infrastructure)
|
|
1589
|
-
**Phase 8 Total (P1 only):** 13-17 agent-hours
|
|
1590
|
-
#### Phase 9: Polish and Hardening
|
|
1591
|
-
**Remaining Work:**
|
|
1592
|
-
- **FU-900: Error Handling UI** — 🔨 PARTIAL (toast exists, needs error boundary)
|
|
1593
|
-
- React Error Boundary component
|
|
1594
|
-
- Enhance error messages
|
|
1595
|
-
- Retry mechanisms
|
|
1596
|
-
- **Agent Estimate:** 2-3 hours (polish existing)
|
|
1597
|
-
- **FU-901: Loading States** — 🔨 PARTIAL
|
|
1598
|
-
- Skeleton loaders for all views
|
|
1599
|
-
- Consistent spinner usage
|
|
1600
|
-
- Progress bars
|
|
1601
|
-
- **Agent Estimate:** 2-3 hours (UI polish)
|
|
1602
|
-
- **FU-902: Empty States** — 🔨 PARTIAL
|
|
1603
|
-
- Empty state for all views
|
|
1604
|
-
- Consistent messaging
|
|
1605
|
-
- CTAs in empty states
|
|
1606
|
-
- **Agent Estimate:** 2-3 hours (UI polish)
|
|
1607
|
-
- **FU-903: A11y Audit** — ⏳ NEW (P1)
|
|
1608
|
-
- Install jest-axe
|
|
1609
|
-
- Run on all components
|
|
1610
|
-
- Fix violations
|
|
1611
|
-
- Keyboard nav audit
|
|
1612
|
-
- **Agent Estimate:** 5-6 hours (testing + fixes across many components)
|
|
1613
|
-
- **FU-904: i18n Setup** — ⏳ NEW (P2, optional)
|
|
1614
|
-
- react-i18next setup
|
|
1615
|
-
- Extract all UI strings
|
|
1616
|
-
- Translation files (en, es, fr)
|
|
1617
|
-
- Locale detection and switching
|
|
1618
|
-
- **Agent Estimate:** 6-8 hours (cross-cutting refactor)
|
|
1619
|
-
**Phase 9 Total (P1 only):** 11-15 agent-hours (excluding P2 FU-904)
|
|
1620
|
-
### Summary by Scenario
|
|
1621
|
-
#### Scenario A: Minimal MVP (P0 Only, Single-User)
|
|
1622
|
-
**Remaining P0 Work:**
|
|
1623
|
-
- Phase 1: FU-101, FU-102, FU-103, FU-105 → 16-22 hours
|
|
1624
|
-
- Phase 3: FU-303, FU-304 → 8-10 hours
|
|
1625
|
-
- Phase 4: FU-400, FU-401, FU-402, FU-403 → 9-13 hours
|
|
1626
|
-
**Total Estimate:** 33-45 agent-hours
|
|
1627
|
-
**Calendar Time:** 4-6 days (assuming 8-hour agent workdays with review cycles)
|
|
1628
|
-
**Deliverables:**
|
|
1629
|
-
- Entities and events fully implemented
|
|
1630
|
-
- Timeline view functional
|
|
1631
|
-
- Upload UI polished
|
|
1632
|
-
- Onboarding flow complete
|
|
1633
|
-
- Core workflows end-to-end (upload → extraction → timeline → AI query)
|
|
1634
|
-
#### Scenario B: Full MVP (P0 + P1, Single-User)
|
|
1635
|
-
**Scenario A work PLUS:**
|
|
1636
|
-
- Phase 3: FU-305, FU-306 → 6-8 hours
|
|
1637
|
-
- Phase 5: FU-501 → 5-6 hours (FU-500 Plaid UI moved to post-MVP)
|
|
1638
|
-
- Phase 6: FU-600 → 4-5 hours
|
|
1639
|
-
- Phase 8: FU-800, FU-801 → 10-13 hours
|
|
1640
|
-
- Phase 9: FU-900, FU-901, FU-902, FU-903 → 11-15 hours
|
|
1641
|
-
**Additional P1 Work:** 40-52 hours
|
|
1642
|
-
**Total Estimate:** 73-97 agent-hours
|
|
1643
|
-
**Calendar Time:** 9-12 days (8-hour agent workdays)
|
|
1644
|
-
**Deliverables:**
|
|
1645
|
-
- Everything in Scenario A
|
|
1646
|
-
- Dashboard and settings UI
|
|
1647
|
-
- Provider integrations UI (Plaid UI moved to post-MVP)
|
|
1648
|
-
- Advanced search
|
|
1649
|
-
- Metrics and structured logging
|
|
1650
|
-
- Full error/loading/empty state polish
|
|
1651
|
-
- A11y audit complete
|
|
1652
|
-
#### Scenario C: Full MVP (P0 + P1, Multi-User) — Same as Scenario B
|
|
1653
|
-
**Note:** Scenario B already includes multi-user support (FU-700, FU-701) and billing (FU-702). Scenario C is identical to Scenario B.
|
|
1654
|
-
### Agent Execution Assumptions
|
|
1655
|
-
**What Agents Excel At (Fast):**
|
|
1656
|
-
- Boilerplate generation (components, schemas, types)
|
|
1657
|
-
- Test scaffolding (unit, integration, E2E templates)
|
|
1658
|
-
- Documentation updates (cross-referencing, consistency)
|
|
1659
|
-
- Pattern replication (similar to existing components)
|
|
1660
|
-
- Configuration changes (low-risk)
|
|
1661
|
-
**What Requires More Agent Time (Slower):**
|
|
1662
|
-
- **Novel algorithms** (entity ID generation, deterministic ranking) — needs iterative refinement
|
|
1663
|
-
- **High-risk changes** (schema migrations, graph integrity) — requires multiple review passes
|
|
1664
|
-
- **Cross-cutting refactors** (i18n, metrics) — touches many files
|
|
1665
|
-
- **Third-party integrations** (Plaid UI, OAuth flows) — external dependencies
|
|
1666
|
-
- **Accessibility compliance** (ARIA, keyboard nav) — requires domain knowledge
|
|
1667
|
-
**Overhead Factors:**
|
|
1668
|
-
- **Review cycles:** 20-30% overhead for spec approval, code review iterations
|
|
1669
|
-
- **Testing thoroughness:** Determinism tests (100 runs), property-based tests add time
|
|
1670
|
-
- **Documentation updates:** Every FU updates multiple docs (manifest, subsystem, context)
|
|
1671
|
-
### Detailed FU-by-FU Estimates
|
|
1672
|
-
#### Critical Path (P0, Required for Minimal MVP)
|
|
1673
|
-
| FU | Name | Complexity | Agent Hours | Notes |
|
|
1674
|
-
| ------ | ---------------------------- | ---------- | ----------- | ----------------------------------------- |
|
|
1675
|
-
| FU-101 | Entity Resolution | High | 6-8 | New table + deterministic IDs + migration |
|
|
1676
|
-
| FU-102 | Event Generation | High | 5-7 | New table + date extraction + migration |
|
|
1677
|
-
| FU-103 | Graph Builder | Medium | 3-4 | Transaction wrapping + integrity checks |
|
|
1678
|
-
| FU-105 | Deterministic Search | Medium | 2-3 | Ranking algorithm + tiebreakers |
|
|
1679
|
-
| FU-303 | Timeline View UI | Medium | 5-6 | New component + virtualization |
|
|
1680
|
-
| FU-304 | Upload UI | Medium | 4-5 | Refactor + bulk upload features |
|
|
1681
|
-
| FU-400 | Welcome Screen | Low | 2-3 | Static content component |
|
|
1682
|
-
| FU-401 | Processing Indicator | Low | 2-3 | Progress UI + accessibility |
|
|
1683
|
-
| FU-402 | Extraction Results | Medium | 3-4 | Layout + data display |
|
|
1684
|
-
| FU-403 | Onboarding State | Low | 2-3 | State hook + persistence |
|
|
1685
|
-
| FU-700 | Authentication UI | Medium | 4-5 | OAuth integration |
|
|
1686
|
-
| FU-701 | RLS Implementation | High | 5-6 | Schema migration + RLS policies |
|
|
1687
|
-
| FU-703 | Local Storage / Offline Mode | High | 0 | Already complete |
|
|
1688
|
-
| FU-702 | Billing and Subscription | High | 12-16 | Stripe integration + UI + usage tracking |
|
|
1689
|
-
**Subtotal:** 59-78 hours (43-57 P0 + 12-16 P1 billing)
|
|
1690
|
-
**Note:** FU-703 (Local Storage / Offline Mode) is already complete (0 hours remaining).
|
|
1691
|
-
#### P1 Work (Full MVP)
|
|
1692
|
-
| FU | Name | Complexity | Agent Hours | Notes |
|
|
1693
|
-
| ------ | ------------------------------ | ---------- | ----------- | -------------------------------------- | -------- |
|
|
1694
|
-
| FU-305 | Dashboard | Low | 3-4 | Aggregation UI |
|
|
1695
|
-
| FU-306 | Settings UI | Low | 3-4 | Form UI |
|
|
1696
|
-
| FU-500 | Plaid Link UI | Medium | 4-5 | Third-party SDK | Post-MVP |
|
|
1697
|
-
| FU-501 | Provider Connectors UI | High | 5-6 | Multiple OAuth flows |
|
|
1698
|
-
| FU-600 | Advanced Search | Medium | 4-5 | Filter panel + enhancements |
|
|
1699
|
-
| FU-800 | Technical Metrics (Prometheus) | Medium | 6-8 | Cross-cutting instrumentation |
|
|
1700
|
-
| FU-803 | Product Analytics (PostHog) | Low | 3-4 | Event tracking + dashboards |
|
|
1701
|
-
| FU-801 | Logging | Medium | 4-5 | Refactor to structured |
|
|
1702
|
-
| FU-900 | Error Handling | Low | 2-3 | Error boundary + polish |
|
|
1703
|
-
| FU-901 | Loading States | Low | 2-3 | Skeleton loaders |
|
|
1704
|
-
| FU-902 | Empty States | Low | 2-3 | Empty state components |
|
|
1705
|
-
| FU-903 | A11y Audit | Medium | 5-6 | jest-axe + fixes across all components |
|
|
1706
|
-
**Subtotal:** 40-52 hours
|
|
1707
|
-
#### P2 / Optional Work
|
|
1708
|
-
| FU | Name | Complexity | Agent Hours | Notes |
|
|
1709
|
-
| ------ | --------------- | ---------- | ----------- | ---------------------------------- |
|
|
1710
|
-
| FU-601 | Entity Explorer | Medium | 5-6 | New feature area |
|
|
1711
|
-
| FU-700 | Auth UI | Medium | 4-5 | OAuth forms |
|
|
1712
|
-
| FU-701 | RLS | High | 5-6 | Schema migration + testing |
|
|
1713
|
-
| FU-702 | Billing | High | 12-16 | Stripe integration + UI |
|
|
1714
|
-
| FU-802 | Tracing | Medium | 6-7 | OpenTelemetry setup |
|
|
1715
|
-
| FU-904 | i18n | High | 6-8 | Extract all strings + translations |
|
|
1716
|
-
**Subtotal:** 38-48 hours
|
|
1717
|
-
### Execution Velocity Assumptions
|
|
1718
|
-
**Cursor Agent Productivity:**
|
|
1719
|
-
- **Fast FUs (Low complexity, no risk):** 2-4 hours
|
|
1720
|
-
- **Medium FUs (Moderate complexity):** 4-6 hours
|
|
1721
|
-
- **Complex FUs (High complexity or high risk):** 6-10 hours
|
|
1722
|
-
**Daily Throughput:**
|
|
1723
|
-
- **Aggressive:** 3-4 FUs/day (mix of fast + medium, 10-12 agent-hours)
|
|
1724
|
-
- **Sustainable:** 2-3 FUs/day (8-10 agent-hours with review time)
|
|
1725
|
-
- **Conservative:** 1-2 FUs/day (complex FUs with thorough testing, 6-8 hours)
|
|
1726
|
-
**Bottlenecks:**
|
|
1727
|
-
- **Human review:** High-risk FUs (schema, graph, auth) require tech lead approval
|
|
1728
|
-
- **Sequential dependencies:** Can't parallelize FU-101 → FU-103 → FU-303
|
|
1729
|
-
- **Testing thoroughness:** Determinism tests (100 runs) add time
|
|
1730
|
-
- **Documentation updates:** Every FU triggers doc updates
|
|
1731
|
-
### Recommended Execution Strategy
|
|
1732
|
-
**Note:** For detailed tactical execution plans with Cursor commands, step-by-step workflows, and manual vs agent time estimates, see [`docs/specs/MVP_EXECUTION_PLAN.md`](./MVP_EXECUTION_PLAN.md).
|
|
1733
|
-
**High-Level Summary:**
|
|
1734
|
-
#### Minimal MVP (P0 Only, Multi-User Support)
|
|
1735
|
-
**Timeline:** 7-9 days (5-7 days implementation + 1-2 days cleanup)
|
|
1736
|
-
- **Week 1:** Phase 1 (Core Services) — FU-101, FU-102, FU-103, FU-105
|
|
1737
|
-
- **Week 2:** Phase 3 + Phase 4 + Phase 7 (UI, Onboarding, Auth/RLS) — FU-303, FU-304, FU-400-403, FU-700, FU-701
|
|
1738
|
-
- **Cleanup:** Disable post-MVP features (semantic search, Plaid, X, Instagram)
|
|
1739
|
-
**Total:** 10-17h manual, 43-57h agent, 1-2 days cleanup
|
|
1740
|
-
#### Full MVP (P0 + P1, Multi-User Support)
|
|
1741
|
-
**Timeline:** 12-15 days (10-13 days implementation + 1-2 days cleanup)
|
|
1742
|
-
- **Week 1:** Phase 1 (Core Services)
|
|
1743
|
-
- **Week 2:** Phase 3 + Phase 4 + Phase 7 (UI, Onboarding, Auth/RLS)
|
|
1744
|
-
- **Week 3:** Phase 5 + Phase 6 + Phase 7 (Provider Integrations, Search, Billing)
|
|
1745
|
-
- **Week 4:** Phase 8 + Phase 9 (Observability, Polish)
|
|
1746
|
-
- **Cleanup:** Disable post-MVP features
|
|
1747
|
-
**Total:** 19-30.5h manual, 74-99h agent, 1-2 days cleanup
|
|
1748
|
-
**Key Differences from Previous Plan:**
|
|
1749
|
-
- ✅ Includes Phase 7 (Auth/RLS) — required for multi-user support
|
|
1750
|
-
- ✅ Includes cleanup phase — disable post-MVP features before launch
|
|
1751
|
-
- ✅ More detailed with Cursor commands and step-by-step workflows (see MVP_EXECUTION_PLAN.md)
|
|
1752
|
-
### Total Effort Summary
|
|
1753
|
-
| Scenario | Agent Hours | Calendar Days | FUs Complete | MVP Ready? |
|
|
1754
|
-
| ---------------------------- | ----------- | ------------- | ------------ | ------------------------------------ |
|
|
1755
|
-
| **Minimal (P0 only)** | 43-57 | 5-7 days | 30/40 (75%) | ✅ Yes (core workflows + multi-user) |
|
|
1756
|
-
| **Full (P0+P1, multi-user)** | 79-104 | 10-13 days | 38/40 (95%) | ✅ Yes (polished + multi-user) |
|
|
1757
|
-
| **Complete (P0+P1+P2)** | 108-140 | 14-18 days | 40/40 (100%) | ✅ Yes (all features) |
|
|
1758
|
-
**Recommended Path:** Scenario B (Full MVP, multi-user) — 10-13 days, 79-104 agent-hours
|
|
1759
|
-
### Risk Buffer
|
|
1760
|
-
**Add 20-30% for:**
|
|
1761
|
-
- Unforeseen complexity in entity/event extraction
|
|
1762
|
-
- Graph integrity edge cases
|
|
1763
|
-
- Determinism test failures requiring fixes
|
|
1764
|
-
- Human review feedback iterations
|
|
1765
|
-
- Integration testing issues
|
|
1766
|
-
- Cross-browser/device testing
|
|
1767
|
-
**Adjusted Estimates:**
|
|
1768
|
-
- **Minimal MVP:** 40-60 agent-hours (5-8 days)
|
|
1769
|
-
- **Full MVP (P0+P1):** 88-125 agent-hours (11-16 days)
|
|
1770
|
-
### Parallelization Opportunities
|
|
1771
|
-
**Note:** For detailed parallelization strategy with tactical execution guidance, see [`docs/specs/MVP_EXECUTION_PLAN.md`](./MVP_EXECUTION_PLAN.md) section "Parallelization Strategy".
|
|
1772
|
-
**Strategic Overview:**
|
|
1773
|
-
- Phase 4 (onboarding) + Phase 5 (integrations) — independent
|
|
1774
|
-
- Phase 6 (search UI) + Phase 8 (observability) — independent
|
|
1775
|
-
- Phase 9 FUs — mostly independent polish work
|
|
1776
|
-
**Critical Dependencies (Cannot Parallelize):**
|
|
1777
|
-
- FU-101 → FU-103 (entity resolution must complete before graph builder)
|
|
1778
|
-
- FU-102 → FU-303 (events must exist before timeline UI)
|
|
1779
|
-
- FU-103 → FU-105 (graph must be stable before search ranking)
|
|
1780
|
-
- FU-700 → FU-701 (auth must exist before RLS)
|
|
1781
|
-
- FU-701 → FU-702 (RLS must exist before billing)
|
|
1782
|
-
**With 2 Cursor agents in parallel:** Could reduce calendar time by 25-35%.
|
|
1783
|
-
## Agent Instructions
|
|
1784
|
-
### When to Load This Document
|
|
1785
|
-
Load when:
|
|
1786
|
-
- Planning MVP implementation
|
|
1787
|
-
- Sequencing Feature Unit work
|
|
1788
|
-
- Understanding MVP scope and boundaries
|
|
1789
|
-
- Assessing completion progress
|
|
1790
|
-
- Prioritizing remaining work
|
|
1791
|
-
- Reviewing Feature Unit inventory and estimates
|
|
1792
|
-
### Required Co-Loaded Documents
|
|
1793
|
-
- `docs/NEOTOMA_MANIFEST.md` (architectural constraints)
|
|
1794
|
-
- `docs/specs/MVP_OVERVIEW.md` (product context)
|
|
1795
|
-
- `docs/specs/METRICS_REQUIREMENTS.md` (success criteria)
|
|
1796
|
-
- `docs/feature_units/standards/feature_unit_spec.md` (how to write specs)
|
|
1797
|
-
**For tactical execution:** Also load `docs/specs/MVP_EXECUTION_PLAN.md` for Cursor command workflows, step-by-step guidance, daily execution patterns, and tactical risk mitigation processes.
|
|
1798
|
-
### Strategic Constraints Agents Must Enforce
|
|
1799
|
-
1. All P0 Feature Units MUST be completed before MVP launch
|
|
1800
|
-
2. Feature Units MUST follow execution order (respect dependencies)
|
|
1801
|
-
3. All Feature Units MUST have specs before implementation
|
|
1802
|
-
4. All Feature Units MUST include tests
|
|
1803
|
-
5. High-risk Feature Units MUST have rollback plans
|
|
1804
|
-
6. Graph integrity MUST be maintained (0 orphans)
|
|
1805
|
-
7. Determinism MUST be verified for all data operations
|
|
1806
|
-
### Strategic Forbidden Patterns
|
|
1807
|
-
- Starting downstream FU without completing dependencies
|
|
1808
|
-
- Implementing without spec
|
|
1809
|
-
- Skipping tests
|
|
1810
|
-
- Violating Truth Layer boundaries in any FU
|
|
1811
|
-
- Introducing nondeterminism
|
|
1812
|
-
- Breaking backward compatibility
|
|
1813
|
-
**Note:** For tactical constraints, Cursor command usage patterns, and daily execution workflows, see [`docs/specs/MVP_EXECUTION_PLAN.md`](./MVP_EXECUTION_PLAN.md) section "Agent Instructions".
|
|
1814
|
-
### Validation Checklist
|
|
1815
|
-
- [ ] All P0 Feature Units identified
|
|
1816
|
-
- [ ] Execution order respects dependencies
|
|
1817
|
-
- [ ] Each FU has priority, risk, complexity assessed
|
|
1818
|
-
- [ ] Critical path identified
|
|
1819
|
-
- [ ] Completion criteria defined
|
|
1820
|
-
- [ ] Acceptance criteria aligned with METRICS_REQUIREMENTS.md
|
|
1821
|
-
- [ ] High-risk FUs have mitigation plans
|