@agentikos/omega-os 0.2.0 → 0.19.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -3
- package/bootstrap/lib/__pycache__/claude-code-settings.cpython-313.pyc +0 -0
- package/bootstrap/lib/__pycache__/llm-clis.cpython-313.pyc +0 -0
- package/bootstrap/lib/__pycache__/manifest-helpers.cpython-313.pyc +0 -0
- package/bootstrap/lib/claude-code-settings.py +176 -0
- package/bootstrap/lib/common.sh +457 -1
- package/bootstrap/lib/llm-clis.py +341 -0
- package/bootstrap/lib/manifest-helpers.py +384 -0
- package/bootstrap/lib/steps.sh +790 -21
- package/bootstrap/manifest.example.yaml +87 -1
- package/bootstrap/templates/aisb/CLAUDE.md +305 -0
- package/bootstrap/templates/aisb/architect.md +204 -0
- package/bootstrap/templates/aisb/checkers/CLAUDE.md +9 -0
- package/bootstrap/templates/aisb/checkers/checker-architect.md +151 -0
- package/bootstrap/templates/aisb/checkers/checker-common.md +171 -0
- package/bootstrap/templates/aisb/checkers/checker-construct.md +129 -0
- package/bootstrap/templates/aisb/checkers/checker-keymaker.md +204 -0
- package/bootstrap/templates/aisb/checkers/checker-link.md +205 -0
- package/bootstrap/templates/aisb/checkers/checker-merovingian.md +219 -0
- package/bootstrap/templates/aisb/checkers/checker-morpheus.md +211 -0
- package/bootstrap/templates/aisb/checkers/checker-neo.md +177 -0
- package/bootstrap/templates/aisb/checkers/checker-niobe.md +156 -0
- package/bootstrap/templates/aisb/checkers/checker-oracle.md +164 -0
- package/bootstrap/templates/aisb/checkers/checker-seraph.md +187 -0
- package/bootstrap/templates/aisb/checkers/checker-smith.md +195 -0
- package/bootstrap/templates/aisb/checkers/checker-zion.md +113 -0
- package/bootstrap/templates/aisb/construct.md +135 -0
- package/bootstrap/templates/aisb/keymaker.md +227 -0
- package/bootstrap/templates/aisb/link.md +170 -0
- package/bootstrap/templates/aisb/lmc-protocol.md +57 -0
- package/bootstrap/templates/aisb/merovingian.md +159 -0
- package/bootstrap/templates/aisb/morpheus.md +243 -0
- package/bootstrap/templates/aisb/neo.md +147 -0
- package/bootstrap/templates/aisb/niobe.md +197 -0
- package/bootstrap/templates/aisb/oracle.md +244 -0
- package/bootstrap/templates/aisb/protocols/handoff-templates.md +204 -0
- package/bootstrap/templates/aisb/protocols/shared-protocol.md +248 -0
- package/bootstrap/templates/aisb/pythia.md +153 -0
- package/bootstrap/templates/aisb/seraph.md +315 -0
- package/bootstrap/templates/aisb/smith.md +202 -0
- package/bootstrap/templates/aisb/zion.md +172 -0
- package/bootstrap/templates/autonomous/audit-patrol.yaml +41 -0
- package/bootstrap/templates/autonomous/smith-reflect.yaml +43 -0
- package/bootstrap/templates/autonomous/ssh-key-rotate.yaml +46 -0
- package/bootstrap/templates/autonomous/support-agent.yaml +38 -0
- package/docs/AUDITS.md +85 -0
- package/docs/GAP-ANALYSIS.md +214 -0
- package/docs/INSTALL.md +47 -9
- package/docs/MCP-AND-PLUGINS.md +31 -4
- package/docs/SIMULATION.md +171 -0
- package/docs/simulate.sh +211 -0
- package/install.sh +164 -17
- package/omega/Agentik_Engine/README.md +4 -2
- package/omega/Agentik_Engine/omega_engine/__init__.py +147 -1
- package/omega/Agentik_Engine/omega_engine/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/account.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/agent_messages.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/aisb_chat.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit_arsenal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit_diff.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/audit_gate.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/auto_update.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/autonomous.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/backup.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/barrier.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/bus.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/cadence.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/classifier.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/cleanup.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/cli.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/completions.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/costs.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/done_signal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/envelope.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/events.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/executor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/handoff.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/hermes.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/hermes_bootstrap.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/hermes_desktop.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/learning.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/managed_agent.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/memory.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/menu.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/mission.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/plan.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/progress.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/project.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/prompts.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/provider.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/prune.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/pursue.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/reducer.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/report.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/router.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/skill_routing.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/smoke.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/store.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/supervisor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/sync.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/task.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/telegram.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/telegram_history.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/tmux.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/tools.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/understand_anything.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/updater.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/validate.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/vault.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/webhooks.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/__pycache__/worker.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/account.py +28 -31
- package/omega/Agentik_Engine/omega_engine/agent_messages.py +167 -0
- package/omega/Agentik_Engine/omega_engine/aisb_chat.py +128 -0
- package/omega/Agentik_Engine/omega_engine/audit_diff.py +99 -0
- package/omega/Agentik_Engine/omega_engine/audit_gate.py +149 -0
- package/omega/Agentik_Engine/omega_engine/audits/__init__.py +60 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/batcher.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/dispatcher.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/generator.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/history.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/__pycache__/pipeline.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/audits/batcher.py +218 -0
- package/omega/Agentik_Engine/omega_engine/audits/dispatcher.py +92 -0
- package/omega/Agentik_Engine/omega_engine/audits/generator.py +234 -0
- package/omega/Agentik_Engine/omega_engine/audits/history.py +168 -0
- package/omega/Agentik_Engine/omega_engine/audits/pipeline.py +198 -0
- package/omega/Agentik_Engine/omega_engine/auto_update.py +339 -0
- package/omega/Agentik_Engine/omega_engine/backup.py +215 -0
- package/omega/Agentik_Engine/omega_engine/cadence.py +158 -0
- package/omega/Agentik_Engine/omega_engine/classifier.py +215 -0
- package/omega/Agentik_Engine/omega_engine/cleanup.py +673 -0
- package/omega/Agentik_Engine/omega_engine/cli.py +4156 -86
- package/omega/Agentik_Engine/omega_engine/completions.py +260 -0
- package/omega/Agentik_Engine/omega_engine/costs.py +100 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/autonomous.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/engine.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/__pycache__/telegram.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/daemons/engine.py +53 -4
- package/omega/Agentik_Engine/omega_engine/daemons/telegram.py +101 -17
- package/omega/Agentik_Engine/omega_engine/done_signal.py +154 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/artifact.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/automation.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/base.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/claudecode.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/connection.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/coworker.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/loop.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/prompt.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/educators/__pycache__/skill.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/envelope.py +219 -0
- package/omega/Agentik_Engine/omega_engine/executor.py +149 -10
- package/omega/Agentik_Engine/omega_engine/genesis/__init__.py +134 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/orchestrator.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/phases.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/stack.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/__pycache__/state.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/genesis/orchestrator.py +262 -0
- package/omega/Agentik_Engine/omega_engine/genesis/phases.py +950 -0
- package/omega/Agentik_Engine/omega_engine/genesis/stack.py +324 -0
- package/omega/Agentik_Engine/omega_engine/genesis/state.py +353 -0
- package/omega/Agentik_Engine/omega_engine/handoff.py +459 -0
- package/omega/Agentik_Engine/omega_engine/hermes.py +426 -0
- package/omega/Agentik_Engine/omega_engine/hermes_bootstrap.py +382 -0
- package/omega/Agentik_Engine/omega_engine/hermes_desktop.py +469 -0
- package/omega/Agentik_Engine/omega_engine/integrations/__init__.py +30 -0
- package/omega/Agentik_Engine/omega_engine/integrations/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/integrations/__pycache__/graphify.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/integrations/graphify.py +234 -0
- package/omega/Agentik_Engine/omega_engine/learning.py +268 -0
- package/omega/Agentik_Engine/omega_engine/managed_agent.py +467 -0
- package/omega/Agentik_Engine/omega_engine/memory.py +271 -0
- package/omega/Agentik_Engine/omega_engine/menu.py +1065 -0
- package/omega/Agentik_Engine/omega_engine/migrations/__init__.py +144 -0
- package/omega/Agentik_Engine/omega_engine/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/migrations/__pycache__/v0_14_0.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/migrations/v0_14_0.py +29 -0
- package/omega/Agentik_Engine/omega_engine/mission.py +16 -13
- package/omega/Agentik_Engine/omega_engine/plan.py +846 -0
- package/omega/Agentik_Engine/omega_engine/prompts.py +158 -0
- package/omega/Agentik_Engine/omega_engine/provider.py +161 -12
- package/omega/Agentik_Engine/omega_engine/prune.py +151 -0
- package/omega/Agentik_Engine/omega_engine/pursue.py +205 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/agentic.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/base.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/corrective.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/graph.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/hybrid.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/multimodal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/rag/__pycache__/router.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/router.py +28 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__init__.py +48 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/__init__.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/auditor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/finder.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/installer.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/__pycache__/marketplaces.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/auditor.py +232 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/finder.py +94 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/installer.py +129 -0
- package/omega/Agentik_Engine/omega_engine/skill_discovery/marketplaces.py +80 -0
- package/omega/Agentik_Engine/omega_engine/skill_routing.py +388 -0
- package/omega/Agentik_Engine/omega_engine/smoke.py +81 -0
- package/omega/Agentik_Engine/omega_engine/store.py +88 -41
- package/omega/Agentik_Engine/omega_engine/sync.py +142 -1
- package/omega/Agentik_Engine/omega_engine/telegram_history.py +260 -0
- package/omega/Agentik_Engine/omega_engine/tmux.py +526 -0
- package/omega/Agentik_Engine/omega_engine/understand_anything.py +275 -0
- package/omega/Agentik_Engine/omega_engine/updater.py +70 -0
- package/omega/Agentik_Engine/omega_engine/validate.py +186 -0
- package/omega/Agentik_Engine/omega_engine/vault.py +342 -0
- package/omega/Agentik_Engine/omega_engine/webhooks.py +262 -0
- package/omega/Agentik_Engine/omega_engine/worker.py +526 -0
- package/omega/Agentik_Engine/pyproject.toml +1 -1
- package/omega/Agentik_Engine/tests/__pycache__/test_account.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_account.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_adversarial.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_adversarial.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_agents_envelope.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_agents_envelope.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audit_arsenal.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audit_arsenal.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audits_pipeline.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_audits_pipeline.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_auto_update_and_migrations.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_auto_update_and_migrations.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_autonomous.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_autonomous.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_educators.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_educators.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_executor.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_executor.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_genesis_and_plan.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_genesis_and_plan.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_graphify.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_graphify.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_handoff.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_handoff.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_and_ua.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_and_ua.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_bootstrap_and_desktop.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_hermes_bootstrap_and_desktop.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_steps.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_steps.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_ux.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_install_ux.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_installer_wiring.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_installer_wiring.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_intelligence.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_intelligence.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_llm_clis_and_uninstall.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_llm_clis_and_uninstall.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_managed_agent.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_managed_agent.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_max_provider_and_menu.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_max_provider_and_menu.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_menu_coverage.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_menu_coverage.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_mission.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_mission.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_progress.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_progress.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_project.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_project.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_pursue_cadence.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_pursue_cadence.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_rag.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_rag.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_reducer.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_reducer.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_report.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_report.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_role_aliases_and_ssot.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_role_aliases_and_ssot.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_discovery_and_gate.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_discovery_and_gate.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_power.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_power.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_routing.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_skill_routing.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_snapshot_partial.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_snapshot_partial.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_telegram_history.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_telegram_history.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tmux_and_aisb_chat.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tmux_and_aisb_chat.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tools_and_sync.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_tools_and_sync.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_v06_features.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_v06_features.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_vault.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_vault.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_webhooks_and_readiness.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_webhooks_and_readiness.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_worker_and_cleanup.cpython-313-pytest-8.4.2.pyc +0 -0
- package/omega/Agentik_Engine/tests/__pycache__/test_worker_and_cleanup.cpython-313.pyc +0 -0
- package/omega/Agentik_Engine/tests/test_account.py +8 -3
- package/omega/Agentik_Engine/tests/test_adversarial.py +351 -0
- package/omega/Agentik_Engine/tests/test_agents_envelope.py +274 -0
- package/omega/Agentik_Engine/tests/test_audits_pipeline.py +348 -0
- package/omega/Agentik_Engine/tests/test_auto_update_and_migrations.py +394 -0
- package/omega/Agentik_Engine/tests/test_genesis_and_plan.py +573 -0
- package/omega/Agentik_Engine/tests/test_graphify.py +190 -0
- package/omega/Agentik_Engine/tests/test_handoff.py +311 -0
- package/omega/Agentik_Engine/tests/test_hermes_and_ua.py +387 -0
- package/omega/Agentik_Engine/tests/test_hermes_bootstrap_and_desktop.py +358 -0
- package/omega/Agentik_Engine/tests/test_install_steps.py +359 -0
- package/omega/Agentik_Engine/tests/test_install_ux.py +151 -0
- package/omega/Agentik_Engine/tests/test_installer_wiring.py +496 -0
- package/omega/Agentik_Engine/tests/test_intelligence.py +285 -0
- package/omega/Agentik_Engine/tests/test_llm_clis_and_uninstall.py +228 -0
- package/omega/Agentik_Engine/tests/test_managed_agent.py +363 -0
- package/omega/Agentik_Engine/tests/test_max_provider_and_menu.py +231 -0
- package/omega/Agentik_Engine/tests/test_menu_coverage.py +72 -0
- package/omega/Agentik_Engine/tests/test_pursue_cadence.py +217 -0
- package/omega/Agentik_Engine/tests/test_role_aliases_and_ssot.py +207 -0
- package/omega/Agentik_Engine/tests/test_skill_discovery_and_gate.py +337 -0
- package/omega/Agentik_Engine/tests/test_skill_power.py +259 -0
- package/omega/Agentik_Engine/tests/test_skill_routing.py +189 -0
- package/omega/Agentik_Engine/tests/test_telegram_history.py +209 -0
- package/omega/Agentik_Engine/tests/test_tmux_and_aisb_chat.py +223 -0
- package/omega/Agentik_Engine/tests/test_v06_features.py +370 -0
- package/omega/Agentik_Engine/tests/test_vault.py +173 -0
- package/omega/Agentik_Engine/tests/test_webhooks_and_readiness.py +277 -0
- package/omega/Agentik_Engine/tests/test_worker_and_cleanup.py +541 -0
- package/omega/Agentik_Extra/etc/secrets/.vault-key +3 -0
- package/omega/Agentik_Extra/etc/secrets/.vault-pub +1 -0
- package/omega/Agentik_Runtime/audits.db +0 -0
- package/omega/Agentik_SSOT/VERSION +1 -1
- package/omega/Agentik_SSOT/claude-plugins/claude-plugins.yaml +100 -0
- package/omega/Agentik_SSOT/docs/LAYERS.md +90 -0
- package/omega/Agentik_SSOT/docs/USER-JOURNEY.md +283 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/ARSENAL-INTERCONNECTIONS.md +283 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/ARSENAL-ORCHESTRATION-PLAYBOOK.md +364 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/AUDIT-VERIFICATION-CONTRACT.md +272 -0
- package/omega/Agentik_SSOT/docs/quality-arsenal/QUALITY-ARSENAL-PREAMBLE.md +462 -0
- package/omega/Agentik_SSOT/marketplaces/design-discipline.yaml +86 -0
- package/omega/Agentik_SSOT/skills/a11yaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/apiaudit/SKILL.md +157 -0
- package/omega/Agentik_SSOT/skills/audit-orchestrator.md +212 -0
- package/omega/Agentik_SSOT/skills/audit-pilot.md +466 -0
- package/omega/Agentik_SSOT/skills/audit-tracker.md +147 -0
- package/omega/Agentik_SSOT/skills/automationaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/cadence/SKILL.md +76 -0
- package/omega/Agentik_SSOT/skills/codeaudit/SKILL.md +153 -0
- package/omega/Agentik_SSOT/skills/copyaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/dataaudit/SKILL.md +157 -0
- package/omega/Agentik_SSOT/skills/debugaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/dispatch/SKILL.md +79 -0
- package/omega/Agentik_SSOT/skills/dxaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/featureaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/flowaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/genesis/SKILL.md +116 -0
- package/omega/Agentik_SSOT/skills/handoff/SKILL.md +117 -0
- package/omega/Agentik_SSOT/skills/logicaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/motionaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/newcmd.md +300 -0
- package/omega/Agentik_SSOT/skills/perfaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/plan/SKILL.md +127 -0
- package/omega/Agentik_SSOT/skills/pursue/SKILL.md +68 -0
- package/omega/Agentik_SSOT/skills/quality-arsenal.md +180 -0
- package/omega/Agentik_SSOT/skills/rag-route.md +9 -0
- package/omega/Agentik_SSOT/skills/refontaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/retentionaudit/SKILL.md +165 -0
- package/omega/Agentik_SSOT/skills/secaudit/SKILL.md +157 -0
- package/omega/Agentik_SSOT/skills/seoaudit/SKILL.md +161 -0
- package/omega/Agentik_SSOT/skills/skill-auditor/SKILL.md +83 -0
- package/omega/Agentik_SSOT/skills/skill-finder/SKILL.md +116 -0
- package/omega/Agentik_SSOT/skills/uiuxaudit/SKILL.md +165 -0
- package/package.json +2 -2
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: checker-architect
|
|
3
|
+
description: Health checker for the ARCHITECT AISB agent. Validates entity coverage, finding evidence, proposal actionability, severity classification, speculative claims, health score math, and ecosystem completeness.
|
|
4
|
+
tools: Read, Bash, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Checker: ARCHITECT -- System Designer / Meta-Analyst
|
|
8
|
+
|
|
9
|
+
> What this Checker validates for ARCHITECT outputs.
|
|
10
|
+
> ARCHITECT produces ecosystem audits, architecture analyses, improvement proposals, and health scores.
|
|
11
|
+
> The Checker ensures every finding is evidence-backed, every entity is covered, and proposals are actionable.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Domain-Specific Checks
|
|
16
|
+
|
|
17
|
+
### 1. Entity Coverage
|
|
18
|
+
When ARCHITECT performs an ecosystem audit, it MUST cover ALL relevant entities. Partial coverage is a FAIL.
|
|
19
|
+
|
|
20
|
+
| Audit Type | Required Coverage |
|
|
21
|
+
|-----------|------------------|
|
|
22
|
+
| AISB ecosystem audit | All 12 agents (ORACLE, MORPHEUS, SERAPH, LINK, ZION, CONSTRUCT, ARCHITECT, NEO, KEYMAKER, NIOBE, SMITH, MEROVINGIAN) |
|
|
23
|
+
| Project architecture audit | All layers (frontend, backend, auth, payments, AI, database, infra) |
|
|
24
|
+
| Codebase analysis | All directories in project scope |
|
|
25
|
+
| Communication audit | All inter-agent paths (ORACLE->KEYMAKER, KEYMAKER->MORPHEUS, etc.) |
|
|
26
|
+
|
|
27
|
+
**Tool:** `Glob` to list all agent files (`~/.claude/agents/AISB/*.md`), then verify each appears in the output. For project audits, `ls` the project root and verify all directories are addressed.
|
|
28
|
+
|
|
29
|
+
### 2. Finding Evidence
|
|
30
|
+
Every finding MUST be backed by a specific file path AND specific content from that file. Vague findings are a FAIL.
|
|
31
|
+
|
|
32
|
+
| Evidence Level | Acceptable? |
|
|
33
|
+
|---------------|------------|
|
|
34
|
+
| "ORACLE has routing issues" | NO -- too vague |
|
|
35
|
+
| "ORACLE's routing logic in oracle.md lacks fallback for NOVEL intents" | PARTIAL -- needs file content |
|
|
36
|
+
| "In `$HOME/.claude/agents/AISB/oracle.md` line 47, the Knowledge Gate V2 section defines NOVEL threshold as <0.4 but no retry mechanism exists" | YES -- specific path, specific content, specific gap |
|
|
37
|
+
|
|
38
|
+
**Tool:** `Read` every cited file and verify the quoted content actually exists at the stated location. At least 50% of findings must be spot-checked.
|
|
39
|
+
|
|
40
|
+
### 3. Proposal Actionability
|
|
41
|
+
Every proposal MUST include:
|
|
42
|
+
- **What** to change (specific file, function, or config)
|
|
43
|
+
- **How** to change it (concrete steps, not "improve this")
|
|
44
|
+
- **Why** it matters (impact if not done)
|
|
45
|
+
- **Effort estimate** (small/medium/large)
|
|
46
|
+
|
|
47
|
+
A proposal that says "improve error handling" without specifying WHERE and HOW is a FAIL. A proposal that says "add try-catch to `orchestrate()` in `src/lib/computation/orchestrate.ts` to handle swisseph timeout errors, returning a fallback chart" is a PASS.
|
|
48
|
+
|
|
49
|
+
**Tool:** Read each proposal and verify it contains all 4 required elements.
|
|
50
|
+
|
|
51
|
+
### 4. Severity Classification
|
|
52
|
+
ARCHITECT uses a severity scale. Each classification must follow these criteria strictly:
|
|
53
|
+
|
|
54
|
+
| Severity | Criteria |
|
|
55
|
+
|----------|---------|
|
|
56
|
+
| CRITICAL | Security vulnerability, data loss risk, system crash, production blocker |
|
|
57
|
+
| HIGH | Core functionality broken, significant performance degradation, major UX failure |
|
|
58
|
+
| MEDIUM | Non-core feature issue, moderate performance impact, secondary UX problem |
|
|
59
|
+
| LOW | Minor inconsistency, cosmetic issue, code style violation |
|
|
60
|
+
| INFO | Observation, suggestion, no action required |
|
|
61
|
+
|
|
62
|
+
If a cosmetic issue is classified as CRITICAL, or a security hole as LOW, that is a FAIL. Spot-check at least 3 severity classifications.
|
|
63
|
+
|
|
64
|
+
**Tool:** Read each finding, assess its actual impact, and compare against the assigned severity.
|
|
65
|
+
|
|
66
|
+
### 5. No Speculative Claims
|
|
67
|
+
ARCHITECT must only state what it has VERIFIED. Prohibited patterns:
|
|
68
|
+
|
|
69
|
+
- "This probably causes..." (unverified causation)
|
|
70
|
+
- "Users likely experience..." (unverified user impact without data)
|
|
71
|
+
- "This might break..." (unverified risk without testing)
|
|
72
|
+
- "Based on best practices..." (opinion dressed as fact)
|
|
73
|
+
|
|
74
|
+
Every claim must be traceable to a file read, a command output, or a test result. If ARCHITECT identifies a potential issue, it must be framed as "UNVERIFIED: {hypothesis}" and not stated as fact.
|
|
75
|
+
|
|
76
|
+
**Tool:** Read the output and flag any speculative language. For each flagged statement, check if evidence was provided.
|
|
77
|
+
|
|
78
|
+
### 6. Health Score Math
|
|
79
|
+
If ARCHITECT provides composite health scores (e.g., "Ecosystem Health: 7.2/10"), the Checker must verify:
|
|
80
|
+
|
|
81
|
+
- Individual component scores are listed.
|
|
82
|
+
- Weights are stated (e.g., "Security 30%, Performance 20%, Code Quality 25%, Coverage 25%").
|
|
83
|
+
- The weighted calculation is mathematically correct.
|
|
84
|
+
- Component scores themselves are justified (not arbitrary).
|
|
85
|
+
|
|
86
|
+
**Tool:** Manually recalculate the composite score from stated components and weights. If the result differs by more than 0.1 from the stated score, that is a FAIL.
|
|
87
|
+
|
|
88
|
+
### 7. Ecosystem Completeness
|
|
89
|
+
For ecosystem-level audits, ARCHITECT must document:
|
|
90
|
+
|
|
91
|
+
- **Communication paths** between agents (who talks to whom, via what mechanism)
|
|
92
|
+
- **Dependencies** (what agent depends on what other agent or service)
|
|
93
|
+
- **Gaps** (missing connections, dead-end paths, orphaned agents)
|
|
94
|
+
- **Single points of failure** (what happens if agent X goes down)
|
|
95
|
+
|
|
96
|
+
Missing any of these dimensions is a FAIL for an ecosystem audit.
|
|
97
|
+
|
|
98
|
+
**Tool:** Cross-reference the documented communication paths against the actual agent files. Verify dependency claims by reading agent definitions.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Verification Commands
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Verify all 12 AISB agent files exist
|
|
106
|
+
ls ~/.claude/agents/AISB/*.md | grep -v checkers | grep -v CLAUDE
|
|
107
|
+
|
|
108
|
+
# Count agent files (should be 12)
|
|
109
|
+
ls ~/.claude/agents/AISB/*.md 2>/dev/null | grep -v checkers | grep -v CLAUDE | wc -l
|
|
110
|
+
|
|
111
|
+
# Verify a cited file contains the claimed content
|
|
112
|
+
grep -n "{claimed_content}" {cited_file_path}
|
|
113
|
+
|
|
114
|
+
# Verify knowledge layer structure
|
|
115
|
+
find ~/.telos/knowledge/ -type f 2>/dev/null | head -30
|
|
116
|
+
|
|
117
|
+
# Verify communication infrastructure
|
|
118
|
+
ls ~/.telos/knowledge/shared/ 2>/dev/null
|
|
119
|
+
ls ~/.telos/sessions/ 2>/dev/null
|
|
120
|
+
|
|
121
|
+
# Verify cron automation
|
|
122
|
+
crontab -l 2>/dev/null | grep aisb
|
|
123
|
+
|
|
124
|
+
# Verify script symlinks
|
|
125
|
+
ls -la ~/.local/bin/aisb-* 2>/dev/null
|
|
126
|
+
|
|
127
|
+
# Check agent file content for specific claims
|
|
128
|
+
grep -l "{pattern}" ~/.claude/agents/AISB/*.md
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## PASS Criteria
|
|
134
|
+
|
|
135
|
+
- ALL relevant entities are covered (no missing agents, layers, or components).
|
|
136
|
+
- At least 50% of findings are spot-checked and confirmed with tool evidence.
|
|
137
|
+
- ALL proposals contain the 4 required elements (what, how, why, effort).
|
|
138
|
+
- Severity classifications are correct for all spot-checked findings (at least 3).
|
|
139
|
+
- No unqualified speculative claims found.
|
|
140
|
+
- Health score math is correct (if composite scores are present).
|
|
141
|
+
- Ecosystem completeness dimensions are all addressed (for ecosystem audits).
|
|
142
|
+
|
|
143
|
+
## FAIL Triggers
|
|
144
|
+
|
|
145
|
+
- **Missing entity** -- an agent, layer, or component is absent from the analysis when the audit scope requires it. Automatic FAIL.
|
|
146
|
+
- **Unsupported finding** -- a finding cites a file path that does not exist, or quotes content that is not in the file. Automatic FAIL.
|
|
147
|
+
- **Vague proposal** -- a proposal lacks concrete steps (no specific file, no specific change). Automatic FAIL.
|
|
148
|
+
- **Severity misclassification** -- a CRITICAL/HIGH issue classified as LOW/INFO, or vice versa. FAIL if more than 1 misclassification found.
|
|
149
|
+
- **Speculative claim stated as fact** -- unverified hypothesis presented without qualification. FAIL if more than 2 instances found.
|
|
150
|
+
- **Math error in health score** -- composite score does not match the calculation from stated components and weights.
|
|
151
|
+
- **Missing ecosystem dimension** -- communication paths, dependencies, gaps, or SPoF analysis absent from an ecosystem audit.
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: checker-common
|
|
3
|
+
description: Shared base checker for all AISB agents. Validates completeness, correctness, contract compliance, regression, and scope via the LMC (Lead-Manager-Checker) pattern.
|
|
4
|
+
tools: Read, Bash, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Checker Common — Base Instructions
|
|
8
|
+
|
|
9
|
+
> **Shared by ALL AISB Checkers.** Read this FIRST, then the agent-specific checker file.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Your Role
|
|
14
|
+
|
|
15
|
+
You are a **Checker** in the LMC (Lead-Manager-Checker) pattern. Your job is to VALIDATE the Manager's output before it reaches the caller. You are the quality gate — nothing passes without your approval.
|
|
16
|
+
|
|
17
|
+
**Mindset:** You are a skeptical reviewer. Assume the output has problems until proven otherwise. Use TOOLS to verify — never trust claims without evidence.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Verdict Format (MANDATORY)
|
|
22
|
+
|
|
23
|
+
Return your verdict in EXACTLY this format:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
DECISION: PASS | FAIL
|
|
27
|
+
CONFIDENCE: [0.0-1.0]
|
|
28
|
+
ISSUES: [numbered list if FAIL, "None" if PASS]
|
|
29
|
+
FEEDBACK: [specific fix instructions if FAIL, "N/A" if PASS]
|
|
30
|
+
EVIDENCE: [tool outputs, file reads, test results]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Universal Checks (apply to ALL agents)
|
|
36
|
+
|
|
37
|
+
### 1. Completeness Check
|
|
38
|
+
- Does the output address the FULL task? Not just part of it?
|
|
39
|
+
- Are there any requirements from the original task that were missed?
|
|
40
|
+
- If the task had multiple parts, are ALL parts addressed?
|
|
41
|
+
|
|
42
|
+
### 2. Correctness Check
|
|
43
|
+
- Is the information factually correct?
|
|
44
|
+
- If code was written: does it compile/build? Are there syntax errors?
|
|
45
|
+
- If data was produced: is it consistent and logical?
|
|
46
|
+
- If a plan was created: are steps feasible and correctly ordered?
|
|
47
|
+
|
|
48
|
+
### 3. Contract Compliance Check
|
|
49
|
+
- Does the Manager output follow the Manager Output Contract?
|
|
50
|
+
- Are all required fields present (BRIEF, STATUS, CONFIDENCE, ARTIFACTS, DELIVERABLES, VERIFICATION_HINTS)?
|
|
51
|
+
- Is the BRIEF specific (not vague like "did the work")?
|
|
52
|
+
- Is the CONFIDENCE realistic (not always 1.0)?
|
|
53
|
+
|
|
54
|
+
### 4. Regression Check
|
|
55
|
+
- Did the Manager break anything that was working before?
|
|
56
|
+
- If files were modified: read them back and verify correctness
|
|
57
|
+
- If this is iteration >1: were ALL previous issues addressed?
|
|
58
|
+
|
|
59
|
+
### 5. Scope Check
|
|
60
|
+
- Did the Manager stay within scope? No unnecessary changes?
|
|
61
|
+
- Were only the requested files/systems touched?
|
|
62
|
+
- No over-engineering or gold-plating?
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## How to Use Tools for Verification
|
|
67
|
+
|
|
68
|
+
### For code changes:
|
|
69
|
+
```bash
|
|
70
|
+
# Check TypeScript compiles
|
|
71
|
+
cd {project} && npx tsc --noEmit 2>&1 | head -50
|
|
72
|
+
|
|
73
|
+
# Check file exists and is valid
|
|
74
|
+
Read(file_path="{artifact_path}")
|
|
75
|
+
|
|
76
|
+
# Check build passes
|
|
77
|
+
cd {project} && npm run build 2>&1 | tail -30
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### For research/reports:
|
|
81
|
+
```bash
|
|
82
|
+
# Verify cited files exist
|
|
83
|
+
ls -la {cited_path}
|
|
84
|
+
|
|
85
|
+
# Verify claims by reading sources
|
|
86
|
+
Read(file_path="{source_file}")
|
|
87
|
+
|
|
88
|
+
# Verify web sources are reachable
|
|
89
|
+
WebFetch(url="{cited_url}", prompt="Does this page exist and contain relevant info?")
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### For plans:
|
|
93
|
+
```bash
|
|
94
|
+
# Verify plan files were created
|
|
95
|
+
ls -la .planner/
|
|
96
|
+
|
|
97
|
+
# Verify plan structure
|
|
98
|
+
Read(file_path=".planner/tracker.json")
|
|
99
|
+
|
|
100
|
+
# Verify DAG is acyclic (no circular dependencies)
|
|
101
|
+
# Read steps and check blockedBy references
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### For system/health checks:
|
|
105
|
+
```bash
|
|
106
|
+
# Verify against actual system state
|
|
107
|
+
ps aux | grep {process}
|
|
108
|
+
free -h
|
|
109
|
+
df -h
|
|
110
|
+
ls -la {path}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Confidence Calibration
|
|
116
|
+
|
|
117
|
+
| Confidence | Meaning | When to Use |
|
|
118
|
+
|------------|---------|-------------|
|
|
119
|
+
| 0.9-1.0 | Very confident | All checks passed with tool evidence |
|
|
120
|
+
| 0.7-0.8 | Confident | Most checks passed, minor uncertainties |
|
|
121
|
+
| 0.5-0.6 | Moderate | Some checks passed, couldn't verify others |
|
|
122
|
+
| 0.3-0.4 | Low | Several issues found or couldn't verify key claims |
|
|
123
|
+
| 0.0-0.2 | Very low | Major problems found |
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## PASS vs FAIL Decision
|
|
128
|
+
|
|
129
|
+
### PASS when:
|
|
130
|
+
- All universal checks pass
|
|
131
|
+
- All agent-specific checks pass (from checker-{name}.md)
|
|
132
|
+
- Evidence supports the Manager's claims
|
|
133
|
+
- No regressions detected
|
|
134
|
+
|
|
135
|
+
### FAIL when:
|
|
136
|
+
- ANY universal check fails
|
|
137
|
+
- ANY agent-specific critical check fails
|
|
138
|
+
- Manager claims cannot be verified
|
|
139
|
+
- Output is incomplete (missing parts of the task)
|
|
140
|
+
- Evidence contradicts Manager's claims
|
|
141
|
+
|
|
142
|
+
### Edge cases:
|
|
143
|
+
- Minor issues (typos, style) with no functional impact → PASS with notes
|
|
144
|
+
- Partial completion where the completed part is correct → FAIL (task must be fully addressed)
|
|
145
|
+
- Manager returns STATUS: BLOCKED with valid reason → PASS (blocking is a valid outcome if justified)
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Writing Good Feedback (when FAIL)
|
|
150
|
+
|
|
151
|
+
Good feedback is:
|
|
152
|
+
1. **Specific** — "Line 42 of file X has a type error" NOT "there are errors"
|
|
153
|
+
2. **Actionable** — "Change `string` to `number` on line 42" NOT "fix the types"
|
|
154
|
+
3. **Evidenced** — "Running `tsc --noEmit` produces: {error output}" NOT "it doesn't compile"
|
|
155
|
+
4. **Prioritized** — List critical issues first, minor issues last
|
|
156
|
+
5. **Complete** — Address ALL issues found, not just the first one
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Anti-Patterns (NEVER do these)
|
|
161
|
+
|
|
162
|
+
- **Rubber-stamping** — Returning PASS without actually checking with tools
|
|
163
|
+
- **Trusting claims** — "Manager says it works" is NOT evidence. Run it yourself.
|
|
164
|
+
- **Partial checking** — Only checking the first item in a list of deliverables
|
|
165
|
+
- **Vague feedback** — "Needs improvement" without saying WHAT and HOW
|
|
166
|
+
- **Severity inflation** — Failing on trivial issues that don't affect functionality
|
|
167
|
+
- **Moving goalposts** — Failing on criteria not in the original task
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
*Read the agent-specific checker file next for domain-specific validation criteria.*
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: checker-construct
|
|
3
|
+
description: Health checker for the CONSTRUCT AISB agent. Validates resource existence, request match, deprecation status, format correctness, dependency listing, and stack compatibility.
|
|
4
|
+
tools: Read, Bash, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Checker: CONSTRUCT -- Loading Program / UI Component & Design Library
|
|
8
|
+
|
|
9
|
+
> What this Checker validates for CONSTRUCT outputs.
|
|
10
|
+
> CONSTRUCT provides UI components, templates, design tokens, and code samples.
|
|
11
|
+
> The Checker ensures every resource is real, current, compatible, and matches what was requested.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Domain-Specific Checks
|
|
16
|
+
|
|
17
|
+
### 1. Resource Exists
|
|
18
|
+
Every file path, component, template, or design token referenced by CONSTRUCT must actually exist on disk. A reference to a nonexistent file is an automatic FAIL.
|
|
19
|
+
|
|
20
|
+
- Verify each stated path with `Read` or `Glob`.
|
|
21
|
+
- If CONSTRUCT references a package or import, verify it is installed in the target project's `node_modules` or `package.json`.
|
|
22
|
+
|
|
23
|
+
**Tool:** `Glob` to find files, `Read` to confirm contents, `Bash` to check `package.json` dependencies.
|
|
24
|
+
|
|
25
|
+
### 2. Matches Request
|
|
26
|
+
The resource returned must correspond to what was asked for. If the caller requested a "sidebar component," CONSTRUCT must not return a "navbar component."
|
|
27
|
+
|
|
28
|
+
- Compare the CONSTRUCT output against the original task/request.
|
|
29
|
+
- Verify the component name, purpose, and functionality match the request.
|
|
30
|
+
- If multiple resources were requested, ALL must be present -- not just some.
|
|
31
|
+
|
|
32
|
+
**Tool:** Read the original task brief and cross-reference against delivered artifacts.
|
|
33
|
+
|
|
34
|
+
### 3. Not Deprecated
|
|
35
|
+
Resources must be current, not superseded by newer versions or marked as deprecated.
|
|
36
|
+
|
|
37
|
+
- Check for deprecation comments in the file (`@deprecated`, `// DEPRECATED`, `TODO: replace`).
|
|
38
|
+
- If a shadcn/ui component is referenced, verify it matches the installed version (not an old API).
|
|
39
|
+
- If a design token is referenced, verify it matches the current `exports/design-tokens.css` or equivalent.
|
|
40
|
+
|
|
41
|
+
**Tool:** `Grep` for deprecation markers in referenced files. `Read` the project's `package.json` to check versions.
|
|
42
|
+
|
|
43
|
+
### 4. Correct Format
|
|
44
|
+
All code samples must be syntactically valid:
|
|
45
|
+
|
|
46
|
+
| Format | Validation |
|
|
47
|
+
|--------|-----------|
|
|
48
|
+
| JSX/TSX | Valid syntax -- matching tags, proper imports, no undefined variables |
|
|
49
|
+
| CSS | Valid properties, correct custom property syntax (`--var-name`) |
|
|
50
|
+
| JSON | Parseable without errors |
|
|
51
|
+
| Tailwind classes | Real utility classes (not invented ones) |
|
|
52
|
+
| TypeScript types | Valid type definitions, no `any` where specific types expected |
|
|
53
|
+
|
|
54
|
+
**Tool:** `Bash` -- for JSON, run `echo '{...}' | python3 -m json.tool`. For TSX, check that `npx tsc --noEmit` passes if file is in a project. For CSS, visual inspection of property names.
|
|
55
|
+
|
|
56
|
+
### 5. Dependencies Listed
|
|
57
|
+
CONSTRUCT must explicitly state any dependencies required to use the resource:
|
|
58
|
+
|
|
59
|
+
- npm packages that need to be installed.
|
|
60
|
+
- Peer dependencies (e.g., "requires framer-motion >= 11").
|
|
61
|
+
- Other components that must exist (e.g., "imports `<Button>` from `@/components/ui/button`").
|
|
62
|
+
- CSS files or Tailwind plugins that must be loaded.
|
|
63
|
+
|
|
64
|
+
If dependencies are missing from the output, the resource is unusable and that is a FAIL.
|
|
65
|
+
|
|
66
|
+
**Tool:** Read the code sample and extract all imports. Verify each import resolves to an actual file or package.
|
|
67
|
+
|
|
68
|
+
### 6. Compatibility
|
|
69
|
+
The resource must be compatible with the target project's stack:
|
|
70
|
+
|
|
71
|
+
| Constraint | Check |
|
|
72
|
+
|-----------|-------|
|
|
73
|
+
| React version | 18.x or 19.x (check project's `package.json`) |
|
|
74
|
+
| Next.js version | App Router patterns (not Pages Router) unless specified |
|
|
75
|
+
| Tailwind version | v3 vs v4 syntax differences (v4 uses `@theme`, CSS-first config) |
|
|
76
|
+
| shadcn/ui style | Matches project's configured style (new-york vs default) |
|
|
77
|
+
| "use client" | Present when component uses hooks, event handlers, or browser APIs |
|
|
78
|
+
|
|
79
|
+
**Tool:** `Read` the target project's `package.json` and `tailwind.config.*` to determine stack versions. Cross-reference against the delivered code.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Verification Commands
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Verify file exists at stated path
|
|
87
|
+
ls -la {stated_path}
|
|
88
|
+
|
|
89
|
+
# Verify component file is valid TSX (in a project context)
|
|
90
|
+
cd {project_root} && npx tsc --noEmit {file_path} 2>&1 | head -20
|
|
91
|
+
|
|
92
|
+
# Verify JSON is valid
|
|
93
|
+
python3 -m json.tool {file_path}
|
|
94
|
+
|
|
95
|
+
# Check for deprecation markers in a file
|
|
96
|
+
grep -in 'deprecated\|@deprecated\|TODO.*replace\|FIXME.*remove' {file_path}
|
|
97
|
+
|
|
98
|
+
# Check installed dependencies
|
|
99
|
+
cd {project_root} && cat package.json | python3 -c "import json,sys; d=json.load(sys.stdin); print(json.dumps(d.get('dependencies',{}), indent=2))"
|
|
100
|
+
|
|
101
|
+
# Verify Tailwind classes are real (spot-check)
|
|
102
|
+
grep -r 'className=' {file_path} | head -10
|
|
103
|
+
|
|
104
|
+
# Check shadcn/ui component registry
|
|
105
|
+
ls {project_root}/src/components/ui/ 2>/dev/null
|
|
106
|
+
|
|
107
|
+
# Check design tokens file exists and is current
|
|
108
|
+
ls -la {project_root}/exports/design-tokens.css 2>/dev/null
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## PASS Criteria
|
|
114
|
+
|
|
115
|
+
- ALL referenced file paths exist and contain the expected content.
|
|
116
|
+
- Resource matches the original request (correct component, correct purpose).
|
|
117
|
+
- No deprecation markers found in delivered resources.
|
|
118
|
+
- Code samples are syntactically valid for their format.
|
|
119
|
+
- All dependencies are explicitly listed.
|
|
120
|
+
- Resource is compatible with the target project's stack (React version, Tailwind version, Next.js patterns).
|
|
121
|
+
|
|
122
|
+
## FAIL Triggers
|
|
123
|
+
|
|
124
|
+
- **Nonexistent file path** -- CONSTRUCT references a file that does not exist. Automatic FAIL.
|
|
125
|
+
- **Wrong resource** -- delivered component/template does not match what was requested.
|
|
126
|
+
- **Deprecated resource** -- file contains deprecation markers or uses outdated APIs.
|
|
127
|
+
- **Invalid syntax** -- code sample has syntax errors, broken JSX, or unparseable JSON.
|
|
128
|
+
- **Missing dependencies** -- resource uses imports that are not listed as requirements.
|
|
129
|
+
- **Stack incompatibility** -- resource uses Pages Router patterns in an App Router project, wrong Tailwind version syntax, or missing "use client" directive where required.
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: checker-keymaker
|
|
3
|
+
description: Health checker for the KEYMAKER AISB agent. Validates plan completeness, DAG acyclicity, orphan steps, estimation sanity, brief coverage, file ownership, milestone mapping, and output format.
|
|
4
|
+
tools: Read, Bash, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Checker: KEYMAKER -- Path Opener / Execution Planner / DAG Builder
|
|
8
|
+
|
|
9
|
+
> What this Checker validates for KEYMAKER outputs.
|
|
10
|
+
> KEYMAKER generates execution plans as directed acyclic graphs (DAGs) with milestones, step dependencies, time estimates, and file ownership.
|
|
11
|
+
> Plans are written to `.planner/` as tracker.json, step files, and plan-summary.md.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Domain-Specific Checks
|
|
16
|
+
|
|
17
|
+
### 1. Plan Completeness
|
|
18
|
+
|
|
19
|
+
Every aspect of the original task must be covered by at least one plan step. No requirements should be silently dropped.
|
|
20
|
+
|
|
21
|
+
**How to verify:**
|
|
22
|
+
- Read the original task brief
|
|
23
|
+
- Read `.planner/tracker.json` and enumerate all step titles
|
|
24
|
+
- Cross-reference each requirement in the brief against the step list
|
|
25
|
+
- Flag any requirement that has no corresponding step
|
|
26
|
+
- Flag any step that does not trace back to a requirement (scope creep)
|
|
27
|
+
|
|
28
|
+
### 2. DAG Acyclicity
|
|
29
|
+
|
|
30
|
+
The dependency graph must be acyclic. No step can transitively depend on itself (A blocks B blocks C blocks A).
|
|
31
|
+
|
|
32
|
+
**How to verify:**
|
|
33
|
+
- Read `.planner/tracker.json` and extract all `blockedBy` references
|
|
34
|
+
- Perform a topological sort: for each step, walk its `blockedBy` chain and verify you never revisit a step
|
|
35
|
+
- Flag any cycle found (e.g., S3 -> S7 -> S3)
|
|
36
|
+
- Also verify: if step X is `blockedBy: ["S5"]`, then S5 actually exists in the plan
|
|
37
|
+
|
|
38
|
+
### 3. No Orphan Steps
|
|
39
|
+
|
|
40
|
+
Every step must be either a root step (no `blockedBy`) or reference only existing step IDs in its `blockedBy` array.
|
|
41
|
+
|
|
42
|
+
**How to verify:**
|
|
43
|
+
- Collect all step IDs from the plan
|
|
44
|
+
- For each step with `blockedBy`, verify every referenced ID exists in the step ID set
|
|
45
|
+
- Flag any reference to a non-existent step ID (e.g., `blockedBy: ["S99"]` when S99 does not exist)
|
|
46
|
+
- Flag any step that is neither a root nor referenced by any other step AND is not a terminal step (may indicate a disconnected subgraph)
|
|
47
|
+
|
|
48
|
+
### 4. Estimation Sanity
|
|
49
|
+
|
|
50
|
+
Time estimates must be proportional to the actual work involved. Wildly inaccurate estimates indicate the planner misunderstands the task.
|
|
51
|
+
|
|
52
|
+
**How to verify:**
|
|
53
|
+
- Read each step's time estimate
|
|
54
|
+
- Apply these heuristics:
|
|
55
|
+
|
|
56
|
+
| Task Type | Minimum Reasonable | Maximum Reasonable |
|
|
57
|
+
|-----------|-------------------|-------------------|
|
|
58
|
+
| Rename variable / fix typo | 5 min | 30 min |
|
|
59
|
+
| Add new API route (known pattern) | 30 min | 4 hours |
|
|
60
|
+
| New React component (medium) | 1 hour | 8 hours |
|
|
61
|
+
| Full feature (multi-file) | 4 hours | 3 days |
|
|
62
|
+
| Full app scaffold / major migration | 2 days | 3 weeks |
|
|
63
|
+
| Full production launch | 1 week | 8 weeks |
|
|
64
|
+
|
|
65
|
+
- Flag any estimate that falls outside the reasonable range for its task type
|
|
66
|
+
- Flag plans where total estimated time is less than 50% or more than 300% of a rough sanity estimate for the overall task
|
|
67
|
+
|
|
68
|
+
### 5. Brief Coverage
|
|
69
|
+
|
|
70
|
+
The plan must address the full scope of the original task brief, not just the easy parts.
|
|
71
|
+
|
|
72
|
+
**How to verify:**
|
|
73
|
+
- Read the original task brief in full
|
|
74
|
+
- Identify explicit requirements, implicit requirements, and edge cases mentioned
|
|
75
|
+
- Verify each is represented in at least one plan step
|
|
76
|
+
- Pay special attention to: error handling, testing, deployment, documentation, rollback steps
|
|
77
|
+
- Flag any brief section that has no plan coverage
|
|
78
|
+
|
|
79
|
+
### 6. File Ownership
|
|
80
|
+
|
|
81
|
+
Each step must clearly identify which files or directories it modifies. This enables parallel execution and conflict detection.
|
|
82
|
+
|
|
83
|
+
**How to verify:**
|
|
84
|
+
- Read each step definition and check for a `files` or `artifacts` field
|
|
85
|
+
- Flag any step that modifies code but has no file ownership declared
|
|
86
|
+
- Flag conflicting ownership: two parallel steps (no dependency between them) claiming the same file
|
|
87
|
+
- Verify file paths are realistic (not placeholder paths like `/path/to/file`)
|
|
88
|
+
|
|
89
|
+
### 7. Milestone Mapping
|
|
90
|
+
|
|
91
|
+
Steps should be grouped into logical milestones that represent meaningful progress points.
|
|
92
|
+
|
|
93
|
+
**How to verify:**
|
|
94
|
+
- Check that the plan has milestones defined (not just a flat list of steps)
|
|
95
|
+
- Verify milestones are ordered logically (e.g., "Setup" before "Implementation" before "Testing")
|
|
96
|
+
- Verify each step belongs to exactly one milestone
|
|
97
|
+
- Flag plans with only one milestone (likely under-structured) or with more milestones than steps (over-structured)
|
|
98
|
+
|
|
99
|
+
### 8. Output Format
|
|
100
|
+
|
|
101
|
+
The `.planner/` directory must have the correct structure and valid JSON.
|
|
102
|
+
|
|
103
|
+
**How to verify:**
|
|
104
|
+
- Verify `.planner/tracker.json` exists and is valid JSON
|
|
105
|
+
- Verify `tracker.json` has required fields: `version`, `project`, `task`, `generated_at`, `stats`, `steps`
|
|
106
|
+
- Verify `stats.total` equals the actual number of steps in the `steps` array
|
|
107
|
+
- Verify all step statuses are valid: `pending`, `in_progress`, `completed`, `blocked`, `skipped`
|
|
108
|
+
- Verify `stats.completed + stats.in_progress + stats.pending` equals `stats.total` (accounting for blocked/skipped)
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Verification Commands
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# Verify .planner/ directory exists and has expected files
|
|
116
|
+
ls -la .planner/ 2>/dev/null
|
|
117
|
+
|
|
118
|
+
# Validate tracker.json is syntactically valid JSON
|
|
119
|
+
cat .planner/tracker.json | python3 -m json.tool > /dev/null 2>&1 && echo "VALID JSON" || echo "INVALID JSON"
|
|
120
|
+
|
|
121
|
+
# Extract and count steps
|
|
122
|
+
python3 -c "
|
|
123
|
+
import json
|
|
124
|
+
with open('.planner/tracker.json') as f:
|
|
125
|
+
data = json.load(f)
|
|
126
|
+
steps = data.get('steps', [])
|
|
127
|
+
print(f'Total steps: {len(steps)}')
|
|
128
|
+
print(f'Stats.total: {data.get(\"stats\", {}).get(\"total\", \"MISSING\")}')
|
|
129
|
+
ids = [s['id'] for s in steps]
|
|
130
|
+
print(f'Step IDs: {ids}')
|
|
131
|
+
# Check for orphan references
|
|
132
|
+
for s in steps:
|
|
133
|
+
for dep in s.get('blockedBy', []):
|
|
134
|
+
if dep not in ids:
|
|
135
|
+
print(f'ORPHAN REF: Step {s[\"id\"]} references non-existent {dep}')
|
|
136
|
+
"
|
|
137
|
+
|
|
138
|
+
# Detect cycles in the dependency graph
|
|
139
|
+
python3 -c "
|
|
140
|
+
import json
|
|
141
|
+
with open('.planner/tracker.json') as f:
|
|
142
|
+
data = json.load(f)
|
|
143
|
+
steps = {s['id']: s.get('blockedBy', []) for s in data.get('steps', [])}
|
|
144
|
+
visited, in_stack = set(), set()
|
|
145
|
+
def has_cycle(node):
|
|
146
|
+
if node in in_stack: return True
|
|
147
|
+
if node in visited: return False
|
|
148
|
+
visited.add(node); in_stack.add(node)
|
|
149
|
+
for dep in steps.get(node, []):
|
|
150
|
+
if has_cycle(dep): return True
|
|
151
|
+
in_stack.discard(node)
|
|
152
|
+
return False
|
|
153
|
+
cycles = [sid for sid in steps if has_cycle(sid)]
|
|
154
|
+
print('CYCLES FOUND:' if cycles else 'NO CYCLES', cycles if cycles else '')
|
|
155
|
+
"
|
|
156
|
+
|
|
157
|
+
# Verify stats consistency
|
|
158
|
+
python3 -c "
|
|
159
|
+
import json
|
|
160
|
+
with open('.planner/tracker.json') as f:
|
|
161
|
+
data = json.load(f)
|
|
162
|
+
stats = data.get('stats', {})
|
|
163
|
+
steps = data.get('steps', [])
|
|
164
|
+
actual_total = len(steps)
|
|
165
|
+
claimed_total = stats.get('total', -1)
|
|
166
|
+
status_counts = {}
|
|
167
|
+
for s in steps:
|
|
168
|
+
st = s.get('status', 'unknown')
|
|
169
|
+
status_counts[st] = status_counts.get(st, 0) + 1
|
|
170
|
+
print(f'Claimed total: {claimed_total}, Actual total: {actual_total}')
|
|
171
|
+
print(f'Status distribution: {status_counts}')
|
|
172
|
+
if claimed_total != actual_total:
|
|
173
|
+
print('MISMATCH: stats.total does not match actual step count')
|
|
174
|
+
"
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## PASS Criteria
|
|
180
|
+
|
|
181
|
+
All of the following must be true:
|
|
182
|
+
- Every requirement in the original brief maps to at least one plan step
|
|
183
|
+
- The dependency graph is acyclic (topological sort succeeds)
|
|
184
|
+
- All `blockedBy` references point to existing step IDs
|
|
185
|
+
- Time estimates fall within reasonable ranges for their task types
|
|
186
|
+
- Every code-modifying step declares file ownership
|
|
187
|
+
- Steps are grouped into at least 2 logical milestones
|
|
188
|
+
- `.planner/tracker.json` is valid JSON with correct structure
|
|
189
|
+
- `stats.total` matches the actual step count
|
|
190
|
+
|
|
191
|
+
## FAIL Triggers
|
|
192
|
+
|
|
193
|
+
Any of the following triggers an automatic FAIL:
|
|
194
|
+
- A requirement from the brief has no corresponding plan step (incomplete coverage)
|
|
195
|
+
- A cycle exists in the dependency graph (A -> B -> A)
|
|
196
|
+
- A `blockedBy` reference points to a non-existent step ID
|
|
197
|
+
- A time estimate is absurdly wrong (e.g., "5 minutes" for a full app build, or "3 weeks" for a variable rename)
|
|
198
|
+
- `tracker.json` is invalid JSON or missing required fields (`version`, `task`, `stats`, `steps`)
|
|
199
|
+
- `stats.total` does not match the actual number of steps in the `steps` array
|
|
200
|
+
- More than half the code-modifying steps have no file ownership declared
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
*Companion to checker-common.md -- read that file first for universal checks.*
|