@event4u/agent-config 2.26.0 → 3.1.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/.agent-src/commands/agent-handoff.md +15 -3
- package/.agent-src/commands/agent-status.md +12 -0
- package/.agent-src/commands/agents/audit.md +12 -0
- package/.agent-src/commands/agents/init.md +12 -0
- package/.agent-src/commands/agents/optimize.md +12 -0
- package/.agent-src/commands/agents/user/accept.md +12 -0
- package/.agent-src/commands/agents/user/init.md +12 -0
- package/.agent-src/commands/agents/user/review.md +12 -0
- package/.agent-src/commands/agents/user/show.md +12 -0
- package/.agent-src/commands/agents/user/update.md +12 -0
- package/.agent-src/commands/agents/user.md +12 -0
- package/.agent-src/commands/agents.md +12 -0
- package/.agent-src/commands/analyze-reference-repo.md +15 -3
- package/.agent-src/commands/bug-fix.md +12 -0
- package/.agent-src/commands/bug-investigate.md +13 -1
- package/.agent-src/commands/challenge-me/vision.md +12 -0
- package/.agent-src/commands/challenge-me/with-docs.md +12 -0
- package/.agent-src/commands/challenge-me.md +12 -0
- package/.agent-src/commands/chat-history/import.md +16 -4
- package/.agent-src/commands/chat-history/learn.md +15 -3
- package/.agent-src/commands/chat-history/show.md +17 -5
- package/.agent-src/commands/chat-history.md +14 -2
- package/.agent-src/commands/check-current-md.md +12 -0
- package/.agent-src/commands/commit/in-chunks.md +12 -0
- package/.agent-src/commands/commit.md +12 -0
- package/.agent-src/commands/compress.md +12 -0
- package/.agent-src/commands/context/create.md +17 -5
- package/.agent-src/commands/context/refactor.md +15 -3
- package/.agent-src/commands/context.md +12 -0
- package/.agent-src/commands/cost-report.md +12 -0
- package/.agent-src/commands/council/analysis.md +15 -3
- package/.agent-src/commands/council/debate.md +17 -5
- package/.agent-src/commands/council/default.md +17 -5
- package/.agent-src/commands/council/design.md +12 -0
- package/.agent-src/commands/council/optimize.md +12 -0
- package/.agent-src/commands/council/pr.md +12 -0
- package/.agent-src/commands/council.md +13 -1
- package/.agent-src/commands/create-pr/description-only.md +12 -0
- package/.agent-src/commands/create-pr.md +39 -0
- package/.agent-src/commands/e2e-heal.md +12 -0
- package/.agent-src/commands/e2e-plan.md +12 -0
- package/.agent-src/commands/estimate-ticket.md +12 -0
- package/.agent-src/commands/feature/dev.md +13 -1
- package/.agent-src/commands/feature/explore.md +12 -0
- package/.agent-src/commands/feature/plan.md +14 -2
- package/.agent-src/commands/feature/refactor.md +12 -0
- package/.agent-src/commands/feature/roadmap.md +12 -0
- package/.agent-src/commands/feature.md +12 -0
- package/.agent-src/commands/fix/ci.md +12 -0
- package/.agent-src/commands/fix/portability.md +12 -0
- package/.agent-src/commands/fix/pr-bot-comments.md +12 -0
- package/.agent-src/commands/fix/pr-comments.md +12 -0
- package/.agent-src/commands/fix/pr-developer-comments.md +12 -0
- package/.agent-src/commands/fix/refs.md +12 -0
- package/.agent-src/commands/fix/seeder.md +12 -0
- package/.agent-src/commands/fix.md +12 -0
- package/.agent-src/commands/ghostwriter/delete.md +20 -8
- package/.agent-src/commands/ghostwriter/fetch.md +19 -7
- package/.agent-src/commands/ghostwriter/list.md +19 -7
- package/.agent-src/commands/ghostwriter/show.md +14 -2
- package/.agent-src/commands/ghostwriter/write.md +15 -3
- package/.agent-src/commands/ghostwriter.md +14 -2
- package/.agent-src/commands/grill-me.md +12 -0
- package/.agent-src/commands/implement-ticket.md +12 -0
- package/.agent-src/commands/install-via-agent.md +129 -0
- package/.agent-src/commands/jira-ticket.md +12 -0
- package/.agent-src/commands/judge/on-diff.md +12 -0
- package/.agent-src/commands/judge/solo.md +12 -0
- package/.agent-src/commands/judge/steps.md +12 -0
- package/.agent-src/commands/judge.md +12 -0
- package/.agent-src/commands/memory/add.md +12 -0
- package/.agent-src/commands/memory/learn-low-impact.md +18 -6
- package/.agent-src/commands/memory/load.md +12 -0
- package/.agent-src/commands/memory/mine-session.md +12 -0
- package/.agent-src/commands/memory/promote.md +12 -0
- package/.agent-src/commands/memory/propose.md +12 -0
- package/.agent-src/commands/memory.md +12 -0
- package/.agent-src/commands/mode.md +12 -0
- package/.agent-src/commands/module/create.md +12 -0
- package/.agent-src/commands/module/explore.md +13 -1
- package/.agent-src/commands/module.md +12 -0
- package/.agent-src/commands/optimize/agents-dir.md +14 -2
- package/.agent-src/commands/optimize/augmentignore.md +12 -0
- package/.agent-src/commands/optimize/rtk.md +12 -0
- package/.agent-src/commands/optimize/skills.md +12 -0
- package/.agent-src/commands/optimize-prompt.md +12 -0
- package/.agent-src/commands/optimize.md +12 -0
- package/.agent-src/commands/orchestrate.md +13 -1
- package/.agent-src/commands/override/create.md +12 -0
- package/.agent-src/commands/override/manage.md +12 -0
- package/.agent-src/commands/override.md +12 -0
- package/.agent-src/commands/package-reset.md +12 -0
- package/.agent-src/commands/package-test.md +12 -0
- package/.agent-src/commands/post-as/ghostwriter.md +12 -0
- package/.agent-src/commands/post-as/me.md +13 -1
- package/.agent-src/commands/post-as.md +12 -0
- package/.agent-src/commands/prepare-for-review.md +12 -0
- package/.agent-src/commands/project-analyze.md +27 -15
- package/.agent-src/commands/project-health.md +13 -1
- package/.agent-src/commands/quality-fix.md +12 -0
- package/.agent-src/commands/refine-ticket.md +12 -0
- package/.agent-src/commands/research/deep.md +12 -0
- package/.agent-src/commands/research/report.md +12 -0
- package/.agent-src/commands/research.md +12 -0
- package/.agent-src/commands/review-changes.md +12 -0
- package/.agent-src/commands/review-routing.md +12 -0
- package/.agent-src/commands/roadmap/ai-council.md +15 -3
- package/.agent-src/commands/roadmap/create.md +13 -1
- package/.agent-src/commands/roadmap/process-full.md +12 -0
- package/.agent-src/commands/roadmap/process-phase.md +12 -0
- package/.agent-src/commands/roadmap/process-step.md +12 -0
- package/.agent-src/commands/roadmap.md +12 -0
- package/.agent-src/commands/rule-compliance-audit.md +12 -0
- package/.agent-src/commands/set-cost-profile.md +12 -0
- package/.agent-src/commands/sync-agent-settings.md +12 -0
- package/.agent-src/commands/sync-gitignore/fix.md +32 -13
- package/.agent-src/commands/sync-gitignore.md +13 -1
- package/.agent-src/commands/tests/create.md +12 -0
- package/.agent-src/commands/tests/execute.md +12 -0
- package/.agent-src/commands/tests.md +12 -0
- package/.agent-src/commands/threat-model.md +12 -0
- package/.agent-src/commands/update-form-request-messages.md +12 -0
- package/.agent-src/commands/upstream-contribute.md +12 -0
- package/.agent-src/commands/video/from-script.md +13 -1
- package/.agent-src/commands/video/scene.md +12 -0
- package/.agent-src/commands/video/stitch.md +13 -1
- package/.agent-src/commands/video/storyboard.md +12 -0
- package/.agent-src/commands/video.md +13 -1
- package/.agent-src/commands/work.md +12 -0
- package/.agent-src/contexts/augment-infrastructure.md +2 -2
- package/.agent-src/contexts/authority/scope-mechanics.md +11 -0
- package/.agent-src/contexts/contracts/agents-md-anatomy.md +1 -1
- package/.agent-src/contexts/documentation-hierarchy.md +2 -2
- package/.agent-src/contexts/execution/cheap-question-mechanics.md +81 -0
- package/.agent-src/contexts/execution/roadmap-process-loop.md +19 -0
- package/.agent-src/ghostwriter/README.md +2 -2
- package/.agent-src/ghostwriter/fictional-fixture-v1.md +1 -1
- package/.agent-src/personas/README.md +1 -1
- package/.agent-src/personas/advisors/contrarian.md +1 -1
- package/.agent-src/personas/advisors/executor.md +1 -1
- package/.agent-src/personas/advisors/expansionist.md +1 -1
- package/.agent-src/personas/advisors/first-principles.md +1 -1
- package/.agent-src/personas/advisors/outsider.md +1 -1
- package/.agent-src/rules/agent-authority.md +12 -0
- package/.agent-src/rules/analysis-skill-routing.md +12 -0
- package/.agent-src/rules/architecture.md +13 -1
- package/.agent-src/rules/artifact-drafting-protocol.md +13 -1
- package/.agent-src/rules/artifact-engagement-recording.md +13 -1
- package/.agent-src/rules/ask-when-uncertain.md +12 -0
- package/.agent-src/rules/augment-edit-discipline.md +13 -1
- package/.agent-src/rules/augment-source-of-truth.md +13 -1
- package/.agent-src/rules/autonomous-execution.md +13 -1
- package/.agent-src/rules/caveman-speak.md +15 -3
- package/.agent-src/rules/cli-output-handling.md +13 -1
- package/.agent-src/rules/command-suggestion-policy.md +13 -1
- package/.agent-src/rules/commit-conventions.md +13 -1
- package/.agent-src/rules/commit-policy.md +12 -0
- package/.agent-src/rules/context-hygiene.md +51 -3
- package/.agent-src/rules/copilot-routing.md +13 -1
- package/.agent-src/rules/devcontainer-routing.md +13 -1
- package/.agent-src/rules/direct-answers.md +12 -0
- package/.agent-src/rules/docker-commands.md +13 -1
- package/.agent-src/rules/domain-adoption-policy.md +17 -5
- package/.agent-src/rules/domain-safety-disclaimer.md +13 -1
- package/.agent-src/rules/domain-safety-pii.md +13 -1
- package/.agent-src/rules/domain-safety-retention.md +13 -1
- package/.agent-src/rules/downstream-changes.md +13 -1
- package/.agent-src/rules/engineering-safety-floor.md +102 -0
- package/.agent-src/rules/external-reference-deep-dive.md +13 -1
- package/.agent-src/rules/fast-path-marker-visibility.md +21 -1
- package/.agent-src/rules/finance-safety-floor.md +114 -0
- package/.agent-src/rules/framework-neutrality-in-generic-skills.md +13 -1
- package/.agent-src/rules/git-history-discipline.md +14 -2
- package/.agent-src/rules/guidelines.md +12 -0
- package/.agent-src/rules/improve-before-implement.md +13 -1
- package/.agent-src/rules/invite-challenge.md +13 -1
- package/.agent-src/rules/language-and-tone.md +12 -0
- package/.agent-src/rules/laravel-routing.md +13 -1
- package/.agent-src/rules/laravel-translations.md +13 -1
- package/.agent-src/rules/low-impact-corpus-privacy-floor.md +17 -5
- package/.agent-src/rules/markdown-safe-codeblocks.md +13 -1
- package/.agent-src/rules/media-governance-routing.md +27 -15
- package/.agent-src/rules/minimal-safe-diff.md +13 -1
- package/.agent-src/rules/missing-tool-handling.md +13 -1
- package/.agent-src/rules/model-recommendation.md +13 -1
- package/.agent-src/rules/no-attribution-footers.md +13 -1
- package/.agent-src/rules/no-cheap-questions.md +46 -32
- package/.agent-src/rules/no-roadmap-references.md +28 -16
- package/.agent-src/rules/non-destructive-by-default.md +12 -0
- package/.agent-src/rules/onboarding-gate.md +19 -6
- package/.agent-src/rules/package-ci-checks.md +12 -0
- package/.agent-src/rules/persona-governance.md +13 -1
- package/.agent-src/rules/php-coding.md +13 -1
- package/.agent-src/rules/preservation-guard.md +13 -1
- package/.agent-src/rules/provider-lifecycle-discipline.md +18 -6
- package/.agent-src/rules/reviewer-awareness.md +13 -1
- package/.agent-src/rules/roadmap-ci-steps-policy.md +13 -1
- package/.agent-src/rules/roadmap-progress-sync.md +18 -1
- package/.agent-src/rules/role-mode-adherence.md +13 -1
- package/.agent-src/rules/rule-type-governance.md +13 -1
- package/.agent-src/rules/runtime-safety.md +13 -1
- package/.agent-src/rules/scope-control.md +12 -0
- package/.agent-src/rules/security-sensitive-stop.md +13 -1
- package/.agent-src/rules/size-enforcement.md +12 -0
- package/.agent-src/rules/skill-improvement-trigger.md +13 -1
- package/.agent-src/rules/skill-quality.md +13 -1
- package/.agent-src/rules/slash-command-routing-policy.md +13 -1
- package/.agent-src/rules/strategy-safety-floor.md +114 -0
- package/.agent-src/rules/symfony-routing.md +13 -1
- package/.agent-src/rules/think-before-action.md +13 -1
- package/.agent-src/rules/token-efficiency.md +13 -1
- package/.agent-src/rules/token-optimizer-maintenance.md +12 -0
- package/.agent-src/rules/tool-safety.md +13 -1
- package/.agent-src/rules/ui-audit-gate.md +13 -1
- package/.agent-src/rules/upstream-proposal.md +13 -1
- package/.agent-src/rules/user-interaction.md +13 -1
- package/.agent-src/rules/user-interrupt-priority.md +12 -0
- package/.agent-src/rules/verify-before-complete.md +12 -0
- package/.agent-src/skills/accessibility-auditor/SKILL.md +12 -0
- package/.agent-src/skills/activation-design/SKILL.md +12 -0
- package/.agent-src/skills/adr-create/SKILL.md +12 -0
- package/.agent-src/skills/adversarial-review/SKILL.md +12 -0
- package/.agent-src/skills/agent-docs-writing/SKILL.md +16 -4
- package/.agent-src/skills/agents-md-thin-root/SKILL.md +28 -10
- package/.agent-src/skills/ai-council/SKILL.md +28 -15
- package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +12 -0
- package/.agent-src/skills/analysis-skill-router/SKILL.md +12 -0
- package/.agent-src/skills/api-design/SKILL.md +13 -3
- package/.agent-src/skills/api-endpoint/SKILL.md +12 -0
- package/.agent-src/skills/api-testing/SKILL.md +12 -0
- package/.agent-src/skills/architecture-review-lens/SKILL.md +12 -0
- package/.agent-src/skills/artisan-commands/SKILL.md +12 -0
- package/.agent-src/skills/async-python-patterns/SKILL.md +13 -1
- package/.agent-src/skills/authz-review/SKILL.md +12 -2
- package/.agent-src/skills/aws-infrastructure/SKILL.md +12 -0
- package/.agent-src/skills/blade-ui/SKILL.md +12 -0
- package/.agent-src/skills/blast-radius-analyzer/SKILL.md +12 -0
- package/.agent-src/skills/bug-analyzer/SKILL.md +14 -2
- package/.agent-src/skills/build-buy-partner/SKILL.md +12 -0
- package/.agent-src/skills/canvas-design/SKILL.md +12 -0
- package/.agent-src/skills/character-consistency/SKILL.md +23 -11
- package/.agent-src/skills/check-refs/SKILL.md +12 -0
- package/.agent-src/skills/churn-prevention/SKILL.md +12 -0
- package/.agent-src/skills/code-refactoring/SKILL.md +16 -4
- package/.agent-src/skills/code-review/SKILL.md +12 -0
- package/.agent-src/skills/command-routing/SKILL.md +12 -0
- package/.agent-src/skills/command-writing/SKILL.md +14 -2
- package/.agent-src/skills/comp-banding/SKILL.md +12 -0
- package/.agent-src/skills/competitive-moat-analysis/SKILL.md +12 -2
- package/.agent-src/skills/competitive-positioning/SKILL.md +12 -2
- package/.agent-src/skills/composer-packages/SKILL.md +12 -0
- package/.agent-src/skills/compress-memory/SKILL.md +12 -0
- package/.agent-src/skills/content-funnel-design/SKILL.md +12 -2
- package/.agent-src/skills/context-authoring/SKILL.md +18 -6
- package/.agent-src/skills/context-document/SKILL.md +17 -5
- package/.agent-src/skills/contracts-cognition/SKILL.md +12 -2
- package/.agent-src/skills/conventional-commits-writing/SKILL.md +12 -0
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +13 -1
- package/.agent-src/skills/copilot-config/SKILL.md +12 -0
- package/.agent-src/skills/customer-research/SKILL.md +12 -0
- package/.agent-src/skills/dashboard-design/SKILL.md +12 -0
- package/.agent-src/skills/data-flow-mapper/SKILL.md +12 -0
- package/.agent-src/skills/data-handling-judgment/SKILL.md +12 -2
- package/.agent-src/skills/database/SKILL.md +14 -2
- package/.agent-src/skills/dcf-modeling/SKILL.md +12 -2
- package/.agent-src/skills/deal-qualification-meddic/SKILL.md +12 -2
- package/.agent-src/skills/decision-record/SKILL.md +12 -0
- package/.agent-src/skills/deep-reading-analyst/SKILL.md +12 -0
- package/.agent-src/skills/defense-in-depth/SKILL.md +13 -1
- package/.agent-src/skills/dependency-upgrade/SKILL.md +12 -0
- package/.agent-src/skills/description-assist/SKILL.md +12 -0
- package/.agent-src/skills/design-review/SKILL.md +12 -0
- package/.agent-src/skills/devcontainer/SKILL.md +12 -0
- package/.agent-src/skills/developer-like-execution/SKILL.md +12 -0
- package/.agent-src/skills/discovery-interview/SKILL.md +12 -2
- package/.agent-src/skills/doc-coauthoring/SKILL.md +12 -0
- package/.agent-src/skills/docker/SKILL.md +12 -0
- package/.agent-src/skills/editorial-calendar/SKILL.md +12 -2
- package/.agent-src/skills/eloquent/SKILL.md +12 -0
- package/.agent-src/skills/eloquent/evals/triggers.json +1 -1
- package/.agent-src/skills/error-handling-patterns/SKILL.md +13 -1
- package/.agent-src/skills/estimate-ticket/SKILL.md +12 -0
- package/.agent-src/skills/existing-ui-audit/SKILL.md +12 -0
- package/.agent-src/skills/expansion-playbook/SKILL.md +12 -0
- package/.agent-src/skills/fe-design/SKILL.md +12 -0
- package/.agent-src/skills/feature-planning/SKILL.md +12 -0
- package/.agent-src/skills/file-editor/SKILL.md +12 -0
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +12 -0
- package/.agent-src/skills/flux/SKILL.md +12 -0
- package/.agent-src/skills/forecast-accuracy/SKILL.md +12 -2
- package/.agent-src/skills/forecasting/SKILL.md +12 -2
- package/.agent-src/skills/form-handler/SKILL.md +12 -0
- package/.agent-src/skills/fundraising-narrative/SKILL.md +12 -2
- package/.agent-src/skills/funnel-analysis/SKILL.md +12 -0
- package/.agent-src/skills/git-workflow/SKILL.md +12 -0
- package/.agent-src/skills/github-ci/SKILL.md +12 -0
- package/.agent-src/skills/grafana/SKILL.md +12 -0
- package/.agent-src/skills/gtm-launch/SKILL.md +12 -2
- package/.agent-src/skills/guideline-writing/SKILL.md +12 -0
- package/.agent-src/skills/hiring-loop-design/SKILL.md +12 -0
- package/.agent-src/skills/incident-commander/SKILL.md +12 -2
- package/.agent-src/skills/jira-integration/SKILL.md +12 -0
- package/.agent-src/skills/jobs-events/SKILL.md +12 -0
- package/.agent-src/skills/judge-bug-hunter/SKILL.md +12 -0
- package/.agent-src/skills/judge-code-quality/SKILL.md +12 -0
- package/.agent-src/skills/judge-security-auditor/SKILL.md +12 -0
- package/.agent-src/skills/judge-test-coverage/SKILL.md +12 -0
- package/.agent-src/skills/laravel/SKILL.md +12 -0
- package/.agent-src/skills/laravel-api-endpoint/SKILL.md +15 -3
- package/.agent-src/skills/laravel-dto/SKILL.md +14 -2
- package/.agent-src/skills/laravel-horizon/SKILL.md +12 -0
- package/.agent-src/skills/laravel-mail/SKILL.md +12 -0
- package/.agent-src/skills/laravel-middleware/SKILL.md +12 -0
- package/.agent-src/skills/laravel-migration/SKILL.md +12 -0
- package/.agent-src/skills/laravel-notifications/SKILL.md +12 -0
- package/.agent-src/skills/laravel-pennant/SKILL.md +12 -0
- package/.agent-src/skills/laravel-pulse/SKILL.md +12 -0
- package/.agent-src/skills/laravel-reverb/SKILL.md +12 -0
- package/.agent-src/skills/laravel-scheduling/SKILL.md +12 -0
- package/.agent-src/skills/laravel-validation/SKILL.md +12 -0
- package/.agent-src/skills/laravel-websocket/SKILL.md +12 -0
- package/.agent-src/skills/launch-readiness/SKILL.md +12 -2
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +15 -3
- package/.agent-src/skills/lint-skills/SKILL.md +12 -0
- package/.agent-src/skills/livewire/SKILL.md +12 -0
- package/.agent-src/skills/livewire-architect/SKILL.md +12 -0
- package/.agent-src/skills/logging-monitoring/SKILL.md +12 -0
- package/.agent-src/skills/market-entry-analysis/SKILL.md +12 -0
- package/.agent-src/skills/markitdown/SKILL.md +14 -2
- package/.agent-src/skills/mcp/SKILL.md +12 -0
- package/.agent-src/skills/mcp-builder/SKILL.md +14 -2
- package/.agent-src/skills/md-language-check/SKILL.md +13 -1
- package/.agent-src/skills/memory-consolidation/SKILL.md +12 -0
- package/.agent-src/skills/merge-conflicts/SKILL.md +12 -0
- package/.agent-src/skills/messaging-architecture/SKILL.md +12 -2
- package/.agent-src/skills/migration-architect/SKILL.md +12 -0
- package/.agent-src/skills/mobile-e2e-strategy/SKILL.md +12 -0
- package/.agent-src/skills/module-management/SKILL.md +12 -0
- package/.agent-src/skills/motion-choreographer/SKILL.md +16 -4
- package/.agent-src/skills/multi-tenancy/SKILL.md +14 -2
- package/.agent-src/skills/nextjs-patterns/SKILL.md +12 -0
- package/.agent-src/skills/okr-tree-modeling/SKILL.md +12 -2
- package/.agent-src/skills/onboarding-design/SKILL.md +12 -0
- package/.agent-src/skills/onboarding-program/SKILL.md +12 -0
- package/.agent-src/skills/one-on-one-cadence/SKILL.md +12 -0
- package/.agent-src/skills/openapi/SKILL.md +13 -1
- package/.agent-src/skills/org-design/SKILL.md +12 -0
- package/.agent-src/skills/override-management/SKILL.md +12 -0
- package/.agent-src/skills/perf-feedback-craft/SKILL.md +12 -0
- package/.agent-src/skills/performance/SKILL.md +12 -0
- package/.agent-src/skills/performance-analysis/SKILL.md +12 -0
- package/.agent-src/skills/persona-writing/SKILL.md +12 -0
- package/.agent-src/skills/pest-testing/SKILL.md +12 -0
- package/.agent-src/skills/php-coder/SKILL.md +12 -0
- package/.agent-src/skills/php-debugging/SKILL.md +12 -0
- package/.agent-src/skills/php-service/SKILL.md +12 -0
- package/.agent-src/skills/pipeline-strategy/SKILL.md +12 -2
- package/.agent-src/skills/pixar-storyteller/SKILL.md +17 -5
- package/.agent-src/skills/playwright-architect/SKILL.md +12 -2
- package/.agent-src/skills/playwright-testing/SKILL.md +12 -0
- package/.agent-src/skills/po-discovery/SKILL.md +12 -0
- package/.agent-src/skills/positioning-strategy/SKILL.md +12 -0
- package/.agent-src/skills/privacy-review/SKILL.md +12 -2
- package/.agent-src/skills/project-analysis-core/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-laravel/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-nextjs/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-node-express/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-react/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-symfony/SKILL.md +12 -0
- package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +12 -0
- package/.agent-src/skills/project-analyzer/SKILL.md +30 -18
- package/.agent-src/skills/project-docs/SKILL.md +25 -13
- package/.agent-src/skills/prompt-engineering-patterns/SKILL.md +13 -1
- package/.agent-src/skills/prompt-optimizer/SKILL.md +13 -1
- package/.agent-src/skills/quality-tools/SKILL.md +12 -2
- package/.agent-src/skills/react-native-setup/SKILL.md +12 -0
- package/.agent-src/skills/react-shadcn-ui/SKILL.md +12 -0
- package/.agent-src/skills/readme-reviewer/SKILL.md +64 -3
- package/.agent-src/skills/readme-writing/SKILL.md +64 -4
- package/.agent-src/skills/readme-writing-package/SKILL.md +60 -5
- package/.agent-src/skills/receiving-code-review/SKILL.md +12 -0
- package/.agent-src/skills/refine-prompt/SKILL.md +13 -1
- package/.agent-src/skills/refine-ticket/SKILL.md +14 -2
- package/.agent-src/skills/refine-ticket/detection-map.yml +2 -2
- package/.agent-src/skills/release-comms/SKILL.md +12 -2
- package/.agent-src/skills/repomix-packer/SKILL.md +13 -1
- package/.agent-src/skills/requesting-code-review/SKILL.md +12 -0
- package/.agent-src/skills/retention-loops/SKILL.md +12 -0
- package/.agent-src/skills/review-routing/SKILL.md +12 -0
- package/.agent-src/skills/rice-prioritization/SKILL.md +12 -0
- package/.agent-src/skills/risk-officer/SKILL.md +12 -0
- package/.agent-src/skills/roadmap-management/SKILL.md +12 -0
- package/.agent-src/skills/roadmap-writing/SKILL.md +12 -0
- package/.agent-src/skills/rtk-output-filtering/SKILL.md +12 -0
- package/.agent-src/skills/rule-refactor/SKILL.md +15 -3
- package/.agent-src/skills/rule-writing/SKILL.md +13 -1
- package/.agent-src/skills/runway-cognition/SKILL.md +12 -2
- package/.agent-src/skills/scenario-modeling/SKILL.md +12 -2
- package/.agent-src/skills/scene-expander/SKILL.md +18 -6
- package/.agent-src/skills/script-writing/SKILL.md +13 -1
- package/.agent-src/skills/secrets-management/SKILL.md +13 -3
- package/.agent-src/skills/security/SKILL.md +12 -0
- package/.agent-src/skills/security-audit/SKILL.md +12 -0
- package/.agent-src/skills/sentry-integration/SKILL.md +12 -0
- package/.agent-src/skills/sequential-thinking/SKILL.md +12 -0
- package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +12 -0
- package/.agent-src/skills/skill-management/SKILL.md +12 -0
- package/.agent-src/skills/skill-reviewer/SKILL.md +12 -0
- package/.agent-src/skills/skill-writing/SKILL.md +12 -0
- package/.agent-src/skills/sql-writing/SKILL.md +12 -0
- package/.agent-src/skills/stakeholder-tradeoff/SKILL.md +12 -0
- package/.agent-src/skills/subagent-orchestration/SKILL.md +13 -1
- package/.agent-src/skills/symfony-workflow/SKILL.md +12 -0
- package/.agent-src/skills/systematic-debugging/SKILL.md +53 -0
- package/.agent-src/skills/tailwind-engineer/SKILL.md +12 -0
- package/.agent-src/skills/tech-debt-tracker/SKILL.md +12 -2
- package/.agent-src/skills/technical-specification/SKILL.md +12 -0
- package/.agent-src/skills/terraform/SKILL.md +12 -0
- package/.agent-src/skills/terragrunt/SKILL.md +12 -0
- package/.agent-src/skills/test-driven-development/SKILL.md +12 -0
- package/.agent-src/skills/test-performance/SKILL.md +13 -1
- package/.agent-src/skills/testing-anti-patterns/SKILL.md +13 -1
- package/.agent-src/skills/threat-modeling/SKILL.md +12 -0
- package/.agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +12 -0
- package/.agent-src/skills/token-optimizer/SKILL.md +12 -0
- package/.agent-src/skills/traefik/SKILL.md +12 -0
- package/.agent-src/skills/ui-component-architect/SKILL.md +12 -0
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +12 -2
- package/.agent-src/skills/universal-project-analysis/SKILL.md +12 -0
- package/.agent-src/skills/upstream-contribute/SKILL.md +12 -0
- package/.agent-src/skills/using-git-worktrees/SKILL.md +12 -0
- package/.agent-src/skills/validate-feature-fit/SKILL.md +12 -0
- package/.agent-src/skills/verify-completion-evidence/SKILL.md +12 -0
- package/.agent-src/skills/video-director/SKILL.md +18 -6
- package/.agent-src/skills/vision-articulation/SKILL.md +12 -0
- package/.agent-src/skills/voc-extract/SKILL.md +12 -2
- package/.agent-src/skills/voice-and-tone-design/SKILL.md +12 -2
- package/.agent-src/templates/agent-settings.md +5 -5
- package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/.agent-src/templates/agents/memory/ownership.example.yml +1 -1
- package/.agent-src/templates/agents/proposal.example.md +12 -0
- package/.agent-src/templates/command.md +1 -1
- package/.agent-src/templates/contexts/auth-model.md +2 -2
- package/.agent-src/templates/contexts/data-sensitivity.md +3 -3
- package/.agent-src/templates/contexts/deployment-order.md +2 -2
- package/.agent-src/templates/contexts/observability.md +3 -3
- package/.agent-src/templates/contexts/tenant-boundaries.md +3 -3
- package/.agent-src/templates/contexts.md +1 -1
- package/.agent-src/templates/hooks/pre-commit-frontmatter +66 -0
- package/.agent-src/templates/hooks/pre-commit-roadmap-progress +78 -39
- package/.agent-src/templates/rule.md +1 -1
- package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +7 -4
- package/.agent-src/templates/scripts/work_engine/cli.py +6 -6
- package/.agent-src/templates/scripts/work_engine/emitters.py +29 -4
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.py +3 -3
- package/.agent-src/templates/scripts/work_engine/orchestration.py +25 -11
- package/.agent-src/templates/scripts/work_engine/state.py +53 -0
- package/.agent-src/templates/skill-archive-note.md +4 -4
- package/.claude-plugin/marketplace.json +2 -2
- package/AGENTS.md +12 -9
- package/CHANGELOG.md +268 -90
- package/CONTRIBUTING.md +61 -0
- package/README.md +173 -558
- package/config/agent-settings.template.yml +11 -8
- package/config/discovery/packs.yml +162 -0
- package/config/discovery/unassigned-artefacts.yml +68 -0
- package/config/discovery/workspaces.yml +59 -0
- package/config/gitignore-block.txt +36 -23
- package/dist/cli/agent-config.js +199 -0
- package/dist/cli/agent-config.js.map +1 -0
- package/dist/cli/bash/runBash.js +40 -0
- package/dist/cli/bash/runBash.js.map +1 -0
- package/dist/cli/commands/doctorShell.js +91 -0
- package/dist/cli/commands/doctorShell.js.map +1 -0
- package/dist/cli/commands/packs.js +59 -0
- package/dist/cli/commands/packs.js.map +1 -0
- package/dist/cli/commands/settings.js +35 -0
- package/dist/cli/commands/settings.js.map +1 -0
- package/dist/cli/commands/uiServe.js +119 -0
- package/dist/cli/commands/uiServe.js.map +1 -0
- package/dist/cli/commands/versions.js +64 -0
- package/dist/cli/commands/versions.js.map +1 -0
- package/dist/cli/commands/workspaces.js +58 -0
- package/dist/cli/commands/workspaces.js.map +1 -0
- package/dist/cli/discovery/loadManifest.js +62 -0
- package/dist/cli/discovery/loadManifest.js.map +1 -0
- package/dist/cli/log/logger.js +41 -0
- package/dist/cli/log/logger.js.map +1 -0
- package/dist/cli/paths.js +60 -0
- package/dist/cli/paths.js.map +1 -0
- package/dist/cli/python/resolvePython.js +38 -0
- package/dist/cli/python/resolvePython.js.map +1 -0
- package/dist/cli/registry.js +77 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/discovery/deprecation-report.md +7 -0
- package/dist/discovery/discovery-manifest.json +9893 -0
- package/dist/discovery/discovery-manifest.json.sha256 +1 -0
- package/dist/discovery/discovery-manifest.summary.md +93 -0
- package/dist/discovery/orphan-report.md +10 -0
- package/dist/discovery/packs.json +1002 -0
- package/dist/discovery/trust-report.md +26 -0
- package/dist/discovery/workspaces.json +705 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -0
- package/dist/mcp/mcp-cloudflare-catalogue.json +27 -0
- package/dist/mcp/registry-manifest.json +63 -0
- package/dist/router.json +1623 -0
- package/dist/server/app.js +125 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/io/atomicMultiWrite.js +204 -0
- package/dist/server/io/atomicMultiWrite.js.map +1 -0
- package/dist/server/io/atomicWrite.js +79 -0
- package/dist/server/io/atomicWrite.js.map +1 -0
- package/dist/server/io/substituteTemplate.js +87 -0
- package/dist/server/io/substituteTemplate.js.map +1 -0
- package/dist/server/io/yamlIO.js +162 -0
- package/dist/server/io/yamlIO.js.map +1 -0
- package/dist/server/port.js +97 -0
- package/dist/server/port.js.map +1 -0
- package/dist/server/routes/discovery.js +72 -0
- package/dist/server/routes/discovery.js.map +1 -0
- package/dist/server/routes/ping.js +57 -0
- package/dist/server/routes/ping.js.map +1 -0
- package/dist/server/routes/schema.js +41 -0
- package/dist/server/routes/schema.js.map +1 -0
- package/dist/server/routes/settings.js +236 -0
- package/dist/server/routes/settings.js.map +1 -0
- package/dist/server/routes/userMd.js +127 -0
- package/dist/server/routes/userMd.js.map +1 -0
- package/dist/server/routes/wizard.js +374 -0
- package/dist/server/routes/wizard.js.map +1 -0
- package/dist/server/schemas/settings.js +137 -0
- package/dist/server/schemas/settings.js.map +1 -0
- package/dist/server/token.js +75 -0
- package/dist/server/token.js.map +1 -0
- package/dist/server/writeRoot.js +84 -0
- package/dist/server/writeRoot.js.map +1 -0
- package/dist/server/writeRoot.test.js +91 -0
- package/dist/server/writeRoot.test.js.map +1 -0
- package/dist/shared/userMd/formAdapter.js +83 -0
- package/dist/shared/userMd/formAdapter.js.map +1 -0
- package/dist/shared/userMd/schema.js +46 -0
- package/dist/shared/userMd/schema.js.map +1 -0
- package/dist/shared/userMd/utils.js +88 -0
- package/dist/shared/userMd/utils.js.map +1 -0
- package/dist/ui/assets/index-D-DY1ywI.js +35 -0
- package/dist/ui/assets/index-D-DY1ywI.js.map +1 -0
- package/dist/ui/assets/index-Dqfhmg-d.css +1 -0
- package/dist/ui/index.html +14 -0
- package/docs/adrs/caveman/0001-default-off-until-bench.md +2 -2
- package/docs/adrs/cost/0001-hard-stop-hook.md +1 -1
- package/docs/adrs/router/0001-three-tier-routing.md +5 -5
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +4 -4
- package/docs/adrs/schema/README.md +1 -1
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +3 -3
- package/docs/architecture/setup-vs-settings-shared-surface.md +114 -0
- package/docs/architecture.md +3 -2
- package/docs/archive/CHANGELOG-pre-2.2.0.md +7 -7
- package/docs/archive/CHANGELOG-pre-3.0.0.md +130 -0
- package/docs/archive/CHANGELOG-pre-3.1.0.md +167 -0
- package/docs/catalog.md +92 -100
- package/docs/contracts/CHANGELOG-conventions.md +1 -1
- package/docs/contracts/STABILITY.md +1 -1
- package/docs/contracts/adr-architectural-consensus-mechanism.md +5 -5
- package/docs/contracts/adr-chat-history-split.md +1 -1
- package/docs/contracts/adr-implement-ticket-runtime.md +1 -1
- package/docs/contracts/adr-install-user-type-axis.md +1 -1
- package/docs/contracts/adr-mcp-runtime.md +2 -2
- package/docs/contracts/agent-user-schema.md +17 -11
- package/docs/contracts/ai-council-config.md +13 -13
- package/docs/contracts/audit-log-v1.md +2 -2
- package/docs/contracts/command-clusters.md +2 -2
- package/docs/contracts/compression-default-kill-criterion.md +3 -3
- package/docs/contracts/consumer-bridge.md +79 -0
- package/docs/contracts/decision-trace-v1.md +5 -5
- package/docs/contracts/discovery-manifest.md +209 -0
- package/docs/contracts/discovery-manifest.schema.json +219 -0
- package/docs/contracts/explain-trace.schema.json +144 -0
- package/docs/contracts/file-ownership-matrix.json +288 -328
- package/docs/contracts/file-ownership-matrix.md +1 -1
- package/docs/contracts/frontmatter-contract.md +140 -0
- package/docs/contracts/ghostwriter-schema.md +3 -3
- package/docs/contracts/gui-wizard.md +223 -0
- package/docs/contracts/hook-architecture-v1.md +10 -10
- package/docs/contracts/installer-agent-mode.md +137 -0
- package/docs/contracts/kernel-membership.md +5 -5
- package/docs/contracts/linter-structural-model.md +3 -3
- package/docs/contracts/load-context-schema.md +5 -5
- package/docs/contracts/local-server-api.md +134 -0
- package/docs/contracts/low-impact-corpus-format.md +1 -1
- package/docs/contracts/mcp-cloud-scope.md +2 -2
- package/docs/contracts/mcp-discovery-phase-notice.md +1 -1
- package/docs/contracts/mcp-phase-1-scope.md +5 -4
- package/docs/contracts/mcp-registry-manifest.schema.json +129 -0
- package/docs/contracts/mcp-tool-inventory.md +9 -9
- package/docs/contracts/mcp-tool-stub-envelope.md +1 -1
- package/docs/contracts/memory-visibility-v1.md +2 -2
- package/docs/contracts/multi-tool-projection-fidelity.md +3 -3
- package/docs/contracts/namespace.md +7 -7
- package/docs/contracts/one-off-script-lifecycle.md +1 -1
- package/docs/contracts/package-self-orientation.md +1 -1
- package/docs/contracts/provider-lifecycle.md +7 -7
- package/docs/contracts/router-blending.md +1 -1
- package/docs/contracts/rule-classification.md +2 -2
- package/docs/contracts/rule-router.md +4 -4
- package/docs/contracts/settings-api.md +207 -0
- package/docs/contracts/settings-gui-agent-mode.schema.json +128 -0
- package/docs/contracts/smoke-contracts.md +3 -3
- package/docs/contracts/tier-3-contrib-plugin.md +1 -1
- package/docs/contracts/trust-and-safety.md +144 -0
- package/docs/contracts/universal-skills.md +1 -1
- package/docs/contracts/write-engine.md +1 -1
- package/docs/customization.md +139 -13
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +1 -1
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +1 -1
- package/docs/decisions/ADR-004-rule-governance-pruning.md +8 -8
- package/docs/decisions/ADR-006-skill-tools-python-pilot.md +5 -5
- package/docs/decisions/ADR-007-agent-discovery-scopes.md +16 -4
- package/docs/decisions/ADR-008-installed-tools-manifest.md +2 -2
- package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +2 -2
- package/docs/decisions/ADR-011-domain-pack-readiness.md +4 -4
- package/docs/decisions/ADR-012-typescript-cli-shell.md +162 -0
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +234 -0
- package/docs/decisions/ADR-014-gui-framework-choice.md +136 -0
- package/docs/decisions/ADR-015-discovery-manifest-contract.md +146 -0
- package/docs/decisions/ADR-016-installer-architecture.md +189 -0
- package/docs/decisions/ADR-017-monorepo-physical-layout.md +261 -0
- package/docs/decisions/ADR-018-trust-and-safety-layer.md +159 -0
- package/docs/decisions/ADR-019-router-json-dist-location.md +124 -0
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +123 -0
- package/docs/decisions/ADR-021-deployment-shape.md +153 -0
- package/docs/decisions/ADR-rule-kernel-and-router.md +2 -2
- package/docs/decisions/INDEX.md +10 -0
- package/docs/deploy/connector-setup.md +129 -0
- package/docs/deploy/env-vars.md +70 -0
- package/docs/deploy/policy-cookbook.md +130 -0
- package/docs/deploy/quickstart.md +112 -0
- package/docs/distribution/mcp-submission-checklist.md +95 -0
- package/docs/distribution/public-install-smoke.md +68 -0
- package/docs/distribution/registries.md +55 -0
- package/docs/distribution/telemetry-privacy.md +128 -0
- package/docs/distribution/telemetry-schema.md +174 -0
- package/docs/distribution/topics-equivalents-decay-policy.md +51 -0
- package/docs/examples/agent-user.example.md +3 -1
- package/docs/featured-skills.md +95 -0
- package/docs/getting-started-by-role.md +19 -1
- package/docs/getting-started.md +5 -4
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
- package/docs/guidelines/agent-infra/installed-tools-manifest.md +11 -8
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +10 -1
- package/docs/guidelines/agent-infra/rule-type-governance.md +2 -2
- package/docs/guidelines/agent-infra/tool-integration.md +1 -1
- package/docs/guidelines/docs/readme-size-and-splitting.md +53 -1
- package/docs/guidelines/php/api-design.md +1 -1
- package/docs/guidelines/prompt-templates.md +2 -2
- package/docs/hook-payload-capture.md +3 -3
- package/docs/installation.md +39 -18
- package/docs/maintainers/dev-mode.md +105 -0
- package/docs/migrations/commands-1.15.0.md +3 -3
- package/docs/parity/bench-ruflo.json +1 -1
- package/docs/parity/ruflo.md +3 -3
- package/docs/profiles.md +1 -1
- package/docs/quality.md +2 -2
- package/docs/recruits/_template.md +3 -3
- package/docs/setup/enterprise-and-offline.md +3 -3
- package/docs/setup/mcp-server-docker.md +5 -3
- package/docs/setup/per-ide/claude-desktop.md +3 -2
- package/docs/skills-catalog.md +62 -18
- package/docs/wizard.md +156 -0
- package/llms.txt +61 -17
- package/package.json +63 -3
- package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
- package/scripts/_archive/README.md +2 -2
- package/scripts/_archive/_p4_migrate.py +1 -1
- package/scripts/_cli/cmd_doctor.py +155 -7
- package/scripts/_cli/cmd_explain.py +108 -3
- package/scripts/_cli/cmd_migrate.py +2 -2
- package/scripts/_cli/cmd_migrate_to_global.py +415 -0
- package/scripts/_cli/cmd_settings_migrate.py +146 -0
- package/scripts/_cli/explain_last/__init__.py +122 -0
- package/scripts/_cli/explain_last/assumptions.py +59 -0
- package/scripts/_cli/explain_last/council.py +105 -0
- package/scripts/_cli/explain_last/halt.py +44 -0
- package/scripts/_cli/explain_last/inputs.py +125 -0
- package/scripts/_cli/explain_last/memory.py +94 -0
- package/scripts/_cli/explain_last/provider.py +52 -0
- package/scripts/_cli/explain_last/render.py +52 -0
- package/scripts/_cli/explain_last/route.py +59 -0
- package/scripts/_cli/explain_last/scrubber.py +105 -0
- package/scripts/_cli/explain_last/sections/__init__.py +35 -0
- package/scripts/_cli/explain_last/sections/assumptions.py +21 -0
- package/scripts/_cli/explain_last/sections/council.py +27 -0
- package/scripts/_cli/explain_last/sections/halt.py +31 -0
- package/scripts/_cli/explain_last/sections/header.py +24 -0
- package/scripts/_cli/explain_last/sections/inputs.py +27 -0
- package/scripts/_cli/explain_last/sections/memory.py +21 -0
- package/scripts/_cli/explain_last/sections/pack.py +16 -0
- package/scripts/_cli/explain_last/sections/provider.py +26 -0
- package/scripts/_cli/explain_last/sections/route.py +22 -0
- package/scripts/_cli/explain_last/state_loader.py +76 -0
- package/scripts/_dispatch.bash +987 -0
- package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
- package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
- package/scripts/_lib/agent_settings.py +7 -4
- package/scripts/_lib/agent_src.py +157 -0
- package/scripts/_lib/agents_overlay.py +3 -3
- package/scripts/_phase4_bucket.py +210 -0
- package/scripts/agent-config +50 -947
- package/scripts/ai-video/adapters/higgsfield.sh +1 -1
- package/scripts/ai-video/adapters/sora.sh +1 -1
- package/scripts/ai-video/test-pipeline.sh +2 -2
- package/scripts/ai_council/_default_prices.py +5 -5
- package/scripts/ai_council/advisors.py +1 -1
- package/scripts/ai_council/clients.py +2 -2
- package/scripts/ai_council/compile_corpus.py +9 -8
- package/scripts/ai_council/config.py +3 -3
- package/scripts/ai_council/events_log.py +8 -4
- package/scripts/ai_council/low_impact_corpus.py +1 -1
- package/scripts/ai_council/low_impact_intake.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +2 -2
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_structural_optimization.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +3 -3
- package/scripts/ai_council/pricing.py +8 -7
- package/scripts/ai_council/probation_gate.py +1 -1
- package/scripts/ai_council/redact_low_impact_entry.py +1 -1
- package/scripts/ai_council/session.py +13 -13
- package/scripts/ai_council/shadow_dispatch.py +2 -2
- package/scripts/annotate_discovery.py +149 -0
- package/scripts/audit_adr_coverage.py +1 -1
- package/scripts/audit_auto_rules.py +2 -2
- package/scripts/audit_cloud_compatibility.py +1 -1
- package/scripts/audit_command_surface.py +2 -2
- package/scripts/audit_likelihood.py +4 -4
- package/scripts/audit_overlap.py +3 -3
- package/scripts/audit_skill_descriptions.py +18 -6
- package/scripts/audit_user_type_axis.py +1 -1
- package/scripts/build_discovery_manifest.py +658 -0
- package/scripts/build_mcp_registry_manifest.py +181 -0
- package/scripts/build_rule_trigger_matrix.py +2 -2
- package/scripts/capture_showcase_session.py +1 -1
- package/scripts/chat_history.py +5 -5
- package/scripts/check_always_budget.py +7 -2
- package/scripts/check_artefact_checksums.py +104 -0
- package/scripts/check_cluster_patterns.py +20 -4
- package/scripts/check_command_count_messaging.py +33 -14
- package/scripts/check_council_layout.py +26 -20
- package/scripts/check_council_references.py +53 -14
- package/scripts/check_discovery_determinism.py +70 -0
- package/scripts/check_kernel_rule_bundle.py +2 -2
- package/scripts/check_no_roadmap_refs.py +2 -2
- package/scripts/check_one_off_location.py +1 -1
- package/scripts/check_overlay_cascade_subdirs.py +7 -3
- package/scripts/check_public_links.py +2 -2
- package/scripts/check_references.py +19 -23
- package/scripts/check_release_includes_discovery.py +61 -0
- package/scripts/check_reply_consistency.py +32 -9
- package/scripts/check_template_pin_drift.py +24 -7
- package/scripts/check_token_optimizer_freshness.py +18 -3
- package/scripts/ci_summary.py +2 -2
- package/scripts/ci_time_ratio.py +1 -1
- package/scripts/command_suggester/__init__.py +1 -1
- package/scripts/compile_router.py +34 -2
- package/scripts/compress.py +162 -44
- package/scripts/config/presets.py +19 -1
- package/scripts/config/profiles.py +16 -1
- package/scripts/context_hygiene_hook.py +2 -2
- package/scripts/council_cli.py +22 -22
- package/scripts/council_prune.py +3 -3
- package/scripts/discovery_stats.py +70 -0
- package/scripts/expected_perms.json +47 -0
- package/scripts/extract_audit_patterns.py +2 -2
- package/scripts/gen_discovery_baseline.py +127 -0
- package/scripts/generate_index.py +78 -46
- package/scripts/generate_ownership_matrix.py +99 -44
- package/scripts/generate_pack_manifests.py +183 -0
- package/scripts/hook_manifest.yaml +5 -5
- package/scripts/hooks/cline-dispatcher.sh +1 -1
- package/scripts/hooks/cowork-dispatcher.sh +1 -1
- package/scripts/hooks/dispatch_hook.py +3 -3
- package/scripts/hooks/gemini-dispatcher.sh +1 -1
- package/scripts/hooks/replay_hook.py +1 -1
- package/scripts/hooks/state_io.py +5 -5
- package/scripts/hooks_doctor.py +4 -4
- package/scripts/install +18 -1
- package/scripts/install-hooks.sh +2 -2
- package/scripts/install.py +937 -62
- package/scripts/install.sh +147 -27
- package/scripts/inventory_frontmatter.py +1 -1
- package/scripts/lint_agents_layout.py +183 -0
- package/scripts/lint_agents_md.py +1 -1
- package/scripts/lint_archived_skills.py +35 -19
- package/scripts/lint_artefact_frontmatter.py +180 -0
- package/scripts/lint_bench_corpus.py +14 -2
- package/scripts/lint_command_tiers.py +15 -2
- package/scripts/lint_discovery_manifest.py +136 -0
- package/scripts/lint_discovery_vocabulary.py +148 -0
- package/scripts/lint_explain_trace.py +80 -0
- package/scripts/lint_featured_skills.py +139 -0
- package/scripts/lint_framework_leakage.py +33 -6
- package/scripts/lint_framework_leakage_allowlist.json +63 -62
- package/scripts/lint_ghostwriter_source.py +1 -1
- package/scripts/lint_global_paths.py +147 -0
- package/scripts/lint_load_context.py +3 -3
- package/scripts/lint_mcp_registry_manifest.py +69 -0
- package/scripts/lint_media_policy_linkage.py +6 -6
- package/scripts/lint_orchestration_dsl.py +6 -3
- package/scripts/lint_pack_boundaries.py +147 -0
- package/scripts/lint_pack_first_win.py +103 -0
- package/scripts/lint_positioning.py +143 -0
- package/scripts/lint_readme_jargon.py +131 -0
- package/scripts/lint_readme_size.py +33 -0
- package/scripts/lint_rule_interactions.py +23 -5
- package/scripts/lint_rule_tiers.py +14 -5
- package/scripts/lint_skill_tools.py +1 -1
- package/scripts/lint_topics_yaml.py +89 -0
- package/scripts/lint_trust_coherence.py +212 -0
- package/scripts/mcp_server/consumer_tool_catalog.json +3 -3
- package/scripts/mcp_server/telemetry.py +2 -2
- package/scripts/mcp_server/tools.py +27 -11
- package/scripts/mcp_telemetry_health.py +2 -2
- package/scripts/mcp_telemetry_store.py +1 -1
- package/scripts/measure_augment_budget.py +3 -3
- package/scripts/measure_density.py +2 -2
- package/scripts/measure_frugality_savings.py +3 -3
- package/scripts/measure_roadmap_trajectory.py +1 -1
- package/scripts/measure_rule_budget.py +25 -7
- package/scripts/memory_report.py +1 -1
- package/scripts/migrate_command_suggestions.py +3 -3
- package/scripts/minimal_safe_diff_hook.py +1 -1
- package/scripts/move_artefact.py +143 -0
- package/scripts/new_skill.py +148 -0
- package/scripts/onboarding_gate_hook.py +4 -4
- package/scripts/plan_physical_move.py +353 -0
- package/scripts/prepack-check.mjs +62 -0
- package/scripts/probe_projection_fidelity.py +2 -2
- package/scripts/refine_ticket_detect.py +31 -8
- package/scripts/schemas/command.schema.json +45 -1
- package/scripts/schemas/persona.schema.json +1 -1
- package/scripts/schemas/rule.schema.json +44 -4
- package/scripts/schemas/skill.schema.json +41 -1
- package/scripts/score_skill_selection.py +1 -1
- package/scripts/skill_collision_clusters.py +1 -1
- package/scripts/skill_linter.py +250 -120
- package/scripts/skill_overlap.py +1 -1
- package/scripts/skill_tools/run_block_d_eval.py +1 -1
- package/scripts/skill_trigger_eval.py +28 -8
- package/scripts/skill_usage_collect.py +3 -3
- package/scripts/skill_usage_report.py +3 -3
- package/scripts/smoke/kernel.sh +1 -1
- package/scripts/smoke/router.sh +24 -5
- package/scripts/smoke/skills.sh +15 -7
- package/scripts/smoke_quickstart.py +12 -3
- package/scripts/snapshot_agent_outputs.py +144 -0
- package/scripts/spotcheck_thin_root.py +1 -1
- package/scripts/sync_github_metadata.py +147 -0
- package/scripts/sync_gitignore.py +15 -5
- package/scripts/update_counts.py +45 -17
- package/scripts/update_prices.py +4 -3
- package/scripts/validate_decision_engine.py +9 -1
- package/scripts/validate_discovery_manifest.py +94 -0
- package/scripts/validate_frontmatter.py +39 -20
- package/scripts/verify_before_complete_hook.py +1 -1
- package/scripts/verify_physical_move.py +185 -0
- package/scripts/verify_roadmap_closure.py +1 -1
- package/templates/agent-user.md +34 -0
- package/templates/agent-user.yml +21 -0
- package/templates/minimal/agents-overrides-readme.md +46 -0
- package/templates/minimal/overrides-gitkeep +2 -0
- package/.agent-src/commands/onboard.md +0 -467
- package/templates/minimal/agents-gitkeep +0 -2
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
adr: 019
|
|
3
|
+
status: accepted
|
|
4
|
+
date: 2026-05-23
|
|
5
|
+
decision: router-json-dist-location
|
|
6
|
+
supersedes: —
|
|
7
|
+
superseded_by: —
|
|
8
|
+
phase: v2.x · post-monorepo cleanup
|
|
9
|
+
type: retrospective
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ADR-019 — `router.json` relocated to `dist/router.json`
|
|
13
|
+
|
|
14
|
+
## Status
|
|
15
|
+
|
|
16
|
+
**Accepted** · 2026-05-23. Moves the compiled router-kernel artefact
|
|
17
|
+
from the repo root to `dist/router.json`, aligning it with the
|
|
18
|
+
existing `dist/discovery/` build-artefact slot established by
|
|
19
|
+
ADR-015.
|
|
20
|
+
|
|
21
|
+
Companion artefacts:
|
|
22
|
+
- Contract: [`docs/contracts/rule-router.md`](../contracts/rule-router.md)
|
|
23
|
+
- Compiler: [`scripts/compile_router.py`](../../scripts/compile_router.py)
|
|
24
|
+
- ADR-rule-kernel-and-router: [`ADR-rule-kernel-and-router.md`](ADR-rule-kernel-and-router.md)
|
|
25
|
+
- Tier ADR: [`docs/adrs/router/0001-three-tier-routing.md`](../adrs/router/0001-three-tier-routing.md)
|
|
26
|
+
|
|
27
|
+
## Context
|
|
28
|
+
|
|
29
|
+
`router.json` was emitted at the repo root by the original
|
|
30
|
+
kernel-and-router shipping (ADR-rule-kernel-and-router, P3.2). The
|
|
31
|
+
root location pre-dated the `dist/` convention; once
|
|
32
|
+
ADR-015 codified `dist/discovery/` as the build-artefact slot and
|
|
33
|
+
ADR-012 introduced `dist/cli/` for the TS shell, the router
|
|
34
|
+
artefact's root location became the outlier — visually equivalent
|
|
35
|
+
to hand-edited project files like `AGENTS.md` or
|
|
36
|
+
`.agent-settings.yml`, even though it is regenerated from rule
|
|
37
|
+
frontmatter on every `task compile-router` / `task sync` run.
|
|
38
|
+
|
|
39
|
+
The artefact is still a **public contract**: external host agents
|
|
40
|
+
(Claude.ai bundle, Skills API per
|
|
41
|
+
[`package-self-orientation`](../contracts/package-self-orientation.md))
|
|
42
|
+
read it once per session to resolve the always-loaded kernel and the
|
|
43
|
+
tier-1/2 routing tables. Moving it is therefore a one-time breaking
|
|
44
|
+
change for consumers — they update the read path or fail to resolve
|
|
45
|
+
rules at session start.
|
|
46
|
+
|
|
47
|
+
## Decision
|
|
48
|
+
|
|
49
|
+
**Compile to `dist/router.json` and ship the file tracked in git
|
|
50
|
+
under a `!/dist/router.json` allowlist exception.** `dist/` remains
|
|
51
|
+
gitignored; only the router artefact is committed.
|
|
52
|
+
|
|
53
|
+
Rationale:
|
|
54
|
+
|
|
55
|
+
1. **Slot consistency.** Build outputs live under `dist/`. Two
|
|
56
|
+
pre-existing slots (`dist/discovery/`, `dist/cli/`) already
|
|
57
|
+
commit selected artefacts via `.gitignore` allowlists. The
|
|
58
|
+
router follows the same pattern.
|
|
59
|
+
2. **Thin-Root contract.** `AGENTS.md` and the repo root are
|
|
60
|
+
pointer-heavy and human-curated; generated artefacts at the root
|
|
61
|
+
create review noise on every regen.
|
|
62
|
+
3. **Single read path.** Host agents already read
|
|
63
|
+
`dist/discovery/discovery-manifest.json`; adding the router to
|
|
64
|
+
the same parent dir collapses the "where does the package emit
|
|
65
|
+
its public contracts" answer to a single directory.
|
|
66
|
+
|
|
67
|
+
## Trade-offs accepted
|
|
68
|
+
|
|
69
|
+
- **Breaking change for consumers.** Pinned external readers (the
|
|
70
|
+
Claude.ai bundle, any Skills API caller, third-party tooling
|
|
71
|
+
reading the kernel) must update their read path from
|
|
72
|
+
`<root>/router.json` to `<root>/dist/router.json`. No deprecation
|
|
73
|
+
shim — the path is in the artefact body for one
|
|
74
|
+
release window, surfaced via the changelog, and that is the
|
|
75
|
+
contract update.
|
|
76
|
+
- **Allowlist drift risk.** A future `dist/` purge that forgets the
|
|
77
|
+
`!/dist/router.json` line will silently regress the public
|
|
78
|
+
contract. The `task release-prepare` and `task ci` runs both call
|
|
79
|
+
`compile_router.py`, which re-creates the file before any
|
|
80
|
+
packaging step that would notice its absence.
|
|
81
|
+
|
|
82
|
+
## Implementation footprint
|
|
83
|
+
|
|
84
|
+
- **Compiler / CLI.** `scripts/compile_router.py`,
|
|
85
|
+
`scripts/lint_trust_coherence.py`, `scripts/_cli/cmd_explain.py`,
|
|
86
|
+
`scripts/_cli/explain_last/route.py` — output path constants
|
|
87
|
+
point at `dist/router.json`.
|
|
88
|
+
- **Smoke.** `scripts/smoke/kernel.sh`, `scripts/smoke/router.sh`
|
|
89
|
+
read from the new path; `.github/workflows/smoke.yml` path-trigger
|
|
90
|
+
globs updated via `docs/contracts/smoke-contracts.md`.
|
|
91
|
+
- **Tests.** `tests/test_lint_trust_coherence.py`,
|
|
92
|
+
`tests/test_cmd_explain.py`, `tests/cli/explain_last/conftest.py`
|
|
93
|
+
patch the new constants; `tests/test_one_liner_entrypoints.sh`
|
|
94
|
+
stages `dist/router.json` (not the whole `dist/`, to avoid pulling
|
|
95
|
+
in the TS-compiled CLI which needs `node_modules`).
|
|
96
|
+
- **`.gitignore`.** `/dist/` stays ignored; `!/dist/router.json`
|
|
97
|
+
allowlist exception added.
|
|
98
|
+
- **Docs.** `AGENTS.md`, `docs/architecture.md`,
|
|
99
|
+
`docs/customization.md`, `docs/contracts/{rule-router,
|
|
100
|
+
namespace, trust-and-safety, smoke-contracts, kernel-membership}.md`,
|
|
101
|
+
`docs/contracts/explain-trace.schema.json`,
|
|
102
|
+
`docs/adrs/router/0001-three-tier-routing.md`,
|
|
103
|
+
`docs/adrs/smoke/0001-per-tier-smoke-scripts.md`.
|
|
104
|
+
- **Source rules.** Uncompressed rule sources referencing the path
|
|
105
|
+
(`caveman-speak.md`, `git-history-discipline.md`) updated and
|
|
106
|
+
re-projected.
|
|
107
|
+
|
|
108
|
+
## Reversal cost
|
|
109
|
+
|
|
110
|
+
Two-edit revert: move the file back, flip the constants, drop the
|
|
111
|
+
allowlist line. `git mv` history is preserved through the rename,
|
|
112
|
+
so a `git revert` of the commit suffices. The contract update would
|
|
113
|
+
be a second breaking change for any consumer that adopted the new
|
|
114
|
+
path — so reversal is **possible but expensive after first
|
|
115
|
+
external uptake**.
|
|
116
|
+
|
|
117
|
+
## References
|
|
118
|
+
|
|
119
|
+
- [`docs/contracts/rule-router.md`](../contracts/rule-router.md) — frontmatter + read-path contract.
|
|
120
|
+
- [`docs/contracts/kernel-membership.md`](../contracts/kernel-membership.md) — kernel cap.
|
|
121
|
+
- [`dist/router.json`](../../dist/router.json) — compiled output.
|
|
122
|
+
- [`scripts/compile_router.py`](../../scripts/compile_router.py) — compiler.
|
|
123
|
+
- [`ADR-015-discovery-manifest-contract.md`](ADR-015-discovery-manifest-contract.md) — precedent for `dist/` allowlist.
|
|
124
|
+
- [`ADR-rule-kernel-and-router.md`](ADR-rule-kernel-and-router.md) — original kernel-and-router decision.
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
adr: 020
|
|
3
|
+
status: accepted
|
|
4
|
+
date: 2026-05-23
|
|
5
|
+
decision: global-only-consumer-scope
|
|
6
|
+
supersedes: —
|
|
7
|
+
superseded_by: —
|
|
8
|
+
phase: v3.x · global-only install rollout
|
|
9
|
+
type: forward-looking
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ADR-020 — Global-only consumer scope
|
|
13
|
+
|
|
14
|
+
## Status
|
|
15
|
+
|
|
16
|
+
**Accepted** · 2026-05-23. Phases 1-5 of
|
|
17
|
+
`road-to-global-only-install` shipped (Setup-Wizard, consumer scope
|
|
18
|
+
gate, surface + bridge, migration tooling). Phase 6 (docs sweep)
|
|
19
|
+
in progress. The ADR locks the decision; the roadmap locks the
|
|
20
|
+
mechanics.
|
|
21
|
+
|
|
22
|
+
Companion artefacts:
|
|
23
|
+
- Roadmap: [`agents/roadmaps/road-to-global-only-install.md`](../../agents/roadmaps/road-to-global-only-install.md)
|
|
24
|
+
- Bridge contract: [`docs/contracts/consumer-bridge.md`](../contracts/consumer-bridge.md)
|
|
25
|
+
- Wizard contract: [`docs/contracts/gui-wizard.md`](../contracts/gui-wizard.md)
|
|
26
|
+
- Predecessor ADR: [`ADR-007`](ADR-007-agent-discovery-scopes.md) — scope precedence, global-default amendment
|
|
27
|
+
- Perms entry-gate: [`scripts/lint_global_paths.py`](../../scripts/lint_global_paths.py)
|
|
28
|
+
- Payload schema: [`schemas/wizard-apply-payload.schema.json`](../../schemas/wizard-apply-payload.schema.json)
|
|
29
|
+
|
|
30
|
+
## Context
|
|
31
|
+
|
|
32
|
+
ADR-007 (2025-Q4) established that the agent-config consumer can run
|
|
33
|
+
in two scopes — **project** (`<repo>/.augment/`, `<repo>/.claude/`, …)
|
|
34
|
+
or **global** (`~/.claude/`, `~/.cursor/`, `~/.augment/`, …) — and
|
|
35
|
+
that newly-onboarded consumers default to **global**. Six months of
|
|
36
|
+
field use surfaced three structural problems:
|
|
37
|
+
|
|
38
|
+
1. **Settings drift.** Per-project `.agent-settings.yml` files
|
|
39
|
+
accumulate stale `personal.*` keys that disagree with the user's
|
|
40
|
+
real preferences. Multi-repo developers ship the wrong
|
|
41
|
+
`personal.autonomy` into PRs.
|
|
42
|
+
2. **Onboarding fragmentation.** New users land in `wizard.md` from
|
|
43
|
+
one tool, `getting-started-by-role.md` from another, and a
|
|
44
|
+
project-local `.agent-user.md` from a third. Three near-identical
|
|
45
|
+
surfaces, each subtly inconsistent.
|
|
46
|
+
3. **Update lag.** Consumer projects pin an installer version in
|
|
47
|
+
`package.json`. Skill / rule / command edits ship to the package
|
|
48
|
+
but never reach the consumer until someone manually bumps.
|
|
49
|
+
|
|
50
|
+
The amendment in ADR-007 (2026-05-13) flipped the **default** to
|
|
51
|
+
global for Augment. This ADR finishes the job: the consumer surface
|
|
52
|
+
becomes **global-only** end-to-end. The project tree retains exactly
|
|
53
|
+
one piece of agent state — `agents/overrides/` plus the bridge marker
|
|
54
|
+
documented in [`consumer-bridge`](../contracts/consumer-bridge.md).
|
|
55
|
+
|
|
56
|
+
## Decision
|
|
57
|
+
|
|
58
|
+
Consumer installations of `@event4u/agent-config` write **only** to
|
|
59
|
+
`~/.event4u/agent-config/` (global root) and `agents/.event4u-bridge.yml`
|
|
60
|
+
(in-repo marker). The Setup-Wizard and the legacy Installer-GUI
|
|
61
|
+
converge on a single `/api/apply` endpoint behind a `schema_version`
|
|
62
|
+
discriminator. Per-tool adapters resolve their rules / skills /
|
|
63
|
+
commands by reading the bridge marker, expanding `global_root`, and
|
|
64
|
+
fanning out from there.
|
|
65
|
+
|
|
66
|
+
The single project-local exception is `agents/overrides/`, which
|
|
67
|
+
remains the canonical place to override or extend a shared skill /
|
|
68
|
+
rule / command per [override-management](../../.agent-src.uncompressed/skills/override-management/SKILL.md).
|
|
69
|
+
|
|
70
|
+
The maintainer-side dev experience is preserved by the
|
|
71
|
+
`AGENT_CONFIG_DEV_MODE=1` environment gate documented in
|
|
72
|
+
[`docs/maintainers/dev-mode.md`](../maintainers/dev-mode.md). With the
|
|
73
|
+
flag set, `scripts/install.py` treats the package repo as both source
|
|
74
|
+
and project surface (Phase 3 contract).
|
|
75
|
+
|
|
76
|
+
## Alternatives considered
|
|
77
|
+
|
|
78
|
+
- **Status quo (project default + global opt-in).** Keeps the drift
|
|
79
|
+
problem; multi-repo developers continue to ship stale
|
|
80
|
+
`personal.*` keys. Rejected.
|
|
81
|
+
- **Dual-endpoint `/api/apply` (one per payload shape).** Doubles
|
|
82
|
+
the CSRF + idle-timer surface with no observability gain. Rejected;
|
|
83
|
+
see `gui-wizard § D12`.
|
|
84
|
+
- **Per-project bridge YAML pointing to multiple global roots.**
|
|
85
|
+
Enables team-shared globals via NFS but introduces a tenancy model
|
|
86
|
+
the rest of the system is not designed for. Deferred to a future
|
|
87
|
+
ADR; v1 of the bridge marker is single-root.
|
|
88
|
+
|
|
89
|
+
## Consequences
|
|
90
|
+
|
|
91
|
+
**Positive.**
|
|
92
|
+
- One source of truth for `personal.*`, `agent_council.*`, and `personas:`.
|
|
93
|
+
- New skills / rules / commands reach every consumer the moment they
|
|
94
|
+
install or run `task dev:install-global` — no per-repo bump.
|
|
95
|
+
- The onboarding wizard becomes the only authoring surface for
|
|
96
|
+
`.agent-user.md`. Three duplicate flows collapse into one.
|
|
97
|
+
|
|
98
|
+
**Negative.**
|
|
99
|
+
- Phase 3 SCOPE_SUPPORT flip is breaking for any tool that still
|
|
100
|
+
hard-codes a project-local lookup. Migration order is locked in
|
|
101
|
+
the roadmap (Phase 5) — `agent-config migrate-to-global` runs the
|
|
102
|
+
perms entry-gate, copies, verifies, then deletes the project
|
|
103
|
+
shadow.
|
|
104
|
+
- The bridge marker is a new failure mode: a stale `global_root` on
|
|
105
|
+
disk yields a fail-closed error instead of a silent project-local
|
|
106
|
+
fallback. The trade-off is intentional; silent fallback is what
|
|
107
|
+
produced the drift in the first place.
|
|
108
|
+
|
|
109
|
+
**Operational.**
|
|
110
|
+
- `scripts/lint_global_paths.py` becomes a required precondition for
|
|
111
|
+
`migrate-to-global`. Wrong perms (e.g. `0755` on the global root
|
|
112
|
+
when `0700` is expected) abort the migration before any write.
|
|
113
|
+
- The Augment, Claude, and Cursor adapters get free-form-tested by
|
|
114
|
+
the maintainer dev install every CI run, so a regression in the
|
|
115
|
+
bridge-resolver surfaces immediately instead of at consumer time.
|
|
116
|
+
|
|
117
|
+
## References
|
|
118
|
+
|
|
119
|
+
- [`ADR-007`](ADR-007-agent-discovery-scopes.md) — discovery scope precedence and the 2026-05-13 global-default amendment.
|
|
120
|
+
- [`ADR-018`](ADR-018-trust-and-safety-layer.md) — trust levels and HRR banner; unchanged by this decision.
|
|
121
|
+
- [`road-to-global-only-install`](../../agents/roadmaps/road-to-global-only-install.md) — phased rollout, cross-phase gates A1-A7.
|
|
122
|
+
- [`consumer-bridge`](../contracts/consumer-bridge.md) — bridge marker schema and reader contract.
|
|
123
|
+
- [`gui-wizard § Apply payload`](../contracts/gui-wizard.md#apply-payload--versioning-handshake-road-to-global-only-install-phase-04--d12) — payload discriminator.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
adr: 021
|
|
3
|
+
status: accepted
|
|
4
|
+
date: 2026-05-24
|
|
5
|
+
decision: deployment-shape
|
|
6
|
+
supersedes: —
|
|
7
|
+
superseded_by: —
|
|
8
|
+
phase: v3.x · internal-AI-OS deployment Phase 1
|
|
9
|
+
type: forward-looking
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# ADR-021 — Deployment shape (internal AI OS, Phase 1)
|
|
13
|
+
|
|
14
|
+
## Status
|
|
15
|
+
|
|
16
|
+
**Accepted** · 2026-05-24. Phase 1 of
|
|
17
|
+
[`road-to-internal-ai-os-deployment.md`](../../agents/roadmaps/road-to-internal-ai-os-deployment.md)
|
|
18
|
+
ships the container image + Compose topology + host binding +
|
|
19
|
+
healthcheck. Phases 2–5 (identity, central policy, team context,
|
|
20
|
+
connectors) are tracked but **not yet implemented**; their ADRs
|
|
21
|
+
(022–025) are reserved but unwritten.
|
|
22
|
+
|
|
23
|
+
Companion artefacts:
|
|
24
|
+
|
|
25
|
+
- Roadmap: [`agents/roadmaps/road-to-internal-ai-os-deployment.md`](../../agents/roadmaps/road-to-internal-ai-os-deployment.md)
|
|
26
|
+
- Artefacts: [`packages/core/deploy/`](../../packages/core/deploy/)
|
|
27
|
+
- Env contract: [`docs/deploy/env-vars.md`](../deploy/env-vars.md)
|
|
28
|
+
- Council question (drafted, not invoked — no keys): [`agents/tmp/council-question-deployment-shape.md`](../../agents/tmp/council-question-deployment-shape.md)
|
|
29
|
+
- Predecessor ADR: [`ADR-016`](ADR-016-installer-architecture.md) — installer architecture (agent-mode protocol the GUI server wraps).
|
|
30
|
+
|
|
31
|
+
## Context
|
|
32
|
+
|
|
33
|
+
For the first two years `@event4u/agent-config` shipped as a
|
|
34
|
+
developer-local tool: `npx @event4u/agent-config init` writes files
|
|
35
|
+
into the consumer repo, the wizard runs on `127.0.0.1`, no state
|
|
36
|
+
persists beyond the lockfile. Field signal (multiple companies asking
|
|
37
|
+
"can we host this for the team?") motivates a second shape: a
|
|
38
|
+
**single deployed instance per organization**, hosting wizard +
|
|
39
|
+
Council + memory for 5–50 engineers behind their SSO.
|
|
40
|
+
|
|
41
|
+
Three structural questions had to settle before code:
|
|
42
|
+
|
|
43
|
+
1. **Topology** — bare Compose vs Helm vs both.
|
|
44
|
+
2. **Process shape** — single Node container vs Node + Python sidecar.
|
|
45
|
+
3. **Boot-time safety** — what happens when the operator inevitably
|
|
46
|
+
flips `127.0.0.1:8787` to `0.0.0.0:8787` before authentication
|
|
47
|
+
lands in Phase 2.
|
|
48
|
+
|
|
49
|
+
## Decision
|
|
50
|
+
|
|
51
|
+
### 1. Topology — Compose-first, Helm deferred
|
|
52
|
+
|
|
53
|
+
A single `docker-compose.yml` under `packages/core/deploy/` is the
|
|
54
|
+
shipped artefact. Three services: `agent-config` (the Node image),
|
|
55
|
+
`redis`, `postgres`. Three named volumes for runtime state, Postgres
|
|
56
|
+
data, and the per-user `~/.event4u/agent-config/` mount.
|
|
57
|
+
|
|
58
|
+
Helm / k8s manifests are **deferred** to a future v2 deployment
|
|
59
|
+
roadmap. Compose covers the 5–50-person band; larger teams author
|
|
60
|
+
their own chart using this Compose as the reference until v2 ships.
|
|
61
|
+
|
|
62
|
+
### 2. Process shape — single-process Node
|
|
63
|
+
|
|
64
|
+
The GUI server (`packages/core/installer/src/gui/server.ts`) is the
|
|
65
|
+
only long-running process. The Python install supervisor is spawned
|
|
66
|
+
per-install, not a sidecar. The Compose image stays Node-only to keep
|
|
67
|
+
the budget under 600 MB compressed and the surface area minimal.
|
|
68
|
+
|
|
69
|
+
If Phase 2+ needs a separate identity-broker process, it lands in a
|
|
70
|
+
separate service in the same Compose; the agent-config container stays
|
|
71
|
+
single-process.
|
|
72
|
+
|
|
73
|
+
### 3. Host binding — `127.0.0.1` default, `0.0.0.0` opt-in with safety gate
|
|
74
|
+
|
|
75
|
+
`startGuiServer` accepts `host` + `allowedHosts` options. CLI
|
|
76
|
+
exposes `--host` and `--allowed-hosts`; container defaults
|
|
77
|
+
`BIND_HOST=0.0.0.0` + `ALLOWED_HOSTS=localhost:8787,127.0.0.1:8787`.
|
|
78
|
+
|
|
79
|
+
**Hard rule**: non-loopback bind without `allowedHosts` refuses to
|
|
80
|
+
boot. Enforced at the CLI surface (`commands/gui.ts`) and at the
|
|
81
|
+
server entry (`gui/server.ts`). This is the structural mitigation
|
|
82
|
+
against operators flipping the host port mapping before Phase 2 SSO
|
|
83
|
+
ships.
|
|
84
|
+
|
|
85
|
+
### 4. Health endpoint — `/api/v1/health`, read-only, rate-limited
|
|
86
|
+
|
|
87
|
+
CSRF-exempt, GET-only. Returns `status`, `version`, `pack_version`,
|
|
88
|
+
`uptime_seconds`, `storage_mode`, `session_backend`, and
|
|
89
|
+
`manifest_sha256`. No secrets, no auth state, no PII.
|
|
90
|
+
|
|
91
|
+
Rate-limited to 1 request per second per remote IP via an in-memory
|
|
92
|
+
token bucket. Wide margin over the docker-default 10 s healthcheck
|
|
93
|
+
cadence; resilient to spoofed probes (the bucket map is bounded at
|
|
94
|
+
1024 entries and self-prunes).
|
|
95
|
+
|
|
96
|
+
### 5. Redis + Postgres in compose but unwired in Phase 1
|
|
97
|
+
|
|
98
|
+
Both services ship in the Compose topology with healthchecks and named
|
|
99
|
+
volumes, but the agent-config code does **not** read them in Phase 1:
|
|
100
|
+
|
|
101
|
+
- `STORAGE_MODE=postgres` is documented but the implementation still
|
|
102
|
+
uses filesystem.
|
|
103
|
+
- `SESSION_BACKEND=redis` is documented but the implementation still
|
|
104
|
+
uses in-memory state.
|
|
105
|
+
|
|
106
|
+
Surfacing both connection strings in `/api/v1/health` lets operators
|
|
107
|
+
verify connectivity *before* Phase 2 wires Postgres and Phase 3 wires
|
|
108
|
+
Redis.
|
|
109
|
+
|
|
110
|
+
### 6. No TLS in the container
|
|
111
|
+
|
|
112
|
+
The reverse-proxy (nginx / Caddy / Traefik / ALB) owns TLS
|
|
113
|
+
termination. The container speaks plain HTTP on the bound interface.
|
|
114
|
+
Out-of-scope for this ADR; documented in `packages/core/deploy/README.md`.
|
|
115
|
+
|
|
116
|
+
## Consequences
|
|
117
|
+
|
|
118
|
+
**Positive**
|
|
119
|
+
|
|
120
|
+
- Operators can `docker compose up` and reach a working wizard
|
|
121
|
+
without writing infrastructure.
|
|
122
|
+
- The shape locks before Phases 2–5 add auth / policy / connectors —
|
|
123
|
+
those phases extend the topology without rewriting it.
|
|
124
|
+
- `ALLOWED_HOSTS` gate eliminates the DNS-rebinding class of
|
|
125
|
+
vulnerability at the boot layer.
|
|
126
|
+
|
|
127
|
+
**Negative**
|
|
128
|
+
|
|
129
|
+
- Teams already on k8s need to translate Compose to their own
|
|
130
|
+
charts. Mitigated by the README pointing at the Compose as the
|
|
131
|
+
reference.
|
|
132
|
+
- Postgres + Redis run unused in Phase 1, adding 60–80 MB RAM idle
|
|
133
|
+
to the deployment footprint. Mitigated by being able to remove
|
|
134
|
+
both services from the Compose if Phase 1 is the only phase the
|
|
135
|
+
operator wants.
|
|
136
|
+
|
|
137
|
+
**Reversal cost** — low. Compose → Helm migration is mechanical once
|
|
138
|
+
the v2 deployment roadmap kicks off; the agent-config image itself is
|
|
139
|
+
orchestrator-agnostic.
|
|
140
|
+
|
|
141
|
+
## Open questions (council-deferred)
|
|
142
|
+
|
|
143
|
+
The accompanying council question file
|
|
144
|
+
[`agents/tmp/council-question-deployment-shape.md`](../../agents/tmp/council-question-deployment-shape.md)
|
|
145
|
+
has not yet been run (no provider keys configured). A maintainer with
|
|
146
|
+
keys should run it and either ratify or supersede this ADR.
|
|
147
|
+
|
|
148
|
+
## Cross-references
|
|
149
|
+
|
|
150
|
+
- Phase 1 artefacts: [`packages/core/deploy/`](../../packages/core/deploy/)
|
|
151
|
+
- Env contract: [`docs/deploy/env-vars.md`](../deploy/env-vars.md)
|
|
152
|
+
- Installer architecture: [`ADR-016`](ADR-016-installer-architecture.md)
|
|
153
|
+
- Global-only consumer scope: [`ADR-020`](ADR-020-global-only-consumer-scope.md) (orthogonal — local install model)
|
|
@@ -39,7 +39,7 @@ size budgets.
|
|
|
39
39
|
tier-1 (default) · `full` = kernel + tier-1 + tier-2.
|
|
40
40
|
- **Budget gates:** `task lint-rule-budget` enforces kernel ≤ 26k chars
|
|
41
41
|
and per-rule ≤ 2.5k (Iron-Law overrides up to 4.0k via ADR-002).
|
|
42
|
-
Daily snapshots in `agents/.rule-budget-history.jsonl`.
|
|
42
|
+
Daily snapshots in `agents/runtime/.rule-budget-history.jsonl`.
|
|
43
43
|
- **Compression discipline:** P4.3 brought the auto-bucket from
|
|
44
44
|
~75k → 59 220 chars (under the 60k target) without behaviour drift.
|
|
45
45
|
|
|
@@ -105,7 +105,7 @@ point.
|
|
|
105
105
|
|
|
106
106
|
Kernel-bucket-check: PASS. Per-rule cap: 16 rules over 2.5k target,
|
|
107
107
|
all within 4.0k Iron-Law override per ADR-002. Trend snapshot
|
|
108
|
-
appended to `agents/.rule-budget-history.jsonl`.
|
|
108
|
+
appended to `agents/runtime/.rule-budget-history.jsonl`.
|
|
109
109
|
|
|
110
110
|
## Consequences
|
|
111
111
|
|
package/docs/decisions/INDEX.md
CHANGED
|
@@ -15,6 +15,16 @@ _Auto-generated by `scripts/adr/regenerate_index.py`. Do not edit._
|
|
|
15
15
|
| [ADR-009](ADR-009-event4u-namespace.md) | Event4U Namespace And Claude Desktop Zip Bundles | accepted | 2026-05-13 | — |
|
|
16
16
|
| [ADR-010](ADR-010-profile-pack-preset-boundary.md) | Profile Pack Preset Boundary | proposed | 2026-05-16 | — |
|
|
17
17
|
| [ADR-011](ADR-011-domain-pack-readiness.md) | Domain Pack Readiness | accepted | 2026-05-17 | — |
|
|
18
|
+
| [ADR-012](ADR-012-typescript-cli-shell.md) | Typescript Cli Shell | accepted | 2026-05-19 | — |
|
|
19
|
+
| [ADR-013](ADR-013-discovery-frontmatter-contract.md) | Discovery Frontmatter Contract | accepted | 2026-05-19 | — |
|
|
20
|
+
| [ADR-014](ADR-014-gui-framework-choice.md) | Gui Framework Choice | accepted | 2026-05-20 | — |
|
|
21
|
+
| [ADR-015](ADR-015-discovery-manifest-contract.md) | Discovery Manifest Contract | accepted | 2026-05-21 | — |
|
|
22
|
+
| [ADR-016](ADR-016-installer-architecture.md) | Installer Architecture | accepted | 2026-05-21 | — |
|
|
23
|
+
| [ADR-017](ADR-017-monorepo-physical-layout.md) | Monorepo Physical Layout | accepted | 2026-05-21 | — |
|
|
24
|
+
| [ADR-018](ADR-018-trust-and-safety-layer.md) | Trust And Safety Layer | accepted | 2026-05-21 | — |
|
|
25
|
+
| [ADR-019](ADR-019-router-json-dist-location.md) | Router Json Dist Location | accepted | 2026-05-23 | — |
|
|
26
|
+
| [ADR-020](ADR-020-global-only-consumer-scope.md) | Global Only Consumer Scope | accepted | 2026-05-23 | — |
|
|
27
|
+
| [ADR-021](ADR-021-deployment-shape.md) | Deployment Shape | accepted | 2026-05-24 | — |
|
|
18
28
|
|
|
19
29
|
## Unnumbered (legacy)
|
|
20
30
|
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Connector setup — internal AI OS
|
|
2
|
+
|
|
3
|
+
> **Status**: 🚧 **skeleton**. Phase 5 of
|
|
4
|
+
> [`road-to-internal-ai-os-deployment.md`](../../agents/roadmaps/road-to-internal-ai-os-deployment.md)
|
|
5
|
+
> is **not yet implemented**. Phase 5 is contingent on Phase 2 (SSO)
|
|
6
|
+
> and Phase 3 (central policy) shipping first.
|
|
7
|
+
>
|
|
8
|
+
> Open design questions live in
|
|
9
|
+
> [`agents/tmp/council-question-connector-scope.md`](../../agents/tmp/council-question-connector-scope.md).
|
|
10
|
+
|
|
11
|
+
## Audience
|
|
12
|
+
|
|
13
|
+
An admin at a deploying organization who wants the AI OS to read
|
|
14
|
+
tickets / PRs / Slack threads to ground its plans in the org's actual
|
|
15
|
+
state of work.
|
|
16
|
+
|
|
17
|
+
## Launch set (planned)
|
|
18
|
+
|
|
19
|
+
| Connector | Read | Write | OAuth shape |
|
|
20
|
+
|---|---|---|---|
|
|
21
|
+
| Linear | v1 | v2 (gated) | per-org app install |
|
|
22
|
+
| GitHub | v1 | v2 (gated) | GitHub App (per-org) |
|
|
23
|
+
| Jira Cloud | v1 | v2 (gated) | per-user OAuth |
|
|
24
|
+
| Slack | v1 | v2 (gated) | per-org app install |
|
|
25
|
+
| Notion | v1 | — | per-user OAuth |
|
|
26
|
+
|
|
27
|
+
**v1** = read-only · **v2** = write paths, each behind explicit org
|
|
28
|
+
policy gate (see [`policy-cookbook.md`](policy-cookbook.md) →
|
|
29
|
+
`connectors.write_enabled`).
|
|
30
|
+
|
|
31
|
+
## OAuth contract (planned)
|
|
32
|
+
|
|
33
|
+
Each connector lands one of two shapes:
|
|
34
|
+
|
|
35
|
+
### Per-org app install
|
|
36
|
+
|
|
37
|
+
Admin installs the app once at the org level. Every authenticated
|
|
38
|
+
user inherits read access. Best for Linear / GitHub / Slack where
|
|
39
|
+
the data is org-shared.
|
|
40
|
+
|
|
41
|
+
### Per-user OAuth
|
|
42
|
+
|
|
43
|
+
Each engineer authorizes their own account. The wizard surfaces a
|
|
44
|
+
per-user "Connect Jira" / "Connect Notion" panel. Best where data is
|
|
45
|
+
user-scoped or per-user permission boundaries matter.
|
|
46
|
+
|
|
47
|
+
## Token storage (planned)
|
|
48
|
+
|
|
49
|
+
OAuth tokens land in Postgres encrypted with the deployment's
|
|
50
|
+
`SESSION_SECRET` derivative. Rotation happens automatically on
|
|
51
|
+
refresh-token success. A `connector_token_rotated` audit event lands
|
|
52
|
+
on each rotation.
|
|
53
|
+
|
|
54
|
+
## Rate limits & cost (planned)
|
|
55
|
+
|
|
56
|
+
| Connector | Cost model | Default cache TTL |
|
|
57
|
+
|---|---|---|
|
|
58
|
+
| Linear | Free, generous quota | 5 min for tickets, 1 min for comments |
|
|
59
|
+
| GitHub | 5,000 / hr per token | 10 min for PRs, 2 min for reviews |
|
|
60
|
+
| Jira Cloud | 10 / sec per app | 5 min |
|
|
61
|
+
| Slack | Tier 2 (~20 / min) | 1 min for threads |
|
|
62
|
+
| Notion | 3 / sec per integration | 10 min |
|
|
63
|
+
|
|
64
|
+
The wizard surfaces per-connector cost in the admin panel; user-facing
|
|
65
|
+
flows hide it.
|
|
66
|
+
|
|
67
|
+
## Setup walkthrough (planned)
|
|
68
|
+
|
|
69
|
+
### Linear
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
1. Admin → Linear workspace settings → API → OAuth applications.
|
|
73
|
+
2. Create app, set redirect URI to https://your.host/oauth/linear/callback.
|
|
74
|
+
3. Copy client_id + client_secret into the AI OS admin panel.
|
|
75
|
+
4. Authorize once at the org level.
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### GitHub
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
1. Admin → org settings → Developer settings → GitHub Apps → New.
|
|
82
|
+
2. Permissions: read on Issues, Pull Requests, Contents, Metadata.
|
|
83
|
+
3. Install on selected repos (or all).
|
|
84
|
+
4. Copy app_id + private_key into the AI OS admin panel.
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Jira Cloud
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
🚧 Per-user OAuth flow; each engineer connects on first use.
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Slack
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
1. Admin → Slack app directory → Create app → from manifest.
|
|
97
|
+
2. Manifest ships at packages/core/deploy/connectors/slack.manifest.yml
|
|
98
|
+
(does not yet exist).
|
|
99
|
+
3. Install in workspace, copy bot token + signing secret.
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Notion
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
🚧 Per-user OAuth flow.
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Hard-Floor caveats
|
|
109
|
+
|
|
110
|
+
- OAuth token storage → **security-sensitive**, human-reviewed PR.
|
|
111
|
+
- Write paths (v2) → **explicit org-policy gate** before merge.
|
|
112
|
+
- Third-party data caching → cross-tenant isolation review before
|
|
113
|
+
merge (a stray cache-key collision exposes org A's data to org B).
|
|
114
|
+
|
|
115
|
+
## What's not yet here
|
|
116
|
+
|
|
117
|
+
- No connector code exists in the repo.
|
|
118
|
+
- No OAuth callback routes are registered.
|
|
119
|
+
- No admin panel for connector management.
|
|
120
|
+
- No token-storage schema.
|
|
121
|
+
|
|
122
|
+
All of the above land in Phase 5, contingent on Phases 2 + 3.
|
|
123
|
+
|
|
124
|
+
## Cross-references
|
|
125
|
+
|
|
126
|
+
- 🚧 Reserved ADR slot: `docs/decisions/ADR-025-connector-scope.md`.
|
|
127
|
+
- Council question: [`agents/tmp/council-question-connector-scope.md`](../../agents/tmp/council-question-connector-scope.md).
|
|
128
|
+
- Quickstart: [`quickstart.md`](quickstart.md).
|
|
129
|
+
- Policy cookbook: [`policy-cookbook.md`](policy-cookbook.md).
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Environment variable contract — `agent-config` deployment
|
|
2
|
+
|
|
3
|
+
Phase 1 of [`road-to-internal-ai-os-deployment.md`](../../agents/roadmaps/road-to-internal-ai-os-deployment.md).
|
|
4
|
+
Decision shape: [`ADR-021`](../decisions/ADR-021-deployment-shape.md).
|
|
5
|
+
|
|
6
|
+
This file is the **single source of truth** for environment variables
|
|
7
|
+
read by the deployed container. Every knob below is consumed by either
|
|
8
|
+
the GUI server (TypeScript) or the embedded Python install supervisor.
|
|
9
|
+
|
|
10
|
+
| Variable | Required | Default | Phase | Meaning |
|
|
11
|
+
|---|---|---|---|---|
|
|
12
|
+
| `BIND_HOST` | no | `127.0.0.1` | 1 | Bind address. Set to `0.0.0.0` for container deployments; non-loopback REQUIRES `ALLOWED_HOSTS`. |
|
|
13
|
+
| `GUI_PORT` | no | `8787` | 1 | TCP port the wizard listens on. CLI override: `--port`. |
|
|
14
|
+
| `ALLOWED_HOSTS` | when host ≠ loopback | derived | 1 | Comma-separated `host:port` allowlist for the Host-header gate. Reverse-proxy hostnames go here. |
|
|
15
|
+
| `STORAGE_MODE` | no | `filesystem` | 1+ | `filesystem` (Phase 1) or `postgres` (Phase 2+). Audit log + memory backend. |
|
|
16
|
+
| `SESSION_BACKEND` | no | `memory` | 1+ | `memory` (Phase 1) or `redis` (Phase 3+). Wizard session + per-user state. |
|
|
17
|
+
| `AGENT_CONFIG_PROJECT_ROOT` | no | `/var/lib/agent-config/runtime` | 1 | Mountpoint the container treats as the consumer "project root". |
|
|
18
|
+
| `AGENT_CONFIG_GUI_NO_OPEN` | no | `1` (in image) | 1 | Set to suppress the browser-launch attempt — required in headless containers. |
|
|
19
|
+
| `AUTH_MODE` | no | `none` | 2 | `none` \| `oidc` \| `saml`. **Not yet read by the server** — placeholder for Phase 2. |
|
|
20
|
+
| `OIDC_ISSUER_URL` | yes when `AUTH_MODE=oidc` | — | 2 | OIDC discovery URL. Not yet consumed. |
|
|
21
|
+
| `OIDC_CLIENT_ID` | yes when `AUTH_MODE=oidc` | — | 2 | Not yet consumed. |
|
|
22
|
+
| `OIDC_CLIENT_SECRET` | yes when `AUTH_MODE=oidc` | — | 2 | Not yet consumed. Read from secret manager only. |
|
|
23
|
+
| `POLICY_PATH` | no | `/etc/event4u/policy.yaml` | 3 | Central org-policy YAML mount path. **Not yet read by the server** — placeholder for Phase 3. |
|
|
24
|
+
| `DATABASE_URL` | yes when `STORAGE_MODE=postgres` | — | 2+ | Postgres connection string. Compose-default points at the bundled service. |
|
|
25
|
+
| `REDIS_URL` | yes when `SESSION_BACKEND=redis` | — | 3+ | Redis connection string. Compose-default points at the bundled service. |
|
|
26
|
+
|
|
27
|
+
## What ships honoring these vs not
|
|
28
|
+
|
|
29
|
+
**Honored today (Phase 1):**
|
|
30
|
+
|
|
31
|
+
- `BIND_HOST` — server respects `--host` flag and `BIND_HOST` env.
|
|
32
|
+
- `GUI_PORT` / `--port` — server listens on this port.
|
|
33
|
+
- `ALLOWED_HOSTS` — `Host:`-header allowlist for the GUI gate.
|
|
34
|
+
- `STORAGE_MODE` / `SESSION_BACKEND` — surfaced in `/api/v1/health`
|
|
35
|
+
responses but **storage and session implementations still default
|
|
36
|
+
to filesystem and memory**. Setting them to `postgres` / `redis`
|
|
37
|
+
in Phase 1 has no effect on storage behavior (and the health
|
|
38
|
+
response will tell you so).
|
|
39
|
+
- `AGENT_CONFIG_PROJECT_ROOT` — the container's runtime mount.
|
|
40
|
+
- `AGENT_CONFIG_GUI_NO_OPEN` — auto-set to `1` in the shipped image
|
|
41
|
+
so the wizard does not try to `xdg-open` a browser from inside a
|
|
42
|
+
container.
|
|
43
|
+
|
|
44
|
+
**Documented now, wired later:**
|
|
45
|
+
|
|
46
|
+
- `AUTH_MODE` and its OIDC dependents — Phase 2.
|
|
47
|
+
- `POLICY_PATH` — Phase 3.
|
|
48
|
+
- `DATABASE_URL` / `REDIS_URL` — Phase 2 / Phase 3 respectively.
|
|
49
|
+
|
|
50
|
+
## Security posture
|
|
51
|
+
|
|
52
|
+
- **Secrets stay in env or a mounted secret manager.** Never bake
|
|
53
|
+
`OIDC_CLIENT_SECRET`, `DATABASE_URL` with a password, or
|
|
54
|
+
`POSTGRES_PASSWORD` into the image. Compose uses host-env or
|
|
55
|
+
`.env` files; production uses your secrets manager of choice.
|
|
56
|
+
- **`BIND_HOST=0.0.0.0` without `ALLOWED_HOSTS`** — server refuses
|
|
57
|
+
to start. This is intentional: a non-loopback bind without a
|
|
58
|
+
Host-header allowlist is an open invitation for DNS rebinding.
|
|
59
|
+
See [`ADR-021`](../decisions/ADR-021-deployment-shape.md) § Security.
|
|
60
|
+
- **`/api/v1/health`** is the only endpoint exempt from CSRF, but it
|
|
61
|
+
is rate-limited to 1 request per second per remote IP and exposes
|
|
62
|
+
no secrets.
|
|
63
|
+
|
|
64
|
+
## Cross-references
|
|
65
|
+
|
|
66
|
+
- Image + compose: [`packages/core/deploy/`](../../packages/core/deploy/)
|
|
67
|
+
- ADR: [`ADR-021-deployment-shape.md`](../decisions/ADR-021-deployment-shape.md)
|
|
68
|
+
- Operator quickstart: [`quickstart.md`](quickstart.md)
|
|
69
|
+
- Policy cookbook (Phase 3 preview): [`policy-cookbook.md`](policy-cookbook.md)
|
|
70
|
+
- Connector setup (Phase 5 preview): [`connector-setup.md`](connector-setup.md)
|