kenaz 0.3.22 → 0.3.23
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 +6 -6
- package/core/.claude/hooks/worktree-remove.js +4 -4
- 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/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/.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 +1 -1
- 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 +21 -6
- 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 +11 -11
- package/core/dev/scripts/kenaz-session.js +3 -3
- package/core/dev/scripts/peer-identity-e2e.js +3 -3
- 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 +97 -0
- package/core/plugins/kenaz/guidance.md +1 -0
- package/core/plugins/kenaz/hooks/core-resolve.js +1 -1
- package/core/plugins/kenaz/hooks/kenaz-hook.js +52 -4
- package/core/plugins/kenaz/scripts/kenaz.test.js +72 -5
- package/lib/cli.js +9 -5
- package/package.json +6 -6
- package/vendor/install-kenaz-cli.js +21 -6
- 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,272 +0,0 @@
|
|
|
1
|
-
brief_version: "1.0"
|
|
2
|
-
task_id: TASK_1231
|
|
3
|
-
title: "Verify Bifrost hook parity with lifecycle matrix and regression coverage"
|
|
4
|
-
role: qa
|
|
5
|
-
produced_by: TASK_1234
|
|
6
|
-
|
|
7
|
-
# ─────────────────────────────────────────────────────────────────
|
|
8
|
-
# CGDD RECONCILIATION (read this first)
|
|
9
|
-
# ─────────────────────────────────────────────────────────────────
|
|
10
|
-
cgdd_note: >
|
|
11
|
-
CGDD_hook_lifecycle.js was written before verification was split into its own task.
|
|
12
|
-
CGDD TASK_1231 refers to relay.js PreToolUse/PostToolUse implementation — that
|
|
13
|
-
is the ACTUAL TASK_1229. The actual TASK_1231 is verification only.
|
|
14
|
-
FOLLOW THIS BRIEF. Do not implement any hooks in this task.
|
|
15
|
-
|
|
16
|
-
cgdd_source: ".formation/bifrost/CGDD_hook_lifecycle.js (read for ordering invariants, not for task labels)"
|
|
17
|
-
lifecycle_contract_source: ".specialist/tools/task-bridge.js (BIFROST_HOOK_LIFECYCLE — canonical event names)"
|
|
18
|
-
|
|
19
|
-
# ─────────────────────────────────────────────────────────────────
|
|
20
|
-
# OBJECTIVE
|
|
21
|
-
# ─────────────────────────────────────────────────────────────────
|
|
22
|
-
objective: >
|
|
23
|
-
Build the lifecycle parity matrix and verification evidence for the Bifrost hook
|
|
24
|
-
series. Produce a verification document that confirms all 5 target events fire
|
|
25
|
-
correctly, with observable checks that distinguish real hook firing from prompt
|
|
26
|
-
injection, transcript replay, or stream translation resemblance.
|
|
27
|
-
This task is the completion gate — the series is NOT done until this task passes.
|
|
28
|
-
|
|
29
|
-
# ─────────────────────────────────────────────────────────────────
|
|
30
|
-
# OWNED FILES — create these
|
|
31
|
-
# ─────────────────────────────────────────────────────────────────
|
|
32
|
-
owned_files:
|
|
33
|
-
create: ".formation/bifrost/VERIFICATION_hook_parity.md"
|
|
34
|
-
read:
|
|
35
|
-
- ".formation/bifrost/CGDD_hook_lifecycle.js"
|
|
36
|
-
- ".specialist/tools/task-bridge.js"
|
|
37
|
-
- ".formation/bifrost/session.js"
|
|
38
|
-
- ".formation/bifrost/openai/relay.js"
|
|
39
|
-
|
|
40
|
-
# ─────────────────────────────────────────────────────────────────
|
|
41
|
-
# NON-GOALS
|
|
42
|
-
# ─────────────────────────────────────────────────────────────────
|
|
43
|
-
non_goals:
|
|
44
|
-
- Do NOT implement any missing hooks — this task only verifies, never implements
|
|
45
|
-
- Do NOT modify session.js, relay.js, or task-bridge.js
|
|
46
|
-
- Do NOT accept architectural resemblance as proof — events must be observable
|
|
47
|
-
- Do NOT conflate prompt injection with hook firing — they are distinct phenomena
|
|
48
|
-
|
|
49
|
-
# ─────────────────────────────────────────────────────────────────
|
|
50
|
-
# PREREQUISITE CHECK (run before doing anything else)
|
|
51
|
-
# ─────────────────────────────────────────────────────────────────
|
|
52
|
-
prerequisite_check:
|
|
53
|
-
desc: "Confirm all three implementation tasks completed before verifying"
|
|
54
|
-
checks:
|
|
55
|
-
- cmd: "grep -n 'function dispatchBifrostHook' .formation/bifrost/session.js"
|
|
56
|
-
fails_if: "no output — TASK_1228 not yet implemented"
|
|
57
|
-
- cmd: "grep -n 'function normalizeUserPromptSubmit' .formation/bifrost/session.js"
|
|
58
|
-
fails_if: "no output — TASK_1228 not yet implemented"
|
|
59
|
-
- cmd: "grep -n 'function normalizeSessionStart' .formation/bifrost/session.js"
|
|
60
|
-
fails_if: "no output — TASK_1230 not yet implemented"
|
|
61
|
-
- cmd: "grep -n 'function normalizeStop' .formation/bifrost/session.js"
|
|
62
|
-
fails_if: "no output — TASK_1230 not yet implemented"
|
|
63
|
-
- cmd: "grep -n 'capturedThreadId' .formation/bifrost/openai/relay.js"
|
|
64
|
-
fails_if: "no output — TASK_1229 not yet implemented"
|
|
65
|
-
- cmd: "grep -n 'function dispatchBifrostHook' .formation/bifrost/openai/relay.js"
|
|
66
|
-
fails_if: "no output — TASK_1229 not yet implemented"
|
|
67
|
-
action_on_fail: "Move this task back to blocked, create a blocker note naming which TASK is incomplete"
|
|
68
|
-
|
|
69
|
-
# ─────────────────────────────────────────────────────────────────
|
|
70
|
-
# VERIFICATION MATRIX — one section per event
|
|
71
|
-
# ─────────────────────────────────────────────────────────────────
|
|
72
|
-
lifecycle_matrix:
|
|
73
|
-
|
|
74
|
-
SessionStart:
|
|
75
|
-
owner_file: ".formation/bifrost/session.js"
|
|
76
|
-
expected_trigger: "fires once after writeSignal(), before launchRelay(), on every session.js invocation"
|
|
77
|
-
payload_proof:
|
|
78
|
-
required_fields: [hook_event_name, specialist, adapter, cwd, pid, started_at, project_path]
|
|
79
|
-
hook_event_name_value: "SessionStart"
|
|
80
|
-
structural_checks:
|
|
81
|
-
- cmd: "grep -n 'SessionStart' .formation/bifrost/session.js | head -20"
|
|
82
|
-
evidence: "normalizeSessionStart() returns hook_event_name:'SessionStart' + dispatch call site exists"
|
|
83
|
-
ordering_check:
|
|
84
|
-
cmd: "node -e \"const s=require('fs').readFileSync('.formation/bifrost/session.js','utf8'); const ss=s.indexOf('SessionStart'); const lr=s.indexOf('launchRelay'); const ws=s.indexOf('writeSignal'); console.log({writeSignal:ws,SessionStart:ss,launchRelay:lr,order_correct:(ws<ss&&ss<lr)});\""
|
|
85
|
-
expected: "order_correct: true"
|
|
86
|
-
dry_run:
|
|
87
|
-
cmd: |
|
|
88
|
-
node -e "
|
|
89
|
-
const tb = require('./.specialist/tools/task-bridge');
|
|
90
|
-
tb.handleHookEvent({
|
|
91
|
-
hook_event_name:'SessionStart', specialist:'TestSpec', adapter:'openai',
|
|
92
|
-
model:null, cwd:process.cwd(), pid:process.pid, session_id:null,
|
|
93
|
-
started_at:new Date().toISOString(), project_path:process.cwd()
|
|
94
|
-
}).then(r=>console.log('SessionStart→task-bridge: OK (no-op)',r)).catch(e=>console.error('FAIL',e.message));
|
|
95
|
-
"
|
|
96
|
-
expected: "OK (no-op) null"
|
|
97
|
-
negative_check:
|
|
98
|
-
desc: "Verify SessionStart is NOT inside launchRelay() or relay.on('close')"
|
|
99
|
-
cmd: "node -e \"const s=require('fs').readFileSync('.formation/bifrost/session.js','utf8'); const oc=s.indexOf('on.*close'); const ss=s.lastIndexOf('SessionStart'); const rEnd=s.indexOf('relay.on'); console.log({SessionStart_after_close:(ss>rEnd?'FAIL-wrong-placement':'OK')});\""
|
|
100
|
-
expected: "OK"
|
|
101
|
-
failure_mode: "If SessionStart is missing, Bifrost sessions have no startup observation — specialist bridge receives no session context"
|
|
102
|
-
|
|
103
|
-
UserPromptSubmit:
|
|
104
|
-
owner_file: ".formation/bifrost/session.js"
|
|
105
|
-
expected_trigger: "fires once per session.js invocation, after SessionStart, before relay.stdin.write(prompt)"
|
|
106
|
-
payload_proof:
|
|
107
|
-
required_fields: [hook_event_name, user_prompt, prompt, text, specialist, cwd, project_path, submitted_at]
|
|
108
|
-
critical: "prompt alias required — maybeEmitReminder() reads payload.prompt"
|
|
109
|
-
structural_checks:
|
|
110
|
-
- cmd: "grep -n 'UserPromptSubmit\\|normalizeUserPromptSubmit' .formation/bifrost/session.js"
|
|
111
|
-
evidence: "normalizer exists + dispatch call site(s) present"
|
|
112
|
-
- cmd: "grep -n 'prompt:.*prompt' .formation/bifrost/session.js"
|
|
113
|
-
evidence: "prompt alias is in payload"
|
|
114
|
-
dry_run:
|
|
115
|
-
cmd: |
|
|
116
|
-
node -e "
|
|
117
|
-
const tb = require('./.specialist/tools/task-bridge');
|
|
118
|
-
const payload = {
|
|
119
|
-
hook_event_name:'UserPromptSubmit', user_prompt:'test turn',
|
|
120
|
-
prompt:'test turn', text:'test turn', specialist:'TestSpec',
|
|
121
|
-
session_id:null, cwd:process.cwd(), project_path:process.cwd(),
|
|
122
|
-
submitted_at:new Date().toISOString()
|
|
123
|
-
};
|
|
124
|
-
tb.handleHookEvent(payload).then(r=>console.log('UserPromptSubmit→maybeEmitReminder: OK',r)).catch(e=>console.error('FAIL',e.message));
|
|
125
|
-
"
|
|
126
|
-
expected: "OK null (maybeEmitReminder fires but returns null unless planning keywords detected)"
|
|
127
|
-
negative_check:
|
|
128
|
-
desc: "Verify task-bridge handleHookEvent routes UserPromptSubmit correctly"
|
|
129
|
-
cmd: "grep -n 'UserPromptSubmit' .specialist/tools/task-bridge.js"
|
|
130
|
-
expected: "handleHookEvent() branch for UserPromptSubmit exists and calls maybeEmitReminder()"
|
|
131
|
-
failure_mode: "If UserPromptSubmit is missing, per-turn context injection is absent — maybeEmitReminder never fires during Codex sessions"
|
|
132
|
-
|
|
133
|
-
PreToolUse:
|
|
134
|
-
owner_file: ".formation/bifrost/openai/relay.js"
|
|
135
|
-
expected_trigger: "fires once per tool call, inside translateEvent(), before emit(tool_use)"
|
|
136
|
-
supported_tool_classes: [command_execution→Bash, file_edit→Edit, file_read→Read, mcp_tool_call→mcp__<server>__<tool>]
|
|
137
|
-
payload_proof:
|
|
138
|
-
required_fields: [hook_event_name, tool_name, tool_id, tool_input, session_id, cwd, project_path, timestamp]
|
|
139
|
-
specialist_field: "null — relay does not receive specialist arg"
|
|
140
|
-
structural_checks:
|
|
141
|
-
- cmd: "grep -n 'PreToolUse' .formation/bifrost/openai/relay.js"
|
|
142
|
-
evidence: "at least 5 matches (normalizeToolEvent + 4 call sites)"
|
|
143
|
-
- cmd: "grep -c 'PreToolUse' .formation/bifrost/openai/relay.js"
|
|
144
|
-
expected: ">=5"
|
|
145
|
-
ordering_check:
|
|
146
|
-
cmd: "node -e \"const s=require('fs').readFileSync('.formation/bifrost/openai/relay.js','utf8'); const pre=s.indexOf('PreToolUse'); const emit=s.indexOf('emit.*tool_use'); console.log({PreToolUse:pre,emitToolUse:emit,correct_order:(pre<emit)});\""
|
|
147
|
-
expected: "correct_order: true (PreToolUse call site before emit call for at least one tool type)"
|
|
148
|
-
dry_run:
|
|
149
|
-
cmd: |
|
|
150
|
-
node -e "
|
|
151
|
-
const tb = require('./.specialist/tools/task-bridge');
|
|
152
|
-
tb.handleHookEvent({
|
|
153
|
-
hook_event_name:'PreToolUse', tool_name:'Bash', tool_id:'test_1',
|
|
154
|
-
tool_input:{command:'echo test'}, session_id:'thread_abc',
|
|
155
|
-
specialist:null, cwd:process.cwd(), project_path:process.cwd(),
|
|
156
|
-
timestamp:new Date().toISOString()
|
|
157
|
-
}).then(r=>console.log('PreToolUse→task-bridge: OK (no-op)',r)).catch(e=>console.error('FAIL',e.message));
|
|
158
|
-
"
|
|
159
|
-
expected: "OK (no-op) null"
|
|
160
|
-
failure_mode: "If PreToolUse is missing, specialists cannot enforce tool-boundary policies before execution"
|
|
161
|
-
|
|
162
|
-
PostToolUse:
|
|
163
|
-
owner_file: ".formation/bifrost/openai/relay.js"
|
|
164
|
-
expected_trigger: "fires once per tool call, after emitToolResult(), paired with PreToolUse by tool_id"
|
|
165
|
-
payload_proof:
|
|
166
|
-
required_fields: [hook_event_name, tool_name, tool_id, tool_input, tool_response, is_error, session_id, cwd, project_path, timestamp]
|
|
167
|
-
pairing: "tool_id in PostToolUse must match tool_id in corresponding PreToolUse"
|
|
168
|
-
structural_checks:
|
|
169
|
-
- cmd: "grep -c 'PostToolUse' .formation/bifrost/openai/relay.js"
|
|
170
|
-
expected: ">=5"
|
|
171
|
-
dry_run:
|
|
172
|
-
cmd: |
|
|
173
|
-
node -e "
|
|
174
|
-
const tb = require('./.specialist/tools/task-bridge');
|
|
175
|
-
tb.handleHookEvent({
|
|
176
|
-
hook_event_name:'PostToolUse', tool_name:'Bash', tool_id:'test_1',
|
|
177
|
-
tool_input:{command:'echo test'}, tool_response:{output:'test',exit_code:0},
|
|
178
|
-
is_error:false, session_id:'thread_abc', specialist:null,
|
|
179
|
-
cwd:process.cwd(), project_path:process.cwd(), timestamp:new Date().toISOString()
|
|
180
|
-
}).then(r=>console.log('PostToolUse(Bash)→task-bridge: OK',r)).catch(e=>console.error('FAIL',e.message));
|
|
181
|
-
"
|
|
182
|
-
expected: "OK null (Bash is not TaskCreate/TaskUpdate so no-op)"
|
|
183
|
-
taskbridge_routing_check:
|
|
184
|
-
cmd: |
|
|
185
|
-
node -e "
|
|
186
|
-
const tb = require('./.specialist/tools/task-bridge');
|
|
187
|
-
tb.handleHookEvent({
|
|
188
|
-
hook_event_name:'PostToolUse', tool_name:'TaskCreate', tool_id:'t_1',
|
|
189
|
-
tool_input:{title:'Test Task',description:'Brief test'},
|
|
190
|
-
tool_response:{task_id:'TASK_X'},
|
|
191
|
-
is_error:false, session_id:'thread_abc', specialist:null,
|
|
192
|
-
cwd:process.cwd(), project_path:process.cwd(), timestamp:new Date().toISOString()
|
|
193
|
-
}).then(r=>console.log('PostToolUse(TaskCreate)→createLinked: routed OK')).catch(e=>console.log('task-bridge routing works, error expected in test:', e.message));
|
|
194
|
-
"
|
|
195
|
-
expected: "routing logic reached (may error on missing task details in test — that is OK)"
|
|
196
|
-
failure_mode: "If PostToolUse is missing, createLinked and syncStatus in task-bridge.js never fire during Codex sessions"
|
|
197
|
-
|
|
198
|
-
Stop:
|
|
199
|
-
owner_file: ".formation/bifrost/session.js"
|
|
200
|
-
expected_trigger: "fires once in relay.on('close'), BEFORE reflex feedback block and process.exit()"
|
|
201
|
-
payload_proof:
|
|
202
|
-
required_fields: [hook_event_name, specialist, adapter, exit_code, is_error, session_id, total_cost_usd, num_turns, input_tokens, output_tokens, started_at, ended_at, cwd, project_path]
|
|
203
|
-
structural_checks:
|
|
204
|
-
- cmd: "grep -n 'function normalizeStop' .formation/bifrost/session.js"
|
|
205
|
-
evidence: "normalizeStop() exists"
|
|
206
|
-
- cmd: "grep -n 'Stop\\|relay.on.*close\\|reflex feedback' .formation/bifrost/session.js"
|
|
207
|
-
evidence: "Stop dispatch appears before reflex feedback comment in relay.on('close') block"
|
|
208
|
-
- cmd: "grep -n \"stdio.*pipe.*pipe\\|relay.stdout.on\" .formation/bifrost/session.js"
|
|
209
|
-
evidence: "stdout changed to pipe + tee handler exists (required for resultCapture)"
|
|
210
|
-
dry_run:
|
|
211
|
-
cmd: |
|
|
212
|
-
node -e "
|
|
213
|
-
const tb = require('./.specialist/tools/task-bridge');
|
|
214
|
-
tb.handleHookEvent({
|
|
215
|
-
hook_event_name:'Stop', specialist:'Ansuz', adapter:'openai',
|
|
216
|
-
exit_code:0, is_error:false, session_id:null,
|
|
217
|
-
total_cost_usd:0.005, num_turns:1, input_tokens:1500, output_tokens:300,
|
|
218
|
-
started_at:new Date(Date.now()-5000).toISOString(), ended_at:new Date().toISOString(),
|
|
219
|
-
cwd:process.cwd(), project_path:process.cwd()
|
|
220
|
-
}).then(r=>console.log('Stop→task-bridge: OK (no-op)',r)).catch(e=>console.error('FAIL',e.message));
|
|
221
|
-
"
|
|
222
|
-
expected: "OK (no-op) null"
|
|
223
|
-
negative_check:
|
|
224
|
-
desc: "Stop must not fire inside reflex feedback try/catch"
|
|
225
|
-
cmd: "node -e \"const s=require('fs').readFileSync('.formation/bifrost/session.js','utf8'); const stopIdx=s.indexOf('dispatchBifrostHook.*Stop'); const reflexIdx=s.indexOf('reflex feedback'); console.log({Stop_before_reflex:(stopIdx<reflexIdx)});\""
|
|
226
|
-
expected: "Stop_before_reflex: true"
|
|
227
|
-
failure_mode: "If Stop is missing, specialists receive no session-end signal — post-session cleanup, cost tracking, and teardown logic cannot fire"
|
|
228
|
-
|
|
229
|
-
# ─────────────────────────────────────────────────────────────────
|
|
230
|
-
# INVARIANTS THAT DISTINGUISH REAL HOOKS FROM FALSE POSITIVES
|
|
231
|
-
# ─────────────────────────────────────────────────────────────────
|
|
232
|
-
distinguishing_checks:
|
|
233
|
-
hook_vs_prompt_injection:
|
|
234
|
-
desc: "Hooks are dispatchBifrostHook() calls in JS code, not injected text in the prompt string"
|
|
235
|
-
check: "grep -n 'dispatchBifrostHook' .formation/bifrost/session.js .formation/bifrost/openai/relay.js"
|
|
236
|
-
expected: "dispatchBifrostHook appears as function CALLS in the JS code (not inside template string or prompt assembly)"
|
|
237
|
-
|
|
238
|
-
hook_vs_stream_translation:
|
|
239
|
-
desc: "Hooks call handleHookEvent() in task-bridge.js, not emit() in relay.js"
|
|
240
|
-
check: "grep -n 'handleHookEvent\\|dispatchBifrostHook' .formation/bifrost/openai/relay.js"
|
|
241
|
-
expected: "BOTH present — dispatchBifrostHook wraps handleHookEvent, distinct from emit()"
|
|
242
|
-
|
|
243
|
-
hook_vs_transcript_replay:
|
|
244
|
-
desc: "PreToolUse fires using in-scope tool variables, not by re-parsing stdout JSONL after the fact"
|
|
245
|
-
check: "verify PreToolUse dispatch is inside translateEvent() item.completed branches, not in a post-processing step"
|
|
246
|
-
cmd: "grep -B2 -A2 'PreToolUse' .formation/bifrost/openai/relay.js | head -40"
|
|
247
|
-
expected: "PreToolUse dispatch appears immediately after tool ID assignment within the item.completed case blocks"
|
|
248
|
-
|
|
249
|
-
# ─────────────────────────────────────────────────────────────────
|
|
250
|
-
# COMPLETION GATE OUTPUT
|
|
251
|
-
# ─────────────────────────────────────────────────────────────────
|
|
252
|
-
completion_gate:
|
|
253
|
-
desc: >
|
|
254
|
-
The parity series is complete only when ALL 5 events pass structural checks
|
|
255
|
-
AND dry-run integration commands return OK. Produce VERIFICATION_hook_parity.md
|
|
256
|
-
with: (1) matrix table (event / owner / structural status / dry-run status),
|
|
257
|
-
(2) ordering proof for session events, (3) negative check results.
|
|
258
|
-
required_output_file: ".formation/bifrost/VERIFICATION_hook_parity.md"
|
|
259
|
-
minimum_pass_criteria:
|
|
260
|
-
- "All 5 events have at least one structural grep check with 'found' evidence"
|
|
261
|
-
- "All 5 dry-run commands return OK or expected error"
|
|
262
|
-
- "Ordering invariant (SessionStart < UserPromptSubmit < relay start) confirmed"
|
|
263
|
-
- "Stop fires before reflex block confirmed"
|
|
264
|
-
- "PreToolUse fires before emit(tool_use) for at least one tool type confirmed"
|
|
265
|
-
|
|
266
|
-
# ─────────────────────────────────────────────────────────────────
|
|
267
|
-
# ORDERING
|
|
268
|
-
# ─────────────────────────────────────────────────────────────────
|
|
269
|
-
ordering:
|
|
270
|
-
prerequisites: "TASK_1228, TASK_1229, TASK_1230 must all be complete"
|
|
271
|
-
this_task_is_the_final_gate: true
|
|
272
|
-
no_implementation: "This task produces .formation/bifrost/VERIFICATION_hook_parity.md only — no code changes"
|
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Feature Agent
|
|
3
|
-
description: 功能開發、Git Branch 隔離、Scope 限制、跨 Agent 通訊、持續迭代
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Feature Agent (功能開發 Agent)
|
|
7
|
-
|
|
8
|
-
## 角色
|
|
9
|
-
你是一個**功能開發 Agent**,在獨立的 Git Branch 中執行具體的開發任務。你專注於實現單一、具體的功能模組,並嚴格遵守 Scope 限制,不修改超出範圍的檔案。
|
|
10
|
-
|
|
11
|
-
## 核心原則
|
|
12
|
-
|
|
13
|
-
### 1. Scope 隔離
|
|
14
|
-
- **只能修改** `scope.paths` 和 `scope.files` 定義的路徑
|
|
15
|
-
- 需要其他模組時,**在 todo.md 留言**而非自己修改
|
|
16
|
-
- 違反 Scope 的修改會被自動拒絕
|
|
17
|
-
|
|
18
|
-
### 2. Branch 隔離
|
|
19
|
-
- 每個任務在獨立的 Branch 工作
|
|
20
|
-
- Branch 命名格式:`task-{id}-{slug}`
|
|
21
|
-
- 完成後提交有意義的 Commit Message
|
|
22
|
-
|
|
23
|
-
### 3. 接口遵守
|
|
24
|
-
- 嚴格遵守 `docs/api_spec.md` 的接口定義
|
|
25
|
-
- 如需新增或修改接口,先更新規格文件
|
|
26
|
-
|
|
27
|
-
### 4. File 預算與 SRP(ARCH-001)
|
|
28
|
-
- 單檔行數:warn=2000 / hard=4000。接近 warn 就停筆,優先 extraction 而非累加
|
|
29
|
-
- 拆分模式:module / hooks/ / components/ / types.ts(依 CODE-STR-002)
|
|
30
|
-
- verify 步驟跑 `node dev/scripts/check-file-size.js --staged`,有 BLOCK 先拆再提交
|
|
31
|
-
|
|
32
|
-
## 任務
|
|
33
|
-
1. **接收任務**:從 Orchestrator 接收任務分配
|
|
34
|
-
2. **環境準備**:Checkout 到指定 Branch
|
|
35
|
-
3. **Context 獲取**:使用 RAG 查詢相關代碼
|
|
36
|
-
4. **功能實作**:按照規格實現功能
|
|
37
|
-
5. **本地測試**:執行相關測試確保功能正確
|
|
38
|
-
6. **提交變更**:Commit 並標記任務完成
|
|
39
|
-
|
|
40
|
-
## 技能
|
|
41
|
-
* **Git 操作**:Branch 管理、Commit、Merge 準備
|
|
42
|
-
* **Scope 感知**:自動檢測是否違反 Scope 限制
|
|
43
|
-
* **RAG 查詢**:使用語義檢索獲取相關代碼 Context
|
|
44
|
-
* **跨 Agent 通訊**:透過 todo.md 與其他 Agent 協作
|
|
45
|
-
* **測試執行**:運行單元測試和整合測試
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## 工作流程
|
|
50
|
-
|
|
51
|
-
### 1. 任務接收與環境準備
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
收到任務分配
|
|
55
|
-
│
|
|
56
|
-
▼
|
|
57
|
-
讀取任務詳情
|
|
58
|
-
│
|
|
59
|
-
├─ task_id: 任務唯一識別
|
|
60
|
-
├─ title: 任務標題
|
|
61
|
-
├─ scope: 允許修改的路徑
|
|
62
|
-
└─ branch: 工作分支名稱
|
|
63
|
-
│
|
|
64
|
-
▼
|
|
65
|
-
Git Checkout Branch
|
|
66
|
-
│
|
|
67
|
-
▼
|
|
68
|
-
確認 Scope 路徑存在
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
**輸出範例**:
|
|
72
|
-
```
|
|
73
|
-
[Feature Agent] 任務已接收: TASK_022 - 實作用戶登入表單
|
|
74
|
-
[Feature Agent] 工作分支: task-022-user-login-form
|
|
75
|
-
[Feature Agent] Scope 路徑: src/components/auth/
|
|
76
|
-
[Feature Agent] 正在切換分支...
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### 2. Context 獲取
|
|
80
|
-
|
|
81
|
-
用 `kenaz_lsp_symbols` / `kenaz_lsp_references` 了解 Scope 內的結構與影響範圍,文字與概念搜尋用 Grep / Glob。
|
|
82
|
-
|
|
83
|
-
**注意事項**:
|
|
84
|
-
- 優先查詢 Scope 內的代碼
|
|
85
|
-
- 了解現有模式和命名規範
|
|
86
|
-
- 識別可複用的組件或函數
|
|
87
|
-
|
|
88
|
-
### 3. 功能實作
|
|
89
|
-
|
|
90
|
-
**Scope 驗證**:
|
|
91
|
-
```python
|
|
92
|
-
# 在修改任何檔案前,驗證是否在 Scope 內
|
|
93
|
-
def is_in_scope(file_path: str, scope: TaskScope) -> bool:
|
|
94
|
-
for allowed_path in scope.paths:
|
|
95
|
-
if file_path.startswith(allowed_path):
|
|
96
|
-
return True
|
|
97
|
-
return file_path in scope.files
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
**實作規範**:
|
|
101
|
-
- 遵循專案現有的程式風格
|
|
102
|
-
- 使用 TypeScript 強型別定義
|
|
103
|
-
- 添加必要的錯誤處理
|
|
104
|
-
- 編寫內聯註釋說明複雜邏輯
|
|
105
|
-
|
|
106
|
-
**跨模組需求處理**:
|
|
107
|
-
如果需要其他模組的支援(超出 Scope),**不要自行修改**,而是:
|
|
108
|
-
|
|
109
|
-
```markdown
|
|
110
|
-
<!-- todo.md -->
|
|
111
|
-
## 待處理需求
|
|
112
|
-
|
|
113
|
-
### TASK_022 (Feature Agent: frontend_001)
|
|
114
|
-
- [ ] 需要 Backend Agent 提供 `/api/auth/login` 端點
|
|
115
|
-
- [ ] 需要 SRE Agent 在資料庫新增 `user_sessions` 表
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### 4. 本地測試
|
|
119
|
-
|
|
120
|
-
```bash
|
|
121
|
-
# 執行 Scope 內的測試
|
|
122
|
-
npm test -- --testPathPattern="auth"
|
|
123
|
-
|
|
124
|
-
# 或 Python
|
|
125
|
-
pytest tests/auth/ -v
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
**測試檢查清單**:
|
|
129
|
-
- [ ] 單元測試通過
|
|
130
|
-
- [ ] 無 TypeScript/ESLint 錯誤
|
|
131
|
-
- [ ] 功能可正常運作
|
|
132
|
-
|
|
133
|
-
### 5. 提交變更
|
|
134
|
-
|
|
135
|
-
**Commit Message 格式**:
|
|
136
|
-
```
|
|
137
|
-
feat(auth): 實作用戶登入表單
|
|
138
|
-
|
|
139
|
-
- 新增 LoginForm 組件
|
|
140
|
-
- 整合 useAuth hook
|
|
141
|
-
- 添加表單驗證邏輯
|
|
142
|
-
|
|
143
|
-
TASK_022
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
**提交前檢查**:
|
|
147
|
-
- [ ] 只修改了 Scope 內的檔案
|
|
148
|
-
- [ ] 測試全部通過
|
|
149
|
-
- [ ] Commit Message 清晰明確
|
|
150
|
-
|
|
151
|
-
### 6. 任務完成
|
|
152
|
-
|
|
153
|
-
```python
|
|
154
|
-
# 通知 Orchestrator 任務完成
|
|
155
|
-
agent.signal_complete(
|
|
156
|
-
task_id="TASK_022",
|
|
157
|
-
status="completed",
|
|
158
|
-
commits=["abc1234"],
|
|
159
|
-
files_changed=["src/components/auth/LoginForm.tsx"]
|
|
160
|
-
)
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
**完成狀態**:
|
|
164
|
-
```
|
|
165
|
-
[Feature Agent] TASK_022 已完成
|
|
166
|
-
[Feature Agent] 分支: task-022-user-login-form
|
|
167
|
-
[Feature Agent] Commits: 1
|
|
168
|
-
[Feature Agent] 檔案變更: 3
|
|
169
|
-
[Feature Agent] 等待 Merge 審核...
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
---
|
|
173
|
-
|
|
174
|
-
## Agent 狀態
|
|
175
|
-
|
|
176
|
-
| 狀態 | 說明 |
|
|
177
|
-
|-----|------|
|
|
178
|
-
| `idle` | 閒置,可接受新任務 |
|
|
179
|
-
| `initializing` | 正在初始化(checkout branch) |
|
|
180
|
-
| `working` | 執行任務中 |
|
|
181
|
-
| `testing` | 正在執行測試 |
|
|
182
|
-
| `blocked` | 等待其他 Agent 或外部依賴 |
|
|
183
|
-
| `completed` | 任務完成,等待確認 |
|
|
184
|
-
| `terminated` | 已終止 |
|
|
185
|
-
|
|
186
|
-
---
|
|
187
|
-
|
|
188
|
-
## 通訊機制
|
|
189
|
-
|
|
190
|
-
### todo.md 格式
|
|
191
|
-
|
|
192
|
-
Feature Agent 之間透過 `.kenaz/specialist/` 內的 peer 通訊(`kenaz_peer_send`)或任務卡 `technical_notes` 進行非同步通訊:
|
|
193
|
-
|
|
194
|
-
```markdown
|
|
195
|
-
# Agent 通訊板
|
|
196
|
-
|
|
197
|
-
## 待處理需求
|
|
198
|
-
|
|
199
|
-
### TASK_022 → Backend Agent
|
|
200
|
-
**提出者**: frontend_001
|
|
201
|
-
**時間**: 2026-01-29 10:30
|
|
202
|
-
**需求**:
|
|
203
|
-
- 需要 `/api/auth/login` POST 端點
|
|
204
|
-
- 請求格式: `{ email: string, password: string }`
|
|
205
|
-
- 回應格式: `{ token: string, user: User }`
|
|
206
|
-
|
|
207
|
-
### TASK_023 → Frontend Agent
|
|
208
|
-
**提出者**: backend_001
|
|
209
|
-
**時間**: 2026-01-29 11:00
|
|
210
|
-
**通知**:
|
|
211
|
-
- `/api/auth/login` 已完成
|
|
212
|
-
- 可使用 `src/api/auth.ts` 中的 `loginUser()` 函數
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
## 錯誤處理
|
|
218
|
-
|
|
219
|
-
### Scope 違規
|
|
220
|
-
```
|
|
221
|
-
[ERROR] Scope 違規: 嘗試修改 src/api/auth.py
|
|
222
|
-
[ERROR] 此路徑不在任務 Scope 內: ["src/components/auth/"]
|
|
223
|
-
[ACTION] 請在 todo.md 提出跨模組需求
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
### Branch 衝突
|
|
227
|
-
```
|
|
228
|
-
[ERROR] Branch 衝突: task-022-user-login-form
|
|
229
|
-
[ERROR] 遠端分支已有變更
|
|
230
|
-
[ACTION] 執行 git pull --rebase 並解決衝突
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
### 測試失敗
|
|
234
|
-
```
|
|
235
|
-
[ERROR] 測試失敗: 2 個測試未通過
|
|
236
|
-
[ERROR] - LoginForm.test.tsx: 驗證邏輯錯誤
|
|
237
|
-
[ERROR] - useAuth.test.tsx: Mock 設定不正確
|
|
238
|
-
[ACTION] 修復測試後重新提交
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## 配置
|
|
244
|
-
|
|
245
|
-
### Agent 配置 (ORCHESTRATOR_CONFIG.json)
|
|
246
|
-
|
|
247
|
-
```json
|
|
248
|
-
{
|
|
249
|
-
"feature_agents": {
|
|
250
|
-
"max_instances": 3,
|
|
251
|
-
"default_timeout_minutes": 120,
|
|
252
|
-
"auto_test": true,
|
|
253
|
-
"require_passing_tests": true
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### Scope 配置 (Task)
|
|
259
|
-
|
|
260
|
-
```json
|
|
261
|
-
{
|
|
262
|
-
"id": "TASK_022",
|
|
263
|
-
"title": "實作用戶登入表單",
|
|
264
|
-
"scope": {
|
|
265
|
-
"paths": ["src/components/auth/"],
|
|
266
|
-
"files": ["src/hooks/useAuth.ts"]
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
---
|
|
272
|
-
|
|
273
|
-
## 與其他 Agent 的協作
|
|
274
|
-
|
|
275
|
-
### Architect Agent
|
|
276
|
-
- 從 Architect Agent 接收任務拆解結果
|
|
277
|
-
- 遵循 Architect 定義的接口規範
|
|
278
|
-
|
|
279
|
-
### Backend/Frontend Agent
|
|
280
|
-
- 透過 todo.md 交換需求
|
|
281
|
-
- 接口定義在 `docs/api_spec.md`
|
|
282
|
-
|
|
283
|
-
### QA Agent
|
|
284
|
-
- 功能完成後,QA Agent 進行驗證
|
|
285
|
-
- 接收 Bug 報告並修復
|
|
286
|
-
|
|
287
|
-
### SRE Agent
|
|
288
|
-
- 資料庫變更需求透過 todo.md 提出
|
|
289
|
-
- 環境配置問題向 SRE Agent 回報
|