@event4u/agent-config 3.3.0 → 4.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/README.md +2 -2
- package/.agent-src/commands/agent-handoff.md +31 -2
- package/.agent-src/commands/agent-status.md +5 -5
- package/.agent-src/commands/agents/audit.md +8 -8
- package/.agent-src/commands/agents/init.md +25 -1
- package/.agent-src/commands/agents/optimize.md +3 -3
- package/.agent-src/commands/agents/user.md +1 -1
- package/.agent-src/commands/agents.md +1 -1
- package/.agent-src/commands/analyze-reference-repo.md +1 -1
- package/.agent-src/commands/check-current-md.md +8 -8
- package/.agent-src/commands/{compress.md → condense.md} +55 -55
- package/.agent-src/commands/context/create.md +7 -4
- package/.agent-src/commands/context/refactor.md +3 -1
- package/.agent-src/commands/feature/dev.md +1 -1
- package/.agent-src/commands/feature/explore.md +1 -1
- package/.agent-src/commands/feature/plan.md +10 -8
- package/.agent-src/commands/feature/refactor.md +3 -1
- package/.agent-src/commands/feature/roadmap.md +7 -4
- package/.agent-src/commands/fix/portability.md +3 -3
- package/.agent-src/commands/fix/refs.md +4 -4
- package/.agent-src/commands/ghostwriter.md +2 -2
- package/.agent-src/commands/memory/learn-low-impact.md +3 -3
- package/.agent-src/commands/module/explore.md +34 -8
- package/.agent-src/commands/optimize/agents-dir.md +9 -7
- package/.agent-src/commands/optimize/augmentignore.md +2 -2
- package/.agent-src/commands/optimize/skills.md +9 -9
- package/.agent-src/commands/post-as.md +1 -1
- package/.agent-src/commands/project-analyze.md +2 -2
- package/.agent-src/commands/project-health.md +3 -2
- package/.agent-src/commands/research/deep.md +1 -1
- package/.agent-src/commands/research/report.md +1 -1
- package/.agent-src/commands/research.md +1 -1
- package/.agent-src/commands/roadmap/ai-council.md +1 -1
- package/.agent-src/commands/roadmap/create.md +9 -4
- package/.agent-src/commands/rule-compliance-audit.md +1 -1
- package/.agent-src/commands/upstream-contribute.md +14 -14
- package/.agent-src/commands/video/from-script.md +1 -1
- package/.agent-src/commands/video/scene.md +1 -1
- package/.agent-src/commands/video/stitch.md +1 -1
- package/.agent-src/commands/video/storyboard.md +1 -1
- package/.agent-src/commands/video.md +1 -1
- package/.agent-src/contexts/augment-infrastructure.md +1 -1
- package/.agent-src/contexts/authority/commit-mechanics.md +15 -0
- package/.agent-src/contexts/authority/kernel-rule-edits.md +3 -3
- package/.agent-src/contexts/authority/scope-mechanics.md +1 -1
- package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +28 -28
- package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +4 -4
- package/.agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
- package/.agent-src/contexts/contracts/artifact-engagement-flow.md +6 -6
- package/.agent-src/contexts/contracts/command-suggestion-flow.md +3 -3
- package/.agent-src/contexts/contracts/emergency-triage-block.md +4 -4
- package/.agent-src/contexts/contracts/frugality-charter.md +3 -3
- package/.agent-src/contexts/documentation-hierarchy.md +14 -7
- package/.agent-src/contexts/execution/autonomy-examples.md +1 -1
- package/.agent-src/contexts/execution/cheap-question-mechanics.md +39 -2
- package/.agent-src/contexts/execution/roadmap-process-loop.md +28 -5
- package/.agent-src/contexts/override-system.md +5 -5
- package/.agent-src/ghostwriter/fictional-fixture-v1.md +1 -1
- package/.agent-src/personas/advisors/first-principles.md +1 -1
- package/.agent-src/personas/hollywood-director.md +1 -1
- package/.agent-src/rules/architecture.md +5 -1
- package/.agent-src/rules/augment-edit-discipline.md +5 -5
- package/.agent-src/rules/augment-source-of-truth.md +15 -15
- package/.agent-src/rules/commit-conventions.md +1 -1
- package/.agent-src/rules/commit-policy.md +10 -0
- package/.agent-src/rules/domain-adoption-policy.md +3 -3
- package/.agent-src/rules/fast-path-marker-visibility.md +3 -3
- package/.agent-src/rules/finance-safety-floor.md +1 -1
- package/.agent-src/rules/framework-neutrality-in-generic-skills.md +8 -8
- package/.agent-src/rules/git-history-discipline.md +1 -1
- package/.agent-src/rules/improve-before-implement.md +2 -2
- package/.agent-src/rules/language-and-tone.md +2 -2
- package/.agent-src/rules/media-governance-routing.md +5 -5
- package/.agent-src/rules/no-attribution-footers.md +1 -0
- package/.agent-src/rules/no-cheap-questions.md +3 -0
- package/.agent-src/rules/no-decorative-emojis-in-git-surfaces.md +111 -0
- package/.agent-src/rules/no-pr-progress-comments.md +118 -0
- package/.agent-src/rules/no-roadmap-references.md +3 -3
- package/.agent-src/rules/non-destructive-by-default.md +1 -1
- package/.agent-src/rules/persona-governance.md +3 -3
- package/.agent-src/rules/preservation-guard.md +15 -15
- package/.agent-src/rules/roadmap-ci-steps-policy.md +7 -3
- package/.agent-src/rules/rule-type-governance.md +1 -1
- package/.agent-src/rules/skill-quality.md +1 -1
- package/.agent-src/rules/{caveman-speak.md → telegraph-speak.md} +15 -15
- package/.agent-src/rules/token-optimizer-maintenance.md +6 -6
- package/.agent-src/skills/agent-docs-writing/SKILL.md +17 -11
- package/.agent-src/skills/agents-md-thin-root/SKILL.md +9 -9
- package/.agent-src/skills/check-refs/SKILL.md +2 -2
- package/.agent-src/skills/code-refactoring/SKILL.md +2 -2
- package/.agent-src/skills/command-writing/SKILL.md +19 -19
- package/.agent-src/skills/comp-banding/SKILL.md +1 -1
- package/.agent-src/skills/condense-memory/SKILL.md +131 -0
- package/.agent-src/skills/context-authoring/SKILL.md +2 -2
- package/.agent-src/skills/context-document/SKILL.md +5 -3
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +3 -3
- package/.agent-src/skills/description-assist/SKILL.md +2 -2
- package/.agent-src/skills/git-workflow/SKILL.md +1 -1
- package/.agent-src/skills/guideline-writing/SKILL.md +5 -5
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
- package/.agent-src/skills/lint-skills/SKILL.md +3 -3
- package/.agent-src/skills/md-language-check/SKILL.md +2 -2
- package/.agent-src/skills/module-detect-on-the-fly/SKILL.md +138 -0
- package/.agent-src/skills/module-management/SKILL.md +166 -94
- package/.agent-src/skills/override-management/SKILL.md +1 -1
- package/.agent-src/skills/persona-writing/SKILL.md +5 -5
- package/.agent-src/skills/positioning-strategy/SKILL.md +1 -1
- package/.agent-src/skills/project-docs/SKILL.md +6 -4
- package/.agent-src/skills/readme-reviewer/SKILL.md +2 -2
- package/.agent-src/skills/roadmap-management/SKILL.md +13 -1
- package/.agent-src/skills/roadmap-writing/SKILL.md +4 -2
- package/.agent-src/skills/rule-refactor/SKILL.md +5 -5
- package/.agent-src/skills/rule-writing/SKILL.md +18 -18
- package/.agent-src/skills/script-writing/SKILL.md +1 -1
- package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +6 -6
- package/.agent-src/skills/skill-management/SKILL.md +21 -21
- package/.agent-src/skills/skill-reviewer/SKILL.md +2 -2
- package/.agent-src/skills/skill-writing/SKILL.md +8 -8
- package/.agent-src/skills/skill-writing/evals/triggers.json +1 -1
- package/.agent-src/skills/token-optimizer/SKILL.md +4 -4
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +1 -1
- package/.agent-src/skills/upstream-contribute/SKILL.md +17 -17
- package/.agent-src/templates/AGENTS.md +1 -0
- package/.agent-src/templates/agent-settings.md +24 -13
- package/.agent-src/templates/agents/agent-project-settings.example.yml +61 -2
- package/.agent-src/templates/command.md +5 -5
- package/.agent-src/templates/contexts.md +1 -1
- package/.agent-src/templates/copilot-instructions.md +8 -8
- package/.agent-src/templates/features.md +1 -1
- package/.agent-src/templates/hooks/pre-commit-frontmatter +2 -2
- package/.agent-src/templates/hooks/pre-commit-roadmap-progress +3 -3
- package/.agent-src/templates/persona.md +2 -2
- package/.agent-src/templates/roadmaps.md +1 -1
- package/.agent-src/templates/rule.md +13 -13
- package/.agent-src/templates/scripts/memory_lookup.py +1 -1
- package/.agent-src/templates/scripts/memory_status.py +2 -2
- package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +195 -1
- package/.agent-src/templates/scripts/work_engine/orchestration.py +1 -1
- package/.agent-src/templates/skill-archive-note.md +5 -5
- package/.agent-src/templates/skill.md +1 -1
- package/.claude-plugin/marketplace.json +4 -4
- package/AGENTS.md +16 -17
- package/CHANGELOG.md +181 -3
- package/CONTRIBUTING.md +31 -12
- package/README.md +18 -10
- package/config/agent-settings.template.yml +22 -2
- package/config/discovery/unassigned-artefacts.yml +24 -24
- package/config/profiles/full.ini +1 -1
- package/dist/cli/agent-config.js +52 -3
- package/dist/cli/agent-config.js.map +1 -1
- package/dist/cli/commands/uiServe.js +9 -0
- package/dist/cli/commands/uiServe.js.map +1 -1
- package/dist/cli/registry.js +2 -1
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +649 -606
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +439 -437
- package/dist/discovery/trust-report.md +5 -5
- package/dist/discovery/workspaces.json +450 -448
- package/dist/install/apply.js +238 -0
- package/dist/install/apply.js.map +1 -0
- package/dist/install/atomic.js +92 -0
- package/dist/install/atomic.js.map +1 -0
- package/dist/install/bridges/augment.js +20 -0
- package/dist/install/bridges/augment.js.map +1 -0
- package/dist/install/bridges/claude.js +44 -0
- package/dist/install/bridges/claude.js.map +1 -0
- package/dist/install/bridges/cline.js +69 -0
- package/dist/install/bridges/cline.js.map +1 -0
- package/dist/install/bridges/copilot.js +28 -0
- package/dist/install/bridges/copilot.js.map +1 -0
- package/dist/install/bridges/cursor.js +34 -0
- package/dist/install/bridges/cursor.js.map +1 -0
- package/dist/install/bridges/gemini.js +39 -0
- package/dist/install/bridges/gemini.js.map +1 -0
- package/dist/install/bridges/index.js +88 -0
- package/dist/install/bridges/index.js.map +1 -0
- package/dist/install/bridges/marker-content.js +153 -0
- package/dist/install/bridges/marker-content.js.map +1 -0
- package/dist/install/bridges/markers.js +42 -0
- package/dist/install/bridges/markers.js.map +1 -0
- package/dist/install/bridges/types.js +31 -0
- package/dist/install/bridges/types.js.map +1 -0
- package/dist/install/bridges/vscode.js +26 -0
- package/dist/install/bridges/vscode.js.map +1 -0
- package/dist/install/bridges/windsurf.js +35 -0
- package/dist/install/bridges/windsurf.js.map +1 -0
- package/dist/install/conflict.js +196 -0
- package/dist/install/conflict.js.map +1 -0
- package/dist/install/detect.js +218 -0
- package/dist/install/detect.js.map +1 -0
- package/dist/install/paths.js +82 -0
- package/dist/install/paths.js.map +1 -0
- package/dist/install/plan.js +157 -0
- package/dist/install/plan.js.map +1 -0
- package/dist/install/txlog.js +140 -0
- package/dist/install/txlog.js.map +1 -0
- package/dist/install/types.js +19 -0
- package/dist/install/types.js.map +1 -0
- package/dist/install/wizard-plan.js +184 -0
- package/dist/install/wizard-plan.js.map +1 -0
- package/dist/mcp/registry-manifest.json +4 -4
- package/dist/router.json +67 -19
- package/dist/server/app.js +6 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/routes/install.js +547 -0
- package/dist/server/routes/install.js.map +1 -0
- package/dist/server/routes/wizard.js +301 -6
- package/dist/server/routes/wizard.js.map +1 -1
- package/dist/server/routes/workspace.js +396 -0
- package/dist/server/routes/workspace.js.map +1 -0
- package/dist/server/schemas/settings.js +4 -3
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/ui/assets/index-BXZILUxe.css +1 -0
- package/dist/ui/assets/index-DLEuEW1V.js +35 -0
- package/dist/ui/assets/index-DLEuEW1V.js.map +1 -0
- package/dist/ui/index.html +2 -2
- package/docs/MIGRATION.md +1 -1
- package/docs/adrs/cost/0001-hard-stop-hook.md +1 -1
- package/docs/adrs/router/0001-three-tier-routing.md +4 -4
- package/docs/adrs/schema/0001-json-schema-frontmatter.md +1 -1
- package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +4 -4
- package/docs/adrs/{caveman → telegraph}/0001-default-off-until-bench.md +9 -9
- package/docs/adrs/telegraph/README.md +9 -0
- package/docs/architecture/augment-projection.md +4 -4
- package/docs/architecture/claude-bundle.md +1 -1
- package/docs/architecture/current-onboard-baseline.md +3 -3
- package/docs/architecture/multi-tool-projection.md +10 -10
- package/docs/architecture/source-projection.md +27 -27
- package/docs/architecture.md +19 -15
- package/docs/archive/CHANGELOG-pre-2.11.0.md +2 -2
- package/docs/archive/CHANGELOG-pre-2.15.0.md +3 -3
- package/docs/archive/CHANGELOG-pre-2.16.0.md +1 -1
- package/docs/archive/CHANGELOG-pre-2.2.0.md +70 -70
- package/docs/archive/CHANGELOG-pre-2.20.0.md +2 -2
- package/docs/archive/CHANGELOG-pre-2.25.0.md +15 -15
- package/docs/archive/CHANGELOG-pre-3.0.0.md +4 -4
- package/docs/archive/CHANGELOG-pre-3.1.0.md +2 -2
- package/docs/archive/CHANGELOG-pre-3.2.0.md +3 -3
- package/docs/benchmark.md +65 -0
- package/docs/benchmarks.md +16 -16
- package/docs/catalog.md +17 -15
- package/docs/contracts/CHANGELOG-conventions.md +1 -1
- package/docs/contracts/STABILITY.md +2 -2
- package/docs/contracts/adoption-signal-floor.md +110 -0
- package/docs/contracts/adr-chat-history-split.md +4 -4
- package/docs/contracts/adr-command-suggestion.md +4 -4
- package/docs/contracts/adr-gtm-context-spine.md +1 -1
- package/docs/contracts/adr-implement-ticket-runtime.md +4 -4
- package/docs/contracts/adr-install-user-type-axis.md +1 -1
- package/docs/contracts/adr-layout.md +2 -2
- package/docs/contracts/adr-product-ui-track.md +10 -10
- package/docs/contracts/adr-user-types-axis.md +3 -3
- package/docs/contracts/adr-wing4-context-spine.md +1 -1
- package/docs/contracts/agent-memory-contract.md +3 -3
- package/docs/contracts/agents-md-tech-stack.md +2 -2
- package/docs/contracts/ai-council-config.md +2 -2
- package/docs/contracts/at-rest-encryption.md +4 -0
- package/docs/contracts/audit-log-v1.md +1 -1
- package/docs/contracts/benchmark-ab-contract.md +101 -0
- package/docs/contracts/benchmark-corpus-spec.md +1 -1
- package/docs/contracts/branch-protection-policy.md +98 -0
- package/docs/contracts/ci-cost-budget.md +106 -0
- package/docs/contracts/ci-green-floor.md +141 -0
- package/docs/contracts/command-clusters.md +6 -6
- package/docs/contracts/command-surface-tiers.md +2 -2
- package/docs/contracts/command-taxonomy.md +2 -2
- package/docs/contracts/{compression-default-kill-criterion.md → condensation-default-kill-criterion.md} +29 -29
- package/docs/contracts/config-presets.md +1 -1
- package/docs/contracts/context-paths.md +3 -3
- package/docs/contracts/context-spine.md +1 -1
- package/docs/contracts/cost-summary-schema.md +12 -12
- package/docs/contracts/cross-wing-handoff.md +4 -4
- package/docs/contracts/daily-workspace.md +4 -0
- package/docs/contracts/decision-trace-v1.md +2 -2
- package/docs/contracts/discovery-manifest.md +4 -4
- package/docs/contracts/explain-modes.md +4 -0
- package/docs/contracts/file-ownership-matrix.json +3493 -3318
- package/docs/contracts/file-ownership-matrix.md +3 -3
- package/docs/contracts/frontmatter-contract.md +4 -4
- package/docs/contracts/ghostwriter-schema.md +3 -3
- package/docs/contracts/gui-wizard.md +1 -1
- package/docs/contracts/harness-expectations.md +123 -0
- package/docs/contracts/host-agent-protocol.md +4 -0
- package/docs/contracts/implement-ticket-flow.md +9 -9
- package/docs/contracts/install-scopes.md +77 -0
- package/docs/contracts/iron-law-overrides.txt +1 -1
- package/docs/contracts/kernel-membership.md +26 -26
- package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
- package/docs/contracts/linter-structural-model.md +2 -2
- package/docs/contracts/load-context-budget-model.md +4 -4
- package/docs/contracts/load-context-schema.md +13 -13
- package/docs/contracts/local-analytics.md +4 -0
- package/docs/contracts/local-knowledge-ingestion.md +1 -1
- package/docs/contracts/mcp-cloud-scope.md +2 -2
- package/docs/contracts/mcp-phase-1-scope.md +3 -3
- package/docs/contracts/measurement-baseline.md +5 -5
- package/docs/contracts/mental-models.md +30 -30
- package/docs/contracts/multi-tool-projection-fidelity.md +4 -4
- package/docs/contracts/namespace.md +4 -4
- package/docs/contracts/orchestration-dsl-v1.md +7 -7
- package/docs/contracts/package-self-orientation.md +12 -12
- package/docs/contracts/persona-schema.md +6 -6
- package/docs/contracts/pilot/language-and-tone.md +1 -1
- package/docs/contracts/plain-language-surface.md +117 -0
- package/docs/contracts/profile-system.md +3 -3
- package/docs/contracts/release-pr-gating.md +103 -0
- package/docs/contracts/role-experience.md +3 -3
- package/docs/contracts/rule-classification.md +13 -13
- package/docs/contracts/rule-interactions.md +4 -4
- package/docs/contracts/rule-interactions.yml +30 -30
- package/docs/contracts/rule-priority-hierarchy.md +13 -13
- package/docs/contracts/rule-router.md +2 -2
- package/docs/contracts/safety-model.md +1 -1
- package/docs/contracts/skill-distribution-channels.md +61 -0
- package/docs/contracts/skill-domains.md +2 -2
- package/docs/contracts/smoke-contracts.md +5 -5
- package/docs/contracts/telegraph-telemetry.md +83 -0
- package/docs/contracts/trust-and-safety.md +5 -5
- package/docs/contracts/ui-stack-extension.md +7 -7
- package/docs/contracts/ui-track-flow.md +9 -9
- package/docs/contracts/user-type-schema.md +4 -4
- package/docs/contracts/workflow-packs.md +4 -4
- package/docs/contracts/workspace-documents.md +4 -0
- package/docs/customization.md +28 -8
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +6 -6
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +11 -11
- package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +2 -2
- package/docs/decisions/ADR-004-rule-governance-pruning.md +4 -4
- package/docs/decisions/ADR-005-subagent-worktrees.md +7 -7
- package/docs/decisions/ADR-011-domain-pack-readiness.md +6 -6
- package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +3 -3
- package/docs/decisions/ADR-015-discovery-manifest-contract.md +3 -3
- package/docs/decisions/ADR-017-monorepo-physical-layout.md +10 -10
- package/docs/decisions/ADR-018-trust-and-safety-layer.md +6 -6
- package/docs/decisions/ADR-019-router-json-dist-location.md +2 -2
- package/docs/decisions/ADR-020-global-only-consumer-scope.md +2 -2
- package/docs/decisions/ADR-021-deployment-shape.md +1 -1
- package/docs/decisions/ADR-022-daily-workspace-decomposition.md +1 -1
- package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +2 -2
- package/docs/decisions/ADR-028-root-layout.md +7 -7
- package/docs/decisions/ADR-029-multi-workspace-deferred.md +2 -2
- package/docs/decisions/ADR-rule-kernel-and-router.md +5 -5
- package/docs/deploy/team-deployment-posture.md +20 -0
- package/docs/development.md +17 -17
- package/docs/distribution/registries.md +32 -0
- package/docs/distribution/registry-submissions.md +85 -0
- package/docs/distribution/telemetry-schema.md +1 -1
- package/docs/getting-started-by-role.md +45 -3
- package/docs/getting-started.md +2 -2
- package/docs/guidelines/agent-infra/5w2h-analysis.md +3 -3
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
- package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +3 -3
- package/docs/guidelines/agent-infra/carve-out-predicates.md +3 -3
- package/docs/guidelines/agent-infra/critical-thinking.md +4 -4
- package/docs/guidelines/agent-infra/direct-answers-demos.md +1 -1
- package/docs/guidelines/agent-infra/first-principles.md +2 -2
- package/docs/guidelines/agent-infra/inversion-thinking.md +5 -5
- package/docs/guidelines/agent-infra/layered-settings.md +56 -2
- package/docs/guidelines/agent-infra/mental-models.md +3 -3
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +2 -2
- package/docs/guidelines/agent-infra/rule-type-governance.md +1 -1
- package/docs/guidelines/agent-infra/scqa-framework.md +5 -5
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +2 -2
- package/docs/guidelines/agent-infra/six-hats.md +3 -3
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
- package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
- package/docs/guidelines/agent-infra/verify-before-complete-demos.md +1 -1
- package/docs/guidelines/augment-portability-patterns.md +4 -4
- package/docs/guidelines/cross-role-handoff.md +2 -2
- package/docs/guidelines/php/php-coding-patterns.md +1 -1
- package/docs/guidelines/prompt-templates.md +6 -6
- package/docs/maintainers/dev-mode.md +1 -1
- package/docs/mcp.md +1 -1
- package/docs/parity/bench.json +3 -3
- package/docs/parity/ruflo.md +2 -2
- package/docs/profiles.md +11 -11
- package/docs/quality.md +11 -11
- package/docs/safety.md +3 -3
- package/docs/setup/mcp-client-config.md +1 -1
- package/docs/setup/mcp-r2-bootstrap.md +1 -1
- package/docs/setup/mcp-server-docker.md +3 -3
- package/docs/setup/per-ide/windsurf.md +1 -1
- package/docs/skills-catalog.md +8 -7
- package/docs/troubleshooting.md +1 -1
- package/docs/walkthroughs/daily-workspace-a11y.md +87 -0
- package/llms.txt +7 -6
- package/package.json +1 -1
- package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
- package/scripts/_archive/README.md +2 -2
- package/scripts/_archive/_backfill_skill_domains.py +3 -3
- package/scripts/_archive/_bootstrap_tier_frontmatter.py +3 -3
- package/scripts/_archive/_p43_bodies.py +10 -10
- package/scripts/_archive/{_p43_compress.py → _p43_condense.py} +5 -5
- package/scripts/_archive/_p4_migrate.py +7 -7
- package/scripts/_archive/_phase2_shim_helper.py +1 -1
- package/scripts/_archive/_pilot_council_question.py +5 -5
- package/scripts/_cli/explain_last/inputs.py +1 -1
- 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 +195 -1
- package/scripts/_lib/agent_src.py +19 -19
- package/scripts/_lib/bench_ab_cache.py +162 -0
- package/scripts/_lib/bench_ab_scoring.py +209 -0
- package/scripts/_lib/{bench_caveman.py → bench_telegraph.py} +21 -21
- package/scripts/_lib/{bench_caveman_report.py → bench_telegraph_report.py} +21 -21
- package/scripts/_lib/claude_desktop_bundler.py +5 -5
- package/scripts/_lib/module_detection.py +223 -0
- package/scripts/_lib/scope_guard.sh +162 -0
- package/scripts/_phase4_bucket.py +3 -3
- package/scripts/_pilot_measure.py +4 -4
- package/scripts/_tmp_scan_framework_leakage.py +1 -1
- package/scripts/adoption_report.py +195 -0
- package/scripts/adoption_snapshot.py +219 -0
- package/scripts/adoption_status.py +166 -0
- package/scripts/ai-video/lib/parse-blueprint.sh +1 -1
- package/scripts/ai_council/advisors.py +5 -5
- package/scripts/ai_council/compile_corpus.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +3 -3
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_review.py +2 -2
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_inject_quiet_flag.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_v2.sh +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_verbosity.sh +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_nondestructive_inline_audit.py +3 -3
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_per_task.sh +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase6_trigger_jaccard.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_budget_rebalance.py +6 -6
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_rebalancing_audit.py +1 -1
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +6 -6
- package/scripts/annotate_discovery.py +13 -13
- package/scripts/apply_modules_config.py +290 -0
- package/scripts/audit_adr_coverage.py +2 -2
- package/scripts/audit_auto_rules.py +2 -2
- package/scripts/audit_cloud_compatibility.py +3 -3
- package/scripts/audit_command_surface.py +9 -9
- package/scripts/audit_likelihood.py +2 -2
- package/scripts/audit_user_type_axis.py +2 -2
- package/scripts/bench_ab_cache_dispatch.py +68 -0
- package/scripts/bench_ab_clone.py +170 -0
- package/scripts/bench_ab_diff.py +227 -0
- package/scripts/bench_ab_integrity.py +143 -0
- package/scripts/bench_ab_run.py +235 -0
- package/scripts/bench_ab_task_runner.py +369 -0
- package/scripts/bench_ab_tracka_run.py +202 -0
- package/scripts/{bench_compress_memory.py → bench_condense_memory.py} +16 -16
- package/scripts/bench_run.py +33 -33
- package/scripts/bench_runner.py +2 -2
- package/scripts/bootstrap.sh +99 -0
- package/scripts/build_cloud_bundle.py +6 -6
- package/scripts/build_discovery_manifest.py +7 -7
- package/scripts/build_linear_digest.py +3 -3
- package/scripts/build_rule_trigger_matrix.py +8 -8
- package/scripts/chat_history.py +5 -5
- package/scripts/check_always_budget.py +11 -5
- package/scripts/check_augment_description_cap.py +3 -3
- package/scripts/check_cluster_patterns.py +2 -2
- package/scripts/check_command_count_messaging.py +3 -3
- package/scripts/{check_compression.py → check_condensation.py} +34 -34
- package/scripts/{check_compressed_paths.py → check_condensed_paths.py} +8 -8
- package/scripts/check_context_paths.py +7 -7
- package/scripts/check_council_layout.py +2 -2
- package/scripts/check_council_references.py +9 -9
- package/scripts/check_iron_law_prominence.py +2 -2
- package/scripts/check_kernel_rule_bundle.py +2 -2
- package/scripts/check_module_management_neutral.py +149 -0
- package/scripts/check_no_roadmap_refs.py +9 -9
- package/scripts/check_portability.py +3 -3
- package/scripts/check_public_catalog_links.py +4 -4
- package/scripts/check_references.py +7 -6
- package/scripts/check_release_pr_shape.py +112 -0
- package/scripts/check_reply_consistency.py +3 -3
- package/scripts/check_safety_floor_untouched.py +1 -1
- package/scripts/check_template_pin_drift.py +5 -5
- package/scripts/check_token_optimizer_freshness.py +3 -3
- package/scripts/ci_status.py +301 -0
- package/scripts/ci_time_ratio.py +1 -1
- package/scripts/cleanup_other_scope.sh +146 -0
- package/scripts/compile_router.py +10 -10
- package/scripts/{compress.py → condense.py} +64 -64
- package/scripts/condense.sh +18 -0
- package/scripts/{compress_memory.py → condense_memory.py} +33 -33
- package/scripts/config/presets.py +2 -2
- package/scripts/config/profiles.py +1 -1
- package/scripts/cost_by_conversation.py +3 -3
- package/scripts/cost_summary.py +7 -7
- package/scripts/count_token_optimizer_usage.sh +1 -1
- package/scripts/gen_discovery_baseline.py +5 -5
- package/scripts/generate_index.py +6 -6
- package/scripts/generate_ownership_matrix.py +10 -10
- package/scripts/generate_pack_manifests.py +1 -1
- package/scripts/ghostwriter_fixture_allowlist.txt +1 -1
- package/scripts/install +3 -3
- package/scripts/install-hooks.sh +6 -6
- package/scripts/install.py +76 -11
- package/scripts/install.sh +187 -1
- package/scripts/inventory_frontmatter.py +2 -2
- package/scripts/iron_law_sha.py +3 -3
- package/scripts/lint_agents_layout.py +14 -7
- package/scripts/lint_agents_md.py +4 -4
- package/scripts/lint_archived_skills.py +3 -3
- package/scripts/lint_artefact_frontmatter.py +2 -2
- package/scripts/lint_bench_ab.py +172 -0
- package/scripts/lint_bench_corpus.py +1 -1
- package/scripts/lint_command_tiers.py +5 -5
- package/scripts/lint_context_spine_usage.py +1 -1
- package/scripts/lint_framework_leakage.py +7 -7
- package/scripts/lint_framework_leakage_allowlist.json +144 -84
- package/scripts/lint_ghostwriter_source.py +3 -3
- package/scripts/lint_handoffs.py +1 -1
- package/scripts/lint_load_context.py +11 -11
- package/scripts/lint_media_policy_linkage.py +5 -5
- package/scripts/lint_namespace.py +1 -1
- package/scripts/lint_no_new_atomic_commands.py +2 -2
- package/scripts/lint_orchestration_dsl.py +1 -1
- package/scripts/lint_pack_boundaries.py +2 -2
- package/scripts/lint_persona_governance.py +4 -4
- package/scripts/lint_role_experiences.py +237 -0
- package/scripts/lint_rule_interactions.py +2 -2
- package/scripts/lint_rule_tiers.py +1 -1
- package/scripts/lint_trust_coherence.py +2 -2
- package/scripts/mcp_registry_submit.sh +187 -0
- package/scripts/mcp_server/tools.py +1 -1
- package/scripts/measure_frugality_savings.py +10 -10
- package/scripts/measure_patterns.py +1 -1
- package/scripts/measure_projection_bytes.py +5 -5
- package/scripts/measure_rule_budget.py +3 -3
- package/scripts/measure_skill_reduction.py +1 -1
- package/scripts/memory_lookup.py +1 -1
- package/scripts/memory_status.py +2 -2
- package/scripts/migrate_command_suggestions.py +3 -3
- package/scripts/mine_session.py +1 -1
- package/scripts/move_artefact.py +3 -3
- package/scripts/new_skill.py +2 -2
- package/scripts/pack_mcp_content.py +9 -9
- package/scripts/plan_physical_move.py +6 -6
- package/scripts/print_required_checks.py +196 -0
- package/scripts/probe_skill_registration.py +413 -0
- package/scripts/propose_modules_config.py +145 -0
- package/scripts/prototype_lint_contradictions.py +1 -1
- package/scripts/recruit_preflight.sh +152 -0
- package/scripts/refine_ticket_detect.py +3 -3
- package/scripts/release.py +20 -0
- package/scripts/render_benchmark_md.py +308 -0
- package/scripts/roadmap_progress_hook.py +1 -1
- package/scripts/run_skill_evals.py +2 -2
- package/scripts/runtime_registry.py +4 -4
- package/scripts/schemas/command.schema.json +4 -4
- package/scripts/schemas/rule.schema.json +5 -5
- package/scripts/schemas/skill.schema.json +3 -3
- package/scripts/schemas/user-type.schema.json +1 -1
- package/scripts/score_skill_selection.py +1 -1
- package/scripts/skill_collision_clusters.py +2 -2
- package/scripts/skill_linter.py +81 -81
- package/scripts/skill_overlap.py +5 -5
- package/scripts/skill_tools/audit_persona_coverage.py +2 -2
- package/scripts/skill_tools/audit_user_type_coverage.py +2 -2
- package/scripts/skill_tools/run_block_d_eval.py +1 -1
- package/scripts/skill_tools/score_skill_relevance.py +1 -1
- package/scripts/skill_tools/suggest_skill_for_task.py +1 -1
- package/scripts/skill_trigger_eval.py +3 -3
- package/scripts/smoke/kernel.sh +7 -1
- package/scripts/smoke/router.sh +5 -5
- package/scripts/smoke/skills.sh +1 -1
- package/scripts/smoke_quickstart.py +1 -1
- package/scripts/snapshot_agent_outputs.py +3 -3
- package/scripts/spotcheck_thin_root.py +1 -1
- package/scripts/{caveman_stats.py → telegraph_stats.py} +18 -18
- package/scripts/update_counts.py +1 -1
- package/scripts/validate_decision_engine.py +1 -1
- package/scripts/validate_frontmatter.py +1 -1
- package/scripts/validate_safe_paths.py +3 -3
- package/scripts/{validate_caveman_carveouts.py → validate_telegraph_carveouts.py} +7 -7
- package/scripts/verify_roadmap_closure.py +6 -6
- package/templates/consumer-settings/ONBOARDING.md +41 -0
- package/.agent-src/commands/install-via-agent.md +0 -129
- package/.agent-src/skills/compress-memory/SKILL.md +0 -131
- package/dist/ui/assets/index-D-DY1ywI.js +0 -35
- package/dist/ui/assets/index-D-DY1ywI.js.map +0 -1
- package/dist/ui/assets/index-Dqfhmg-d.css +0 -1
- package/docs/adrs/caveman/README.md +0 -9
- package/docs/contracts/caveman-telemetry.md +0 -83
- package/scripts/compress.sh +0 -18
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
stability: beta
|
|
3
|
+
keep-beta-until: 2026-08-26
|
|
4
|
+
roadmap_ref: road-to-frictionless-employee-workspace.md
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plain-Language Surface Contract
|
|
8
|
+
|
|
9
|
+
> **Status** · v0 / beta · 2026-05-26. Defines the user-facing
|
|
10
|
+
> relabel matrix for non-developer audiences. Phase C of
|
|
11
|
+
> `road-to-frictionless-employee-workspace.md`. The matrix is the
|
|
12
|
+
> single source of truth; lint enforcement lives in
|
|
13
|
+
> `scripts/lint_role_experiences.py --plain-language`.
|
|
14
|
+
|
|
15
|
+
## What this is
|
|
16
|
+
|
|
17
|
+
A relabel matrix between the package's **technical vocabulary**
|
|
18
|
+
(council, trust, packs, orchestration, contracts, advisory, …) and
|
|
19
|
+
the **plain-language labels** non-developer audiences (galabau owner,
|
|
20
|
+
sales rep, support agent, team leader, content creator, consultant)
|
|
21
|
+
expect to read.
|
|
22
|
+
|
|
23
|
+
The matrix does **not** rename the technical vocabulary in
|
|
24
|
+
developer-facing artefacts (`SKILL.md`, rule files, ADRs,
|
|
25
|
+
`docs/contracts/`, `docs/decisions/`, `agents/contexts/`, scripts).
|
|
26
|
+
The technical vocabulary earned its place there. The matrix only
|
|
27
|
+
governs three user-facing surfaces:
|
|
28
|
+
|
|
29
|
+
1. **Workspace UI strings** (`src/ui/pages/WorkspacePage.tsx` and its
|
|
30
|
+
child components — buttons, headings, tooltips, banner text).
|
|
31
|
+
2. **`docs/getting-started-by-role.md`** — the non-developer entry
|
|
32
|
+
surface. Engineering-lead and developer sections keep the
|
|
33
|
+
technical vocabulary.
|
|
34
|
+
3. **Role experience `index.md` bodies** (`agents/roles/<slug>/index.md`)
|
|
35
|
+
— the one-paragraph identity + first-task descriptions. The
|
|
36
|
+
`skills.yml` files are link-targets, not user prose, and keep
|
|
37
|
+
the skill IDs verbatim.
|
|
38
|
+
|
|
39
|
+
## Why
|
|
40
|
+
|
|
41
|
+
The 9.3/10 feedback round (2026-05-25) caught six jargon terms a
|
|
42
|
+
sales rep / galabau owner / support agent does not parse on first
|
|
43
|
+
read: `council`, `trust level`, `pack`, `orchestration`, `contract`,
|
|
44
|
+
`advisory`. Replacing them in the non-developer surface lifts the
|
|
45
|
+
"Daily workspace UX" score from 5.5/10 toward the ≥ 7.5/10 acceptance
|
|
46
|
+
gate; the technical vocabulary survives in the developer-facing
|
|
47
|
+
artefacts where reviewers, contributors, and agents continue to read
|
|
48
|
+
them.
|
|
49
|
+
|
|
50
|
+
## Matrix
|
|
51
|
+
|
|
52
|
+
| Technical term | Plain-language label | Applies to surface |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| `council` | `second-opinion check` | Workspace UI · role indices · getting-started |
|
|
55
|
+
| `trust level` | `reliability score` | Workspace UI · role indices · getting-started |
|
|
56
|
+
| `pack` | `ready-made setup` | Workspace UI · role indices · getting-started |
|
|
57
|
+
| `orchestration` | `multi-step workflow` | Workspace UI · role indices · getting-started |
|
|
58
|
+
| `contract` | `guarantee` | Workspace UI · role indices · getting-started |
|
|
59
|
+
| `advisory` | `recommendation` | Workspace UI · role indices · getting-started |
|
|
60
|
+
|
|
61
|
+
## Carve-outs — surfaces that keep the technical vocabulary
|
|
62
|
+
|
|
63
|
+
The matrix MUST NOT apply to:
|
|
64
|
+
|
|
65
|
+
- `.agent-src.uncondensed/`, `.agent-src/`, `.augment/`, `.claude/`,
|
|
66
|
+
`.cursor/`, `.windsurf/`, `.clinerules/` — all skill / rule /
|
|
67
|
+
command / persona artefacts.
|
|
68
|
+
- `docs/contracts/`, `docs/decisions/`, `docs/architecture.md`,
|
|
69
|
+
`docs/getting-started-laravel.md`, every other developer-facing
|
|
70
|
+
doc.
|
|
71
|
+
- `agents/contexts/`, `agents/roadmaps/`, `scripts/`, source code,
|
|
72
|
+
test fixtures, golden output files.
|
|
73
|
+
- The developer / engineering-lead sections inside
|
|
74
|
+
`docs/getting-started-by-role.md` — those readers are the audience
|
|
75
|
+
for the technical vocabulary.
|
|
76
|
+
- `agents/roles/<slug>/skills.yml` — the skill IDs are URL slugs,
|
|
77
|
+
not user prose. The `why:` strings stay neutral so the launcher's
|
|
78
|
+
shortlist rail is informative; both audiences read them.
|
|
79
|
+
|
|
80
|
+
## Lint enforcement
|
|
81
|
+
|
|
82
|
+
`scripts/lint_role_experiences.py --plain-language` scans every
|
|
83
|
+
`agents/roles/<slug>/index.md` body for the six jargon terms.
|
|
84
|
+
Frontmatter and fenced code blocks are excluded. Any hit fails the
|
|
85
|
+
lint with a pointer back to this contract. Phase C Step 5 wires the
|
|
86
|
+
flag into `task ci`.
|
|
87
|
+
|
|
88
|
+
## Tone scaffold
|
|
89
|
+
|
|
90
|
+
When a relabel feels awkward, default to the role's own language:
|
|
91
|
+
the galabau owner does not call something a "second-opinion check"
|
|
92
|
+
verbatim either, but they understand it instantly. Compare:
|
|
93
|
+
|
|
94
|
+
- **Technical:** "the council ruled this trust level is `community`."
|
|
95
|
+
- **Plain:** "the second-opinion check rated this reliability score
|
|
96
|
+
as community-built (less reviewed than core)."
|
|
97
|
+
|
|
98
|
+
The plain version is longer; that is the cost of readability for
|
|
99
|
+
non-developer audiences. Workspace UI strings stay short by carrying
|
|
100
|
+
the relabel without the explanation (the explanation lives in the
|
|
101
|
+
plain-explain right-rail toggle).
|
|
102
|
+
|
|
103
|
+
## Re-audit cadence
|
|
104
|
+
|
|
105
|
+
Re-audit on each of:
|
|
106
|
+
- A new jargon term entering the user-facing surface (caught either
|
|
107
|
+
by lint or by a feedback round).
|
|
108
|
+
- A role experience adding a section the matrix does not cover.
|
|
109
|
+
- A reviewer round (recruit-session) that names a relabel the matrix
|
|
110
|
+
missed.
|
|
111
|
+
|
|
112
|
+
## See also
|
|
113
|
+
|
|
114
|
+
- [`docs/getting-started-by-role.md`](../getting-started-by-role.md) — the entry surface.
|
|
115
|
+
- [`docs/contracts/role-experience.md`](role-experience.md) — role artefact shape.
|
|
116
|
+
- [`scripts/lint_role_experiences.py`](../../scripts/lint_role_experiences.py) — lint enforcement.
|
|
117
|
+
- `road-to-frictionless-employee-workspace.md` § Phase C — the roadmap step.
|
|
@@ -18,7 +18,7 @@ keep-beta-until: 2026-08-14
|
|
|
18
18
|
|
|
19
19
|
A **profile** declares the user's audience identity. Six seed profiles
|
|
20
20
|
ship; users can declare their own under
|
|
21
|
-
`.agent-src.
|
|
21
|
+
`.agent-src.uncondensed/profiles/<id>.yml`.
|
|
22
22
|
|
|
23
23
|
| `profile.id` | Audience | README entry-paragraph | Default `preset.id` |
|
|
24
24
|
|---|---|---|---|
|
|
@@ -101,7 +101,7 @@ command (Phase 1 item 3).
|
|
|
101
101
|
## User-defined profiles
|
|
102
102
|
|
|
103
103
|
A consumer project MAY ship a custom profile under
|
|
104
|
-
`.agent-src.
|
|
104
|
+
`.agent-src.uncondensed/profiles/<id>.yml`. Constraints:
|
|
105
105
|
|
|
106
106
|
- `id` MUST be unique across seed + user-defined profiles.
|
|
107
107
|
- Shape MUST match the seed contract above (audience / defaults / surface).
|
|
@@ -121,7 +121,7 @@ Only changes to the **seed set** require an ADR.
|
|
|
121
121
|
- A profile YAML references a non-existent `preset_id`.
|
|
122
122
|
- The seed-profile count diverges from this contract's table.
|
|
123
123
|
- `defaults.personas` references a persona id that does not exist
|
|
124
|
-
under `.agent-src.
|
|
124
|
+
under `.agent-src.uncondensed/personas/`.
|
|
125
125
|
|
|
126
126
|
## Non-goals
|
|
127
127
|
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Release-PR Gating Contract
|
|
2
|
+
|
|
3
|
+
> **Status:** active · **Owner:** maintainer (`scripts/release.py`) · **Opened:** 2026-05-26
|
|
4
|
+
>
|
|
5
|
+
> Source: `road-to-optimized-ci-and-release-gates.md` Phase A Step 1. Measured
|
|
6
|
+
> baseline (`gh run list --branch main --limit 50`): `Public Install Smoke`
|
|
7
|
+
> avg **413 s** (3-OS × 2-Node matrix), `Tests` avg **218 s** (Linux + macOS
|
|
8
|
+
> + Windows). Both trigger on `package.json`. Release PRs (`release/X.Y.Z`)
|
|
9
|
+
> only touch `package.json`, `CHANGELOG.md`, `marketplace.json`,
|
|
10
|
+
> `packages/*/pack.yaml`, `packages/*/README.md` — verified against PR #238
|
|
11
|
+
> (3.3.0). They cannot regress install or runtime behaviour by construction.
|
|
12
|
+
|
|
13
|
+
## Release-PR shape
|
|
14
|
+
|
|
15
|
+
A pull request qualifies as a **release PR** when **both** of the following
|
|
16
|
+
hold:
|
|
17
|
+
|
|
18
|
+
1. **Head branch matches** `^release/\d+\.\d+\.\d+$` — same regex as
|
|
19
|
+
`scripts/release.py` § `_RELEASE_BRANCH_RE`.
|
|
20
|
+
2. **Diff file set is a subset of the version-bump allowlist:**
|
|
21
|
+
- `package.json`
|
|
22
|
+
- `CHANGELOG.md`
|
|
23
|
+
- `.claude-plugin/marketplace.json`
|
|
24
|
+
- `packages/*/pack.yaml`
|
|
25
|
+
- `packages/*/README.md`
|
|
26
|
+
|
|
27
|
+
Both predicates are enforced by `scripts/check_release_pr_shape.py`
|
|
28
|
+
(stdlib-only, ≤ 150 LOC). The script exits 0 when both hold; non-zero with
|
|
29
|
+
a per-file diff naming any out-of-allowlist entry otherwise.
|
|
30
|
+
|
|
31
|
+
## Cut surface — heavy jobs that skip on release PRs
|
|
32
|
+
|
|
33
|
+
Skipped via `if: !startsWith(github.head_ref, 'release/')` guards on the
|
|
34
|
+
heavy install/test jobs. These are the jobs that release PRs cannot regress
|
|
35
|
+
by construction (no install scripts, no runtime code, no test source in the
|
|
36
|
+
release-PR allowlist):
|
|
37
|
+
|
|
38
|
+
| Workflow | Job | Why it cuts |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| `tests.yml` | `install-tests` | release-PR diff has no `install.sh` / `scripts/install.py` / `tests/test_install.sh` |
|
|
41
|
+
| `tests.yml` | `install-aux-tests` | same — orchestrator, key contracts, one-liner smoke all untouched |
|
|
42
|
+
| `tests.yml` | `python-tests` | release-PR diff has no `scripts/**` or `tests/**` (other than CHANGELOG via path filter — see below) |
|
|
43
|
+
| `tests.yml` | `node-tests` | release-PR diff has no `src/**`, `tests/{cli,server,ui}/**`, `packages/core/installer/**` |
|
|
44
|
+
| `tests.yml` | `windows-lockfile-export` | release-PR diff has no `scripts/install_global*.py`, `scripts/cmd_export.py`, lockfile test surface |
|
|
45
|
+
| `smoke-public-install.yml` | `smoke` | release-PR diff has no `scripts/install*`, `setup.sh`, `templates/**`, `package.json` runtime behaviour |
|
|
46
|
+
|
|
47
|
+
`push:` to `main` and the weekly cron on `smoke-public-install.yml` stay
|
|
48
|
+
**unconditional** — those catch drift the PR matrix can't see.
|
|
49
|
+
|
|
50
|
+
## Kept surface — release PRs still prove these
|
|
51
|
+
|
|
52
|
+
The release-PR required-check floor stays equivalent (smaller, faster) to
|
|
53
|
+
the feature-PR floor by adding:
|
|
54
|
+
|
|
55
|
+
| Workflow | Job | Proves |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| `consistency.yml` | (existing) | `task consistency` — source-of-truth integrity |
|
|
58
|
+
| `smoke.yml` | `smoke-contracts` | Contract self-checks (kernel, router, hashes) |
|
|
59
|
+
| `release-guard.yml` | `assert-version-matches-tag` | already gates `npm publish`; remains tag-trigger |
|
|
60
|
+
| `migration-dry-run.yml` | (existing) | Migration plan dry-runs |
|
|
61
|
+
| `release-validation.yml` (Phase B) | `release-shape` | shape detector — fails closed if diff exits the allowlist |
|
|
62
|
+
| `release-validation.yml` (Phase B) | `changelog-entry` | CHANGELOG carries an entry matching the head-branch version |
|
|
63
|
+
| `release-validation.yml` (Phase B) | `version-consistency` | `package.json` / `marketplace.json` / pack manifests agree on the version |
|
|
64
|
+
|
|
65
|
+
## Rollback trigger — fail-closed
|
|
66
|
+
|
|
67
|
+
The optimisation is **opt-in by shape, not by branch name**. A release-PR
|
|
68
|
+
whose diff contains a stray file outside the allowlist (e.g. a last-minute
|
|
69
|
+
CHANGELOG fixup that also touches `scripts/release.py`) trips the shape
|
|
70
|
+
detector:
|
|
71
|
+
|
|
72
|
+
1. `check_release_pr_shape.py` exits non-zero with a per-file diff.
|
|
73
|
+
2. The CI dashboard surfaces "release-shape" red.
|
|
74
|
+
3. The maintainer either narrows the diff (move the script edit to a
|
|
75
|
+
separate PR) or accepts the heavy matrix re-running on the next push.
|
|
76
|
+
|
|
77
|
+
In other words: the cut applies only when shape is **provably** safe. Branch
|
|
78
|
+
name alone never bypasses the heavy matrix.
|
|
79
|
+
|
|
80
|
+
## What this contract is not
|
|
81
|
+
|
|
82
|
+
- **Not a test-deletion contract.** Every existing assertion still runs
|
|
83
|
+
somewhere in the cadence (PR for feature PRs, push-to-main + weekly cron
|
|
84
|
+
for smoke).
|
|
85
|
+
- **Not a coverage-reduction contract.** The release-validation jobs are
|
|
86
|
+
additive, not substitutive.
|
|
87
|
+
- **Not a release-velocity contract.** Release cadence is driven by
|
|
88
|
+
Conventional Commits in `scripts/release.py`, not by CI cost.
|
|
89
|
+
- **Not a Hard-Floor lift.** No security check is removed.
|
|
90
|
+
`release-guard.yml`'s `assert-version-matches-tag` job is independent of
|
|
91
|
+
`Tests` / `Public Install Smoke` and stays mandatory on every tag.
|
|
92
|
+
|
|
93
|
+
## See also
|
|
94
|
+
|
|
95
|
+
- `docs/contracts/branch-protection-policy.md` — per-PR-shape required-check
|
|
96
|
+
matrix (Phase D).
|
|
97
|
+
- `docs/contracts/ci-cost-budget.md` — measured baselines + quarterly review
|
|
98
|
+
cadence (Phase C).
|
|
99
|
+
- `.github/workflows/release-validation.yml` — the tight release-shape
|
|
100
|
+
validation workflow (Phase B).
|
|
101
|
+
- `scripts/check_release_pr_shape.py` — the shape detector (Phase A).
|
|
102
|
+
- `scripts/release.py` § `_RELEASE_BRANCH_RE` — source of truth for the
|
|
103
|
+
release-branch naming convention.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
stability: beta
|
|
3
|
-
keep-beta-until: 2026-08-
|
|
3
|
+
keep-beta-until: 2026-08-23
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Role-experience contract
|
|
@@ -19,7 +19,7 @@ A folder at `agents/roles/<role>/` that contains:
|
|
|
19
19
|
|
|
20
20
|
A role experience is **not**:
|
|
21
21
|
|
|
22
|
-
- A new skill — the shortlist references existing skills under `packages/<pack>/.agent-src.
|
|
22
|
+
- A new skill — the shortlist references existing skills under `packages/<pack>/.agent-src.uncondensed/skills/`. The role experience curates; it does not implement.
|
|
23
23
|
- A documentation page — `docs/getting-started-by-role.md` is the prose surface and links **to** the role experience, never duplicates it.
|
|
24
24
|
- A persona file under `personas/` — personas are review voices the AI Council uses; role experiences are end-user entry points.
|
|
25
25
|
|
|
@@ -92,7 +92,7 @@ skills:
|
|
|
92
92
|
why: "Section-by-section drafting flow for longer offers."
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
Every `id` must resolve to an existing skill under `packages/<pack>/.agent-src.
|
|
95
|
+
Every `id` must resolve to an existing skill under `packages/<pack>/.agent-src.uncondensed/skills/<id>/SKILL.md` — verified by the lint pass in Phase 3 Step 6.
|
|
96
96
|
|
|
97
97
|
## Versioning + status
|
|
98
98
|
|
|
@@ -7,7 +7,7 @@ keep-beta-until: 2026-08-12
|
|
|
7
7
|
# Rule Classification — Phase 1.2 of road-to-kernel-and-router
|
|
8
8
|
|
|
9
9
|
> **Status:** active · **Stability:** beta · **Owner:** road-to-kernel-and-router P1.2
|
|
10
|
-
> · **Source of truth:** `.agent-src.
|
|
10
|
+
> · **Source of truth:** `.agent-src.uncondensed/rules/*.md`
|
|
11
11
|
|
|
12
12
|
Migration plan for all 56 source rules. **No edits land here** — this
|
|
13
13
|
document is the disposition map P2 / P4 will execute against.
|
|
@@ -16,8 +16,8 @@ document is the disposition map P2 / P4 will execute against.
|
|
|
16
16
|
|
|
17
17
|
| code | meaning |
|
|
18
18
|
|---|---|
|
|
19
|
-
| `keep-in-kernel` | Iron Law floor / behaviour / safety / tone / ask-policy. Loaded every session.
|
|
20
|
-
| `
|
|
19
|
+
| `keep-in-kernel` | Iron Law floor / behaviour / safety / tone / ask-policy. Loaded every session. Condensed to ≤ 2.5k chars (P2.2; raised from 1.5k per Council R2). |
|
|
20
|
+
| `condense-and-keep` | Behavioural rule that stays in `rules/` as auto-tier. Condensed in place per the P2.2 playbook. Loaded by router on trigger match. |
|
|
21
21
|
| `move-to-skill:<id>` | Procedural how-to content. Body migrates into the named skill (P4.1); rule shrinks to Iron Law one-liner + `routes_to:`. |
|
|
22
22
|
| `move-to-guideline:<id>` | Reference / examples / mechanics tables. Body migrates into `docs/guidelines/<id>.md` (P4.2); rule keeps Iron Law + pointer. |
|
|
23
23
|
|
|
@@ -51,25 +51,25 @@ yet.
|
|
|
51
51
|
| scope-control | 4368 | `keep-in-kernel` | Iron Law (safety-floor): no unsolicited refactors / git-ops gate |
|
|
52
52
|
| verify-before-complete | 2344 | `keep-in-kernel` | Iron Law: no completion claims without fresh verification |
|
|
53
53
|
|
|
54
|
-
**Always-bucket total: 32 403 chars.** Pilot
|
|
54
|
+
**Always-bucket total: 32 403 chars.** Pilot condensation rate `r`
|
|
55
55
|
locked at **median 0.712** (P1.3, Council R2 amendment); projection
|
|
56
56
|
sum = 23 071 chars, under the 25k hard cap with 1 929 chars headroom.
|
|
57
57
|
Per-rule cap raised to ≤ 2.5k (Council R2). Iron-Law-override ADRs
|
|
58
58
|
may lift individual rules above 2.5k where Iron-Law density forbids
|
|
59
|
-
further
|
|
59
|
+
further condensation — currently 2 expected (`direct-answers` +342,
|
|
60
60
|
`language-and-tone` +1286). See `kernel-membership.md` § 5.
|
|
61
61
|
|
|
62
62
|
> **Council swap ADR (P2.1 input).** Sonnet 4.5 flagged
|
|
63
63
|
> `agent-authority` as a routing index (no Iron-Law fence; should
|
|
64
64
|
> demote to auto-tier-3) and `autonomous-execution` (currently
|
|
65
|
-
> `
|
|
65
|
+
> `condense-and-keep` below) as a mode-independent Band-4 authority
|
|
66
66
|
> that should promote to kernel. Swap accepted ⇒ +1213 chars over
|
|
67
67
|
> the 25k cap. Decision deferred to P2.1 ADR; current dispositions
|
|
68
68
|
> below remain locked until the ADR resolves.
|
|
69
69
|
|
|
70
|
-
### § 3.2 — auto-rules:
|
|
70
|
+
### § 3.2 — auto-rules: condense-and-keep (22)
|
|
71
71
|
|
|
72
|
-
Behavioural rules with too much Iron-Law content for migration;
|
|
72
|
+
Behavioural rules with too much Iron-Law content for migration; condense
|
|
73
73
|
in place per P2.2 playbook. Loaded by router on trigger match.
|
|
74
74
|
|
|
75
75
|
| id | chars | tier | rationale |
|
|
@@ -101,7 +101,7 @@ in place per P2.2 playbook. Loaded by router on trigger match.
|
|
|
101
101
|
|
|
102
102
|
Procedural how-to. Rule body migrates into named skill (P4.1); rule
|
|
103
103
|
shrinks to Iron-Law one-liner + `routes_to:`. Skill IDs reference
|
|
104
|
-
existing skills under `.agent-src.
|
|
104
|
+
existing skills under `.agent-src.uncondensed/skills/`.
|
|
105
105
|
|
|
106
106
|
| id | chars | target skill | rationale |
|
|
107
107
|
|---|---:|---|---|
|
|
@@ -130,7 +130,7 @@ Reference / examples / mechanics. Body migrates into
|
|
|
130
130
|
|
|
131
131
|
| id | chars | target guideline | rationale |
|
|
132
132
|
|---|---:|---|---|
|
|
133
|
-
| artifact-engagement-recording | 3462 | `artifact-engagement-flow` | Mechanics doc lives in `.agent-src.
|
|
133
|
+
| artifact-engagement-recording | 3462 | `artifact-engagement-flow` | Mechanics doc lives in `.agent-src.uncondensed/contexts/contracts/` (P4.1) |
|
|
134
134
|
| augment-portability | 2956 | `augment-portability-patterns` | Project-agnostic-patterns reference |
|
|
135
135
|
| command-suggestion-policy | 3954 | `command-suggestion-flow` | Flow doc already exists |
|
|
136
136
|
| php-coding | 3433 | `php-coding-patterns` | Reference table; per-stack |
|
|
@@ -142,9 +142,9 @@ Reference / examples / mechanics. Body migrates into
|
|
|
142
142
|
|
|
143
143
|
| check | command | acceptance |
|
|
144
144
|
|---|---|---|
|
|
145
|
-
| Coverage | `python3 scripts/measure_rule_budget.py` | 56 rules total → 9 kernel + 22
|
|
145
|
+
| Coverage | `python3 scripts/measure_rule_budget.py` | 56 rules total → 9 kernel + 22 condense + 18 skill + 7 guideline |
|
|
146
146
|
| Determinism | `python3 scripts/measure_rule_budget.py --json` × 2 | byte-identical output |
|
|
147
|
-
| No-edits | `git diff --stat .agent-src.
|
|
147
|
+
| No-edits | `git diff --stat .agent-src.uncondensed/rules/` | clean (this is plan-only) |
|
|
148
148
|
|
|
149
149
|
## § 5 — Open questions
|
|
150
150
|
|
|
@@ -166,6 +166,6 @@ Reference / examples / mechanics. Body migrates into
|
|
|
166
166
|
spec; flagged by Council R2 to prevent inconsistent implementer
|
|
167
167
|
calls.
|
|
168
168
|
5. **`think-before-action` / `context-hygiene` / `augment-source-of-
|
|
169
|
-
truth` boundary.** Currently `
|
|
169
|
+
truth` boundary.** Currently `condense-and-keep` (auto). Council
|
|
170
170
|
did not flag for promotion; revisit only if the swap ADR (#1)
|
|
171
171
|
forces a re-projection.
|
|
@@ -6,7 +6,7 @@ keep-beta-until: 2026-08-12
|
|
|
6
6
|
# Rule-Interaction Matrix
|
|
7
7
|
|
|
8
8
|
> **Audience:** rule authors and reviewers — anyone editing
|
|
9
|
-
> `.agent-src.
|
|
9
|
+
> `.agent-src.uncondensed/rules/*.md` or proposing a new always-rule.
|
|
10
10
|
> **Authoritative source:** [`rule-interactions.yml`](rule-interactions.yml).
|
|
11
11
|
> **Linter:** `scripts/lint_rule_interactions.py` (run via `task lint-rule-interactions`).
|
|
12
12
|
|
|
@@ -73,8 +73,8 @@ The YAML uses six relation kinds. Definitions:
|
|
|
73
73
|
conflict: … # what triggers both
|
|
74
74
|
resolution: … # what the agent does
|
|
75
75
|
evidence:
|
|
76
|
-
- .agent-src.
|
|
77
|
-
- .agent-src.
|
|
76
|
+
- .agent-src.uncondensed/rules/non-destructive-by-default.md#the-iron-law
|
|
77
|
+
- .agent-src.uncondensed/rules/autonomous-execution.md#hard-floor--see-non-destructive-by-default
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
`rules: [a, b]` is ordered: `a` is senior (wins on conflict), `b` is
|
|
@@ -117,7 +117,7 @@ source of truth and weaken it. Canonical contracts:
|
|
|
117
117
|
| Decision-trace shape (what the engine emits per phase) | [`decision-trace-v1.md`](decision-trace-v1.md) |
|
|
118
118
|
| Memory contract (entries, scopes, retention) | [`agent-memory-contract.md`](agent-memory-contract.md) |
|
|
119
119
|
| Memory visibility in the trace (`affected` keys) | [`memory-visibility-v1.md`](memory-visibility-v1.md) |
|
|
120
|
-
| AI-Council consultation flow | [`../skills/ai-council/SKILL.md`](../../.agent-src.
|
|
120
|
+
| AI-Council consultation flow | [`../skills/ai-council/SKILL.md`](../../.agent-src.uncondensed/skills/ai-council/SKILL.md) |
|
|
121
121
|
|
|
122
122
|
Where an `always`-rule **does** interact with one of these surfaces
|
|
123
123
|
(e.g. `non-destructive-by-default` gating a memory-driven action), the
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# Schema:
|
|
9
9
|
# version: integer
|
|
10
10
|
# rules: list of rule slugs that participate in any interaction (each
|
|
11
|
-
# must exist as `.agent-src.
|
|
11
|
+
# must exist as `.agent-src.uncondensed/rules/<slug>.md`)
|
|
12
12
|
# pairs: list of pairwise interactions
|
|
13
13
|
# - id: kebab-case stable identifier
|
|
14
14
|
# rules: [senior, junior] — `senior` wins on conflict
|
|
@@ -49,8 +49,8 @@ pairs:
|
|
|
49
49
|
numbered-options block, wait for explicit user confirmation on
|
|
50
50
|
this turn before proceeding.
|
|
51
51
|
evidence:
|
|
52
|
-
- .agent-src.
|
|
53
|
-
- .agent-src.
|
|
52
|
+
- .agent-src.uncondensed/rules/non-destructive-by-default.md#the-iron-law
|
|
53
|
+
- .agent-src.uncondensed/rules/autonomous-execution.md#hard-floor--see-non-destructive-by-default
|
|
54
54
|
|
|
55
55
|
- id: ndd-x-scope-control
|
|
56
56
|
rules: [non-destructive-by-default, scope-control]
|
|
@@ -64,9 +64,9 @@ pairs:
|
|
|
64
64
|
cannot be weakened by future scope-control edits. On any conflict,
|
|
65
65
|
the floor wins.
|
|
66
66
|
evidence:
|
|
67
|
-
- .agent-src.
|
|
68
|
-
- .agent-src.
|
|
69
|
-
- .agent-src.
|
|
67
|
+
- .agent-src.uncondensed/rules/non-destructive-by-default.md#the-iron-law
|
|
68
|
+
- .agent-src.uncondensed/rules/scope-control.md#git-operations--permission-gated
|
|
69
|
+
- .agent-src.uncondensed/rules/scope-control.md#production-infrastructure-bulk-destructive--hard-floor
|
|
70
70
|
|
|
71
71
|
- id: ndd-x-commit-policy
|
|
72
72
|
rules: [non-destructive-by-default, commit-policy]
|
|
@@ -82,8 +82,8 @@ pairs:
|
|
|
82
82
|
then commit. The four exceptions cover *whether* commits happen;
|
|
83
83
|
the floor covers *which diffs* still need a separate confirmation.
|
|
84
84
|
evidence:
|
|
85
|
-
- .agent-src.
|
|
86
|
-
- .agent-src.
|
|
85
|
+
- .agent-src.uncondensed/rules/non-destructive-by-default.md#the-iron-law
|
|
86
|
+
- .agent-src.uncondensed/rules/commit-policy.md#hard-floor-still-applies--bulk-deletions-and-infra-changes
|
|
87
87
|
|
|
88
88
|
- id: ndd-x-ask-when-uncertain
|
|
89
89
|
rules: [non-destructive-by-default, ask-when-uncertain]
|
|
@@ -97,8 +97,8 @@ pairs:
|
|
|
97
97
|
provides the question shape (one numbered-options block, blocking).
|
|
98
98
|
No conflict; both fire harmoniously.
|
|
99
99
|
evidence:
|
|
100
|
-
- .agent-src.
|
|
101
|
-
- .agent-src.
|
|
100
|
+
- .agent-src.uncondensed/rules/non-destructive-by-default.md#failure-modes
|
|
101
|
+
- .agent-src.uncondensed/rules/ask-when-uncertain.md#vague-request-triggers--must-ask
|
|
102
102
|
|
|
103
103
|
- id: ndd-x-verify-before-complete
|
|
104
104
|
rules: [non-destructive-by-default, verify-before-complete]
|
|
@@ -112,8 +112,8 @@ pairs:
|
|
|
112
112
|
verification evidence in the same message. Skipping either is a
|
|
113
113
|
rule violation.
|
|
114
114
|
evidence:
|
|
115
|
-
- .agent-src.
|
|
116
|
-
- .agent-src.
|
|
115
|
+
- .agent-src.uncondensed/rules/non-destructive-by-default.md#the-iron-law
|
|
116
|
+
- .agent-src.uncondensed/rules/verify-before-complete.md#the-iron-law
|
|
117
117
|
|
|
118
118
|
- id: autonomy-x-scope-control
|
|
119
119
|
rules: [scope-control, autonomous-execution]
|
|
@@ -127,8 +127,8 @@ pairs:
|
|
|
127
127
|
suppresses *trivial* questions only; git-shape decisions are
|
|
128
128
|
blocking. Stop and ask.
|
|
129
129
|
evidence:
|
|
130
|
-
- .agent-src.
|
|
131
|
-
- .agent-src.
|
|
130
|
+
- .agent-src.uncondensed/rules/scope-control.md#git-operations--permission-gated
|
|
131
|
+
- .agent-src.uncondensed/rules/autonomous-execution.md#blocking--still-ask-regardless-of-personalautonomy
|
|
132
132
|
|
|
133
133
|
- id: autonomy-x-commit-policy
|
|
134
134
|
rules: [commit-policy, autonomous-execution]
|
|
@@ -141,8 +141,8 @@ pairs:
|
|
|
141
141
|
committing unless one of the four exceptions applies. Autonomy
|
|
142
142
|
does not add a fifth exception.
|
|
143
143
|
evidence:
|
|
144
|
-
- .agent-src.
|
|
145
|
-
- .agent-src.
|
|
144
|
+
- .agent-src.uncondensed/rules/commit-policy.md#the-iron-law
|
|
145
|
+
- .agent-src.uncondensed/rules/autonomous-execution.md#commit-policy--see-commit-policy
|
|
146
146
|
|
|
147
147
|
- id: authority-x-ndd
|
|
148
148
|
rules: [agent-authority, non-destructive-by-default]
|
|
@@ -155,8 +155,8 @@ pairs:
|
|
|
155
155
|
Floor's Iron Law lives verbatim in `non-destructive-by-default`
|
|
156
156
|
and wins every conflict. The index points; it never restates.
|
|
157
157
|
evidence:
|
|
158
|
-
- .agent-src.
|
|
159
|
-
- .agent-src.
|
|
158
|
+
- .agent-src.uncondensed/rules/agent-authority.md#index-rules
|
|
159
|
+
- .agent-src.uncondensed/rules/non-destructive-by-default.md#the-iron-law
|
|
160
160
|
|
|
161
161
|
- id: authority-x-scope-control
|
|
162
162
|
rules: [agent-authority, scope-control]
|
|
@@ -169,8 +169,8 @@ pairs:
|
|
|
169
169
|
scope-expansion decisions. Index never narrows or weakens the
|
|
170
170
|
gate; canonical rule wins on any wording divergence.
|
|
171
171
|
evidence:
|
|
172
|
-
- .agent-src.
|
|
173
|
-
- .agent-src.
|
|
172
|
+
- .agent-src.uncondensed/rules/agent-authority.md#index-rules
|
|
173
|
+
- .agent-src.uncondensed/rules/scope-control.md#git-operations--permission-gated
|
|
174
174
|
|
|
175
175
|
- id: authority-x-commit-policy
|
|
176
176
|
rules: [agent-authority, commit-policy]
|
|
@@ -184,8 +184,8 @@ pairs:
|
|
|
184
184
|
edits to commit-policy do not require Index updates unless the
|
|
185
185
|
band ordering changes.
|
|
186
186
|
evidence:
|
|
187
|
-
- .agent-src.
|
|
188
|
-
- .agent-src.
|
|
187
|
+
- .agent-src.uncondensed/rules/agent-authority.md#index-rules
|
|
188
|
+
- .agent-src.uncondensed/rules/commit-policy.md#exceptions--when-committing-is-allowed
|
|
189
189
|
|
|
190
190
|
- id: scope-x-commit-policy
|
|
191
191
|
rules: [scope-control, commit-policy]
|
|
@@ -201,8 +201,8 @@ pairs:
|
|
|
201
201
|
tag operations. On commit specifics, defer to `commit-policy`;
|
|
202
202
|
on other git ops, defer to `scope-control`.
|
|
203
203
|
evidence:
|
|
204
|
-
- .agent-src.
|
|
205
|
-
- .agent-src.
|
|
204
|
+
- .agent-src.uncondensed/rules/scope-control.md#git-operations--permission-gated
|
|
205
|
+
- .agent-src.uncondensed/rules/commit-policy.md#the-iron-law
|
|
206
206
|
|
|
207
207
|
- id: ask-x-direct-answers
|
|
208
208
|
rules: [ask-when-uncertain, direct-answers]
|
|
@@ -218,8 +218,8 @@ pairs:
|
|
|
218
218
|
`direct-answers` shapes *how* the question reads — no flattery,
|
|
219
219
|
no padding, shortest form that fully states the choice.
|
|
220
220
|
evidence:
|
|
221
|
-
- .agent-src.
|
|
222
|
-
- .agent-src.
|
|
221
|
+
- .agent-src.uncondensed/rules/ask-when-uncertain.md#iron-law--one-question-per-turn-always
|
|
222
|
+
- .agent-src.uncondensed/rules/direct-answers.md#iron-law-3--brevity-by-default
|
|
223
223
|
|
|
224
224
|
- id: scope-x-verify-before-complete
|
|
225
225
|
rules: [verify-before-complete, scope-control]
|
|
@@ -240,8 +240,8 @@ pairs:
|
|
|
240
240
|
Skipping either is a rule violation; satisfying one does not
|
|
241
241
|
satisfy the other.
|
|
242
242
|
evidence:
|
|
243
|
-
- .agent-src.
|
|
244
|
-
- .agent-src.
|
|
243
|
+
- .agent-src.uncondensed/rules/verify-before-complete.md#the-iron-law
|
|
244
|
+
- .agent-src.uncondensed/rules/scope-control.md#git-operations--permission-gated
|
|
245
245
|
|
|
246
246
|
- id: language-x-direct-answers
|
|
247
247
|
rules: [language-and-tone, direct-answers]
|
|
@@ -256,5 +256,5 @@ pairs:
|
|
|
256
256
|
flattery-free reply in the user's language. Neither weakens the
|
|
257
257
|
other.
|
|
258
258
|
evidence:
|
|
259
|
-
- .agent-src.
|
|
260
|
-
- .agent-src.
|
|
259
|
+
- .agent-src.uncondensed/rules/language-and-tone.md#iron-law--mirror-the-users-language-always
|
|
260
|
+
- .agent-src.uncondensed/rules/direct-answers.md#iron-law-1--no-flattery
|
|
@@ -5,7 +5,7 @@ keep-beta-until: 2026-08-12
|
|
|
5
5
|
|
|
6
6
|
# Rule Priority Hierarchy
|
|
7
7
|
|
|
8
|
-
> **Audience:** anyone reading or editing `.agent-src.
|
|
8
|
+
> **Audience:** anyone reading or editing `.agent-src.uncondensed/rules/*.md`,
|
|
9
9
|
> or trying to predict which rule wins when several fire on the same turn.
|
|
10
10
|
> **Machine-readable counterpart:** [`rule-interactions.yml`](rule-interactions.yml)
|
|
11
11
|
> (linted by `scripts/lint_rule_interactions.py`).
|
|
@@ -32,15 +32,15 @@ fires — that band's canonical rule decides the turn.
|
|
|
32
32
|
|
|
33
33
|
| Band | Rule | What it gates | Lifts under |
|
|
34
34
|
|---|---|---|---|
|
|
35
|
-
| 1 | [`non-destructive-by-default`](../../.agent-src.
|
|
36
|
-
| 2 | [`security-sensitive-stop`](../../.agent-src.
|
|
37
|
-
| 3 | [`scope-control`](../../.agent-src.
|
|
38
|
-
| 4 | [`ask-when-uncertain`](../../.agent-src.
|
|
39
|
-
| 5 | [`commit-policy`](../../.agent-src.
|
|
40
|
-
| 6 | [`verify-before-complete`](../../.agent-src.
|
|
41
|
-
| 7 | [`autonomous-execution`](../../.agent-src.
|
|
42
|
-
| 8 | [`command-suggestion-policy`](../../.agent-src.
|
|
43
|
-
| 9 | [`language-and-tone`](../../.agent-src.
|
|
35
|
+
| 1 | [`non-destructive-by-default`](../../.agent-src.uncondensed/rules/non-destructive-by-default.md) | Prod-trunk merge · deploy · push · prod data/infra · whimsical bulk deletion · bulk-deletion or infra commit | **Never.** Explicit user confirmation *this turn* only. |
|
|
36
|
+
| 2 | [`security-sensitive-stop`](../../.agent-src.uncondensed/rules/security-sensitive-stop.md) | Auth · billing · tenant boundaries · secrets · file uploads · webhooks · public endpoints | Threat-model pass completed and recorded *before* the edit. |
|
|
37
|
+
| 3 | [`scope-control`](../../.agent-src.uncondensed/rules/scope-control.md) | Git ops (branch · PR · tag · push · merge · rebase) · architectural changes · new libraries · scope expansion | Explicit user permission *this turn* or unrevoked standing instruction. |
|
|
38
|
+
| 4 | [`ask-when-uncertain`](../../.agent-src.uncondensed/rules/ask-when-uncertain.md) | Ambiguous requirements · vague-request triggers · fenced steps | Concrete evidence resolves the ambiguity, **or** user answers the single question. |
|
|
39
|
+
| 5 | [`commit-policy`](../../.agent-src.uncondensed/rules/commit-policy.md) | Any `git commit` | Four exceptions only — explicit "commit now", standing instruction, `/commit*` invocation, roadmap authorization. |
|
|
40
|
+
| 6 | [`verify-before-complete`](../../.agent-src.uncondensed/rules/verify-before-complete.md) | "Done" / "complete" claims · suggestions to commit, push, or PR | Fresh verification evidence in *this* message. |
|
|
41
|
+
| 7 | [`autonomous-execution`](../../.agent-src.uncondensed/rules/autonomous-execution.md) | Trivial-vs-blocking classification · autonomy opt-in detection | Per-step decision; never above bands 1–6. |
|
|
42
|
+
| 8 | [`command-suggestion-policy`](../../.agent-src.uncondensed/rules/command-suggestion-policy.md) | Surfacing slash-command matches as numbered options | User always picks; nothing auto-executes. |
|
|
43
|
+
| 9 | [`language-and-tone`](../../.agent-src.uncondensed/rules/language-and-tone.md) | First-token language of every reply · `.md` always English | Mirror the user's last chat message — no momentum exception. |
|
|
44
44
|
|
|
45
45
|
**Read direction:** top-to-bottom is *priority on conflict*, not chronology.
|
|
46
46
|
A turn typically touches several bands at once; the hierarchy decides
|
|
@@ -55,9 +55,9 @@ which one's Iron Law gets the final say.
|
|
|
55
55
|
canonical rule files. This hierarchy points; it does not paraphrase.
|
|
56
56
|
- **Bands 1–2 are *Hard Floors*.** No autonomy setting, no roadmap step,
|
|
57
57
|
no standing instruction lifts them. See
|
|
58
|
-
[`agent-authority`](../../.agent-src.
|
|
58
|
+
[`agent-authority`](../../.agent-src.uncondensed/rules/agent-authority.md)
|
|
59
59
|
§ Index rules for the matching authority statement.
|
|
60
|
-
- **Unsure → ask.** [`ask-when-uncertain`](../../.agent-src.
|
|
60
|
+
- **Unsure → ask.** [`ask-when-uncertain`](../../.agent-src.uncondensed/rules/ask-when-uncertain.md)
|
|
61
61
|
is the universal escape hatch when the band is unclear.
|
|
62
62
|
|
|
63
63
|
## Worked examples
|
|
@@ -73,7 +73,7 @@ which one's Iron Law gets the final say.
|
|
|
73
73
|
|
|
74
74
|
## Cross-references
|
|
75
75
|
|
|
76
|
-
- [`agent-authority`](../../.agent-src.
|
|
76
|
+
- [`agent-authority`](../../.agent-src.uncondensed/rules/agent-authority.md) — the four-band authority router (bands 1–3 + 7 of this hierarchy).
|
|
77
77
|
- [`rule-interactions.md`](rule-interactions.md) — pairwise interaction narrative + Mermaid diagram.
|
|
78
78
|
- [`rule-interactions.yml`](rule-interactions.yml) — machine-readable, CI-linted matrix.
|
|
79
79
|
- [`STABILITY.md`](STABILITY.md) — what the `stability: beta` tag means for breaking changes.
|
|
@@ -71,9 +71,9 @@ resolves to the target file under:
|
|
|
71
71
|
|
|
72
72
|
| kind | path |
|
|
73
73
|
|---|---|
|
|
74
|
-
| `skill` | `.agent-src.
|
|
74
|
+
| `skill` | `.agent-src.uncondensed/skills/<id>/SKILL.md` |
|
|
75
75
|
| `guideline` | `docs/guidelines/<id>.md` |
|
|
76
|
-
| `command` | `.agent-src.
|
|
76
|
+
| `command` | `.agent-src.uncondensed/commands/<id>.md` |
|
|
77
77
|
| `contract` | `docs/contracts/<id>.md` |
|
|
78
78
|
|
|
79
79
|
Linter checks each target exists. `command` is for procedural rules
|
|
@@ -34,7 +34,7 @@ listed there cannot be set to `allow` here.
|
|
|
34
34
|
## Schema
|
|
35
35
|
|
|
36
36
|
```yaml
|
|
37
|
-
# .agent-src.
|
|
37
|
+
# .agent-src.uncondensed/profiles/<id>.yml — new top-level key
|
|
38
38
|
profile:
|
|
39
39
|
id: <profile.id>
|
|
40
40
|
# ... existing fields ...
|