kenaz 0.3.22 → 0.3.24
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/core/.claude/hooks/_user-scope.js +1 -1
- package/core/.claude/hooks/core-resolve.js +1 -1
- package/core/.claude/hooks/worktree-create.js +11 -29
- package/core/.claude/hooks/worktree-remove.js +12 -38
- package/core/.collaboration/core/reconcile.js +16 -1
- package/core/.collaboration/core/task-2467-lifecycle.test.js +63 -0
- package/core/.collaboration/core/task-api.js +37 -7
- package/core/.formation/bifrost/launch.js +1 -1
- package/core/.formation/tools/dispatch-detail/worktree-subagent-mode.md +6 -1
- package/core/.formation/tools/kenaz-stats.js +1 -1
- package/core/.formation/tools/post-complete/git-merge.js +1 -1
- package/core/.formation/tools/prompt.js +1 -1
- package/core/.formation/tools/utils.js +5 -5
- package/core/.formation/tools/worktree-reclaim.js +73 -2
- package/core/.formation/tools/worktree-reclaim.test.js +113 -0
- package/core/.kenaz/specialist/ansuz_rules.yaml +7 -51
- package/core/.kenaz/specialist/ansuz_session_handoff.schema.json +2 -6
- package/core/.rule/general/project-self-containment.yaml +2 -2
- package/core/.specialist/Amelia/README.md +1 -1
- package/core/.specialist/Amelia/rule.yaml +1 -1
- package/core/.specialist/Ansuz/RULES.md +6 -2
- package/core/.specialist/Ansuz/concepts/commitment_layer.yaml +1 -1
- package/core/.specialist/Ansuz/concepts/evolvable_guardrails.yaml +1 -1
- package/core/.specialist/Ansuz/knowledge.yaml +1 -3
- package/core/.specialist/tools/__tests__/task-2409-lessons.test.js +10 -0
- package/core/.specialist/tools/__tests__/task-2427-harvest.test.js +25 -0
- package/core/.specialist/tools/ansuz-boot-fast.js +1 -1
- package/core/.specialist/tools/failure-detector.js +4 -4
- package/core/.specialist/tools/handoff-doc.js +1 -1
- package/core/.specialist/tools/lessons.js +2 -2
- package/core/CLAUDE.md +5 -5
- package/core/KENAZ_CORE_VERSION +1 -1
- package/core/dashboard/scripts/install-kenaz-cli.js +56 -30
- package/core/dev/scripts/check-file-size.js +1 -1
- package/core/dev/scripts/ci-feedback.js +1 -1
- package/core/dev/scripts/gc-agent-worktrees.js +13 -12
- package/core/dev/scripts/kenaz-session.js +3 -3
- package/core/dev/scripts/peer-identity-e2e.js +6 -4
- package/core/dev/scripts/run-rust-tests.js +2 -2
- package/core/dev/scripts/skill-routing-replay.js +3 -3
- package/core/dev/scripts/task1961/selftest.js +2 -2
- package/core/dev/scripts/windows-hide-guard.test.js +112 -0
- package/core/plugins/kenaz/guidance.md +1 -0
- package/core/plugins/kenaz/hooks/core-resolve.js +1 -1
- package/core/plugins/kenaz/hooks/hooks.json +9 -0
- package/core/plugins/kenaz/hooks/kenaz-hook.js +58 -4
- package/core/plugins/kenaz/hooks/worktree-guard.js +121 -0
- package/core/plugins/kenaz/hooks/worktree-guard.test.js +75 -0
- package/core/plugins/kenaz/scripts/kenaz.test.js +72 -5
- package/core/plugins/kenaz-peer/hooks/register.test.ts +14 -2
- package/core/plugins/kenaz-peer/hooks/register.ts +6 -1
- package/lib/cli.js +9 -5
- package/package.json +6 -6
- package/vendor/install-kenaz-cli.js +56 -30
- package/core/.kenaz/designs/METAPLASTICITY_CONFIDENCE_DESIGN.md +0 -537
- package/core/.kenaz/designs/REFLEX_INITIATOR_DESIGN.md +0 -501
- package/core/.kenaz/designs/TASK_1385_handoff_mcp_design.md +0 -426
- package/core/.kenaz/designs/TASK_932_hippocampus_consolidation.md +0 -103
- package/core/.kenaz/designs/TASK_934_efe_signal_engine.md +0 -97
- package/core/.kenaz/designs/TASK_935_self_evolution_framework.md +0 -154
- package/core/.kenaz/designs/VISION_cognitive_architecture_roadmap.md +0 -159
- package/core/.kenaz/designs/metaplasticity_simulation_results.json +0 -696
- package/core/.kenaz/main-memory/README.md +0 -230
- package/core/.kenaz/main-memory/kenaz/cortex/001_cortex_overview.md +0 -168
- package/core/.kenaz/main-memory/kenaz/cortex/001_rag_engine_overview.md +0 -30
- package/core/.kenaz/main-memory/kenaz/memory-system/001_three_tier_architecture.md +0 -361
- package/core/.kenaz/main-memory/kenaz/pipeline/001_task_execution_flow.md +0 -117
- package/core/.kenaz/main-memory/kenaz/pipeline/001_task_granularity.md +0 -154
- package/core/.kenaz/main-memory/kenaz/pipeline/002_team_priority.md +0 -51
- package/core/.kenaz/main-memory/kenaz/pipeline/003_feature_id_system.md +0 -46
- package/core/.kenaz/main-memory/kenaz/rules/001_gen_007_self_containment.md +0 -108
- package/core/.kenaz/main-memory/kenaz/rules/001_rule_priority_system.md +0 -121
- package/core/.kenaz/main-memory/kenaz/rules/002_agt_006_pre_check.md +0 -0
- package/core/.kenaz/main-memory/kenaz/rules/003_ppl_002_task_archival.md +0 -48
- package/core/.kenaz/main-memory/kenaz/system/001_dual_track_task_system.md +0 -197
- package/core/.kenaz/main-memory/knowledge/patterns/001_json_bom_issue.md +0 -78
- package/core/.kenaz/main-memory/knowledge/patterns/001_leader_worker_pattern.md +0 -0
- package/core/.kenaz/main-memory/knowledge/patterns/002_scope_path_conflict.md +0 -115
- package/core/.kenaz/main-memory/knowledge/patterns/002_task_dependency_resolution.md +0 -223
- package/core/.kenaz/main-memory/knowledge/patterns/003_question_protocol.md +0 -242
- package/core/.kenaz/main-memory/knowledge/patterns/004_user_insight_value.md +0 -111
- package/core/.kenaz/main-memory/knowledge/patterns/005_file_lock_pattern.md +0 -274
- package/core/.kenaz/main-memory/knowledge/references/001_ppl_rules.md +0 -28
- package/core/.kenaz/main-memory/knowledge/solutions/001_json_bom_issue.md +0 -137
- package/core/.kenaz/main-memory/knowledge/solutions/001_team_invocation.md +0 -0
- package/core/.kenaz/main-memory/knowledge/solutions/002_passive_monitoring.md +0 -0
- package/core/.kenaz/main-memory/knowledge/solutions/003_windows_file_race_condition.md +0 -239
- package/core/.kenaz/main-memory/registry.json +0 -326
- package/core/.kenaz/main-memory/version.yaml +0 -58
- package/core/.kenaz/specialist/memory_guard_fired.json +0 -1
- package/core/.kenaz/specialist/memory_guard_trigger_cache.json +0 -1
- package/core/.kenaz/specialist/memory_source_priority.yaml +0 -260
- package/core/.kenaz/specialist/prompt_1775.txt +0 -317
- package/core/.kenaz/specialist/prompt_1776.txt +0 -326
- package/core/.kenaz/specialist/prompt_1791.txt +0 -320
- package/core/.kenaz/specialist/prompt_1792.txt +0 -320
- package/core/.kenaz/specialist/prompt_1795.txt +0 -281
- package/core/.kenaz/specialist/prompt_1813.txt +0 -332
- package/core/.kenaz/specialist/prompt_1814.txt +0 -401
- package/core/.kenaz/specialist/prompt_1815.txt +0 -394
- package/core/.kenaz/specialist/prompt_1816.txt +0 -437
- package/core/.kenaz/specialist/prompt_1818.txt +0 -361
- package/core/.kenaz/specialist/prompt_1819.txt +0 -421
- package/core/.kenaz/specialist/prompt_1821.txt +0 -345
- package/core/.kenaz/specialist/prompt_1822.txt +0 -313
- package/core/.kenaz/specialist/prompt_1824.txt +0 -348
- package/core/.kenaz/specialist/prompt_1826.txt +0 -388
- package/core/.kenaz/specialist/rune_efe_salience_gap.md +0 -21
- package/core/.kenaz/specialist/task1825_update.json +0 -43
- package/core/.kenaz/specialist/taskgen/consolidation_i.json +0 -38
- package/core/.kenaz/specialist/taskgen/csharp_a.json +0 -44
- package/core/.kenaz/specialist/taskgen/csharp_b.json +0 -40
- package/core/.kenaz/specialist/taskgen/embedding_e.json +0 -34
- package/core/.kenaz/specialist/taskgen/hygiene_fg.json +0 -39
- package/core/.kenaz/specialist/taskgen/pathology_h.json +0 -36
- package/core/.kenaz/specialist/taskgen/unity_noise_d.json +0 -38
- package/core/.kenaz/specialist/taskgen/visibility_c.json +0 -38
- package/core/.specialist/Ansuz/decisions/ADR-requirement-graph-layer.md +0 -390
- package/core/.specialist/Ansuz/self_model_seed.backup.json +0 -100
- package/core/.specialist/ansuz_session_handoff.json +0 -96
- package/core/dev/ALAYA_FIELD_FEEDBACK_DESIGN.md +0 -126
- package/core/dev/ANSUZ_SCAFFOLD_DIET_2026-09-20.md +0 -231
- package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +0 -355
- package/core/dev/ANSUZ_WORKFLOW_MODERNIZATION.md +0 -143
- package/core/dev/CORTEX_META_GRAPH_ASSESSMENT.md +0 -99
- package/core/dev/FREYA_DOWNSTREAM_BUGS_2026-09-19.md +0 -44
- package/core/dev/GLOBAL_MEMORY_IDENTITY_CONSOLIDATION.md +0 -263
- package/core/dev/GUARD_EFFECTIVENESS_DESIGN.md +0 -180
- package/core/dev/HEALTH_GATE_VARIANCE_ASSESSMENT.md +0 -271
- package/core/dev/HOOK_DIET_2026-09-21.md +0 -126
- package/core/dev/JEV_INTEGRATION_PLAN.md +0 -189
- package/core/dev/KENAZ_AGENT_CONNECT_v1_SPEC.md +0 -139
- package/core/dev/MOBILE_DESIGN_SPEC.md +0 -569
- package/core/dev/MULTI_ANSUZ_SPEC.md +0 -136
- package/core/dev/MUNINN_RETIREMENT.md +0 -115
- package/core/dev/PHASE3_ATTRIBUTION_POPULATION_DIAGNOSIS.md +0 -211
- package/core/dev/PHASE3_P3-2B_TASKLEVEL_PROBE.md +0 -83
- package/core/dev/PHASE3_P3-2_POPULATION_DISJOINTNESS.md +0 -83
- package/core/dev/PHASE3_P3-2_REMEASURE_REPORT.md +0 -231
- package/core/dev/PREDICTION_GROUNDING_DESIGN.md +0 -376
- package/core/dev/PRODUCT_SPEC.md +0 -317
- package/core/dev/PROJECT_REGISTRY_DUPLICATE_ASSESSMENT.md +0 -86
- package/core/dev/STARTUP_TIMELINE_TASK_1995.md +0 -181
- package/core/dev/SYNAPSE_WORKER_PER_PROJECT.md +0 -881
- package/core/dev/TASK_1680_P3-3_DISPATCH_SPEC.md +0 -96
- package/core/dev/TASK_1684_CALIBRATION_IMPACT_ANALYSIS.md +0 -170
- package/core/dev/TASK_1684_FORK_A_GOODHART_DESIGN.md +0 -171
- package/core/dev/TASK_1684_P3_2_REMEASURE_VALIDATION.md +0 -262
- package/core/dev/TASK_1903_SIGNAL_AUC_MEASUREMENT.md +0 -207
- package/core/dev/TASK_1904_BRANCH_INTEGRITY_AUDIT.md +0 -146
- package/core/dev/ansuz-eval/README.md +0 -38
- package/core/dev/ansuz-eval/build-fixtures.js +0 -87
- package/core/dev/ansuz-eval/grade.js +0 -96
- package/core/dev/ansuz-eval/grader.test.js +0 -117
- package/core/dev/ansuz-eval/tasks.md +0 -32
- package/core/dev/archive/ansuz/BOOT_FULL.md +0 -141
- package/core/dev/archive/ansuz/agents/ansuz-boot.md +0 -176
- package/core/dev/archive/ansuz/designs/alaya-passive-surfacing.md +0 -84
- package/core/dev/archive/ansuz/designs/cc_memory_indexing.md +0 -307
- package/core/dev/archive/ansuz/designs/check_guard.md +0 -322
- package/core/dev/archive/ansuz/designs/consequence_loop.md +0 -227
- package/core/dev/archive/ansuz/designs/mcp_kuzudb_lock_architecture.md +0 -312
- package/core/dev/archive/ansuz/designs/phase0_git_enrichment.md +0 -278
- package/core/dev/archive/ansuz/designs/refactor_mcp_tools_synapse.md +0 -490
- package/core/dev/archive/ansuz/designs/semantic_markdown_extraction.md +0 -167
- package/core/dev/archive/ansuz/designs/task_1372_prompt_injects_into.md +0 -193
- package/core/dev/archive/ansuz/designs/thought_stack.md +0 -286
- package/core/dev/archive/ansuz/investigations/reachability_unified_api_2026-04-11.md +0 -330
- package/core/dev/archive/ansuz/investigations/synapse_orphans_indexing_bug_2026-04-11.md +0 -352
- package/core/dev/archive/ansuz/investigations/synapse_orphans_reindex_verification_2026-04-11.md +0 -48
- package/core/dev/archive/ansuz/investigations/synapse_orphans_verification_2026-04-11.md +0 -170
- package/core/dev/archive/ansuz/legacy/kernel.yaml +0 -399
- package/core/dev/archive/ansuz/legacy/phases/phase_0.yaml +0 -418
- package/core/dev/archive/ansuz/legacy/phases/phase_1.yaml +0 -376
- package/core/dev/archive/ansuz/legacy/phases/phase_10.yaml +0 -35
- package/core/dev/archive/ansuz/legacy/phases/phase_11.yaml +0 -582
- package/core/dev/archive/ansuz/legacy/phases/phase_2.yaml +0 -94
- package/core/dev/archive/ansuz/legacy/phases/phase_3.yaml +0 -274
- package/core/dev/archive/ansuz/legacy/phases/phase_4.yaml +0 -67
- package/core/dev/archive/ansuz/legacy/phases/phase_5.yaml +0 -32
- package/core/dev/archive/ansuz/legacy/phases/phase_6.yaml +0 -91
- package/core/dev/archive/ansuz/legacy/phases/phase_7.yaml +0 -58
- package/core/dev/archive/ansuz/legacy/phases/phase_8.yaml +0 -146
- package/core/dev/archive/ansuz/legacy/phases/phase_9.yaml +0 -424
- package/core/dev/archive/ansuz/specs/INDEX_bifrost_hook_parity.yaml +0 -92
- package/core/dev/archive/ansuz/specs/active-inference-formation.yaml +0 -453
- package/core/dev/archive/ansuz/specs/brief_TASK_1228_userpromptsubmit.yaml +0 -191
- package/core/dev/archive/ansuz/specs/brief_TASK_1229_pretooluse_posttooluse.yaml +0 -250
- package/core/dev/archive/ansuz/specs/brief_TASK_1230_sessionstart_stop.yaml +0 -301
- package/core/dev/archive/ansuz/specs/brief_TASK_1231_verification.yaml +0 -272
- package/core/dev/archive/skills/feature_agent/SKILL.md +0 -289
- package/core/dev/design/PHASE4_DESIGN.md +0 -559
- package/core/dev/design/dashboard_docs_integration_PLAN.md +0 -388
- package/core/dev/design/matrix_format_ABBREVIATIONS.md +0 -655
- package/core/dev/design/matrix_format_DESIGN_SPEC.md +0 -601
- package/core/dev/design/matrix_format_DISCUSSION_SUMMARY.md +0 -484
- package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +0 -13
- package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +0 -9
- package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +0 -14
- package/core/dev/design/matrix_format_SYNTAX_BNF.md +0 -754
- package/core/dev/design/matrix_format_TOKEN_COMPARISON.md +0 -484
- package/core/dev/design/matrix_v2_COGNITIVE_DESIGN.md +0 -503
- package/core/dev/design/matrix_v2_DISCUSSION_SUMMARY.md +0 -414
- package/core/dev/design/matrix_v2_EXAMPLE.matrix +0 -67
- package/core/dev/designs/EXPANDABLE_CARD_DESIGN_SPEC.md +0 -509
- package/core/dev/jev-eval/ACTIVE_CORRECTION.md +0 -52
- package/core/dev/jev-eval/ANNOTATION_GUIDE.md +0 -68
- package/core/dev/jev-eval/BASELINE_COMPARISON.md +0 -45
- package/core/dev/jev-eval/CONTEXT_REVIEW.md +0 -31
- package/core/dev/jev-eval/EVALUATION_STATUS.md +0 -39
- package/core/dev/jev-eval/HISTORICAL_CORPUS.md +0 -33
- package/core/dev/jev-eval/PACKAGING_VERIFICATION.md +0 -42
- package/core/dev/jev-eval/README.md +0 -101
- package/core/dev/jev-eval/THALAMUS_RANKING.md +0 -58
- package/core/dev/jev-eval/VALIDATION_PROGRESS.md +0 -54
- package/core/dev/jev-eval/cli.mjs +0 -50
- package/core/dev/jev-eval/context.mjs +0 -183
- package/core/dev/jev-eval/corpus.mjs +0 -186
- package/core/dev/jev-eval/fixtures/conversation-review.seed.jsonl +0 -6
- package/core/dev/jev-eval/fixtures/synthetic.jsonl +0 -11
- package/core/dev/jev-eval/metrics.mjs +0 -67
- package/core/dev/jev-eval/muninn-baseline.mjs +0 -119
- package/core/dev/jev-eval/providers.mjs +0 -95
- package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +0 -32
- package/core/dev/jev-eval/reports/context-review-2026-09-20.json +0 -48
- package/core/dev/jev-eval/reports/conversation-review.pending.json +0 -151
- package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +0 -52
- package/core/dev/jev-eval/reports/length-probe-2026-09-20.json +0 -133
- package/core/dev/jev-eval/reports/live-smoke-2026-09-20.json +0 -616
- package/core/dev/jev-eval/reports/muninn-baseline-2026-09-20.json +0 -52
- package/core/dev/jev-eval/reports/resilience-2026-09-20.json +0 -520
- package/core/dev/jev-eval/reports/rules-baseline.json +0 -197
- package/core/dev/jev-eval/reports/synthetic-review.pending.json +0 -357
- package/core/dev/jev-eval/resilience.mjs +0 -71
- package/core/dev/jev-eval/review.mjs +0 -78
- package/core/dev/jev-eval/schema.mjs +0 -87
- package/core/dev/jev-eval/test/context.test.mjs +0 -95
- package/core/dev/jev-eval/test/corpus.test.mjs +0 -102
- package/core/dev/jev-eval/test/eval.test.mjs +0 -146
- package/core/dev/jev-eval/test/muninn-baseline.test.mjs +0 -71
- package/core/dev/jev-eval/test/resilience.test.mjs +0 -72
- package/core/dev/jev-eval/test/review.test.mjs +0 -61
- package/core/dev/pipeline/PHASE3_PLANNING_SUMMARY.md +0 -338
- package/core/dev/pipeline/PROGRESS.md +0 -113
- package/core/dev/pipeline/PROGRESS_template.md +0 -860
- package/core/dev/pipeline/QA_REPORT_F008.md +0 -431
- package/core/dev/pipeline/QA_REPORT_LOCAL_CLAUDE_DIAGNOSIS.md +0 -583
- package/core/dev/pipeline/README.md +0 -210
- package/core/dev/pipeline/WORKFLOW_GUIDE.md +0 -824
- package/core/dev/pipeline/archived/TASK_015_tauri_init.yaml +0 -53
- package/core/dev/pipeline/archived/TASK_016_tauri_commands.yaml +0 -54
- package/core/dev/pipeline/archived/TASK_017_rust_pty.yaml +0 -54
- package/core/dev/pipeline/archived/TASK_018_tauri_bundle.yaml +0 -53
- package/core/dev/pipeline/archived/TASK_019_release_workflow.yaml +0 -56
- package/core/dev/pipeline/archived/TASK_020_update_ui.yaml +0 -54
- package/core/dev/pipeline/archived/TASK_021_update_notification_ui.yaml +0 -55
- package/core/dev/pipeline/archived/TASK_022_remove_node_pty.yaml +0 -65
- package/core/dev/pipeline/archived/TASK_023_api_routes_migration.yaml +0 -86
- package/core/dev/pipeline/archived/TASK_024_feature_id_system.yaml +0 -51
- package/core/dev/pipeline/archived/TASK_025_executable_acceptance.yaml +0 -66
- package/core/dev/pipeline/archived/TASK_026_spec_versioning.yaml +0 -56
- package/core/dev/pipeline/archived/TASK_027_drift_detection.yaml +0 -60
- package/core/dev/pipeline/archived/TASK_028_tauri_pty_manager.yaml +0 -60
- package/core/dev/pipeline/archived/TASK_029_tauri_pty_commands.yaml +0 -62
- package/core/dev/pipeline/archived/TASK_030_frontend_session_adapter.yaml +0 -54
- package/core/dev/pipeline/archived/TASK_031_terminal_tauri_events.yaml +0 -56
- package/core/dev/pipeline/archived/TASK_041_scheduler_data_models.yaml +0 -54
- package/core/dev/pipeline/archived/TASK_042_path_lock_manager.yaml +0 -53
- package/core/dev/pipeline/archived/TASK_043_process_manager.yaml +0 -57
- package/core/dev/pipeline/archived/TASK_044_git_integration.yaml +0 -85
- package/core/dev/pipeline/archived/TASK_045_task_queue_manager.yaml +0 -54
- package/core/dev/pipeline/archived/TASK_046_scheduler_dispatcher.yaml +0 -60
- package/core/dev/pipeline/archived/TASK_047_tauri_scheduler_commands.yaml +0 -55
- package/core/dev/pipeline/archived/TASK_048_realtime_status_push.yaml +0 -92
- package/core/dev/pipeline/archived/TASK_049_frontend_scheduler_integration.yaml +0 -58
- package/core/dev/pipeline/archived/TASK_050_error_recovery.yaml +0 -56
- package/core/dev/pipeline/archived/TASK_051_optimization_proposals_backend.yaml +0 -53
- package/core/dev/pipeline/archived/TASK_052_optimization_proposals_ui.yaml +0 -58
- package/core/dev/pipeline/archived/TASK_053_optimization_proposals_diff_view.yaml +0 -54
- package/core/dev/pipeline/archived/TASK_054_multi_project_scheduler_state.yaml +0 -76
- package/core/dev/pipeline/archived/TASK_055_scheduler_api_project_scope.yaml +0 -64
- package/core/dev/pipeline/archived/TASK_056_frontend_scheduler_project_scope.yaml +0 -62
- package/core/dev/pipeline/archived/TASK_057_scheduler_module_structure.yaml +0 -54
- package/core/dev/pipeline/archived/TASK_058_scheduler_models_extract.yaml +0 -51
- package/core/dev/pipeline/archived/TASK_059_scheduler_core_extract.yaml +0 -51
- package/core/dev/pipeline/archived/TASK_060_scheduler_commands_extract.yaml +0 -51
- package/core/dev/pipeline/archived/TASK_061_scheduler_specialized_commands.yaml +0 -53
- package/core/dev/pipeline/archived/TASK_062_process_manager_module_structure.yaml +0 -56
- package/core/dev/pipeline/archived/TASK_063_process_manager_core_extract.yaml +0 -56
- package/core/dev/pipeline/archived/TASK_064_recovery_module_structure.yaml +0 -57
- package/core/dev/pipeline/archived/TASK_065_recovery_core_extract.yaml +0 -56
- package/core/dev/pipeline/archived/TASK_066_self_enhancement_scheduler_models.yaml +0 -60
- package/core/dev/pipeline/archived/TASK_067_agents_section_quick_actions.yaml +0 -53
- package/core/dev/pipeline/archived/TASK_067_self_enhancement_scheduler_core.yaml +0 -65
- package/core/dev/pipeline/archived/TASK_068_agent_workflow_rule_enhancement.yaml +0 -46
- package/core/dev/pipeline/archived/TASK_068_self_enhancement_tauri_commands.yaml +0 -61
- package/core/dev/pipeline/archived/TASK_069_agent_wizard_responsive.yaml +0 -46
- package/core/dev/pipeline/archived/TASK_069_self_enhancement_ui.yaml +0 -62
- package/core/dev/pipeline/archived/TASK_070_preview_panel_redesign.yaml +0 -62
- package/core/dev/pipeline/archived/TASK_070_self_enhancement_integration.yaml +0 -57
- package/core/dev/pipeline/archived/TASK_071_preview_panel_qa.yaml +0 -98
- package/core/dev/pipeline/archived/TASK_071_single_agent_config.yaml +0 -57
- package/core/dev/pipeline/archived/TASK_072_preview_modal_esc_fix.yaml +0 -71
- package/core/dev/pipeline/archived/TASK_072_product_review_module.yaml +0 -57
- package/core/dev/pipeline/archived/TASK_073_agents_page_component_refactor.yaml +0 -68
- package/core/dev/pipeline/archived/TASK_073_rename_single_agent.yaml +0 -64
- package/core/dev/pipeline/archived/TASK_074_preview_mode_ui_diagnosis.yaml +0 -71
- package/core/dev/pipeline/archived/TASK_074_single_agent_ui_toggle.yaml +0 -56
- package/core/dev/pipeline/archived/TASK_075_agents_page_component_refactor.yaml +0 -69
- package/core/dev/pipeline/archived/TASK_075_single_agent_integration_test.yaml +0 -75
- package/core/dev/pipeline/archived/TASK_076_preview_mode_ui_diagnosis.yaml +0 -70
- package/core/dev/pipeline/archived/TASK_076_single_agent_continuous_mode.yaml +0 -65
- package/core/dev/pipeline/archived/TASK_077_failure_directory_structure.yaml +0 -51
- package/core/dev/pipeline/archived/TASK_077_single_agent_typescript_types.yaml +0 -59
- package/core/dev/pipeline/archived/TASK_078_fail_001_agent_no_output.yaml +0 -53
- package/core/dev/pipeline/archived/TASK_078_single_agent_ui_simplify.yaml +0 -74
- package/core/dev/pipeline/archived/TASK_079_dashboard_rwd_responsive.yaml +0 -63
- package/core/dev/pipeline/archived/TASK_079_fail_002_json_bom.yaml +0 -56
- package/core/dev/pipeline/archived/TASK_080_fail_003_queue_pollution.yaml +0 -56
- package/core/dev/pipeline/archived/TASK_080_http_server_module.yaml +0 -55
- package/core/dev/pipeline/archived/TASK_081_failure_logging_tools.yaml +0 -57
- package/core/dev/pipeline/archived/TASK_081_http_api_routes.yaml +0 -62
- package/core/dev/pipeline/archived/TASK_082_frontend_api_adapter.yaml +0 -51
- package/core/dev/pipeline/archived/TASK_082_integrate_failure_to_workflow.yaml +0 -60
- package/core/dev/pipeline/archived/TASK_083_cleanup_nextjs_api.yaml +0 -48
- package/core/dev/pipeline/archived/TASK_083_task_queue_cleanup.yaml +0 -67
- package/core/dev/pipeline/archived/TASK_084_rust_dead_code_cleanup.yaml +0 -66
- package/core/dev/pipeline/archived/TASK_084_scheduler_sync_logic_fix.yaml +0 -68
- package/core/dev/pipeline/archived/TASK_085_http_api_web_mode_fixes.yaml +0 -46
- package/core/dev/pipeline/archived/TASK_085_memory_consolidation_0204_0205.yaml +0 -98
- package/core/dev/pipeline/archived/TASK_086_collapsible_preview_panel.yaml +0 -161
- package/core/dev/pipeline/archived/TASK_086_web_mode_feature_parity.yaml +0 -62
- package/core/dev/pipeline/archived/TASK_087_manual_memory_archival.yaml +0 -163
- package/core/dev/pipeline/archived/TASK_087_mobile_http_control.yaml +0 -68
- package/core/dev/pipeline/archived/TASK_088_fail_003_to_ppl_002_rule.yaml +0 -63
- package/core/dev/pipeline/archived/TASK_088_mobile_http_qa.yaml +0 -121
- package/core/dev/pipeline/archived/TASK_089_agent_collaboration_topic.yaml +0 -60
- package/core/dev/pipeline/archived/TASK_089_web_mode_monitor_fix.yaml +0 -58
- package/core/dev/pipeline/archived/TASK_090_cli_detection_fix.yaml +0 -61
- package/core/dev/pipeline/archived/TASK_090_ui_ux_lessons_topic.yaml +0 -63
- package/core/dev/pipeline/archived/TASK_091_expandable_card_design.yaml +0 -56
- package/core/dev/pipeline/archived/TASK_091_move_agent_section_components.yaml +0 -65
- package/core/dev/pipeline/archived/TASK_092_expandable_card_component.yaml +0 -60
- package/core/dev/pipeline/archived/TASK_092_refactor_agent_create_wizard.yaml +0 -84
- package/core/dev/pipeline/archived/TASK_093_taskcard_detail_integration.yaml +0 -57
- package/core/dev/pipeline/archived/TASK_093_update_barrel_exports_test.yaml +0 -84
- package/core/dev/pipeline/archived/TASK_094_ai_agent_generation_enhancement.yaml +0 -115
- package/core/dev/pipeline/archived/TASK_094_proposalcard_detail_integration.yaml +0 -55
- package/core/dev/pipeline/archived/TASK_095_preview_fixes.yaml +0 -129
- package/core/dev/pipeline/archived/TASK_095_single_agent_task_selector.yaml +0 -60
- package/core/dev/pipeline/archived/TASK_096_agents_page_ux_improvements.yaml +0 -163
- package/core/dev/pipeline/archived/TASK_096_single_agent_status_sync.yaml +0 -60
- package/core/dev/pipeline/archived/TASK_097_local_claude_error_logging.yaml +0 -59
- package/core/dev/pipeline/archived/TASK_097_single_agent_monitor_events.yaml +0 -59
- package/core/dev/pipeline/archived/TASK_098_product_manager_team_phase2.yaml +0 -60
- package/core/dev/pipeline/archived/TASK_098_single_agent_refactor_test.yaml +0 -58
- package/core/dev/pipeline/archived/TASK_099_backend_team_creation.yaml +0 -258
- package/core/dev/pipeline/archived/TASK_100_frontend_team_creation.yaml +0 -61
- package/core/dev/pipeline/archived/TASK_101_orchestrator_system.yaml +0 -403
- package/core/dev/pipeline/archived/TASK_102_designer_sre_teams.yaml +0 -90
- package/core/dev/pipeline/archived/TASK_103_integration_testing.yaml +0 -86
- package/core/dev/pipeline/archived/TASK_128_integration_testing.yaml +0 -83
- package/core/dev/pipeline/archived/TASK_134_cortex_v2_phase3_file_watcher.yaml +0 -65
- package/core/dev/pipeline/archived/TASK_134_team_http_api.yaml +0 -96
- package/core/dev/pipeline/archived/TASK_135_cortex_v2_phase3_git_monitor.yaml +0 -63
- package/core/dev/pipeline/archived/TASK_136_cortex_v2_phase3_change_analyzer.yaml +0 -69
- package/core/dev/pipeline/archived/TASK_137_cortex_v2_phase3_cache_invalidator.yaml +0 -67
- package/core/dev/pipeline/archived/TASK_137_team_orchestrator_integration.yaml +0 -93
- package/core/dev/pipeline/archived/TASK_138_cortex_v2_phase3_distributed_cache.yaml +0 -68
- package/core/dev/pipeline/archived/TASK_138_matrix_folder_structure.yaml +0 -61
- package/core/dev/pipeline/archived/TASK_139_cortex_v2_phase3_cache_prewarming.yaml +0 -65
- package/core/dev/pipeline/archived/TASK_146_unified_documentation.yaml +0 -141
- package/core/dev/pipeline/archived/TASK_147_pipeline_execution_rules.yaml +0 -76
- package/core/dev/pipeline/archived/TASK_148_update_claude_md.yaml +0 -77
- package/core/dev/pipeline/archived/TASK_149_fix_nextjs_mdx_serialization.yaml +0 -63
- package/core/dev/pipeline/archived/TASK_149_update_team_docs.yaml +0 -77
- package/core/dev/pipeline/archived/TASK_150_pipeline_workflow_guide.yaml +0 -82
- package/core/dev/pipeline/archived/TASK_164_fix_smart_context_switch.yaml +0 -49
- package/core/dev/pipeline/archived/TASK_165_ctags_symbol_index.yaml +0 -53
- package/core/dev/pipeline/archived/TASK_166_symbol_search_mcp_tool.yaml +0 -48
- package/core/dev/pipeline/archived/TASK_167_llm_module_summary.yaml +0 -55
- package/core/dev/pipeline/archived/TASK_168_map_reduce_context.yaml +0 -51
- package/core/dev/pipeline/archived/TASK_169_v2_integration_testing.yaml +0 -52
- package/core/dev/pipeline/backups/archive_2026-02-04T22-07-22/TASK_QUEUE_backup.json +0 -95
- package/core/dev/pipeline/docs/multi-agent-coordination.md +0 -446
- package/core/dev/pipeline/docs/overview.md +0 -406
- package/core/dev/pipeline/docs/task-management.md +0 -412
- package/core/dev/pipeline/docs/workflows.md +0 -32
- package/core/dev/pipeline/orchestrator/schemas/task_queue_schema.json +0 -58
- package/core/dev/pipeline/orchestrator/schemas/task_schema.json +0 -139
- package/core/dev/pipeline/plans/PLAN_task_cli_refactor.md +0 -281
- package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +0 -27
- package/core/dev/plans/ANSUZ_SLIM_PLAN.md +0 -68
- package/core/dev/plans/CLI_FIRST_INSTALL_FLOW.md +0 -120
- package/core/dev/plans/FORMATION_RETIREMENT_PLAN.md +0 -313
- package/core/dev/plans/KUZU_REPLACEMENT_PLAN.md +0 -126
- package/core/dev/scripts/CRASH_DIAGNOSIS.md +0 -47
- package/core/dev/scripts/README.md +0 -142
- package/core/dev/scripts/RUN_ONCE.bat +0 -40
- package/core/dev/scripts/START_DEV_AGENT.bat +0 -63
- package/core/dev/scripts/START_MULTI_AGENT.bat +0 -80
- package/core/dev/scripts/dev_agent_scheduler.ps1 +0 -536
- package/core/dev/scripts/init_git.ps1 +0 -396
- package/core/dev/scripts/init_git.sh +0 -337
- package/core/dev/scripts/init_project.ps1 +0 -851
- package/core/dev/scripts/init_project.sh +0 -477
- package/core/dev/scripts/multi_agent_scheduler.ps1 +0 -2021
- package/core/dev/scripts/multi_agent_scheduler.sh +0 -1344
- package/core/dev/scripts/run_once.sh +0 -47
- package/core/dev/scripts/setup_rag.ps1 +0 -304
- package/core/dev/scripts/setup_rag.sh +0 -230
- package/core/dev/scripts/start_dev_agent.sh +0 -137
- package/core/dev/scripts/start_multi_agent.sh +0 -41
- package/core/dev/scripts/sync_task_queue.ps1 +0 -505
- package/core/dev/scripts/sync_task_queue.sh +0 -392
- package/core/dev/specs/agent-connect/PROTOCOL.md +0 -177
- package/core/dev/specs/agent-connect/SDK_GUIDE.md +0 -915
- package/core/dev/specs/agent-connect/examples/minimal-site/README.md +0 -137
- package/core/dev/specs/agent-connect/examples/minimal-site/package.json +0 -12
- package/core/dev/specs/agent-connect/examples/minimal-site/public/index.html +0 -116
- package/core/dev/specs/agent-connect/examples/minimal-site/public/install-redirect.js +0 -73
- package/core/dev/specs/agent-connect/examples/minimal-site/server.js +0 -516
- package/core/dev/specs/agent-connect/examples/minimal-site/test/smoke.test.mjs +0 -263
- package/core/dev/specs/agent-connect/history/DEFECT_REPORT_kenaz-agent-hub_2026-09-09_v0.4-empty-prompt-no-first-turn.md +0 -77
- package/core/dev/specs/agent-connect/history/DEFECT_REPORT_kenaz-agent-hub_2026-09-09_v0.4-prompt-mojibake.md +0 -90
- package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-07.md +0 -61
- package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-08_relay-v1-conformance.md +0 -76
- package/core/dev/specs/agent-connect/history/FEATURE_REQUEST_kenaz-agent-hub_2026-09-09_v0.4-session-channel.md +0 -87
- package/core/dev/specs/agent-connect/history/FLOWPIX_REPLY_agent-hub_2026-09-08_relay-v1-answers.md +0 -68
- package/core/dev/specs/agent-connect/history/FLOWPIX_bridge_CONTRACT.md +0 -642
- package/core/dev/specs/agent-connect/history/FLOWPIX_spikes_relay_spike_relay.mjs +0 -244
- package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-07.md +0 -77
- package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_direction-change-v0.3.md +0 -44
- package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_relay-v1-answers-ack.md +0 -37
- package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-08_relay-v1-conformance.md +0 -56
- package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_annotations-install-coldstart.md +0 -44
- package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_empty-prompt-first-turn.md +0 -56
- package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_prompt-mojibake-fixed.md +0 -48
- package/core/dev/specs/agent-connect/history/KENAZ_RESPONSE_agent-hub_2026-09-09_session-channel.md +0 -57
- package/core/dev/specs/agent-connect/history/PROTOCOL_v0.3_snapshot.md +0 -379
- package/core/dev/specs/agent-connect/history/README.md +0 -47
- package/core/dev/specs/peer/CODEX_INTERACTIVE_PUSH.md +0 -65
- package/core/dev/specs/peer/CODEX_MANAGED_DAEMON.md +0 -54
- package/core/dev/specs/peer/CODEX_PEER_PULL_SPIKE.md +0 -54
- package/core/dev/specs/peer/MODS_SPIKE.md +0 -133
- package/core/dev/specs/peer/PER_PROJECT_ADDRESSING.md +0 -143
- package/core/dev/specs/peer/SWARM_PROTOCOLS.md +0 -256
- package/core/dev/specs/peer/codex-hook-shim-peer.test.js +0 -113
- package/core/dev/specs/peer/codex-push-launcher.test.js +0 -142
- package/core/dev/specs/peer/setup-codex-hooks.test.js +0 -60
- package/core/dev/specs/peer-ansuz/DELIVERY_SPIKE.md +0 -397
- package/core/dev/specs/peer-ansuz/DESIGN.md +0 -109
- package/core/dev/specs/peer-ansuz/spike/claude_poke.js +0 -129
- package/core/dev/specs/peer-ansuz/spike/claude_session_start_hook.js +0 -37
- package/core/dev/specs/peer-ansuz/spike/claude_settings_hook.json +0 -14
- package/core/dev/specs/peer-ansuz/spike/codex_appserver_client.js +0 -105
- package/core/dev/specs/peer-ansuz/spike/codex_appserver_query.js +0 -29
- package/core/dev/specs/peer-ansuz/spike/extract_timeline.js +0 -26
- package/core/dev/specs/synapse/SYMBOL_IDENTITY.md +0 -305
- package/core/dev/spikes/A4-cypher-varlen.md +0 -176
- package/core/dev/spikes/bloat-rounds.sh +0 -25
- package/core/dev/spikes/mods/clean-claude.js +0 -9
- package/core/dev/spikes/mods/drive-probe.js +0 -29
- package/core/dev/spikes/mods/e2e-peer.js +0 -71
- package/core/dev/spikes/mods/evidence/e2e-peer-control.json +0 -17
- package/core/dev/spikes/mods/evidence/e2e-peer-mod.json +0 -17
- package/core/dev/spikes/mods/evidence/probe-006a6e65-d807-4bc1-b648-fd7d1edfe0b4.jsonl +0 -4
- package/core/dev/spikes/mods/evidence/probe-cebdf1f7-f9c4-47a8-83cd-7c0786177404.jsonl +0 -12
- package/core/dev/spikes/mods/evidence/probe-eb21147d-10ce-4c32-93ed-37ca37d88d5a.jsonl +0 -11
- package/core/dev/spikes/mods/evidence/stream-cebdf1f7.jsonl +0 -18
- package/core/dev/spikes/mods/kenaz-mod-probe/.claude-plugin/plugin.json +0 -1
- package/core/dev/spikes/mods/kenaz-mod-probe/hooks/hooks.json +0 -1
- package/core/dev/spikes/mods/kenaz-mod-probe/hooks/register.ts +0 -65
- package/core/dev/spikes/mods/kenaz-mod-probe/tsconfig.json +0 -3
|
@@ -1,352 +0,0 @@
|
|
|
1
|
-
# synapse_orphans Indexing Bug Investigation — 2026-04-11
|
|
2
|
-
|
|
3
|
-
**Task**: TASK_1173
|
|
4
|
-
**Date**: 2026-04-11
|
|
5
|
-
**Analyst**: unit agent (backend specialist)
|
|
6
|
-
**Input**: TASK_1172 verification report — 24/30 false positives confirmed
|
|
7
|
-
**Scope**: dashboard/src-tauri/src/features/synapse (scanner.rs, calls.rs, imports.rs, index.rs)
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Input data (from TASK_1172)
|
|
12
|
-
|
|
13
|
-
TASK_1172 ran `synapse_orphans(min_age_days=30, limit=50)` and grep-verified 30 in-scope candidates:
|
|
14
|
-
|
|
15
|
-
- **24/30 FALSE_POSITIVE** — live callers confirmed by grep
|
|
16
|
-
- **5/30 CONFIRMED_ORPHAN** — deleted
|
|
17
|
-
- **1/30 AMBIGUOUS** — retained
|
|
18
|
-
|
|
19
|
-
Key false-positive groups (with confirmed callers):
|
|
20
|
-
|
|
21
|
-
| Symbol | File | Caller | Caller location |
|
|
22
|
-
|--------|------|--------|-----------------|
|
|
23
|
-
| `hasRemoteFileConflict` | `.formation/tools/remote-conflict.js` | dispatch.js | line 338 |
|
|
24
|
-
| `isCacheStale` | `.formation/tools/remote-conflict.js` | dispatch.js | line 331 |
|
|
25
|
-
| `checkLinks` | `.kenaz/docs/tools/src/registry.ts` | cli.ts | line 274 |
|
|
26
|
-
| `rebuildIndex` | `.kenaz/docs/tools/src/registry.ts` | cli.ts | line 196 |
|
|
27
|
-
| `syncToRag` | `.kenaz/docs/tools/src/registry.ts` | cli.ts | line 250 |
|
|
28
|
-
| `main` (×7) | various .memory/tools and .formation/tools | self-invoked at module scope | tail of each file |
|
|
29
|
-
| `constructor` (×4) | registry.ts, search.ts, field-extractor.ts, token-optimizer.js | `new ClassName()` at call sites | various lines |
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## Graph state queries
|
|
34
|
-
|
|
35
|
-
### Query 1 — CALLS edges to hasRemoteFileConflict and isCacheStale
|
|
36
|
-
|
|
37
|
-
```cypher
|
|
38
|
-
MATCH (caller:Symbol)-[r:CALLS]->(callee:Symbol {name:'hasRemoteFileConflict'})
|
|
39
|
-
RETURN caller.file_path, caller.name, count(r)
|
|
40
|
-
```
|
|
41
|
-
**Result**: 0 rows
|
|
42
|
-
|
|
43
|
-
```cypher
|
|
44
|
-
MATCH (caller:Symbol)-[r:CALLS]->(callee:Symbol {name:'isCacheStale'})
|
|
45
|
-
RETURN caller.file_path, caller.name, count(r)
|
|
46
|
-
```
|
|
47
|
-
**Result**: 0 rows
|
|
48
|
-
|
|
49
|
-
```cypher
|
|
50
|
-
MATCH (caller:Symbol)-[r:CALLS]->(callee:Symbol {name:'checkLinks'})
|
|
51
|
-
RETURN caller.file_path, caller.name, count(r)
|
|
52
|
-
```
|
|
53
|
-
**Result**: 0 rows
|
|
54
|
-
|
|
55
|
-
### Query 2 — Caller files in the File table
|
|
56
|
-
|
|
57
|
-
```cypher
|
|
58
|
-
MATCH (f:File) WHERE f.path CONTAINS 'dispatch.js' OR f.path CONTAINS 'cli.ts'
|
|
59
|
-
RETURN f.path, f.name
|
|
60
|
-
```
|
|
61
|
-
**Result**: BOTH files present:
|
|
62
|
-
- `.kenaz/docs/tools/src/cli.ts`
|
|
63
|
-
- `.formation/tools/dispatch.js`
|
|
64
|
-
|
|
65
|
-
**Interpretation**: Caller files ARE indexed — this rules out Hypothesis A (files never indexed).
|
|
66
|
-
|
|
67
|
-
### Query 3 — Symbols defined in caller files
|
|
68
|
-
|
|
69
|
-
```cypher
|
|
70
|
-
MATCH (f:File {path:'.formation/tools/dispatch.js'})-[:DEFINES]->(s:Symbol)
|
|
71
|
-
RETURN s.name, s.kind, s.start_line ORDER BY s.start_line
|
|
72
|
-
```
|
|
73
|
-
**Result**: 14 symbols — `getSupabaseClient`, `getTaskSync`, `getCommitSync`, `syncCommit`, `broadcastStatus`, `readActiveDispatches`, `writeActiveDispatches`, `registerDispatch`, `unregisterDispatch`, `buildCortexContext`, `checkDependencies`, `dispatch`, `handleDryRun`, `execute`
|
|
74
|
-
|
|
75
|
-
```cypher
|
|
76
|
-
MATCH (f:File {path:'.kenaz/docs/tools/src/cli.ts'})-[:DEFINES]->(s:Symbol)
|
|
77
|
-
RETURN s.name, s.kind, s.start_line ORDER BY s.start_line
|
|
78
|
-
```
|
|
79
|
-
**Result**: **0 rows** — cli.ts has NO symbols in the graph.
|
|
80
|
-
|
|
81
|
-
**Interpretation**: Two distinct failure modes:
|
|
82
|
-
- dispatch.js: Phase 2 succeeded (14 symbols) but Phase 3 failed (0 CALLS, 0 IMPORTS)
|
|
83
|
-
- cli.ts: Phase 2 failed entirely (0 symbols extracted)
|
|
84
|
-
|
|
85
|
-
### Query 4 — IMPORTS edges from dispatch.js
|
|
86
|
-
|
|
87
|
-
```cypher
|
|
88
|
-
MATCH (f:File {path:'.formation/tools/dispatch.js'})-[r:IMPORTS]->(g:File)
|
|
89
|
-
RETURN g.path, r.imported_symbols, r.confidence
|
|
90
|
-
```
|
|
91
|
-
**Result**: 0 rows. No IMPORTS edges for dispatch.js.
|
|
92
|
-
|
|
93
|
-
Compare: `run-round2.js`, `legacy-scheduler.js`, `muninn.js`, etc. all have IMPORTS edges.
|
|
94
|
-
|
|
95
|
-
### Query 5 — Any outgoing CALLS from dispatch.js
|
|
96
|
-
|
|
97
|
-
```cypher
|
|
98
|
-
MATCH (s:Symbol {file_path:'.formation/tools/dispatch.js'})-[r:CALLS]->(t:Symbol)
|
|
99
|
-
RETURN s.name, t.name, t.file_path, r.call_line LIMIT 10
|
|
100
|
-
```
|
|
101
|
-
**Result**: **0 rows** — no CALLS from ANY dispatch.js symbol, including same-file calls (e.g., `dispatch → checkDependencies`, `execute → registerDispatch`).
|
|
102
|
-
|
|
103
|
-
### Query 6 — Callee symbol uniqueness
|
|
104
|
-
|
|
105
|
-
```cypher
|
|
106
|
-
MATCH (s:Symbol {name:'isCacheStale'}) RETURN s.id, s.file_path, s.kind
|
|
107
|
-
MATCH (s:Symbol {name:'hasRemoteFileConflict'}) RETURN s.id, s.file_path, s.kind
|
|
108
|
-
```
|
|
109
|
-
**Result**: Both symbols are globally unique (1 candidate each in symbol_index).
|
|
110
|
-
|
|
111
|
-
**Interpretation**: The `unique_name` fallback strategy (confidence 0.75) in `find_callee_from_imports` should have matched these symbols. The fact that it didn't confirms Phase 3 was never run for dispatch.js — not that resolution failed.
|
|
112
|
-
|
|
113
|
-
### Query 7 — CALLS edge coverage across .formation/tools
|
|
114
|
-
|
|
115
|
-
```cypher
|
|
116
|
-
MATCH (s:Symbol)-[r:CALLS]->(t:Symbol)
|
|
117
|
-
WHERE s.file_path STARTS WITH '.formation/tools/'
|
|
118
|
-
RETURN s.file_path, count(r) AS call_count ORDER BY call_count DESC LIMIT 10
|
|
119
|
-
```
|
|
120
|
-
**Result**: prompt.js (532), loop.js (187), legacy-scheduler.js (171), muninn-watcher.js (127) … **dispatch.js absent** (0 edges).
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## Hypothesis 1
|
|
125
|
-
|
|
126
|
-
**cli.ts has zero symbols — Commander-pattern CLI files are invisible to Phase 2**
|
|
127
|
-
|
|
128
|
-
**Evidence**:
|
|
129
|
-
- cli.ts shows 0 DEFINES edges (Query 3)
|
|
130
|
-
- cli.ts content starts with `#!/usr/bin/env node` and uses the Commander.js pattern:
|
|
131
|
-
```ts
|
|
132
|
-
import { Command } from 'commander';
|
|
133
|
-
const program = new Command();
|
|
134
|
-
program.command('search <query>').action((query, options) => { ... });
|
|
135
|
-
```
|
|
136
|
-
- There are NO top-level `function` declarations or `const foo = () => {}` arrow functions at declaration level. All handlers are inline anonymous callbacks passed to `.action()`.
|
|
137
|
-
- `collect_ts_calls_recursive` in `calls.rs` only tracks calls made **inside named function/method/arrow-function declarations**. Anonymous callbacks in argument position are recursed into but their enclosing scope is the *outer* function — in cli.ts's case, there is no outer named function.
|
|
138
|
-
- `symbols::extract_symbols` in `symbols.rs` extracts `function_declaration`, `method_definition`, and `variable_declarator` with function value — it does NOT extract anonymous callbacks inside method call chains.
|
|
139
|
-
|
|
140
|
-
**Test to confirm**: Run `synapse_search({ query: "cli kenaz docs command search", file_filter: "cli.ts" })` — no results = confirmed zero symbols.
|
|
141
|
-
|
|
142
|
-
**Impact**: ALL callers of registry.ts methods originate in cli.ts (`checkLinks`, `rebuildIndex`, `syncToRag`, `validate`, `stats`, `searchWithScores`, `listSystems`). Since cli.ts has 0 symbols, no CALLS edges from cli.ts can ever exist regardless of how well Phase 3 runs.
|
|
143
|
-
|
|
144
|
-
**Fix scope**: `symbols.rs` symbol extractor needs to detect CLI script entry patterns (`program.command().action(handler)`) and either: (a) synthesize a virtual caller symbol per command, or (b) registry.ts methods should not be flagged as orphans if their file has a corresponding `.cli.ts` caller file.
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Hypothesis 2
|
|
149
|
-
|
|
150
|
-
**Module-scope call expressions silently dropped by calls.rs**
|
|
151
|
-
|
|
152
|
-
**Evidence**:
|
|
153
|
-
- `calls.rs:335-345` (confirmed via code read):
|
|
154
|
-
```rust
|
|
155
|
-
if let Some((caller_name, caller_line)) = enclosing_func {
|
|
156
|
-
if !is_ts_builtin(&simple_name) {
|
|
157
|
-
calls.push(CallInfo { ... });
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
// No else — module-scope calls silently discarded
|
|
161
|
-
```
|
|
162
|
-
- `collect_ts_calls_recursive` is called with `enclosing_func = None` for the top-level program node. Call expressions encountered at file scope (outside any function body) hit this guard and are **never pushed to the calls Vec**.
|
|
163
|
-
- Confirmed false positives caused by this:
|
|
164
|
-
- `main()` at end of file (7 occurrences): `memory-tools.js:475`, `migrate-failures.js` tail, `security-filter.js:419`, `token-optimizer.js:387`, `cleanup-duplicates.js` tail, `rebuild-registry.js:96`, `run-round2.js` tail
|
|
165
|
-
- `getArg('--skill')` at module scope in `run-round2.js:24`
|
|
166
|
-
- `rebuildRegistry()` at module scope in `rebuild-registry.js:96`
|
|
167
|
-
|
|
168
|
-
**Test to confirm**:
|
|
169
|
-
```bash
|
|
170
|
-
grep -n "^main\(\|^main().catch\|^\s*main()" .formation/tools/run-round2.js
|
|
171
|
-
```
|
|
172
|
-
Line found at module scope → no enclosing_func → no CallInfo → no CALLS edge → `main` appears as orphan.
|
|
173
|
-
|
|
174
|
-
**Fix scope**: `calls.rs:335` — add `else` branch to push CallInfo with synthetic caller (`"<module>"`, `caller_start_line = 0`) for module-scope calls. Then `resolve_phase3` would need to either skip these (no symbol match) or create a module-level pseudo-symbol.
|
|
175
|
-
|
|
176
|
-
**Simpler fix**: In `synapse_orphans`, additionally check whether the symbol IS called at module scope via a separate grep-style scan, or filter out symbols whose name is `main` and whose file has a `require.main === module` guard.
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
## Hypothesis 3
|
|
181
|
-
|
|
182
|
-
**Destructured CommonJS require breaks import_map strategy, contributing to Phase 3 staleness for dispatch.js**
|
|
183
|
-
|
|
184
|
-
**Evidence**:
|
|
185
|
-
- `imports.rs:359-409` — `extract_ts_require` reads the variable name with `child_by_field_name("name")`:
|
|
186
|
-
```rust
|
|
187
|
-
let name = child
|
|
188
|
-
.child_by_field_name("name")
|
|
189
|
-
.and_then(|n| n.utf8_text(source_bytes).ok())
|
|
190
|
-
.unwrap_or("")
|
|
191
|
-
.to_string();
|
|
192
|
-
// imported_symbols = vec![name]
|
|
193
|
-
```
|
|
194
|
-
- For destructured require `const { refreshCache, hasRemoteConflict, hasRemoteFileConflict, isCacheStale } = require('./remote-conflict')`, the `name` field of `variable_declarator` is an `object_pattern` node. `utf8_text()` on that node returns the raw text `{ refreshCache, hasRemoteConflict, hasRemoteFileConflict, isCacheStale }` as a SINGLE string.
|
|
195
|
-
- Result: `imported_symbols = ["{ refreshCache, hasRemoteConflict, hasRemoteFileConflict, isCacheStale }"]` — one string with braces, not four separate names.
|
|
196
|
-
- In `find_callee_from_imports` (scanner.rs:1901-1910):
|
|
197
|
-
```rust
|
|
198
|
-
if imp.imported_symbols.contains(&simple_name.to_string()) {
|
|
199
|
-
```
|
|
200
|
-
`simple_name = "hasRemoteFileConflict"` → `.contains()` fails → import_map strategy misses.
|
|
201
|
-
- Fallback to `unique_name` (strategy 2): should still work for unique symbols, BUT dispatch.js has 0 CALLS edges even for **same-file** symbols (see Query 5). This means the destructured require bug alone is not the only cause.
|
|
202
|
-
|
|
203
|
-
**dispatch.js Phase 3 staleness — auxiliary finding**:
|
|
204
|
-
- dispatch.js has 14 symbols (Phase 2 ran), 0 IMPORTS, 0 CALLS (including same-file calls like `dispatch → checkDependencies` at line 252, `execute → registerDispatch` at line 445).
|
|
205
|
-
- Same-file calls use Strategy 1 (`same_file`, confidence 0.90) which operates on `fd.extracted_symbols` — it does NOT depend on imports at all.
|
|
206
|
-
- Conclusion: Phase 3 was **never run for dispatch.js**. The most likely cause: dispatch.js was first indexed in a full index pass that predated the addition of `.formation/tools/remote-conflict.js`. Incremental index only re-processes changed files. Since dispatch.js's content has not changed since that full index, it has been skipped on every subsequent run — its Phase 3 edges were never built.
|
|
207
|
-
- This is a general **incremental index blindspot**: files that existed at full-index time with no subsequent changes never get Phase 3 re-run when *their dependencies* are added/modified.
|
|
208
|
-
|
|
209
|
-
**Test to confirm destructured require bug**:
|
|
210
|
-
```cypher
|
|
211
|
-
MATCH (f:File {path:'.formation/tools/dispatch.js'})-[r:IMPORTS]->(g:File)
|
|
212
|
-
RETURN g.path, r.imported_symbols
|
|
213
|
-
```
|
|
214
|
-
Expected if bug present: 0 rows (confirmed already). Expected after fix: rows with individual symbol names.
|
|
215
|
-
|
|
216
|
-
**Fix scope**: `imports.rs:extract_ts_require` — detect when `name` node is `object_pattern`, then iterate its `shorthand_property_identifier_pattern` children to build individual symbol names instead of raw text.
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## Hypothesis 4
|
|
221
|
-
|
|
222
|
-
**Constructor calls not tracked — `new ClassName()` not modeled as CALLS to constructor**
|
|
223
|
-
|
|
224
|
-
**Evidence**:
|
|
225
|
-
- `calls.rs` `collect_ts_calls_recursive` matches `"call_expression"` nodes. However, class instantiation uses `new_expression` nodes in tree-sitter-javascript/typescript, not `call_expression`.
|
|
226
|
-
- tree-sitter-javascript AST for `new DocsRegistry(config)`:
|
|
227
|
-
```
|
|
228
|
-
new_expression
|
|
229
|
-
constructor: (identifier) "DocsRegistry"
|
|
230
|
-
arguments: (arguments ...)
|
|
231
|
-
```
|
|
232
|
-
- The `collect_ts_calls_recursive` `_ => {}` fallback recurses into `new_expression` children, but there is no arm for `"new_expression"` → the constructor identifier is never treated as a callee.
|
|
233
|
-
- Result: 4 constructor symbols appear as orphans: `constructor` in registry.ts, search.ts, field-extractor.ts, token-optimizer.js.
|
|
234
|
-
|
|
235
|
-
**Test to confirm**:
|
|
236
|
-
```bash
|
|
237
|
-
grep -rn "new DocsRegistry\|new SearchEngine\|new FieldExtractor" .kenaz/docs/tools/src/
|
|
238
|
-
```
|
|
239
|
-
All found in registry.ts → confirmed live callers exist.
|
|
240
|
-
|
|
241
|
-
**Fix scope**: `calls.rs:collect_ts_calls_recursive` — add `"new_expression"` arm that extracts the `constructor` field as callee (similar to `call_expression`), treating it as a call to the class's `constructor` method. Alternatively, match `new ClassName()` as a call to `ClassName` (the class itself).
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
## Root cause
|
|
246
|
-
|
|
247
|
-
Root cause: Multiple independent indexing gaps in calls.rs, imports.rs, and symbol extractor — not a single bug.
|
|
248
|
-
|
|
249
|
-
**Details — multiple independent gaps:**
|
|
250
|
-
|
|
251
|
-
| Root cause | Affected symbols | Fix complexity |
|
|
252
|
-
|------------|-----------------|----------------|
|
|
253
|
-
| **cli.ts zero symbols** (Commander pattern — no top-level named functions) | checkLinks, rebuildIndex, syncToRag, validate, stats, searchWithScores, listSystems (7 symbols) | Medium — need Commander-aware symbol extraction or orphan filter |
|
|
254
|
-
| **Module-scope call dropping** (calls.rs:335 guard drops calls without enclosing function) | main (×7), getArg, rebuildRegistry (9+ symbols) | Small — add synthetic `<module>` caller or filter main/cli patterns in orphan tool |
|
|
255
|
-
| **Destructured require breaks import_map** (imports.rs reads object_pattern as raw text) | dispatch.js cross-file callee resolution (affects import_map only; unique_name still works for unique symbols) | Small — 10 LOC fix in extract_ts_require |
|
|
256
|
-
| **Phase 3 never ran for dispatch.js** (incremental blindspot: file unchanged since before remote-conflict.js was added) | hasRemoteFileConflict, isCacheStale, hasRemoteConflict, refreshCache | Requires forced re-index of dispatch.js or full re-index |
|
|
257
|
-
| **new_expression not tracked** (constructor calls use different AST node) | constructor (×4) | Small — add new_expression arm in calls.rs |
|
|
258
|
-
|
|
259
|
-
**Primary false positive source** (by count): module-scope call dropping (9+) and cli.ts zero symbols (7).
|
|
260
|
-
**Most load-bearing fix**: module-scope call dropping — affects ANY CLI-style script that calls main() or helpers at file scope.
|
|
261
|
-
|
|
262
|
-
---
|
|
263
|
-
|
|
264
|
-
## Proposed fix
|
|
265
|
-
|
|
266
|
-
### Fix 1 — imports.rs: destructured require (≤15 LOC, trivial)
|
|
267
|
-
|
|
268
|
-
In `extract_ts_require` (imports.rs:366-370), replace raw text extraction with object_pattern child parsing:
|
|
269
|
-
|
|
270
|
-
```rust
|
|
271
|
-
let imported_symbols = if child
|
|
272
|
-
.child_by_field_name("name")
|
|
273
|
-
.map(|n| n.kind() == "object_pattern")
|
|
274
|
-
.unwrap_or(false)
|
|
275
|
-
{
|
|
276
|
-
// Destructured: const { X, Y } = require(...)
|
|
277
|
-
// Walk object_pattern children for shorthand_property_identifier_pattern
|
|
278
|
-
let mut symbols = vec![];
|
|
279
|
-
if let Some(pattern) = child.child_by_field_name("name") {
|
|
280
|
-
let mut c = pattern.walk();
|
|
281
|
-
for prop in pattern.children(&mut c) {
|
|
282
|
-
if prop.kind() == "shorthand_property_identifier_pattern" {
|
|
283
|
-
if let Ok(name) = prop.utf8_text(source_bytes) {
|
|
284
|
-
symbols.push(name.to_string());
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
symbols
|
|
290
|
-
} else {
|
|
291
|
-
// Simple: const X = require(...)
|
|
292
|
-
let name = child.child_by_field_name("name")
|
|
293
|
-
.and_then(|n| n.utf8_text(source_bytes).ok())
|
|
294
|
-
.unwrap_or("")
|
|
295
|
-
.to_string();
|
|
296
|
-
if name.is_empty() { vec![] } else { vec![name] }
|
|
297
|
-
};
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
### Fix 2 — calls.rs: new_expression tracking (≤20 LOC, trivial)
|
|
301
|
-
|
|
302
|
-
In `collect_ts_calls_recursive`, add a `"new_expression"` arm after `"call_expression"`:
|
|
303
|
-
|
|
304
|
-
```rust
|
|
305
|
-
"new_expression" => {
|
|
306
|
-
if let Some(ctor_node) = child.child_by_field_name("constructor") {
|
|
307
|
-
let callee = ctor_node.utf8_text(source_bytes).unwrap_or("").to_string();
|
|
308
|
-
let simple_name = extract_simple_name(&callee);
|
|
309
|
-
let line = child.start_position().row + 1;
|
|
310
|
-
if let Some((caller_name, caller_line)) = enclosing_func {
|
|
311
|
-
if !is_ts_builtin(&simple_name) {
|
|
312
|
-
calls.push(CallInfo {
|
|
313
|
-
callee_name: callee,
|
|
314
|
-
callee_simple_name: simple_name,
|
|
315
|
-
line,
|
|
316
|
-
caller_name: caller_name.to_string(),
|
|
317
|
-
caller_start_line: caller_line,
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
collect_ts_calls_recursive(&child, source_bytes, calls, enclosing_func, depth + 1);
|
|
323
|
-
}
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
### Fix 3 — Module-scope call tracking (medium, requires design decision)
|
|
327
|
-
|
|
328
|
-
Option A: Add synthetic `<module>` caller in calls.rs (pushes CallInfo with `caller_name = "<module>"`, `caller_start_line = 0`). Then in resolve_phase3, treat `<module>` caller as a special File-level edge rather than a Symbol-to-Symbol CALLS edge. This requires schema/logic changes.
|
|
329
|
-
|
|
330
|
-
Option B: Filter `main` and other CLI entry patterns in `synapse_orphans` itself — functions named `main` that are the last expression in a file, or functions with `require.main === module` guard, should be excluded from orphan candidates. This is a heuristic filter, not a graph fix.
|
|
331
|
-
|
|
332
|
-
Option C: Track module-scope calls as CALLS edges originating from a synthetic `<module_scope>` symbol per file. Add this to Phase 2 as well.
|
|
333
|
-
|
|
334
|
-
**Recommendation**: Option B for immediate fix (< 5 LOC in lib.rs orphans function), Option A/C for completeness.
|
|
335
|
-
|
|
336
|
-
### Fix 4 — Forced re-index of dispatch.js
|
|
337
|
-
|
|
338
|
-
Touching dispatch.js (even adding a comment) will trigger incremental re-index → Phase 3 will run → CALLS edges for `hasRemoteFileConflict`, `isCacheStale` will be created after Fix 1. Not a code fix but an operational remediation.
|
|
339
|
-
|
|
340
|
-
### Fix 5 — cli.ts symbol extraction (complex, deferred)
|
|
341
|
-
|
|
342
|
-
Commander-pattern CLI files require either:
|
|
343
|
-
- A new extractor that synthesizes named symbols for each `.command('name').action()` block
|
|
344
|
-
- OR an exclusion in synapse_orphans for symbols in files that have a CLI caller (presence of `cli.ts` or `cli.js` sibling in same directory)
|
|
345
|
-
|
|
346
|
-
**Recommendation**: Deferred. Document the pattern in synapse_orphans tool description.
|
|
347
|
-
|
|
348
|
-
---
|
|
349
|
-
|
|
350
|
-
**Status of proposed fixes**: Fix 1 and Fix 2 are trivial (< 30 LOC combined, well within inline patch threshold). Fix 3 Option B is trivial. They constitute the complete patch for this bug.
|
|
351
|
-
|
|
352
|
-
status: fix_task_proposed
|
package/core/dev/archive/ansuz/investigations/synapse_orphans_reindex_verification_2026-04-11.md
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# Synapse Orphans Re-index Verification — 2026-04-11
|
|
2
|
-
|
|
3
|
-
**Task**: TASK_1177
|
|
4
|
-
**Dependency**: TASK_1174 (imports.rs destructured require fix) — confirmed DONE
|
|
5
|
-
**Date**: 2026-04-11
|
|
6
|
-
**Operator**: unit (Formation agent)
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Before
|
|
11
|
-
|
|
12
|
-
Snapshot taken before forced full re-index. Source: `synapse_orphans(min_age_days=30)` + `synapse_context` per symbol.
|
|
13
|
-
|
|
14
|
-
| Symbol | File | Callers (BEFORE) | In orphans(min_age_days=30)? |
|
|
15
|
-
|--------|------|-----------------|------------------------------|
|
|
16
|
-
| `hasRemoteFileConflict` | `.formation/tools/remote-conflict.js` | 0 | No (EXPORTS edge from module.exports) |
|
|
17
|
-
| `isCacheStale` | `.formation/tools/remote-conflict.js` | 0 | No (EXPORTS edge from module.exports) |
|
|
18
|
-
| `hasRemoteConflict` | `.formation/tools/remote-conflict.js` | 2 (legacy-scheduler.js only) | No (has callers) |
|
|
19
|
-
| `refreshCache` | `.formation/tools/remote-conflict.js` | 1 (legacy-scheduler.js only) | No (has callers) |
|
|
20
|
-
|
|
21
|
-
**Interpretation**: The four symbols were NOT surfaced as orphans because `remote-conflict.js` exports them via `module.exports`, giving them EXPORTS edges that excluded them from orphan detection. However, `hasRemoteFileConflict` and `isCacheStale` had **0 callers** — confirming the Phase 3 CALLS/IMPORTS edge build never ran for `dispatch.js`. The destructured require at `dispatch.js:21` was present in code but not recognized by the pre-TASK_1174 parser.
|
|
22
|
-
|
|
23
|
-
**Re-index method used**: `POST /api/synapse/index` with `force: true` — triggered a full re-index (bypassing Layer 2 SHA1 hash check). The incremental `synapse_index` MCP call returned "No changes detected" as expected (SHA1 unchanged since dispatch.js content was correct but un-re-parsed).
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## After
|
|
28
|
-
|
|
29
|
-
Snapshot taken after full re-index completed (relationships stabilized at 23,670, symbol_entries at 21,751).
|
|
30
|
-
|
|
31
|
-
| Symbol | File | Callers (AFTER) | Caller from dispatch.js? |
|
|
32
|
-
|--------|------|----------------|--------------------------|
|
|
33
|
-
| `hasRemoteFileConflict` | `.formation/tools/remote-conflict.js` | 1 | ✅ Yes (`dispatch` function) |
|
|
34
|
-
| `isCacheStale` | `.formation/tools/remote-conflict.js` | 1 | ✅ Yes (`dispatch` function) |
|
|
35
|
-
| `hasRemoteConflict` | `.formation/tools/remote-conflict.js` | 3 | ✅ Yes (`dispatch` function + legacy-scheduler.js x2) |
|
|
36
|
-
| `refreshCache` | `.formation/tools/remote-conflict.js` | 2 | ✅ Yes (`dispatch` function + legacy-scheduler.js x1) |
|
|
37
|
-
|
|
38
|
-
**dispatch.js byte-identity**: Confirmed — `git diff --stat .formation/tools/dispatch.js` returned no output (no changes).
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Notes
|
|
43
|
-
|
|
44
|
-
- The `synapse_index` MCP tool (incremental) is insufficient to re-parse dispatch.js when content is unchanged — Layer 2 SHA1 hash check short-circuits Phase 3. A forced full re-index via the HTTP API (`force: true`) was required.
|
|
45
|
-
- TASK_1174's fix to `imports.rs` (destructured require parsing) is confirmed effective: all four symbols now have dispatch.js as a caller.
|
|
46
|
-
- The orphans false-positive framing in TASK_1173 was partially inaccurate: the symbols were never in `orphans(min_age_days=30)` due to EXPORTS edges. The real signal was the missing CALLS edges (0 callers for hasRemoteFileConflict and isCacheStale).
|
|
47
|
-
|
|
48
|
-
Verdict: all_four_cleared
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
# synapse_orphans Verification Report — 2026-04-11
|
|
2
|
-
|
|
3
|
-
**Task**: TASK_1172
|
|
4
|
-
**Date**: 2026-04-11
|
|
5
|
-
**Snapshot**: synapse_orphans(min_age_days=30, limit=50)
|
|
6
|
-
**Scope paths**: .kenaz/docs/tools, .memory/tools, .formation/tools/run-round2.js, .formation/tools/remote-conflict.js
|
|
7
|
-
**Analyst**: unit agent
|
|
8
|
-
**Paired task**: TASK_1173 (synapse_orphans indexing bug investigation)
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## Summary
|
|
13
|
-
|
|
14
|
-
false_positive_rate: 24/30
|
|
15
|
-
|
|
16
|
-
| Category | Count | Notes |
|
|
17
|
-
|---|---|---|
|
|
18
|
-
| CONFIRMED_ORPHAN | 5 | Zero non-definition callers; safe to delete |
|
|
19
|
-
| FALSE_POSITIVE | 24 | Actual callers found (code, docs, or self-invocation) |
|
|
20
|
-
| AMBIGUOUS | 1 | Exported API, no external callers discovered |
|
|
21
|
-
| **Total in-scope** | **30** | Of 50 returned by synapse_orphans |
|
|
22
|
-
|
|
23
|
-
**Key finding**: 80% false-positive rate. Root cause appears to be synapse_orphans failing to model: (a) module-scope self-invocation (CLI `main()` calls), (b) class instantiation callers (`new ClassName()`), (c) cross-module require chains. TASK_1173 should investigate these indexing gaps.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## Candidates
|
|
28
|
-
|
|
29
|
-
Full list of in-scope candidates from synapse_orphans snapshot:
|
|
30
|
-
|
|
31
|
-
| # | Symbol | File | Lines | LOC Impact | Classification |
|
|
32
|
-
|---|---|---|---|---|---|
|
|
33
|
-
| 1 | `checkLinks` | `.kenaz/docs/tools/src/registry.ts` | 594–637 | 44 | FALSE_POSITIVE |
|
|
34
|
-
| 2 | `syncToRag` | `.kenaz/docs/tools/src/registry.ts` | 475–514 | 40 | FALSE_POSITIVE |
|
|
35
|
-
| 3 | `validate` | `.kenaz/docs/tools/src/registry.ts` | 516–551 | 36 | FALSE_POSITIVE |
|
|
36
|
-
| 4 | `rebuildIndex` | `.kenaz/docs/tools/src/registry.ts` | 142–173 | 32 | FALSE_POSITIVE |
|
|
37
|
-
| 5 | `__init__` | `.kenaz/docs/tools/sync_to_rag.py` | 59–81 | 23 | FALSE_POSITIVE |
|
|
38
|
-
| 6 | `stats` | `.kenaz/docs/tools/src/registry.ts` | 553–574 | 22 | FALSE_POSITIVE |
|
|
39
|
-
| 7 | `searchWithScores` | `.kenaz/docs/tools/src/registry.ts` | 106–124 | 19 | FALSE_POSITIVE |
|
|
40
|
-
| 8 | `addSystem` | `.kenaz/docs/tools/src/registry.ts` | 576–584 | 9 | CONFIRMED_ORPHAN |
|
|
41
|
-
| 9 | `removeSystem` | `.kenaz/docs/tools/src/registry.ts` | 586–592 | 7 | CONFIRMED_ORPHAN |
|
|
42
|
-
| 10 | `constructor` | `.kenaz/docs/tools/src/registry.ts` | 37–39 | 3 | FALSE_POSITIVE |
|
|
43
|
-
| 11 | `listSystems` | `.kenaz/docs/tools/src/registry.ts` | 134–136 | 3 | FALSE_POSITIVE |
|
|
44
|
-
| 12 | `main` | `.memory/tools/memory-tools.js` | 376–472 | 97 | FALSE_POSITIVE |
|
|
45
|
-
| 13 | `main` | `.memory/tools/migrate-failures.js` | 263–342 | 80 | FALSE_POSITIVE |
|
|
46
|
-
| 14 | `smartTrim` | `.memory/tools/token-optimizer.js` | 180–246 | 67 | FALSE_POSITIVE |
|
|
47
|
-
| 15 | `main` | `.memory/tools/security-filter.js` | 358–417 | 60 | FALSE_POSITIVE |
|
|
48
|
-
| 16 | `main` | `.memory/tools/token-optimizer.js` | 334–384 | 51 | FALSE_POSITIVE |
|
|
49
|
-
| 17 | `constructor` | `.memory/tools/token-optimizer.js` | 31–36 | 6 | FALSE_POSITIVE |
|
|
50
|
-
| 18 | `hasSensitiveData` | `.memory/tools/security-filter.js` | 352–355 | 4 | AMBIGUOUS |
|
|
51
|
-
| 19 | `main` | `.memory/tools/cleanup-duplicates.js` | 100–144 | 45 | FALSE_POSITIVE |
|
|
52
|
-
| 20 | `rebuildRegistry` | `.memory/tools/rebuild-registry.js` | 65–94 | 30 | FALSE_POSITIVE |
|
|
53
|
-
| 21 | `search` | `.kenaz/docs/tools/src/search.ts` | 32–74 | 43 | FALSE_POSITIVE |
|
|
54
|
-
| 22 | `getSearchStats` | `.kenaz/docs/tools/src/search.ts` | 191–232 | 42 | CONFIRMED_ORPHAN |
|
|
55
|
-
| 23 | `constructor` | `.kenaz/docs/tools/src/field-extractor.ts` | 27–61 | 35 | FALSE_POSITIVE |
|
|
56
|
-
| 24 | `registerSystem` | `.kenaz/docs/tools/src/field-extractor.ts` | 155–157 | 3 | CONFIRMED_ORPHAN |
|
|
57
|
-
| 25 | `getRegisteredSystems` | `.kenaz/docs/tools/src/field-extractor.ts` | 162–164 | 3 | CONFIRMED_ORPHAN |
|
|
58
|
-
| 26 | `constructor` | `.kenaz/docs/tools/src/search.ts` | 24–24 | 1 | FALSE_POSITIVE |
|
|
59
|
-
| 27 | `main` | `.formation/tools/run-round2.js` | 90–116 | 27 | FALSE_POSITIVE |
|
|
60
|
-
| 28 | `getArg` | `.formation/tools/run-round2.js` | 16–22 | 7 | FALSE_POSITIVE |
|
|
61
|
-
| 29 | `hasRemoteFileConflict` | `.formation/tools/remote-conflict.js` | 69–89 | 21 | FALSE_POSITIVE |
|
|
62
|
-
| 30 | `isCacheStale` | `.formation/tools/remote-conflict.js` | 94–96 | 3 | FALSE_POSITIVE |
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Confirmed orphans
|
|
67
|
-
|
|
68
|
-
Five symbols with zero non-definition callers across all file extensions (.js, .ts, .py, .sh, .md, .yaml, .yml, .json, .toml):
|
|
69
|
-
|
|
70
|
-
### 1. `addSystem` — `.kenaz/docs/tools/src/registry.ts` lines 576–584
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
grep -rn 'addSystem' --include='*.{js,ts,py,sh,md,yaml,yml,json,toml}' .
|
|
74
|
-
```
|
|
75
|
-
Result: Only definition site (registry.ts:576). No callers.
|
|
76
|
-
**Action**: Deleted.
|
|
77
|
-
|
|
78
|
-
### 2. `removeSystem` — `.kenaz/docs/tools/src/registry.ts` lines 586–592
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
grep -rn 'removeSystem' --include='*.{js,ts,py,sh,md,yaml,yml,json,toml}' .
|
|
82
|
-
```
|
|
83
|
-
Result: Only definition site (registry.ts:586). No callers.
|
|
84
|
-
**Action**: Deleted.
|
|
85
|
-
|
|
86
|
-
### 3. `getSearchStats` — `.kenaz/docs/tools/src/search.ts` lines 191–232
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
grep -rn 'getSearchStats' --include='*.{js,ts,py,sh,md,yaml,yml,json,toml}' .
|
|
90
|
-
```
|
|
91
|
-
Result: Only definition site (search.ts:191). No callers.
|
|
92
|
-
**Action**: Deleted.
|
|
93
|
-
|
|
94
|
-
### 4. `registerSystem` — `.kenaz/docs/tools/src/field-extractor.ts` lines 155–157
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
grep -rn 'registerSystem' --include='*.{js,ts,py,sh,md,yaml,yml,json,toml}' .
|
|
98
|
-
```
|
|
99
|
-
Result: Only definition site (field-extractor.ts:155). No callers.
|
|
100
|
-
**Action**: Deleted.
|
|
101
|
-
|
|
102
|
-
### 5. `getRegisteredSystems` — `.kenaz/docs/tools/src/field-extractor.ts` lines 162–164
|
|
103
|
-
|
|
104
|
-
```
|
|
105
|
-
grep -rn 'getRegisteredSystems' --include='*.{js,ts,py,sh,md,yaml,yml,json,toml}' .
|
|
106
|
-
```
|
|
107
|
-
Result: Only definition site (field-extractor.ts:162). No callers.
|
|
108
|
-
**Action**: Deleted.
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## False positives
|
|
113
|
-
|
|
114
|
-
24 symbols reported as orphans by synapse_orphans that have live callers:
|
|
115
|
-
|
|
116
|
-
| Symbol | File | Caller Evidence |
|
|
117
|
-
|---|---|---|
|
|
118
|
-
| `checkLinks` | registry.ts | `.kenaz/docs/tools/src/cli.ts:274` — `registry.checkLinks()` |
|
|
119
|
-
| `syncToRag` | registry.ts | `.kenaz/docs/tools/src/cli.ts:250` — `registry.syncToRag(!options.force)` |
|
|
120
|
-
| `validate` | registry.ts | `.kenaz/docs/tools/src/cli.ts:201,295` — `registry.validate()` |
|
|
121
|
-
| `rebuildIndex` | registry.ts | `.kenaz/docs/tools/src/cli.ts:196` — `registry.rebuildIndex()` |
|
|
122
|
-
| `stats` | registry.ts | `.kenaz/docs/tools/src/cli.ts:212,321` — `registry.stats()` |
|
|
123
|
-
| `searchWithScores` | registry.ts | `.kenaz/docs/tools/src/cli.ts:31` — `registry.searchWithScores(query, {...})` |
|
|
124
|
-
| `listSystems` | registry.ts | `.kenaz/docs/tools/src/cli.ts:107` — `registry.listSystems()` |
|
|
125
|
-
| `constructor` | registry.ts:37 | `registry.ts:56,61` — `new DocsRegistry(...)` |
|
|
126
|
-
| `__init__` | sync_to_rag.py | `registry.ts:478` spawns script; `RAG_INTEGRATION_GUIDE.md:73` — `DocsSyncManager(Path.cwd())` |
|
|
127
|
-
| `search` | search.ts | `registry.ts:95,122` — `searchEngine.search(query, options)` |
|
|
128
|
-
| `constructor` | search.ts:24 | `registry.ts:95,122` — `new SearchEngine(allDocs)` |
|
|
129
|
-
| `constructor` | field-extractor.ts:27 | `registry.ts:38` — `new FieldExtractor()` |
|
|
130
|
-
| `main` | memory-tools.js | `memory-tools.js:475` — self-invoked at module scope (`main()`) |
|
|
131
|
-
| `main` | migrate-failures.js | `migrate-failures.js` tail — self-invoked (`main()`) |
|
|
132
|
-
| `smartTrim` | token-optimizer.js | `.memory/README.md:263`, `.memory/SECURITY_TOKEN_OPTIMIZATION.md:117` — documented API import; exported |
|
|
133
|
-
| `main` | security-filter.js | `security-filter.js:419-420` — guarded CLI entry (`if (require.main === module) { main(); }`) |
|
|
134
|
-
| `main` | token-optimizer.js | `token-optimizer.js:387` — self-invoked at module scope |
|
|
135
|
-
| `constructor` | token-optimizer.js:31 | class `MemoryCache` instantiated internally |
|
|
136
|
-
| `main` | cleanup-duplicates.js | `cleanup-duplicates.js` tail — self-invoked (`main()`) |
|
|
137
|
-
| `rebuildRegistry` | rebuild-registry.js | `rebuild-registry.js:96` — self-invoked at module scope |
|
|
138
|
-
| `main` | run-round2.js | `run-round2.js` tail — `main().catch(e => { process.exit(1); })` |
|
|
139
|
-
| `getArg` | run-round2.js | `run-round2.js:24` — called at module scope (`getArg('--skill')`) |
|
|
140
|
-
| `hasRemoteFileConflict` | remote-conflict.js | `.formation/tools/dispatch.js:338` — `hasRemoteFileConflict(scopePaths)` |
|
|
141
|
-
| `isCacheStale` | remote-conflict.js | `.formation/tools/dispatch.js:331` — `isCacheStale()` |
|
|
142
|
-
|
|
143
|
-
**Root causes of false positives:**
|
|
144
|
-
1. **Module-scope self-invocation**: synapse_orphans misses calls at file scope (e.g., `main()` at end of file). Affects 7 `main()` + 2 internal helpers.
|
|
145
|
-
2. **Class instantiation**: `new ClassName()` calls are not tracked as CALLS edges to `constructor`. Affects 4 constructor methods.
|
|
146
|
-
3. **Subprocess spawn**: Python CLI scripts spawned via `child_process.spawn` don't create graph edges.
|
|
147
|
-
4. **Cross-module import resolution**: `require('./security-filter')` → exported API not mapped to callers.
|
|
148
|
-
5. **Documented-only callers**: Functions referenced only in `.md` docs (smartTrim) are not detected.
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## Ambiguous
|
|
153
|
-
|
|
154
|
-
### `hasSensitiveData` — `.memory/tools/security-filter.js` lines 352–355
|
|
155
|
-
|
|
156
|
-
A 4-line utility function exported via `module.exports.hasSensitiveData`. No external file imports or calls it. However it is part of the exported public API alongside `filterSensitiveData` and `filterMemoryEntry` (which are used by memory-tools.js). It may be dead code or an intentional public API without current consumers.
|
|
157
|
-
|
|
158
|
-
**Decision**: Not deleted. Requires explicit owner review. Low LOC impact (4 lines).
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## Synapse_orphans indexing gaps (for TASK_1173)
|
|
163
|
-
|
|
164
|
-
The following indexing failures were observed and should inform TASK_1173:
|
|
165
|
-
|
|
166
|
-
1. **Module-scope calls not tracked**: `main()` called at file scope (e.g., `main().catch(...)`) produces no CALLS edge in the graph. This caused 7 false positives.
|
|
167
|
-
2. **Constructor calls not tracked**: `new ClassName()` does not create a CALLS edge to the class `constructor` method. This caused 4 false positives.
|
|
168
|
-
3. **Python subprocess spawn not tracked**: `child_process.spawn('python', [scriptPath])` in registry.ts:478 does not create any cross-language edge.
|
|
169
|
-
4. **Cross-language import not tracked**: `from sync_to_rag import DocsSyncManager` (Python import, in doc examples) not modeled.
|
|
170
|
-
5. **Intra-file module-scope references**: `getArg` called at file scope in run-round2.js — no CALLS edge despite local definition.
|