@event4u/agent-config 9.8.0 → 9.10.0
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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +234 -295
- package/CONTRIBUTING.md +23 -7
- package/MIGRATION.md +20 -0
- package/README.md +55 -9
- package/dist/agent-src/commands/agent-status.md +12 -11
- package/dist/agent-src/commands/agents/audit.md +1 -1
- package/dist/agent-src/commands/agents/optimize.md +2 -2
- package/dist/agent-src/commands/agents/user/accept.md +115 -30
- package/dist/agent-src/commands/agents/user/delete.md +147 -0
- package/dist/agent-src/commands/agents/user/review.md +65 -28
- package/dist/agent-src/commands/agents/user/show.md +82 -29
- package/dist/agent-src/commands/agents/user/update.md +2 -2
- package/dist/agent-src/commands/agents/user.md +17 -4
- package/dist/agent-src/commands/agents.md +1 -1
- package/dist/agent-src/commands/check-current-md.md +3 -13
- package/dist/agent-src/commands/condense.md +28 -97
- package/dist/agent-src/commands/cost/report.md +7 -0
- package/dist/agent-src/commands/fix/portability.md +2 -10
- package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
- package/dist/agent-src/commands/fix/refs.md +2 -10
- package/dist/agent-src/commands/fix/route.md +4 -3
- package/dist/agent-src/commands/fix.md +9 -6
- package/dist/agent-src/commands/ghostwriter.md +1 -1
- package/dist/agent-src/commands/humanize.md +2 -2
- package/dist/agent-src/commands/image.md +1 -1
- package/dist/agent-src/commands/jira-ticket.md +1 -1
- package/dist/agent-src/commands/memory/load.md +11 -0
- package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
- package/dist/agent-src/commands/optimize/skills.md +3 -3
- package/dist/agent-src/commands/post-as.md +1 -1
- package/dist/agent-src/commands/pr/create.md +4 -4
- package/dist/agent-src/commands/profile/show.md +3 -3
- package/dist/agent-src/commands/research.md +1 -1
- package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
- package/dist/agent-src/commands/rule-compliance-audit.md +5 -4
- package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
- package/dist/agent-src/commands/tdd.md +21 -0
- package/dist/agent-src/commands/team/delegate.md +4 -0
- package/dist/agent-src/commands/team-knowledge/bootstrap.md +9 -8
- package/dist/agent-src/commands/team-knowledge/consolidate.md +8 -7
- package/dist/agent-src/commands/team.md +4 -1
- package/dist/agent-src/commands/upstream-contribute.md +0 -1
- package/dist/agent-src/commands/video.md +1 -1
- package/dist/agent-src/contexts/authority/commit-mechanics.md +7 -0
- package/dist/agent-src/contexts/authority/destructive-mechanics.md +16 -0
- package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
- package/dist/agent-src/contexts/authority/scope-mechanics.md +61 -0
- package/dist/agent-src/contexts/communication/rules-auto/reply-close-mechanics.md +20 -18
- package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/source-of-truth-mechanics.md +9 -10
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +11 -0
- package/dist/agent-src/contexts/contracts/artifact-engagement-flow.md +26 -15
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +3 -0
- package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +99 -23
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-examples.md +1 -1
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +7 -6
- package/dist/agent-src/contexts/execution/evidence-discipline.md +92 -77
- package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +22 -21
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +34 -0
- package/dist/agent-src/contexts/execution/project-intelligence.md +122 -103
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +23 -21
- package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
- package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
- package/dist/agent-src/contexts/execution/subagent-routing.md +11 -0
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
- package/dist/agent-src/contexts/execution/subagent-steering.md +36 -34
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
- package/dist/agent-src/contexts/execution/user-memory-channels.md +189 -0
- package/dist/agent-src/contexts/execution/verification-mechanics.md +9 -0
- package/dist/agent-src/contexts/model-recommendations.md +3 -2
- package/dist/agent-src/contexts/subagent-configuration.md +3 -3
- package/dist/agent-src/ghostwriter/README.md +2 -2
- package/dist/agent-src/packs/README.md +1 -1
- package/dist/agent-src/personas/README.md +5 -5
- package/dist/agent-src/personas/_template-specialist/persona.md +3 -3
- package/dist/agent-src/personas/backend-architect.md +24 -23
- package/dist/agent-src/personas/eloquent-tamer.md +30 -30
- package/dist/agent-src/personas/frontend-engineer.md +30 -30
- package/dist/agent-src/personas/product-owner.md +41 -38
- package/dist/agent-src/personas/qa.md +13 -13
- package/dist/agent-src/personas/security-engineer.md +22 -22
- package/dist/agent-src/presets/README.md +3 -3
- package/dist/agent-src/profiles/README.md +3 -3
- package/dist/agent-src/rules/active-remediation.md +2 -2
- package/dist/agent-src/rules/artifact-engagement-recording.md +4 -4
- package/dist/agent-src/rules/ask-when-uncertain.md +0 -4
- package/dist/agent-src/rules/augment-edit-discipline.md +1 -1
- package/dist/agent-src/rules/broken-access-control.md +4 -4
- package/dist/agent-src/rules/code-comment-discipline.md +1 -1
- package/dist/agent-src/rules/code-provenance.md +112 -0
- package/dist/agent-src/rules/commit-policy.md +4 -9
- package/dist/agent-src/rules/communication-through-line.md +5 -5
- package/dist/agent-src/rules/decision-revisit-gate.md +1 -1
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -1
- package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
- package/dist/agent-src/rules/domain-safety-pii.md +1 -1
- package/dist/agent-src/rules/external-code-graph-interop.md +5 -5
- package/dist/agent-src/rules/fast-path-marker-visibility.md +43 -7
- package/dist/agent-src/rules/finance-safety-floor.md +1 -1
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +3 -3
- package/dist/agent-src/rules/history-discipline.md +80 -0
- package/dist/agent-src/rules/legal-safety-floor.md +1 -1
- package/dist/agent-src/rules/lethal-trifecta-guard.md +5 -5
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +10 -8
- package/dist/agent-src/rules/media-governance-routing.md +13 -13
- package/dist/agent-src/rules/media-sync-ground-truth.md +29 -11
- package/dist/agent-src/rules/no-cheap-questions.md +7 -7
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +29 -18
- package/dist/agent-src/rules/no-roadmap-references.md +1 -1
- package/dist/agent-src/rules/non-destructive-by-default.md +5 -23
- package/dist/agent-src/rules/onboarding-gate.md +14 -4
- package/dist/agent-src/rules/persona-governance.md +2 -2
- package/dist/agent-src/rules/php-coding.md +1 -0
- package/dist/agent-src/rules/prefer-enums-over-literals.md +9 -9
- package/dist/agent-src/rules/preservation-guard.md +10 -2
- package/dist/agent-src/rules/question-not-instruction.md +1 -1
- package/dist/agent-src/rules/reviewer-awareness.md +1 -0
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +7 -0
- package/dist/agent-src/rules/rule-type-governance.md +1 -1
- package/dist/agent-src/rules/scale-discipline.md +92 -0
- package/dist/agent-src/rules/scope-control.md +1 -1
- package/dist/agent-src/rules/secret-vcs-guard.md +1 -1
- package/dist/agent-src/rules/security-sensitive-stop.md +24 -8
- package/dist/agent-src/rules/senior-engineering-discipline.md +17 -17
- package/dist/agent-src/rules/session-canary.md +77 -0
- package/dist/agent-src/rules/skill-quality.md +1 -1
- package/dist/agent-src/rules/source-confidentiality.md +21 -19
- package/dist/agent-src/rules/source-of-truth.md +6 -5
- package/dist/agent-src/rules/spreadsheet-source-quality.md +2 -2
- package/dist/agent-src/rules/strategy-safety-floor.md +1 -1
- package/dist/agent-src/rules/think-before-action.md +5 -5
- package/dist/agent-src/rules/token-budget-discipline.md +5 -3
- package/dist/agent-src/rules/token-efficiency.md +2 -2
- package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
- package/dist/agent-src/rules/tool-safety.md +3 -1
- package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
- package/dist/agent-src/rules/user-interaction.md +12 -0
- package/dist/agent-src/rules/verify-before-complete.md +4 -24
- package/dist/agent-src/skills/adversarial-review/SKILL.md +2 -2
- package/dist/agent-src/skills/agent-security-review/SKILL.md +53 -46
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +2 -2
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +20 -20
- package/dist/agent-src/skills/ai-council/SKILL.md +185 -128
- package/dist/agent-src/skills/analysis-skill-router/SKILL.md +3 -3
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/artisan-commands/SKILL.md +2 -2
- package/dist/agent-src/skills/async-python-patterns/SKILL.md +8 -7
- package/dist/agent-src/skills/authz-review/SKILL.md +16 -15
- package/dist/agent-src/skills/aws-infrastructure/SKILL.md +5 -5
- package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +30 -12
- package/dist/agent-src/skills/code-intelligence/SKILL.md +17 -15
- package/dist/agent-src/skills/code-intelligence/evals/triggers.json +52 -0
- package/dist/agent-src/skills/code-review/SKILL.md +6 -6
- package/dist/agent-src/skills/command-routing/SKILL.md +5 -4
- package/dist/agent-src/skills/composer-packages/SKILL.md +2 -2
- package/dist/agent-src/skills/condense-memory/SKILL.md +43 -41
- package/dist/agent-src/skills/context-document/SKILL.md +23 -21
- package/dist/agent-src/skills/copilot-config/SKILL.md +6 -1
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
- package/dist/agent-src/skills/decision-record/SKILL.md +20 -18
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
- package/dist/agent-src/skills/design-review/SKILL.md +20 -20
- package/dist/agent-src/skills/design-system-capture/reference/design-system-json.md +28 -25
- package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
- package/dist/agent-src/skills/devcontainer/SKILL.md +2 -2
- package/dist/agent-src/skills/docker/SKILL.md +1 -1
- package/dist/agent-src/skills/docx-authoring/evals/triggers.json +52 -0
- package/dist/agent-src/skills/emit-tickets/SKILL.md +2 -2
- package/dist/agent-src/skills/error-handling-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/evaluate-llm-feature/SKILL.md +0 -1
- package/dist/agent-src/skills/evaluate-llm-feature/evals/triggers.json +52 -0
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +6 -5
- package/dist/agent-src/skills/feature-planning/SKILL.md +2 -2
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +3 -3
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +13 -13
- package/dist/agent-src/skills/git-workflow/SKILL.md +33 -33
- package/dist/agent-src/skills/grafana/SKILL.md +5 -0
- package/dist/agent-src/skills/history-design/SKILL.md +101 -0
- package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
- package/dist/agent-src/skills/humanizer/SKILL.md +84 -67
- package/dist/agent-src/skills/humanizer/data/patterns.md +14 -14
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +4 -4
- package/dist/agent-src/skills/image-editing/SKILL.md +1 -1
- package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +82 -37
- package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +17 -5
- package/dist/agent-src/skills/judge-injection-defense/SKILL.md +63 -25
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -0
- package/dist/agent-src/skills/judge-synthesis/SKILL.md +72 -28
- package/dist/agent-src/skills/laravel-horizon/SKILL.md +5 -0
- package/dist/agent-src/skills/laravel-mail/SKILL.md +5 -4
- package/dist/agent-src/skills/laravel-middleware/SKILL.md +5 -4
- package/dist/agent-src/skills/laravel-notifications/SKILL.md +10 -9
- package/dist/agent-src/skills/laravel-pennant/SKILL.md +1 -1
- package/dist/agent-src/skills/laravel-pulse/SKILL.md +9 -8
- package/dist/agent-src/skills/laravel-reverb/SKILL.md +6 -5
- package/dist/agent-src/skills/laravel-scheduling/SKILL.md +6 -1
- package/dist/agent-src/skills/laravel-validation/SKILL.md +12 -0
- package/dist/agent-src/skills/launch-readiness/SKILL.md +2 -2
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +7 -7
- package/dist/agent-src/skills/learning-tutor/SKILL.md +44 -43
- package/dist/agent-src/skills/learning-tutor/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
- package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
- package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
- package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
- package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +0 -1
- package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +69 -64
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +6 -6
- package/dist/agent-src/skills/override-management/SKILL.md +1 -1
- package/dist/agent-src/skills/pdf-tools/evals/triggers.json +52 -0
- package/dist/agent-src/skills/performance-analysis/SKILL.md +7 -3
- package/dist/agent-src/skills/persona-improvement/SKILL.md +0 -2
- package/dist/agent-src/skills/persona-improvement/evals/triggers.json +52 -0
- package/dist/agent-src/skills/php-coder/SKILL.md +10 -0
- package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +136 -127
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/ev-fixtures.md +36 -35
- package/dist/agent-src/skills/prediction-pool-optimizer/reference/odds-and-bonus.md +45 -41
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +5 -5
- package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
- package/dist/agent-src/skills/project-analysis-react/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
- package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
- package/dist/agent-src/skills/prompt-engineering-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/prompt-validator/SKILL.md +39 -39
- package/dist/agent-src/skills/quality-tools/SKILL.md +15 -15
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +57 -21
- package/dist/agent-src/skills/react-shadcn-ui/reference/registry.md +29 -27
- package/dist/agent-src/skills/readme-writing-package/SKILL.md +2 -2
- package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +25 -25
- package/dist/agent-src/skills/recursive-verification/SKILL.md +7 -0
- package/dist/agent-src/skills/refine-prompt/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +23 -5
- package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
- package/dist/agent-src/skills/roadmap-management/SKILL.md +80 -66
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +84 -73
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
- package/dist/agent-src/skills/rule-refactor/SKILL.md +4 -4
- package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
- package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
- package/dist/agent-src/skills/screenshot-hygiene/evals/triggers.json +52 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +3 -4
- package/dist/agent-src/skills/security-audit/SKILL.md +27 -10
- package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +39 -17
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +17 -14
- package/dist/agent-src/skills/skill-writing/SKILL.md +11 -10
- package/dist/agent-src/skills/song-to-script/SKILL.md +93 -85
- package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +4 -3
- package/dist/agent-src/skills/standards-from-config/SKILL.md +61 -43
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +60 -86
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +33 -6
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +13 -13
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +24 -23
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +3 -4
- package/dist/agent-src/skills/technical-specification/SKILL.md +5 -0
- package/dist/agent-src/skills/terraform/SKILL.md +2 -2
- package/dist/agent-src/skills/terragrunt/SKILL.md +8 -8
- package/dist/agent-src/skills/testing-anti-patterns/process-anti-patterns.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +19 -13
- package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +0 -1
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +9 -9
- package/dist/agent-src/skills/validate-feature-fit/SKILL.md +3 -1
- package/dist/agent-src/skills/verify-completion-evidence/SKILL.md +4 -6
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +67 -61
- package/dist/agent-src/skills/video-director/SKILL.md +7 -7
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +5 -6
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/command.md +3 -3
- package/dist/agent-src/templates/contexts/knowledge-pages.md +47 -45
- package/dist/agent-src/templates/contexts/lesson-card.md +2 -2
- package/dist/agent-src/templates/contexts/tenant-boundaries.md +2 -2
- package/dist/agent-src/templates/contexts.md +1 -1
- package/dist/agent-src/templates/features.md +1 -1
- package/dist/agent-src/templates/persona.md +2 -2
- package/dist/agent-src/templates/roadmaps.md +125 -116
- package/dist/agent-src/templates/rule.md +4 -3
- package/dist/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/dist/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/dist/agent-src/templates/scripts/tier_usage_report.ts +2 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -2
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/review.ts +1 -1
- package/dist/agent-src/user-types/README.md +8 -8
- package/dist/agent-src/user-types/galabau-field-crew.md +34 -33
- package/dist/agent-src/user-types/metalworking-shop.md +35 -34
- package/dist/agent-src/user-types/truck-driver.md +22 -20
- package/dist/cli/commands/doctorShell.js +20 -0
- package/dist/cli/commands/doctorShell.js.map +1 -1
- package/dist/cli/commands/rtkDetect.js +58 -0
- package/dist/cli/commands/rtkDetect.js.map +1 -0
- package/dist/cli/firstRunNotice.js +70 -0
- package/dist/cli/firstRunNotice.js.map +1 -0
- package/dist/cli/main.js +35 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/python/workspace_roles.js +2 -2
- package/dist/cli/python/workspace_roles.js.map +1 -1
- package/dist/cli/registry.js +7 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +429 -119
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +6 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +91 -8
- package/dist/discovery/trust-report.md +11 -11
- package/dist/discovery/workspaces.json +32 -7
- package/dist/hooks/dispatch.js +19649 -0
- package/dist/install/agentSwitchDetection.js +75 -0
- package/dist/install/agentSwitchDetection.js.map +1 -0
- package/dist/install/agentSwitchProfile.js +117 -0
- package/dist/install/agentSwitchProfile.js.map +1 -0
- package/dist/install/atomic.js +1 -1
- package/dist/install/detect.js +1 -1
- package/dist/install/install.mjs +783 -486
- package/dist/install/rtkDetection.js +213 -0
- package/dist/install/rtkDetection.js.map +1 -0
- package/dist/install/rule_scope.js +2 -1
- package/dist/install/rule_scope.js.map +1 -1
- package/dist/install/types.js +2 -2
- package/dist/install/wizard-plan.js +1 -1
- package/dist/install/wizardDismissals.js +58 -0
- package/dist/install/wizardDismissals.js.map +1 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
- package/dist/mcp/registry-manifest.json +15 -4
- package/dist/mcp/server.json +20 -0
- package/dist/mcp/server.mjs +44634 -0
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/compile_time_toggles.js +48 -0
- package/dist/scripts/_lib/compile_time_toggles.js.map +1 -0
- package/dist/scripts/condense.js +248 -224
- package/dist/scripts/condense.js.map +1 -1
- package/dist/server/app.js +4 -2
- package/dist/server/app.js.map +1 -1
- package/dist/server/io/sharedWriteCheck.js +101 -0
- package/dist/server/io/sharedWriteCheck.js.map +1 -0
- package/dist/server/routes/ping.js +14 -0
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/server/routes/settings.js +21 -4
- package/dist/server/routes/settings.js.map +1 -1
- package/dist/server/routes/userMd.js +21 -4
- package/dist/server/routes/userMd.js.map +1 -1
- package/dist/server/routes/wizard.js +68 -25
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/schemas/settings.js +8 -2
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/shared/userMd/utils.js +30 -0
- package/dist/shared/userMd/utils.js.map +1 -1
- package/dist/ui/assets/index-BpSQt5vm.js +40 -0
- package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
- package/dist/ui/assets/index-jSfMW8_t.css +1 -0
- package/dist/ui/index.html +2 -2
- package/docs/MIGRATION.md +16 -0
- package/docs/guidelines/agent-infra/api-cost-levers.md +56 -5
- package/docs/guidelines/agent-infra/simplicity-and-goal-demos.md +93 -33
- package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
- package/package.json +21 -11
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/pr_risk_review.ts +0 -0
- package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
- package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
- package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
- package/src/agent-src/templates/scripts/tier_usage_report.ts +2 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +2 -2
- package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +1 -1
- package/src/config/agent-settings.template.yml +84 -16
- package/src/config/ci-local-parity.yml +142 -0
- package/src/config/discovery/packs.yml +22 -0
- package/src/config/discovery/workspaces.yml +1 -1
- package/src/config/evaluator-budgets.json +47 -0
- package/src/config/gate-coverage.yml +127 -0
- package/src/config/hook-latency-budget.json +20 -0
- package/src/config/preamble-payload-budget.json +44 -0
- package/src/install/agentSwitchDetection.ts +90 -0
- package/src/install/agentSwitchProfile.ts +131 -0
- package/src/install/atomic.ts +1 -1
- package/src/install/detect.ts +1 -1
- package/src/install/rtkDetection.ts +274 -0
- package/src/install/rule_scope.ts +9 -2
- package/src/install/types.ts +2 -2
- package/src/install/wizard-plan.ts +1 -1
- package/src/install/wizardDismissals.ts +60 -0
- package/src/scripts/_cli/cmd_doctor.ts +139 -2
- package/src/scripts/_cli/cmd_memory_get.ts +197 -0
- package/src/scripts/_cli/cmd_refresh.ts +30 -0
- package/src/scripts/_dispatch.bash +81 -0
- package/src/scripts/_lib/agent_user_profile.ts +381 -0
- package/src/scripts/_lib/agents_overlay.ts +9 -0
- package/src/scripts/_lib/anchor_eval.ts +311 -0
- package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
- package/src/scripts/_lib/auto_dispatch.ts +76 -0
- package/src/scripts/_lib/cc_transcript.ts +316 -0
- package/src/scripts/_lib/compile_time_toggles.ts +79 -0
- package/src/scripts/_lib/confusables.ts +101 -0
- package/src/scripts/_lib/detect_target_license.ts +714 -0
- package/src/scripts/_lib/duplicate_scope_census.ts +77 -0
- package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +5 -0
- package/src/scripts/_lib/fixtures/secret-detector/positives.txt +4 -0
- package/src/scripts/_lib/install_drift.ts +194 -0
- package/src/scripts/_lib/managed_agents_folder.ts +181 -0
- package/src/scripts/_lib/memory_fts_index.ts +390 -0
- package/src/scripts/_lib/orchestration_record.ts +91 -2
- package/src/scripts/_lib/payload_hash_drift.ts +126 -0
- package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
- package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
- package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
- package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
- package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
- package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
- package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
- package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
- package/src/scripts/_lib/persistence/types.ts +109 -0
- package/src/scripts/_lib/preservation_migration.ts +291 -0
- package/src/scripts/_lib/retrieval_sanitize.ts +166 -2
- package/src/scripts/_lib/rtk_allowlist.ts +44 -0
- package/src/scripts/_lib/scan_scope.ts +115 -0
- package/src/scripts/_lib/secret_detector.test.ts +5 -0
- package/src/scripts/_lib/secret_detector.ts +9 -0
- package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
- package/src/scripts/_lib/spawn_env.ts +7 -0
- package/src/scripts/_lib/sqlite_guard.ts +191 -0
- package/src/scripts/_lib/subagent_spawn.ts +53 -0
- package/src/scripts/_lib/user_global_memory_audit.ts +187 -0
- package/src/scripts/_lib/user_global_observations.ts +830 -0
- package/src/scripts/_lib/user_global_revocations.ts +110 -0
- package/src/scripts/_lib/user_memory_gate_counters.ts +291 -0
- package/src/scripts/_lib/worker_budget.ts +107 -0
- package/src/scripts/ai_council/blind_review.ts +212 -0
- package/src/scripts/ai_council/budget_guard.ts +90 -11
- package/src/scripts/ai_council/bundler.ts +2 -2
- package/src/scripts/ai_council/clients.ts +59 -3
- package/src/scripts/ai_council/config.ts +50 -6
- package/src/scripts/ai_council/orchestrator.ts +127 -12
- package/src/scripts/ai_team/review_gate.ts +8 -10
- package/src/scripts/ai_team/team_dispatch.ts +65 -6
- package/src/scripts/anchor_eval_falsify.ts +198 -0
- package/src/scripts/anchor_scoring_run.ts +239 -0
- package/src/scripts/annotate_discovery.ts +1 -65
- package/src/scripts/audit_initial_context.ts +1 -1
- package/src/scripts/bench_cross_source_eval.ts +400 -0
- package/src/scripts/bench_honesty_score.ts +1093 -0
- package/src/scripts/bench_hook_latency.ts +218 -0
- package/src/scripts/bench_quality_run.ts +168 -4
- package/src/scripts/build_mcp_catalog.ts +275 -0
- package/src/scripts/build_mcp_registry_manifest.ts +46 -0
- package/src/scripts/build_proof.ts +45 -0
- package/src/scripts/cache_realization_report.ts +782 -0
- package/src/scripts/chat_history.ts +8 -5
- package/src/scripts/check_artefact_count_messaging.ts +5 -1
- package/src/scripts/check_augment_description_cap.ts +15 -4
- package/src/scripts/check_backstop_debt.ts +23 -13
- package/src/scripts/check_bundle_path_leakage.ts +343 -0
- package/src/scripts/check_ci_local_parity.ts +317 -0
- package/src/scripts/check_condensation.ts +96 -191
- package/src/scripts/check_context_paths.ts +38 -9
- package/src/scripts/check_evaluator_budgets.ts +99 -0
- package/src/scripts/check_gate_coverage.ts +299 -0
- package/src/scripts/check_iron_law_prominence.ts +22 -1
- package/src/scripts/check_kernel_prefix_stability.ts +0 -0
- package/src/scripts/check_knowledge_sharing.ts +12 -1
- package/src/scripts/check_no_external_sources.ts +2 -2
- package/src/scripts/check_no_new_legacy_path.ts +16 -6
- package/src/scripts/check_no_roadmap_refs.ts +22 -9
- package/src/scripts/check_originality_freshness.ts +167 -0
- package/src/scripts/check_preamble_payload_budget.ts +130 -0
- package/src/scripts/check_proposal.ts +0 -0
- package/src/scripts/check_references.ts +0 -1
- package/src/scripts/check_safety_floor_untouched.ts +171 -24
- package/src/scripts/check_site_links.ts +62 -3
- package/src/scripts/check_source_pointer_freshness.ts +28 -3
- package/src/scripts/ci_status.ts +0 -0
- package/src/scripts/cluster_near_miss_patterns.ts +0 -0
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/code_graph/cli.ts +181 -9
- package/src/scripts/code_graph/detect.ts +52 -0
- package/src/scripts/code_graph/intent.ts +45 -0
- package/src/scripts/code_graph/query.ts +143 -29
- package/src/scripts/code_graph/sqlite_store.ts +174 -0
- package/src/scripts/command_suggester/types.ts +0 -0
- package/src/scripts/compile_router.ts +10 -14
- package/src/scripts/condense.sh +3 -4
- package/src/scripts/condense.ts +261 -234
- package/src/scripts/context_hygiene_hook.ts +8 -5
- package/src/scripts/cost/track.mjs +168 -33
- package/src/scripts/cost_summary.ts +33 -1
- package/src/scripts/council_cli.ts +171 -15
- package/src/scripts/detect_target_license.ts +203 -0
- package/src/scripts/discovery_graph.ts +0 -0
- package/src/scripts/encoding_corpus.ts +500 -0
- package/src/scripts/encoding_corpus_report.ts +216 -0
- package/src/scripts/evaluator_umbrella.sh +145 -0
- package/src/scripts/external_sources_denylist.json +5 -3
- package/src/scripts/first_run_gate_hook.ts +9 -5
- package/src/scripts/generate_index.ts +19 -2
- package/src/scripts/hermetic-install.sh +3 -3
- package/src/scripts/hook_manifest.yaml +55 -16
- package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
- package/src/scripts/hooks/block_no_verify.ts +9 -9
- package/src/scripts/hooks/code_graph_nudge_hook.ts +11 -4
- package/src/scripts/hooks/concern_registry.ts +75 -0
- package/src/scripts/hooks/design_slop_hook.ts +8 -5
- package/src/scripts/hooks/dispatch_entry.ts +37 -0
- package/src/scripts/hooks/dispatch_hook.ts +176 -3
- package/src/scripts/hooks/hook_stdin.ts +42 -0
- package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
- package/src/scripts/hot_context_hook.ts +7 -6
- package/src/scripts/injection_scan_hook.ts +9 -1
- package/src/scripts/install +6 -6
- package/src/scripts/install-hooks.sh +6 -6
- package/src/scripts/install.sh +5 -4
- package/src/scripts/install.ts +264 -23
- package/src/scripts/learning_sidecar.ts +0 -0
- package/src/scripts/lint_budget_ownership.ts +89 -0
- package/src/scripts/lint_command_routing.ts +35 -5
- package/src/scripts/lint_command_verbs.ts +42 -9
- package/src/scripts/lint_confusables.ts +10 -72
- package/src/scripts/lint_consumer_internal_refs.ts +211 -0
- package/src/scripts/lint_discovery_vocabulary.ts +2 -0
- package/src/scripts/lint_documented_commands.ts +670 -0
- package/src/scripts/lint_featured_skills.ts +0 -0
- package/src/scripts/lint_framework_leakage.ts +17 -3
- package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
- package/src/scripts/lint_governed_writes.ts +335 -0
- package/src/scripts/lint_hidden_unicode.ts +214 -0
- package/src/scripts/lint_load_context.ts +17 -5
- package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
- package/src/scripts/lint_memory_tripwire.ts +186 -0
- package/src/scripts/lint_new_skill_gate.ts +9 -3
- package/src/scripts/lint_no_python_twin_rationale.ts +17 -2
- package/src/scripts/lint_originality.ts +1 -1
- package/src/scripts/lint_override_kernel_guard.ts +74 -26
- package/src/scripts/lint_persistence.ts +171 -0
- package/src/scripts/lint_pre_migration_refs.ts +106 -0
- package/src/scripts/lint_provenance.ts +547 -0
- package/src/scripts/lint_provenance_vocabulary.ts +437 -0
- package/src/scripts/lint_skill_originality.ts +1 -1
- package/src/scripts/lint_spawn_payload.ts +283 -0
- package/src/scripts/lint_store_boundary.ts +152 -0
- package/src/scripts/lint_ticket_buildable.ts +1 -1
- package/src/scripts/lint_versioned_cache.ts +7 -1
- package/src/scripts/mcp_server/__main__.ts +7 -2
- package/src/scripts/mcp_server/catalog.ts +23 -1
- package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
- package/src/scripts/mcp_server/prompts.ts +6 -0
- package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
- package/src/scripts/mcp_server/tools.ts +57 -6
- package/src/scripts/mcp_telemetry_query.ts +2 -33
- package/src/scripts/mcp_telemetry_store.ts +64 -34
- package/src/scripts/measure_scope_dedup.ts +224 -0
- package/src/scripts/memory_learn_hook.ts +126 -0
- package/src/scripts/memory_lookup.ts +0 -0
- package/src/scripts/memory_replay_24.ts +312 -0
- package/src/scripts/memory_report.ts +16 -3
- package/src/scripts/memory_signal.ts +48 -0
- package/src/scripts/memory_status.ts +6 -0
- package/src/scripts/mine_session.ts +98 -0
- package/src/scripts/minimal_safe_diff_hook.ts +8 -5
- package/src/scripts/onboarding_gate_hook.ts +8 -5
- package/src/scripts/orchestration_payload_hash_drift.ts +145 -0
- package/src/scripts/orchestration_record.ts +16 -0
- package/src/scripts/pr_url_reminder_hook.ts +8 -1
- package/src/scripts/preamble_byte_census.ts +574 -0
- package/src/scripts/prepack-check.mjs +17 -0
- package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
- package/src/scripts/prepack_lifecycle_check.mjs +82 -0
- package/src/scripts/probe_skill_registration.ts +2 -2
- package/src/scripts/profile_staleness_hook.ts +8 -7
- package/src/scripts/redact_hook_capture.ts +13 -0
- package/src/scripts/release.ts +65 -10
- package/src/scripts/report_install_drift.ts +109 -0
- package/src/scripts/roadmap_progress_hook.ts +8 -5
- package/src/scripts/router_telemetry.ts +1 -1
- package/src/scripts/schemas/license-policy.schema.json +89 -0
- package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
- package/src/scripts/schemas/rule.schema.json +10 -0
- package/src/scripts/second_brain_retrieval.ts +14 -4
- package/src/scripts/self_review_gate.test.ts +173 -1
- package/src/scripts/self_review_gate.ts +155 -15
- package/src/scripts/session_canary_hook.ts +182 -0
- package/src/scripts/skill_linter.ts +5 -0
- package/src/scripts/smoke_quickstart.ts +2 -2
- package/src/scripts/surface-tiers.yml +2 -0
- package/src/scripts/surface_probe_hook.ts +8 -7
- package/src/scripts/sync_gitattributes.ts +310 -0
- package/src/scripts/team_review_gate_hook.ts +13 -16
- package/src/scripts/validate_pack_yaml.ts +0 -0
- package/src/scripts/verify_before_complete_hook.ts +8 -5
- package/src/scripts/wrapper_freshness_hook.ts +8 -7
- package/src/server/schemas/settings.ts +16 -2
- package/src/shared/userMd/utils.ts +31 -0
- package/dist/agent-src/rules/telegraph-speak.md +0 -87
- package/dist/ui/assets/index-BPFMZWUs.css +0 -1
- package/dist/ui/assets/index-CrmZ34Rg.js +0 -40
- package/dist/ui/assets/index-CrmZ34Rg.js.map +0 -1
- package/docs/CLAIMS.md +0 -286
- package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
- package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
- package/docs/SKILL_CENSUS.md +0 -352
- package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
- package/docs/adrs/cost/README.md +0 -9
- package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
- package/docs/adrs/memory/README.md +0 -10
- package/docs/adrs/router/0001-three-tier-routing.md +0 -119
- package/docs/adrs/router/README.md +0 -9
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
- package/docs/adrs/schema/README.md +0 -9
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
- package/docs/adrs/smoke/README.md +0 -9
- package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
- package/docs/adrs/telegraph/README.md +0 -9
- package/docs/announcements/2026-05-non-dev-launch.md +0 -79
- package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
- package/docs/anti-reskin-gate.md +0 -60
- package/docs/architecture/augment-projection.md +0 -70
- package/docs/architecture/claude-bundle.md +0 -77
- package/docs/architecture/current-onboard-baseline.md +0 -126
- package/docs/architecture/current-safety-behavior.md +0 -137
- package/docs/architecture/multi-tool-projection.md +0 -125
- package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
- package/docs/architecture/source-projection.md +0 -85
- package/docs/architecture.md +0 -390
- package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
- package/docs/archive/CHANGELOG-7.0.0.md +0 -419
- package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
- package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
- package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
- package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
- package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
- package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
- package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
- package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
- package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
- package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
- package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
- package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
- package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
- package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
- package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
- package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
- package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
- package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
- package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
- package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
- package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
- package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
- package/docs/artefact-census.md +0 -71
- package/docs/benchmark.md +0 -785
- package/docs/benchmark.pinned.yml +0 -31
- package/docs/benchmarks.md +0 -85
- package/docs/capability-matrix.md +0 -33
- package/docs/case-studies/_template.md +0 -60
- package/docs/case-studies/frontend-design-positioning.md +0 -86
- package/docs/catalog.md +0 -726
- package/docs/command-flows.md +0 -272
- package/docs/command-naming-audit.md +0 -60
- package/docs/comparison.yaml +0 -87
- package/docs/contracts/CHANGELOG-conventions.md +0 -149
- package/docs/contracts/STABILITY.md +0 -188
- package/docs/contracts/adoption-signal-floor.md +0 -127
- package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
- package/docs/contracts/adr-chat-history-split.md +0 -140
- package/docs/contracts/adr-command-suggestion.md +0 -144
- package/docs/contracts/adr-forecast-construction-shape.md +0 -90
- package/docs/contracts/adr-gtm-context-spine.md +0 -116
- package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
- package/docs/contracts/adr-install-user-type-axis.md +0 -107
- package/docs/contracts/adr-layout.md +0 -107
- package/docs/contracts/adr-level-6-productization.md +0 -145
- package/docs/contracts/adr-mcp-runtime.md +0 -128
- package/docs/contracts/adr-product-ui-track.md +0 -381
- package/docs/contracts/adr-prompt-driven-execution.md +0 -186
- package/docs/contracts/adr-settings-sync-engine.md +0 -128
- package/docs/contracts/adr-user-types-axis.md +0 -127
- package/docs/contracts/adr-wing4-context-spine.md +0 -126
- package/docs/contracts/agent-user-schema.md +0 -170
- package/docs/contracts/agents-layout.md +0 -148
- package/docs/contracts/agents-md-tech-stack.md +0 -75
- package/docs/contracts/ai-council-config.md +0 -829
- package/docs/contracts/ai-team-config.md +0 -224
- package/docs/contracts/analysis-memory-loop.md +0 -149
- package/docs/contracts/at-rest-encryption.md +0 -191
- package/docs/contracts/audit-log-v1.md +0 -150
- package/docs/contracts/auto-orchestration-v1.md +0 -70
- package/docs/contracts/benchmark-ab-contract.md +0 -106
- package/docs/contracts/benchmark-corpus-spec.md +0 -125
- package/docs/contracts/benchmark-report-schema.md +0 -113
- package/docs/contracts/branch-protection-policy.md +0 -139
- package/docs/contracts/brand-token-consumption.md +0 -74
- package/docs/contracts/capability-boundary.md +0 -69
- package/docs/contracts/capability-packs.md +0 -217
- package/docs/contracts/ci-cost-budget.md +0 -111
- package/docs/contracts/ci-green-floor.md +0 -141
- package/docs/contracts/command-category-governance.md +0 -84
- package/docs/contracts/command-clusters.md +0 -399
- package/docs/contracts/command-surface-tiers.md +0 -176
- package/docs/contracts/command-taxonomy.md +0 -137
- package/docs/contracts/condensation-default-kill-criterion.md +0 -116
- package/docs/contracts/config-presets.md +0 -144
- package/docs/contracts/conformance.md +0 -84
- package/docs/contracts/consumer-bridge.md +0 -73
- package/docs/contracts/context-paths.md +0 -101
- package/docs/contracts/context-spine.md +0 -179
- package/docs/contracts/cost-dashboard.md +0 -143
- package/docs/contracts/cost-enforcement.md +0 -134
- package/docs/contracts/cost-profile-defaults.md +0 -110
- package/docs/contracts/cost-summary-schema.md +0 -107
- package/docs/contracts/creative-pack-boundary.md +0 -63
- package/docs/contracts/cross-repo-retrieval.md +0 -64
- package/docs/contracts/cross-wing-handoff.md +0 -134
- package/docs/contracts/daily-workspace.md +0 -147
- package/docs/contracts/decision-engine-gates.md +0 -120
- package/docs/contracts/decision-trace-v1.md +0 -177
- package/docs/contracts/design-artifact-lifecycle.md +0 -93
- package/docs/contracts/design-artifact-verification.md +0 -153
- package/docs/contracts/discovery-manifest.md +0 -209
- package/docs/contracts/discovery-manifest.schema.json +0 -254
- package/docs/contracts/evidence-based-pruning.md +0 -102
- package/docs/contracts/explain-modes.md +0 -187
- package/docs/contracts/explain-trace.schema.json +0 -144
- package/docs/contracts/file-ownership-matrix.json +0 -13941
- package/docs/contracts/file-ownership-matrix.md +0 -135
- package/docs/contracts/frontmatter-contract.md +0 -140
- package/docs/contracts/ghostwriter-schema.md +0 -337
- package/docs/contracts/governance-enforcement-projection.md +0 -159
- package/docs/contracts/gui-wizard.md +0 -350
- package/docs/contracts/harness-expectations.md +0 -128
- package/docs/contracts/hook-architecture-v1.md +0 -325
- package/docs/contracts/host-agent-protocol.md +0 -110
- package/docs/contracts/implement-ticket-flow.md +0 -625
- package/docs/contracts/init-telemetry.md +0 -132
- package/docs/contracts/injected-block-authenticity-model.md +0 -66
- package/docs/contracts/install-layout.md +0 -249
- package/docs/contracts/install-scopes.md +0 -82
- package/docs/contracts/installed-tools-lockfile.md +0 -144
- package/docs/contracts/installer-agent-mode.md +0 -137
- package/docs/contracts/iron-law-overrides.txt +0 -26
- package/docs/contracts/kernel-membership.md +0 -339
- package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
- package/docs/contracts/linear-ai-three-layers.md +0 -130
- package/docs/contracts/linter-structural-model.md +0 -181
- package/docs/contracts/load-context-budget-model.md +0 -259
- package/docs/contracts/load-context-schema.md +0 -220
- package/docs/contracts/local-analytics.md +0 -160
- package/docs/contracts/local-knowledge-ingestion.md +0 -96
- package/docs/contracts/local-server-api.md +0 -134
- package/docs/contracts/local-server-ports.md +0 -53
- package/docs/contracts/low-impact-corpus-format.md +0 -95
- package/docs/contracts/mcp-beta-criteria.md +0 -130
- package/docs/contracts/mcp-cloud-scope.md +0 -355
- package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
- package/docs/contracts/mcp-phase-1-scope.md +0 -272
- package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
- package/docs/contracts/mcp-tool-inventory.md +0 -64
- package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
- package/docs/contracts/measurement-baseline.md +0 -103
- package/docs/contracts/memory-visibility-v1.md +0 -160
- package/docs/contracts/mental-models.md +0 -336
- package/docs/contracts/migrate-command.md +0 -233
- package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
- package/docs/contracts/namespace.md +0 -125
- package/docs/contracts/no-runtime-boundary.md +0 -61
- package/docs/contracts/one-off-script-lifecycle.md +0 -110
- package/docs/contracts/orchestration-dsl-v1.md +0 -153
- package/docs/contracts/package-self-orientation.md +0 -163
- package/docs/contracts/pilot/agent-authority.md +0 -24
- package/docs/contracts/pilot/direct-answers.md +0 -70
- package/docs/contracts/pilot/language-and-tone.md +0 -63
- package/docs/contracts/plain-language-surface.md +0 -117
- package/docs/contracts/prelaunch-diagnostics.md +0 -151
- package/docs/contracts/profile-system.md +0 -167
- package/docs/contracts/reasoning-discipline-protocol.md +0 -83
- package/docs/contracts/release-pr-gating.md +0 -151
- package/docs/contracts/release-sizing.md +0 -107
- package/docs/contracts/release-trunk-sync.md +0 -105
- package/docs/contracts/review-lens-schema.md +0 -64
- package/docs/contracts/roadmap-complexity-standard.md +0 -138
- package/docs/contracts/role-experience.md +0 -125
- package/docs/contracts/router-blending.md +0 -71
- package/docs/contracts/rule-classification.md +0 -171
- package/docs/contracts/rule-interactions.md +0 -132
- package/docs/contracts/rule-interactions.yml +0 -260
- package/docs/contracts/rule-priority-hierarchy.md +0 -88
- package/docs/contracts/rule-router.md +0 -287
- package/docs/contracts/safety-model.md +0 -129
- package/docs/contracts/session-profile-overlay.md +0 -157
- package/docs/contracts/settings-api.md +0 -264
- package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
- package/docs/contracts/settings-sync-yaml-subset.md +0 -139
- package/docs/contracts/skill-bundled-assets.md +0 -62
- package/docs/contracts/skill-discovery.md +0 -80
- package/docs/contracts/skill-distribution-channels.md +0 -66
- package/docs/contracts/skill-domains.md +0 -144
- package/docs/contracts/skill-dry-run.md +0 -47
- package/docs/contracts/skill-family-map.yml +0 -915
- package/docs/contracts/smoke-contracts.md +0 -144
- package/docs/contracts/subagent-boundary.md +0 -74
- package/docs/contracts/surface-agent-contracts.md +0 -153
- package/docs/contracts/surface-matrix.md +0 -108
- package/docs/contracts/surface-tiers.md +0 -81
- package/docs/contracts/telegraph-telemetry.md +0 -83
- package/docs/contracts/ticket-bundle-format.md +0 -233
- package/docs/contracts/tier-3-contrib-plugin.md +0 -137
- package/docs/contracts/trust-and-safety.md +0 -144
- package/docs/contracts/ui-stack-extension.md +0 -237
- package/docs/contracts/ui-track-flow.md +0 -329
- package/docs/contracts/universal-skills.md +0 -91
- package/docs/contracts/user-type-schema.md +0 -146
- package/docs/contracts/value-dashboard-spec.md +0 -378
- package/docs/contracts/value-report-schema.md +0 -168
- package/docs/contracts/workflow-packs.md +0 -121
- package/docs/contracts/workspace-boundary.md +0 -84
- package/docs/contracts/workspace-documents.md +0 -144
- package/docs/contracts/write-engine.md +0 -182
- package/docs/cookbook.md +0 -152
- package/docs/customization.md +0 -696
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
- package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
- package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
- package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
- package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
- package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
- package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
- package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
- package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
- package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
- package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
- package/docs/decisions/ADR-016-installer-architecture.md +0 -191
- package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
- package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
- package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
- package/docs/decisions/ADR-021-deployment-shape.md +0 -153
- package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
- package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
- package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
- package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
- package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
- package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
- package/docs/decisions/ADR-028-root-layout.md +0 -147
- package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
- package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
- package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
- package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
- package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
- package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
- package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
- package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
- package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
- package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
- package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
- package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
- package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
- package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
- package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
- package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
- package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
- package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
- package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
- package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
- package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
- package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
- package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
- package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
- package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
- package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
- package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
- package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
- package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
- package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
- package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
- package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
- package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
- package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
- package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
- package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
- package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
- package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
- package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
- package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
- package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
- package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
- package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
- package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
- package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
- package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
- package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
- package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
- package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
- package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
- package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
- package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
- package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
- package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
- package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
- package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
- package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
- package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
- package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
- package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
- package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
- package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
- package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
- package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
- package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
- package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
- package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
- package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
- package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
- package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
- package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
- package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
- package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
- package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
- package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
- package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
- package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
- package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
- package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
- package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
- package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -248
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -112
- package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
- package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
- package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -209
- package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
- package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
- package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
- package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
- package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
- package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
- package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
- package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
- package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
- package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
- package/docs/decisions/ADR-124-embedded-engine-doctrine.md +0 -255
- package/docs/decisions/ADR-125-doc-screenshot-anonymization.md +0 -131
- package/docs/decisions/ADR-126-internet-reach-operator-tooling.md +0 -254
- package/docs/decisions/ADR-127-enforcement-claims-must-resolve.md +0 -150
- package/docs/decisions/ADR-128-executable-evidence-and-measured-escalation.md +0 -201
- package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
- package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
- package/docs/decisions/INDEX.md +0 -157
- package/docs/decisions/engine-reclassification-2026-07.md +0 -104
- package/docs/deploy/connector-setup.md +0 -129
- package/docs/deploy/env-vars.md +0 -70
- package/docs/deploy/policy-cookbook.md +0 -130
- package/docs/deploy/quickstart.md +0 -112
- package/docs/deploy/small-team-recipe.md +0 -148
- package/docs/deploy/team-deployment-posture.md +0 -111
- package/docs/design/adversarial-council-eval.md +0 -106
- package/docs/design/council-vs-solo-baseline.md +0 -92
- package/docs/design/cross-model-parity-eval.md +0 -82
- package/docs/design/length-neutral-judge-rerun.md +0 -92
- package/docs/design/utilization-window-criteria.md +0 -51
- package/docs/development.md +0 -230
- package/docs/distribution/awesome-list-submission.md +0 -46
- package/docs/distribution/consumer-matrix.md +0 -96
- package/docs/distribution/launch-story-draft.md +0 -58
- package/docs/distribution/mcp-submission-checklist.md +0 -95
- package/docs/distribution/public-install-smoke.md +0 -68
- package/docs/distribution/registries.md +0 -126
- package/docs/distribution/registry-submissions.md +0 -85
- package/docs/distribution/telemetry-privacy.md +0 -128
- package/docs/distribution/telemetry-schema.md +0 -174
- package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
- package/docs/end-to-end-walkthroughs.md +0 -165
- package/docs/enforcement-by-host.md +0 -51
- package/docs/examples/agent-user.example.md +0 -22
- package/docs/experiences/agency.md +0 -49
- package/docs/experiences/content_creator.md +0 -49
- package/docs/experiences/developer.md +0 -49
- package/docs/experiences/finance.md +0 -50
- package/docs/experiences/founder.md +0 -49
- package/docs/experiences/ops.md +0 -49
- package/docs/featured-commands.md +0 -27
- package/docs/featured-skills.md +0 -95
- package/docs/flows.md +0 -67
- package/docs/getting-started-by-role.md +0 -190
- package/docs/getting-started-laravel.md +0 -72
- package/docs/getting-started-local-stdio.md +0 -77
- package/docs/getting-started.md +0 -254
- package/docs/github-topics.md +0 -93
- package/docs/governance-advantage.md +0 -72
- package/docs/governance.md +0 -96
- package/docs/guides/cross-repo-linked-projects.md +0 -93
- package/docs/guides/cross-repo-retrieval.md +0 -61
- package/docs/guides/frontend-design-corpus-refresh.md +0 -83
- package/docs/guides/gated-platform-reads.md +0 -221
- package/docs/guides/local-analytics.md +0 -125
- package/docs/guides/local-knowledge.md +0 -127
- package/docs/guides/skill-discovery.md +0 -71
- package/docs/guides/skill-preview.md +0 -71
- package/docs/hook-payload-capture.md +0 -221
- package/docs/install-friction-report.md +0 -66
- package/docs/installation.md +0 -959
- package/docs/maintainers/branch-protection.md +0 -105
- package/docs/maintainers/dev-mode.md +0 -106
- package/docs/maintainers/optional-media-deps.md +0 -50
- package/docs/maintainers/system-map.md +0 -85
- package/docs/mcp-registries.md +0 -94
- package/docs/mcp-server.md +0 -175
- package/docs/mcp.md +0 -147
- package/docs/media/proof-demo.cast +0 -14
- package/docs/media/proof-demo.gif +0 -0
- package/docs/migration/consumer-template-consumption-model.md +0 -145
- package/docs/migration/divergences/README.md +0 -55
- package/docs/migration/divergences/_template.md +0 -50
- package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
- package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
- package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
- package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
- package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
- package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
- package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
- package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
- package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
- package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
- package/docs/migration/node-floor.md +0 -86
- package/docs/migration/v1-to-v2.md +0 -156
- package/docs/migration/yaml-roundtrip-spike.md +0 -163
- package/docs/migrations/commands-1.15.0.md +0 -117
- package/docs/parity/bench-external.json +0 -58
- package/docs/parity/bench.json +0 -41
- package/docs/parity/command-frontmatter.md +0 -60
- package/docs/parity/external-runtime.md +0 -46
- package/docs/personas.md +0 -178
- package/docs/positioning-evidence.md +0 -86
- package/docs/profiles.md +0 -108
- package/docs/proof.md +0 -252
- package/docs/quality.md +0 -98
- package/docs/readme-split-plan.md +0 -102
- package/docs/recruits/_template.md +0 -81
- package/docs/release-runbook.md +0 -141
- package/docs/role-experiences.md +0 -19
- package/docs/safety.md +0 -30
- package/docs/second-brain-scope.md +0 -116
- package/docs/self-review-gate.md +0 -65
- package/docs/setup/enterprise-and-offline.md +0 -201
- package/docs/setup/mcp-client-config.md +0 -358
- package/docs/setup/mcp-cloud-endpoints.md +0 -116
- package/docs/setup/mcp-cloud-registry-listing.md +0 -99
- package/docs/setup/mcp-cloud-setup.md +0 -183
- package/docs/setup/mcp-r2-bootstrap.md +0 -82
- package/docs/setup/mcp-server-docker.md +0 -101
- package/docs/setup/per-ide/aider.md +0 -48
- package/docs/setup/per-ide/antigravity.md +0 -68
- package/docs/setup/per-ide/augment.md +0 -89
- package/docs/setup/per-ide/claude-code.md +0 -97
- package/docs/setup/per-ide/claude-desktop.md +0 -207
- package/docs/setup/per-ide/cline.md +0 -43
- package/docs/setup/per-ide/codebuddy.md +0 -63
- package/docs/setup/per-ide/codex.md +0 -46
- package/docs/setup/per-ide/continue.md +0 -68
- package/docs/setup/per-ide/copilot.md +0 -80
- package/docs/setup/per-ide/cursor.md +0 -125
- package/docs/setup/per-ide/droid.md +0 -65
- package/docs/setup/per-ide/gemini-cli.md +0 -45
- package/docs/setup/per-ide/jetbrains.md +0 -76
- package/docs/setup/per-ide/kilocode.md +0 -66
- package/docs/setup/per-ide/kiro.md +0 -72
- package/docs/setup/per-ide/opencode.md +0 -62
- package/docs/setup/per-ide/qoder.md +0 -63
- package/docs/setup/per-ide/roocode.md +0 -68
- package/docs/setup/per-ide/trae.md +0 -63
- package/docs/setup/per-ide/warp.md +0 -63
- package/docs/setup/per-ide/windsurf.md +0 -109
- package/docs/setup/per-ide/zed.md +0 -73
- package/docs/showcase.md +0 -209
- package/docs/skill-duplication-findings.md +0 -91
- package/docs/skills-catalog.md +0 -265
- package/docs/skills-taxonomy.md +0 -90
- package/docs/spawn-site-policy.md +0 -72
- package/docs/succession.md +0 -80
- package/docs/threat-model.md +0 -30
- package/docs/troubleshooting.md +0 -155
- package/docs/ui-track-mental-model.md +0 -121
- package/docs/us-vs-the-category.md +0 -38
- package/docs/value.md +0 -86
- package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
- package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
- package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
- package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
- package/docs/walkthroughs/daily-workspace.md +0 -127
- package/docs/wedge/production-validator/README.md +0 -81
- package/docs/wedge/production-validator/first-run-check.sh +0 -42
- package/docs/wedge/production-validator/production-validator.md +0 -83
- package/docs/wizard.md +0 -173
- package/src/scripts/postinstall_gui.ts +0 -129
package/src/scripts/condense.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
2
|
/**
|
|
3
|
-
* Agent-config sync —
|
|
3
|
+
* Agent-config sync — project the artefact roots under src/ → dist/agent-src/
|
|
4
4
|
* and project dist/agent-src/ → .augment/ (copies for rules by default,
|
|
5
5
|
* symlinks for the rest; opt into rule symlinks via
|
|
6
6
|
* augment.rules_use_symlinks in .agent-settings.yml).
|
|
7
7
|
*
|
|
8
8
|
* Ported from the retired Python `src/scripts/condense.py` (ADR-200 — Python→TS
|
|
9
|
-
* migration, Phase 5)
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* `--
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* migration, Phase 5), which mirrored the Python CLI surface exactly.
|
|
10
|
+
* ADR-201 then narrowed it: `.md` is copied verbatim + path-rewritten instead of
|
|
11
|
+
* rewritten by an agent, so the condensation-hash cache and its subcommands
|
|
12
|
+
* (`--check-hashes`, `--clean-hashes`, `--mark-done`, `--mark-all-done`) are gone —
|
|
13
|
+
* staleness is read off the projection itself. Remaining surface: `--sync`,
|
|
14
|
+
* `--list`, `--changed`, `--check`, `--generate-tools`, `--clean-tools`,
|
|
15
|
+
* `--project-augment`.
|
|
15
16
|
*
|
|
16
17
|
* Path handling note: the retired Python implementation uses `pathlib.Path` objects.
|
|
17
18
|
* This twin uses absolute path strings (the host filesystem on the
|
|
@@ -22,12 +23,12 @@
|
|
|
22
23
|
* multi-root helper functions (iter_all_sources, resolve_logical,
|
|
23
24
|
* artefact_roots) are exposed through a mutable module-state object so the
|
|
24
25
|
* pytest suite's monkeypatch pattern — reassigning `condense.PROJECT_ROOT`,
|
|
25
|
-
* `condense.
|
|
26
|
+
* `condense.TARGET_DIR`, `condense.iter_all_sources`, … — has a faithful TS
|
|
26
27
|
* equivalent. Tests mutate `MODULE_STATE` via the exported setters.
|
|
27
28
|
*/
|
|
28
29
|
|
|
29
|
-
import * as crypto from 'node:crypto';
|
|
30
30
|
import * as fs from 'node:fs';
|
|
31
|
+
import * as os from 'node:os';
|
|
31
32
|
import * as path from 'node:path';
|
|
32
33
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
33
34
|
|
|
@@ -42,6 +43,7 @@ import {
|
|
|
42
43
|
import { build_claude_hook_matrix } from './_lib/claude_settings_hooks.js';
|
|
43
44
|
import { is_claude_builtin_name } from './_lib/claude_builtin_names.js';
|
|
44
45
|
import { project_settings_path, load_agent_settings } from './_lib/agent_settings.js';
|
|
46
|
+
import { rule_is_compile_enabled } from './_lib/compile_time_toggles.js';
|
|
45
47
|
import { info, success, flush_summary, resolve_level } from './_lib/script_output.js';
|
|
46
48
|
import {
|
|
47
49
|
TIER_TO_CLAUDE_MODEL as _TIER_TO_CLAUDE_MODEL,
|
|
@@ -223,7 +225,7 @@ function _stripChars(s: string, chars: string): string {
|
|
|
223
225
|
// =============================================================================
|
|
224
226
|
// Module state — mutable mirror of the Python module-level constants & hooks.
|
|
225
227
|
//
|
|
226
|
-
// The pytest suite reassigns `condense.PROJECT_ROOT`, `condense.
|
|
228
|
+
// The pytest suite reassigns `condense.PROJECT_ROOT`, `condense.TARGET_DIR`,
|
|
227
229
|
// `condense.TARGET_DIR`, `condense.SOURCE_DIR`, `condense.RULES_SOURCE`,
|
|
228
230
|
// `condense.SKILLS_SOURCE`, `condense.COMMANDS_SOURCE`,
|
|
229
231
|
// `condense.CLAUDE_SKILLS_DIR`, `condense.AUGMENT_DIR`, `condense.SETTINGS_FILE`,
|
|
@@ -244,7 +246,6 @@ interface ModuleState {
|
|
|
244
246
|
SOURCE_DIR: string;
|
|
245
247
|
TARGET_DIR: string;
|
|
246
248
|
AUGMENT_DIR: string;
|
|
247
|
-
HASH_FILE: string;
|
|
248
249
|
SETTINGS_FILE: string;
|
|
249
250
|
RULES_SOURCE: string;
|
|
250
251
|
SKILLS_SOURCE: string;
|
|
@@ -267,7 +268,6 @@ function _deriveState(root: string): ModuleState {
|
|
|
267
268
|
SOURCE_DIR: path.join(root, '.agent-src.uncondensed'),
|
|
268
269
|
TARGET_DIR: path.join(root, 'dist/agent-src'),
|
|
269
270
|
AUGMENT_DIR: path.join(root, '.augment'),
|
|
270
|
-
HASH_FILE: path.join(root, 'internal', '.condensation-hashes.json'),
|
|
271
271
|
SETTINGS_FILE: project_settings_path(root),
|
|
272
272
|
RULES_SOURCE: path.join(root, 'dist/agent-src', 'rules'),
|
|
273
273
|
SKILLS_SOURCE: path.join(root, 'dist/agent-src', 'skills'),
|
|
@@ -396,130 +396,105 @@ function _read_augment_rules_use_symlinks(): boolean {
|
|
|
396
396
|
return false;
|
|
397
397
|
}
|
|
398
398
|
|
|
399
|
-
|
|
399
|
+
/**
|
|
400
|
+
* Per-tool user-scope rule directory, for the scope-dedup below. Only tools
|
|
401
|
+
* whose host reads a user-scope rules directory can have a redundant twin;
|
|
402
|
+
* everything else has nothing to de-duplicate against.
|
|
403
|
+
*/
|
|
404
|
+
const USER_SCOPE_RULE_DIRS: Readonly<Record<string, string>> = {
|
|
405
|
+
'.claude/rules': path.join('.claude', 'rules'),
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
function _read_projection_scope_dedup(): boolean {
|
|
400
409
|
const data = load_agent_settings({ project_path: MODULE_STATE.SETTINGS_FILE });
|
|
401
|
-
const
|
|
402
|
-
if (
|
|
403
|
-
|
|
404
|
-
lean !== null &&
|
|
405
|
-
!Array.isArray(lean) &&
|
|
406
|
-
String((lean as Record<string, unknown>)['mode'] ?? '')
|
|
407
|
-
.trim()
|
|
408
|
-
.toLowerCase() === 'thin'
|
|
409
|
-
) {
|
|
410
|
-
return 'thin';
|
|
410
|
+
const projection = data['projection'];
|
|
411
|
+
if (typeof projection !== 'object' || projection === null || Array.isArray(projection)) {
|
|
412
|
+
return false;
|
|
411
413
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
// --- hashing -----------------------------------------------------------------
|
|
416
|
-
|
|
417
|
-
export function file_hash(filepath: string): string {
|
|
418
|
-
const h = crypto.createHash('sha256');
|
|
419
|
-
h.update(fs.readFileSync(filepath));
|
|
420
|
-
return h.digest('hex');
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
const _DEP_FRONTMATTER_KEYS = ['skills', 'rules'] as const;
|
|
424
|
-
|
|
425
|
-
function _slug_to_logical(slug: string): string | null {
|
|
426
|
-
for (const cand of [`skills/${slug}/SKILL.md`, `rules/${slug}.md`]) {
|
|
427
|
-
if (_resolve_source(cand) !== null) {
|
|
428
|
-
return cand;
|
|
429
|
-
}
|
|
414
|
+
const value = (projection as Record<string, unknown>)['scope_dedup'];
|
|
415
|
+
if (typeof value === 'boolean') {
|
|
416
|
+
return value;
|
|
430
417
|
}
|
|
431
|
-
|
|
418
|
+
if (typeof value === 'string') {
|
|
419
|
+
return ['true', 'yes', 'on', '1'].includes(value.trim().toLowerCase());
|
|
420
|
+
}
|
|
421
|
+
return false;
|
|
432
422
|
}
|
|
433
423
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
424
|
+
/**
|
|
425
|
+
* Rules whose user-scope twin is BYTE-IDENTICAL to the source, i.e. safe to
|
|
426
|
+
* skip at project scope: the host still loads the same text, once instead of
|
|
427
|
+
* twice, so nothing the model sees changes.
|
|
428
|
+
*
|
|
429
|
+
* Byte-identity is the whole safety argument and is not negotiable. Keying on
|
|
430
|
+
* the filename alone would silently let a stale globally-installed copy win
|
|
431
|
+
* whenever the two scopes hold different versions — which is the NORMAL state
|
|
432
|
+
* while developing the package (measured: 110/110 shared filenames differing in
|
|
433
|
+
* bytes). This is deliberately not the thin-projection mechanism: no rule
|
|
434
|
+
* becomes trigger-gated, so the quality floor that disabled thin projection
|
|
435
|
+
* does not apply here.
|
|
436
|
+
*/
|
|
437
|
+
function _dedupable_rules(tool_dir: string, rules: readonly string[], userHome: string): Set<string> {
|
|
438
|
+
const relative = USER_SCOPE_RULE_DIRS[tool_dir];
|
|
439
|
+
if (relative === undefined) {
|
|
440
|
+
return new Set();
|
|
441
|
+
}
|
|
442
|
+
// A hostile or simply absent $HOME must make the dedup inert, not
|
|
443
|
+
// adventurous. In a container `$HOME` is often unset (so `homedir()` can
|
|
444
|
+
// resolve to `/`) or world-writable, and this function decides which rules
|
|
445
|
+
// to STOP emitting — reading an unexpected tree there is how a projection
|
|
446
|
+
// silently loses a rule. Council review of PR #1055 raised exactly this.
|
|
447
|
+
let userDirStat: fs.Stats;
|
|
448
|
+
const userDir = path.join(userHome, relative);
|
|
440
449
|
try {
|
|
441
|
-
|
|
450
|
+
userDirStat = fs.statSync(userDir);
|
|
442
451
|
} catch {
|
|
443
|
-
return
|
|
452
|
+
return new Set();
|
|
444
453
|
}
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
const value = meta[key];
|
|
448
|
-
if (!Array.isArray(value)) {
|
|
449
|
-
continue;
|
|
450
|
-
}
|
|
451
|
-
for (const item of value) {
|
|
452
|
-
if (typeof item !== 'string') {
|
|
453
|
-
continue;
|
|
454
|
-
}
|
|
455
|
-
const logical = _slug_to_logical(item.trim());
|
|
456
|
-
if (logical !== null && logical !== relative) {
|
|
457
|
-
deps.push(logical);
|
|
458
|
-
}
|
|
459
|
-
}
|
|
454
|
+
if (!userDirStat.isDirectory()) {
|
|
455
|
+
return new Set();
|
|
460
456
|
}
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
if (source === null) {
|
|
467
|
-
return '';
|
|
468
|
-
}
|
|
469
|
-
const own = file_hash(source);
|
|
470
|
-
if (_seen !== null && _seen.has(relative)) {
|
|
471
|
-
return own; // cycle — fold own content only
|
|
457
|
+
// World-writable user scope: anyone on the box could plant a byte-identical
|
|
458
|
+
// twin and thereby delete a rule from the project projection. Refuse.
|
|
459
|
+
if ((userDirStat.mode & 0o002) !== 0) {
|
|
460
|
+
_print(` ⚠️ ${tool_dir}: user-scope rules dir is world-writable — scope-dedup skipped`);
|
|
461
|
+
return new Set();
|
|
472
462
|
}
|
|
473
|
-
const
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
return own; // leaf — identical to plain file_hash
|
|
478
|
-
}
|
|
479
|
-
const seenNext = new Set(_seen ?? []);
|
|
480
|
-
seenNext.add(relative);
|
|
481
|
-
const parts = [own, ...deps.map((dep) => effective_hash(dep, seenNext))];
|
|
482
|
-
return crypto.createHash('sha256').update(parts.join('\n'), 'utf-8').digest('hex');
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
export function load_hashes(): Record<string, string> {
|
|
486
|
-
if (_exists(MODULE_STATE.HASH_FILE)) {
|
|
463
|
+
const skip = new Set<string>();
|
|
464
|
+
for (const rule of rules) {
|
|
465
|
+
const twin = path.join(userDir, rule);
|
|
466
|
+
const source = path.join(MODULE_STATE.RULES_SOURCE, rule);
|
|
487
467
|
try {
|
|
488
|
-
|
|
468
|
+
if (!_isFile(twin) || !_isFile(source)) continue;
|
|
469
|
+
if (fs.readFileSync(twin).equals(fs.readFileSync(source))) {
|
|
470
|
+
skip.add(rule);
|
|
471
|
+
}
|
|
489
472
|
} catch {
|
|
490
|
-
|
|
473
|
+
// An unreadable twin is simply not de-duplicable — emit the project copy.
|
|
491
474
|
}
|
|
492
475
|
}
|
|
493
|
-
return
|
|
476
|
+
return skip;
|
|
494
477
|
}
|
|
495
478
|
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
479
|
+
function _lean_projection_mode(): string {
|
|
480
|
+
const data = load_agent_settings({ project_path: MODULE_STATE.SETTINGS_FILE });
|
|
481
|
+
const lean = data['lean_projection'];
|
|
482
|
+
if (
|
|
483
|
+
typeof lean === 'object' &&
|
|
484
|
+
lean !== null &&
|
|
485
|
+
!Array.isArray(lean) &&
|
|
486
|
+
String((lean as Record<string, unknown>)['mode'] ?? '')
|
|
487
|
+
.trim()
|
|
488
|
+
.toLowerCase() === 'thin'
|
|
489
|
+
) {
|
|
490
|
+
return 'thin';
|
|
506
491
|
}
|
|
507
|
-
|
|
508
|
-
return `{\n${lines.join(',\n')}\n}`;
|
|
492
|
+
return 'eager-all';
|
|
509
493
|
}
|
|
510
494
|
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
_print(`❌ Source file not found: ${relative_path}`);
|
|
515
|
-
process.exit(1);
|
|
516
|
-
}
|
|
517
|
-
apply_path_rewriter(relative_path);
|
|
518
|
-
const hashes = load_hashes();
|
|
519
|
-
hashes[relative_path] = effective_hash(relative_path);
|
|
520
|
-
save_hashes(hashes);
|
|
521
|
-
_print(`✅ Marked as condensed: ${relative_path}`);
|
|
522
|
-
}
|
|
495
|
+
// --- hashing -----------------------------------------------------------------
|
|
496
|
+
|
|
497
|
+
|
|
523
498
|
|
|
524
499
|
export function apply_path_rewriter(relative_path: string): boolean {
|
|
525
500
|
const target = path.join(MODULE_STATE.TARGET_DIR, relative_path);
|
|
@@ -535,60 +510,66 @@ export function apply_path_rewriter(relative_path: string): boolean {
|
|
|
535
510
|
return true;
|
|
536
511
|
}
|
|
537
512
|
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* Whether the projection of `relative` is out of date.
|
|
516
|
+
*
|
|
517
|
+
* Post-ADR-201 the projection IS `rewrite(source)` — a pure function of the
|
|
518
|
+
* source's own bytes and its own relative path. So staleness is *observable in
|
|
519
|
+
* the output* rather than inferred from a stored source hash, which is both
|
|
520
|
+
* simpler and strictly stronger: the old hash cache could only tell you the
|
|
521
|
+
* source had moved since someone last claimed to have condensed it. It never
|
|
522
|
+
* looked at dist, so a hand-edited or half-written projection read as current.
|
|
523
|
+
*
|
|
524
|
+
* The dropped dependency-folding (`effective_hash` mixed in the hashes of
|
|
525
|
+
* `skills:` / `rules:` frontmatter deps) has no counterpart here, and needs
|
|
526
|
+
* none: an LLM rewrite could be influenced by a dependency's content, a pure
|
|
527
|
+
* rewrite cannot. Probed rather than assumed — the whole rewriter chain
|
|
528
|
+
* (`_depth_prefix`, `_split_frontmatter`, `_rewrite_body_links`,
|
|
529
|
+
* `_rewrite_frontmatter_lines`, `_parse_trust_and_owner`,
|
|
530
|
+
* `_inject_hrr_banner`) touches no file but its own input.
|
|
531
|
+
*/
|
|
532
|
+
export function is_projection_stale(relative: string): boolean {
|
|
533
|
+
const source = _resolve_source(relative);
|
|
534
|
+
if (source === null) {
|
|
535
|
+
// No source at all — a leftover in dist. `check_sync` owns that verdict.
|
|
536
|
+
return false;
|
|
547
537
|
}
|
|
548
|
-
|
|
549
|
-
|
|
538
|
+
if (skip_compile_disabled_rule(relative)) {
|
|
539
|
+
// Deliberately absent from the projection, not out of date.
|
|
540
|
+
return false;
|
|
541
|
+
}
|
|
542
|
+
const target = path.join(MODULE_STATE.TARGET_DIR, relative);
|
|
543
|
+
if (!_exists(target)) {
|
|
544
|
+
return true; // never projected
|
|
545
|
+
}
|
|
546
|
+
return _readText(target) !== _rewrite_paths(_readText(source), relative);
|
|
550
547
|
}
|
|
551
548
|
|
|
552
549
|
export function list_changed_md(_source_dir?: string): string[] {
|
|
553
550
|
// _source_dir retained for signature compatibility but ignored (multi-root).
|
|
554
|
-
const hashes = load_hashes();
|
|
555
551
|
const changed: string[] = [];
|
|
556
|
-
|
|
557
|
-
|
|
552
|
+
const seen = new Set<string>();
|
|
553
|
+
for (const [, relative] of _iter_sources()) {
|
|
554
|
+
if (seen.has(relative)) {
|
|
555
|
+
continue;
|
|
556
|
+
}
|
|
557
|
+
seen.add(relative);
|
|
558
|
+
// Resolve through `_resolve_source` rather than trusting the iterator's
|
|
559
|
+
// physical hit: `src/` and `src/agent-src/` are both artefact roots, so
|
|
560
|
+
// one relative path can name two unrelated files and only the resolver
|
|
561
|
+
// knows which one wins.
|
|
562
|
+
const source = _resolve_source(relative);
|
|
563
|
+
if (source === null || !should_condense(source)) {
|
|
558
564
|
continue;
|
|
559
565
|
}
|
|
560
|
-
|
|
561
|
-
const stored_hash = hashes[relative];
|
|
562
|
-
if (stored_hash !== current_hash) {
|
|
566
|
+
if (is_projection_stale(relative)) {
|
|
563
567
|
changed.push(relative);
|
|
564
568
|
}
|
|
565
569
|
}
|
|
566
570
|
return changed;
|
|
567
571
|
}
|
|
568
572
|
|
|
569
|
-
export function find_stale_hashes(_source_dir?: string): string[] {
|
|
570
|
-
const hashes = load_hashes();
|
|
571
|
-
const stale: string[] = [];
|
|
572
|
-
for (const relative of Object.keys(hashes).sort((a, b) => (a < b ? -1 : a > b ? 1 : 0))) {
|
|
573
|
-
if (_resolve_source(relative) === null) {
|
|
574
|
-
stale.push(relative);
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
return stale;
|
|
578
|
-
}
|
|
579
|
-
|
|
580
|
-
export function clean_stale_hashes(_source_dir?: string): number {
|
|
581
|
-
const stale = find_stale_hashes(_source_dir);
|
|
582
|
-
if (stale.length === 0) {
|
|
583
|
-
return 0;
|
|
584
|
-
}
|
|
585
|
-
const hashes = load_hashes();
|
|
586
|
-
for (const relative of stale) {
|
|
587
|
-
delete hashes[relative];
|
|
588
|
-
}
|
|
589
|
-
save_hashes(hashes);
|
|
590
|
-
return stale.length;
|
|
591
|
-
}
|
|
592
573
|
|
|
593
574
|
export function should_condense(filepath: string): boolean {
|
|
594
575
|
if (path.extname(filepath) !== '.md') {
|
|
@@ -660,19 +641,66 @@ export function cleanup_stale(_source_dir: string, target_dir: string): number {
|
|
|
660
641
|
return deleted;
|
|
661
642
|
}
|
|
662
643
|
|
|
644
|
+
/** ADR-201 (accepted 2026-07-29): `.md` is COPIED + path-rewritten, never rewritten
|
|
645
|
+
* by an LLM. Set false to restore the pre-ADR-201 behaviour, where `.md` was skipped
|
|
646
|
+
* here and an agent wrote the condensed body into `dist/` by hand.
|
|
647
|
+
*
|
|
648
|
+
* Measured basis for the removal: 0/429 artifacts saved ≥500 tok, aggregate 0.86%,
|
|
649
|
+
* 267/429 byte-identical, and −36 tok on the always-loaded kernel (condensation made
|
|
650
|
+
* the per-request surface *worse*). Determinism failed by construction: the hash
|
|
651
|
+
* covered the source, never the output, so drift was undetectable — observed live.
|
|
652
|
+
*
|
|
653
|
+
* Council verdict A: `dist/agent-src/` STAYS as a deterministically-produced,
|
|
654
|
+
* git-diffable artifact. Only the *manner* of derivation changes. */
|
|
655
|
+
export const COPY_MD_VERBATIM = true;
|
|
656
|
+
|
|
657
|
+
/** True when `relative` is a rule whose compile-time toggle is off, so the projector
|
|
658
|
+
* must not emit it. Exported for the coupling test — without a pinned test the
|
|
659
|
+
* second half of "dormancy" would be asserted rather than enforced, which is the
|
|
660
|
+
* exact failure ADR telegraph/0002 § part 1 records. */
|
|
661
|
+
export function skip_compile_disabled_rule(relative: string): boolean {
|
|
662
|
+
const posix = relative.split(path.sep).join('/');
|
|
663
|
+
if (!posix.startsWith('rules/') || !posix.endsWith('.md')) {
|
|
664
|
+
return false;
|
|
665
|
+
}
|
|
666
|
+
const rule_id = path.basename(posix, '.md');
|
|
667
|
+
const settings = load_agent_settings({ project_path: MODULE_STATE.SETTINGS_FILE }) as Record<
|
|
668
|
+
string,
|
|
669
|
+
unknown
|
|
670
|
+
>;
|
|
671
|
+
return !rule_is_compile_enabled(rule_id, settings);
|
|
672
|
+
}
|
|
673
|
+
|
|
663
674
|
export function sync_non_md(_source_dir: string, target_dir: string): number {
|
|
664
675
|
let copied = 0;
|
|
665
676
|
const seen = new Set<string>();
|
|
666
677
|
for (const [source_file, relative] of _iter_sources()) {
|
|
667
|
-
if (should_condense(source_file)) {
|
|
668
|
-
continue; // .md
|
|
678
|
+
if (!COPY_MD_VERBATIM && should_condense(source_file)) {
|
|
679
|
+
continue; // pre-ADR-201: .md was condensed by the agent, not copied here
|
|
669
680
|
}
|
|
670
681
|
if (seen.has(relative)) {
|
|
671
682
|
continue;
|
|
672
683
|
}
|
|
684
|
+
// ADR telegraph/0002 § part 1: a compile-time-disabled RULE must not be
|
|
685
|
+
// emitted at all. Router membership alone was never zero-cost — the host
|
|
686
|
+
// reads the projected FILE, so a rule dropped from router.json while its
|
|
687
|
+
// body still shipped kept costing its full token price. One switch, both
|
|
688
|
+
// surfaces. Unknown ids are always emitted (the map gates, it does not
|
|
689
|
+
// allowlist), so this is a no-op for every rule but the gated ones.
|
|
690
|
+
if (skip_compile_disabled_rule(relative)) {
|
|
691
|
+
continue;
|
|
692
|
+
}
|
|
673
693
|
seen.add(relative);
|
|
674
694
|
const target_file = path.join(target_dir, relative);
|
|
675
695
|
copy_file(source_file, target_file);
|
|
696
|
+
// ADR-201: a copied `.md` still needs the ONE deterministic transform the
|
|
697
|
+
// removal deliberately preserves — `apply_path_rewriter` fixes relative
|
|
698
|
+
// links so they resolve from the DELIVERED location (`../../docs/…` →
|
|
699
|
+
// `../docs/…`, ~38 artifacts). Without this the projection's links break.
|
|
700
|
+
// Idempotent: it returns false when nothing changed.
|
|
701
|
+
if (COPY_MD_VERBATIM && relative.endsWith('.md')) {
|
|
702
|
+
apply_path_rewriter(relative);
|
|
703
|
+
}
|
|
676
704
|
_print(` Copied: ${relative}`);
|
|
677
705
|
copied += 1;
|
|
678
706
|
}
|
|
@@ -704,6 +732,12 @@ export function check_sync(_source_dir: string, target_dir: string): [string[],
|
|
|
704
732
|
continue;
|
|
705
733
|
}
|
|
706
734
|
seen.add(relative);
|
|
735
|
+
// A compile-disabled rule is deliberately absent from the projection,
|
|
736
|
+
// so demanding a counterpart would report the intended state as a defect.
|
|
737
|
+
// Same predicate the projector and the router compiler use.
|
|
738
|
+
if (skip_compile_disabled_rule(relative)) {
|
|
739
|
+
continue;
|
|
740
|
+
}
|
|
707
741
|
if (!_exists(path.join(target_dir, relative))) {
|
|
708
742
|
missing.push(relative);
|
|
709
743
|
}
|
|
@@ -714,7 +748,10 @@ export function check_sync(_source_dir: string, target_dir: string): [string[],
|
|
|
714
748
|
continue;
|
|
715
749
|
}
|
|
716
750
|
const relative = _relativeToPosix(target_file, target_dir);
|
|
717
|
-
|
|
751
|
+
// Two ways a projected file is stale: no source at all, or a source
|
|
752
|
+
// that is compile-disabled — the second is how a re-enabled-then-
|
|
753
|
+
// disabled rule leaves weight behind.
|
|
754
|
+
if (_resolve_source(relative) === null || skip_compile_disabled_rule(relative)) {
|
|
718
755
|
stale.push(relative);
|
|
719
756
|
}
|
|
720
757
|
}
|
|
@@ -965,17 +1002,25 @@ function _read_rule_packs(): string[] | null {
|
|
|
965
1002
|
}
|
|
966
1003
|
|
|
967
1004
|
/**
|
|
968
|
-
* Whether a rule source file projects under the given workspace + pack
|
|
969
|
-
* scopes.
|
|
970
|
-
* rule's frontmatter list must intersect
|
|
971
|
-
*
|
|
1005
|
+
* Whether a rule source file projects under the given workspace + pack +
|
|
1006
|
+
* role scopes. Each configured scope is an independent constraint: the
|
|
1007
|
+
* rule's frontmatter list must intersect it. Kernel always projects;
|
|
1008
|
+
* untagged axes fail safe.
|
|
1009
|
+
*
|
|
1010
|
+
* `role_scope` is the subagent-role axis (road-to-lean-agent-init Phase 4):
|
|
1011
|
+
* a `roles:` frontmatter list, parallel to `workspaces:`/`packs:`, so a
|
|
1012
|
+
* review-worker subagent's rule projection can be scoped to review-shaped
|
|
1013
|
+
* rules instead of the full set. Additive — the new param defaults to
|
|
1014
|
+
* `null` (no role filtering), so every existing 2- and 3-arg call site
|
|
1015
|
+
* compiles and behaves unchanged.
|
|
972
1016
|
*/
|
|
973
1017
|
export function rule_in_scope(
|
|
974
1018
|
source_path: string,
|
|
975
1019
|
scope: readonly string[] | null,
|
|
976
1020
|
pack_scope: readonly string[] | null = null,
|
|
1021
|
+
role_scope: readonly string[] | null = null,
|
|
977
1022
|
): boolean {
|
|
978
|
-
if (scope === null && pack_scope === null) {
|
|
1023
|
+
if (scope === null && pack_scope === null && role_scope === null) {
|
|
979
1024
|
return true;
|
|
980
1025
|
}
|
|
981
1026
|
const [meta] = _parse_frontmatter(_readText(source_path));
|
|
@@ -994,7 +1039,7 @@ export function rule_in_scope(
|
|
|
994
1039
|
}
|
|
995
1040
|
return values.some((v) => configured.includes(v));
|
|
996
1041
|
};
|
|
997
|
-
return axis('workspaces', scope) && axis('packs', pack_scope);
|
|
1042
|
+
return axis('workspaces', scope) && axis('packs', pack_scope) && axis('roles', role_scope);
|
|
998
1043
|
}
|
|
999
1044
|
|
|
1000
1045
|
/** List rule basenames under RULES_SOURCE, workspace/pack scope applied. */
|
|
@@ -1004,6 +1049,12 @@ function _scoped_rule_basenames(): string[] {
|
|
|
1004
1049
|
return _iterdirSorted(MODULE_STATE.RULES_SOURCE)
|
|
1005
1050
|
.filter((p) => p.endsWith('.md') && _isFile(p))
|
|
1006
1051
|
.filter((p) => rule_in_scope(p, scope, pack_scope))
|
|
1052
|
+
// A compile-disabled rule has no dist/agent-src/ counterpart, so a per-tool
|
|
1053
|
+
// symlink to it would dangle. The source file still exists, which is why the
|
|
1054
|
+
// scope filters alone let it through — the toggle is a separate axis and this
|
|
1055
|
+
// is its fourth consumer, after the router compiler, the dist writer, and
|
|
1056
|
+
// check_sync. Same predicate in all four; that is the point.
|
|
1057
|
+
.filter((p) => !skip_compile_disabled_rule(`rules/${path.basename(p)}`))
|
|
1007
1058
|
.map((p) => path.basename(p))
|
|
1008
1059
|
.sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
|
|
1009
1060
|
}
|
|
@@ -1022,18 +1073,28 @@ export function generate_rule_symlinks(): number {
|
|
|
1022
1073
|
);
|
|
1023
1074
|
}
|
|
1024
1075
|
|
|
1076
|
+
const dedup_on = _read_projection_scope_dedup();
|
|
1077
|
+
const user_home = process.env['HOME'] ?? os.homedir();
|
|
1078
|
+
const skipped_per_tool: Record<string, Set<string>> = {};
|
|
1079
|
+
|
|
1025
1080
|
let total = 0;
|
|
1026
1081
|
for (const [tool_dir, rel_prefix] of Object.entries(tool_dirs)) {
|
|
1027
1082
|
const target_dir = path.join(MODULE_STATE.PROJECT_ROOT, tool_dir);
|
|
1083
|
+
const skip = dedup_on ? _dedupable_rules(tool_dir, rules, user_home) : new Set<string>();
|
|
1084
|
+
skipped_per_tool[tool_dir] = skip;
|
|
1028
1085
|
_mkdirp(target_dir);
|
|
1029
|
-
// Clean stale symlinks
|
|
1086
|
+
// Clean stale symlinks — a rule that became de-duplicable this run is
|
|
1087
|
+
// stale at project scope too, so it has to go with the rest.
|
|
1030
1088
|
for (const item of _iterdirSorted(target_dir)) {
|
|
1031
1089
|
const name = path.basename(item);
|
|
1032
|
-
if (_isSymlink(item) && !rules.includes(name) && name !== 'README.md') {
|
|
1090
|
+
if (_isSymlink(item) && (!rules.includes(name) || skip.has(name)) && name !== 'README.md') {
|
|
1033
1091
|
fs.unlinkSync(item);
|
|
1034
1092
|
}
|
|
1035
1093
|
}
|
|
1036
1094
|
for (const rule of rules) {
|
|
1095
|
+
if (skip.has(rule)) {
|
|
1096
|
+
continue;
|
|
1097
|
+
}
|
|
1037
1098
|
const link = path.join(target_dir, rule);
|
|
1038
1099
|
if (_existsOrSymlink(link)) {
|
|
1039
1100
|
fs.unlinkSync(link);
|
|
@@ -1050,9 +1111,25 @@ export function generate_rule_symlinks(): number {
|
|
|
1050
1111
|
const source_count = rules.length;
|
|
1051
1112
|
for (const tool_dir of Object.keys(tool_dirs)) {
|
|
1052
1113
|
const target_dir = path.join(MODULE_STATE.PROJECT_ROOT, tool_dir);
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1114
|
+
// Count only the RULES this run emitted, not every `.md` in the tree.
|
|
1115
|
+
// Some tool trees legitimately receive other artefact classes — the cline
|
|
1116
|
+
// tree also carries `*.subagent.md` — and counting those produced a
|
|
1117
|
+
// permanent "111 rules (expected 110)" warning that was pure noise. A
|
|
1118
|
+
// warning that is always on is a warning nobody reads.
|
|
1119
|
+
const emitted = new Set(rules);
|
|
1120
|
+
const tool_count = _iterdirSorted(target_dir).filter((f) => emitted.has(path.basename(f))).length;
|
|
1121
|
+
// Expect the de-duplicated count, not the source count: a skipped rule is
|
|
1122
|
+
// an intended absence, so warning on it would train the reader to ignore
|
|
1123
|
+
// this line — which is how a real drift gets missed.
|
|
1124
|
+
const skipped = (skipped_per_tool[tool_dir] ?? new Set()).size;
|
|
1125
|
+
const expected = source_count - skipped;
|
|
1126
|
+
if (tool_count !== expected) {
|
|
1127
|
+
_print(` ⚠️ ${tool_dir}: ${tool_count} rules (expected ${expected})`);
|
|
1128
|
+
}
|
|
1129
|
+
if (skipped > 0) {
|
|
1130
|
+
_print(
|
|
1131
|
+
` ℹ️ ${tool_dir}: ${skipped} rule(s) skipped — byte-identical twin already installed at user scope`,
|
|
1132
|
+
);
|
|
1056
1133
|
}
|
|
1057
1134
|
}
|
|
1058
1135
|
|
|
@@ -2276,7 +2353,7 @@ function _print(line: string): void {
|
|
|
2276
2353
|
export function main(argv: readonly string[] = process.argv.slice(2)): number {
|
|
2277
2354
|
if (!_exists(MODULE_STATE.SOURCE_DIR) && !_any_source_root_exists()) {
|
|
2278
2355
|
_print(
|
|
2279
|
-
`❌ No source directory found (looked at ${MODULE_STATE.SOURCE_DIR}
|
|
2356
|
+
`❌ No source directory found (looked at the artefact roots under src/ and ${MODULE_STATE.SOURCE_DIR})`,
|
|
2280
2357
|
);
|
|
2281
2358
|
return 1;
|
|
2282
2359
|
}
|
|
@@ -2292,25 +2369,17 @@ export function main(argv: readonly string[] = process.argv.slice(2)): number {
|
|
|
2292
2369
|
} else if (arg === '--changed') {
|
|
2293
2370
|
const changed = list_changed_md(MODULE_STATE.SOURCE_DIR);
|
|
2294
2371
|
if (changed.length === 0) {
|
|
2295
|
-
_print('✅
|
|
2372
|
+
_print('✅ Every .md projection matches its source');
|
|
2296
2373
|
return 0;
|
|
2297
2374
|
}
|
|
2298
|
-
_print(`📝 ${changed.length} .md
|
|
2375
|
+
_print(`📝 ${changed.length} .md projection(s) out of date — run 'task sync':\n`);
|
|
2299
2376
|
for (const f of changed) {
|
|
2300
2377
|
_print(` ${f}`);
|
|
2301
2378
|
}
|
|
2302
|
-
} else if (arg === '--mark-done') {
|
|
2303
|
-
if (argv.length < 2) {
|
|
2304
|
-
_print('Usage: python scripts/condense.py --mark-done <relative-path>');
|
|
2305
|
-
return 1;
|
|
2306
|
-
}
|
|
2307
|
-
mark_done(argv[1] as string);
|
|
2308
|
-
} else if (arg === '--mark-all-done') {
|
|
2309
|
-
mark_all_done();
|
|
2310
2379
|
} else if (arg === '--check') {
|
|
2311
2380
|
const [missing, stale] = check_sync(MODULE_STATE.SOURCE_DIR, MODULE_STATE.TARGET_DIR);
|
|
2312
2381
|
if (missing.length === 0 && stale.length === 0) {
|
|
2313
|
-
_print('✅ dist/agent-src/ is in sync with
|
|
2382
|
+
_print('✅ dist/agent-src/ is in sync with the artefact roots under src/');
|
|
2314
2383
|
return 0;
|
|
2315
2384
|
}
|
|
2316
2385
|
if (missing.length > 0) {
|
|
@@ -2325,70 +2394,28 @@ export function main(argv: readonly string[] = process.argv.slice(2)): number {
|
|
|
2325
2394
|
_print(` ${f}`);
|
|
2326
2395
|
}
|
|
2327
2396
|
}
|
|
2328
|
-
_print(`\nRun 'task sync'
|
|
2397
|
+
_print(`\nRun 'task sync' — the projection is a deterministic copy, so it needs no agent step.`);
|
|
2329
2398
|
return 1;
|
|
2330
2399
|
} else if (arg === '--sync') {
|
|
2331
|
-
|
|
2400
|
+
// SOURCE_DIR is the pre-ADR-051 single root, kept only as a fallback probe;
|
|
2401
|
+
// the real inputs are the artefact roots the multi-root iterator walks.
|
|
2402
|
+
_print(`Source: the artefact roots under src/`);
|
|
2332
2403
|
_print(`Target: ${MODULE_STATE.TARGET_DIR}\n`);
|
|
2333
2404
|
_print('--- Syncing non-.md files ---');
|
|
2334
2405
|
const copied = sync_non_md(MODULE_STATE.SOURCE_DIR, MODULE_STATE.TARGET_DIR);
|
|
2335
2406
|
_print(`\n--- Cleanup stale files ---`);
|
|
2336
2407
|
const deleted = cleanup_stale(MODULE_STATE.SOURCE_DIR, MODULE_STATE.TARGET_DIR);
|
|
2337
|
-
const hashes = load_hashes();
|
|
2338
|
-
const stale_keys = Object.keys(hashes).filter((k) => _resolve_source(k) === null);
|
|
2339
|
-
for (const k of stale_keys) {
|
|
2340
|
-
delete hashes[k];
|
|
2341
|
-
}
|
|
2342
|
-
if (stale_keys.length > 0) {
|
|
2343
|
-
save_hashes(hashes);
|
|
2344
|
-
_print(` Cleaned ${stale_keys.length} stale hash entries`);
|
|
2345
|
-
}
|
|
2346
2408
|
const changed = list_changed_md(MODULE_STATE.SOURCE_DIR);
|
|
2347
2409
|
_print(`\n✅ Done: ${copied} copied, ${deleted} stale deleted`);
|
|
2348
2410
|
if (changed.length > 0) {
|
|
2349
|
-
|
|
2411
|
+
// --sync writes .md itself, so anything still stale here is a bug in
|
|
2412
|
+
// the projector, not work left for a follow-up step.
|
|
2413
|
+
_print(`❌ ${changed.length} .md projection(s) still out of date after sync (run --changed)`);
|
|
2350
2414
|
} else {
|
|
2351
|
-
_print(`✅
|
|
2415
|
+
_print(`✅ Every .md projection matches its source`);
|
|
2352
2416
|
}
|
|
2353
2417
|
_print(`\n--- Projecting dist/agent-src/ → .augment/ ---`);
|
|
2354
2418
|
project_to_augment();
|
|
2355
|
-
} else if (arg === '--check-hashes') {
|
|
2356
|
-
let has_issues = false;
|
|
2357
|
-
const changed = list_changed_md(MODULE_STATE.SOURCE_DIR);
|
|
2358
|
-
const stale = find_stale_hashes(MODULE_STATE.SOURCE_DIR);
|
|
2359
|
-
|
|
2360
|
-
if (stale.length > 0) {
|
|
2361
|
-
has_issues = true;
|
|
2362
|
-
_print(`⚠️ ${stale.length} stale hash(es) for deleted source files:\n`);
|
|
2363
|
-
for (const f of stale) {
|
|
2364
|
-
_print(` ${f}`);
|
|
2365
|
-
}
|
|
2366
|
-
_print(`\nRun 'task sync-clean-hashes' to remove them.\n`);
|
|
2367
|
-
}
|
|
2368
|
-
|
|
2369
|
-
if (changed.length > 0) {
|
|
2370
|
-
has_issues = true;
|
|
2371
|
-
_print(`❌ ${changed.length} .md file(s) need recondensation:\n`);
|
|
2372
|
-
for (const f of changed) {
|
|
2373
|
-
const stored = load_hashes()[f];
|
|
2374
|
-
const reason = stored === undefined ? 'no hash stored' : 'hash mismatch';
|
|
2375
|
-
_print(` ${f} (${reason})`);
|
|
2376
|
-
}
|
|
2377
|
-
_print(`\nRun '/condense' command to recondense these files.`);
|
|
2378
|
-
}
|
|
2379
|
-
|
|
2380
|
-
if (!has_issues) {
|
|
2381
|
-
_print('✅ All condensation hashes are clean (no stale, no mismatches)');
|
|
2382
|
-
return 0;
|
|
2383
|
-
}
|
|
2384
|
-
return 1;
|
|
2385
|
-
} else if (arg === '--clean-hashes') {
|
|
2386
|
-
const count = clean_stale_hashes(MODULE_STATE.SOURCE_DIR);
|
|
2387
|
-
if (count) {
|
|
2388
|
-
_print(`✅ Removed ${count} stale hash(es)`);
|
|
2389
|
-
} else {
|
|
2390
|
-
_print('✅ No stale hashes found');
|
|
2391
|
-
}
|
|
2392
2419
|
} else if (arg === '--generate-tools') {
|
|
2393
2420
|
generate_tools();
|
|
2394
2421
|
} else if (arg === '--clean-tools') {
|
|
@@ -2397,7 +2424,7 @@ export function main(argv: readonly string[] = process.argv.slice(2)): number {
|
|
|
2397
2424
|
project_to_augment();
|
|
2398
2425
|
} else {
|
|
2399
2426
|
_print(
|
|
2400
|
-
'Usage:
|
|
2427
|
+
'Usage: condense [--sync|--list|--changed|--check|--generate-tools|--clean-tools|--project-augment]',
|
|
2401
2428
|
);
|
|
2402
2429
|
return 1;
|
|
2403
2430
|
}
|