@event4u/agent-config 16.3.0 → 16.5.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/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +178 -78
- package/README.md +2 -2
- package/agents/templates/.ai-council.yml.example +26 -8
- package/dist/agent-src/commands/analyze/inbox.md +10 -7
- package/dist/agent-src/commands/bug/investigate.md +1 -1
- package/dist/agent-src/commands/commit/in-chunks.md +40 -31
- package/dist/agent-src/commands/commit.md +72 -33
- package/dist/agent-src/commands/condense.md +2 -8
- package/dist/agent-src/commands/council/debate.md +11 -7
- package/dist/agent-src/commands/council/default.md +10 -9
- package/dist/agent-src/commands/council.md +1 -1
- package/dist/agent-src/commands/design.md +1 -1
- package/dist/agent-src/commands/estimate-ticket.md +1 -1
- package/dist/agent-src/commands/feature/explore.md +3 -3
- package/dist/agent-src/commands/feature/plan.md +1 -1
- package/dist/agent-src/commands/fix/ci.md +17 -3
- package/dist/agent-src/commands/fix/commit-messages.md +48 -23
- package/dist/agent-src/commands/fix/pr-comments.md +3 -6
- package/dist/agent-src/commands/implement-ticket.md +3 -3
- package/dist/agent-src/commands/memory/add.md +4 -16
- package/dist/agent-src/commands/memory/load.md +5 -6
- package/dist/agent-src/commands/memory/promote.md +3 -16
- package/dist/agent-src/commands/mission/upgrade.md +3 -2
- package/dist/agent-src/commands/optimize/agents-dir.md +2 -2
- package/dist/agent-src/commands/optimize/deep.md +4 -2
- package/dist/agent-src/commands/optimize/rtk.md +4 -26
- package/dist/agent-src/commands/pr/create/description-only.md +18 -15
- package/dist/agent-src/commands/pr/create.md +42 -34
- package/dist/agent-src/commands/pr/merge.md +136 -9
- package/dist/agent-src/commands/prepare-for-review.md +13 -11
- package/dist/agent-src/commands/project/analyze.md +7 -35
- package/dist/agent-src/commands/refine-ticket.md +1 -1
- package/dist/agent-src/commands/review/changes.md +14 -19
- package/dist/agent-src/commands/roadmap/next.md +10 -1
- package/dist/agent-src/commands/roadmap/process-full.md +52 -38
- package/dist/agent-src/commands/roadmap/resolve-blockers.md +64 -14
- package/dist/agent-src/commands/worktree/create.md +7 -3
- package/dist/agent-src/commands/worktree/verify.md +2 -1
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +5 -3
- package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +7 -9
- package/dist/agent-src/contexts/contracts/command-suggestion-flow.md +8 -6
- package/dist/agent-src/contexts/contracts/frugality-charter.md +8 -5
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +0 -1
- package/dist/agent-src/contexts/execution/evidence-discipline.md +2 -2
- package/dist/agent-src/contexts/execution/non-interactive-contract.md +5 -8
- package/dist/agent-src/contexts/execution/rdp-gate.md +4 -4
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +9 -8
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +67 -52
- package/dist/agent-src/contexts/execution/subagent-routing.md +8 -8
- package/dist/agent-src/contexts/execution/subagent-steering.md +6 -4
- package/dist/agent-src/contexts/execution/terminal-states.md +2 -2
- package/dist/agent-src/contexts/execution/toolchain-resolver.md +4 -10
- package/dist/agent-src/contexts/subagent-configuration.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
- package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
- package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
- package/dist/agent-src/guidelines/agent-infra/layered-settings.md +13 -1
- package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
- package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +36 -0
- package/dist/agent-src/guidelines/design-antipatterns.md +1 -1
- package/dist/agent-src/guidelines/php/git.md +15 -2
- package/dist/agent-src/rules/active-remediation.md +0 -1
- package/dist/agent-src/rules/analysis-skill-routing.md +0 -1
- package/dist/agent-src/rules/architecture.md +0 -1
- package/dist/agent-src/rules/artifact-drafting-protocol.md +0 -1
- package/dist/agent-src/rules/artifact-engagement-recording.md +0 -1
- package/dist/agent-src/rules/augment-edit-discipline.md +0 -1
- package/dist/agent-src/rules/autonomous-execution.md +0 -1
- package/dist/agent-src/rules/brand-consistency.md +0 -1
- package/dist/agent-src/rules/brand-source-of-truth.md +0 -1
- package/dist/agent-src/rules/broken-access-control.md +0 -1
- package/dist/agent-src/rules/cli-output-handling.md +0 -1
- package/dist/agent-src/rules/code-comment-discipline.md +0 -1
- package/dist/agent-src/rules/code-provenance.md +0 -1
- package/dist/agent-src/rules/command-suggestion-policy.md +0 -1
- package/dist/agent-src/rules/commit-conventions.md +1 -2
- package/dist/agent-src/rules/communication-through-line.md +1 -2
- package/dist/agent-src/rules/content-quoting-floor.md +1 -2
- package/dist/agent-src/rules/context-hygiene.md +5 -5
- package/dist/agent-src/rules/copilot-routing.md +1 -2
- package/dist/agent-src/rules/council-availability.md +4 -4
- package/dist/agent-src/rules/cross-source-consistency.md +4 -6
- package/dist/agent-src/rules/decision-revisit-gate.md +2 -3
- package/dist/agent-src/rules/delegation-policy.md +2 -3
- package/dist/agent-src/rules/design-fidelity.md +0 -1
- package/dist/agent-src/rules/design-review-after-ui-write.md +3 -3
- package/dist/agent-src/rules/devcontainer-routing.md +1 -2
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +0 -1
- package/dist/agent-src/rules/docker-commands.md +0 -1
- package/dist/agent-src/rules/domain-adoption-policy.md +0 -1
- package/dist/agent-src/rules/domain-safety-disclaimer.md +0 -1
- package/dist/agent-src/rules/domain-safety-pii.md +0 -1
- package/dist/agent-src/rules/domain-safety-retention.md +0 -1
- package/dist/agent-src/rules/downstream-changes.md +0 -1
- package/dist/agent-src/rules/engineering-safety-floor.md +0 -1
- package/dist/agent-src/rules/external-code-graph-interop.md +0 -1
- package/dist/agent-src/rules/external-reference-deep-dive.md +0 -1
- package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -2
- package/dist/agent-src/rules/finance-safety-floor.md +0 -1
- package/dist/agent-src/rules/fix-what-you-see.md +6 -32
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +0 -1
- package/dist/agent-src/rules/git-history-discipline.md +1 -2
- package/dist/agent-src/rules/guidelines.md +0 -1
- package/dist/agent-src/rules/history-discipline.md +0 -1
- package/dist/agent-src/rules/icon-consistency.md +0 -1
- package/dist/agent-src/rules/image-likeness-and-rights.md +0 -1
- package/dist/agent-src/rules/improve-before-implement.md +0 -1
- package/dist/agent-src/rules/invite-challenge.md +0 -1
- package/dist/agent-src/rules/laravel-routing.md +1 -2
- package/dist/agent-src/rules/laravel-translations.md +0 -1
- package/dist/agent-src/rules/legal-safety-floor.md +0 -1
- package/dist/agent-src/rules/lethal-trifecta-guard.md +0 -1
- package/dist/agent-src/rules/linked-projects-onboarding-gate.md +0 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +0 -1
- package/dist/agent-src/rules/markdown-safe-codeblocks.md +0 -1
- package/dist/agent-src/rules/media-governance-routing.md +1 -2
- package/dist/agent-src/rules/media-sync-ground-truth.md +0 -1
- package/dist/agent-src/rules/minimal-safe-diff.md +0 -1
- package/dist/agent-src/rules/missing-skill-recovery.md +0 -1
- package/dist/agent-src/rules/missing-tool-handling.md +0 -1
- package/dist/agent-src/rules/model-recommendation.md +0 -1
- package/dist/agent-src/rules/neighbour-precedence.md +64 -0
- package/dist/agent-src/rules/no-attribution-footers.md +0 -1
- package/dist/agent-src/rules/no-decorative-emojis-in-git-surfaces.md +0 -1
- package/dist/agent-src/rules/no-pr-progress-comments.md +0 -1
- package/dist/agent-src/rules/no-roadmap-references.md +0 -1
- package/dist/agent-src/rules/notes-first-reasoning.md +0 -1
- package/dist/agent-src/rules/onboarding-gate.md +0 -1
- package/dist/agent-src/rules/output-discipline.md +0 -1
- package/dist/agent-src/rules/package-ci-checks.md +0 -1
- package/dist/agent-src/rules/persona-governance.md +2 -3
- package/dist/agent-src/rules/php-coding.md +0 -1
- package/dist/agent-src/rules/prefer-enums-over-literals.md +0 -1
- package/dist/agent-src/rules/preservation-guard.md +0 -1
- package/dist/agent-src/rules/provider-lifecycle-discipline.md +2 -3
- package/dist/agent-src/rules/question-not-instruction.md +0 -1
- package/dist/agent-src/rules/reviewer-awareness.md +0 -1
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -1
- package/dist/agent-src/rules/roadmap-progress-sync.md +3 -6
- package/dist/agent-src/rules/role-mode-adherence.md +0 -1
- package/dist/agent-src/rules/rule-type-governance.md +0 -1
- package/dist/agent-src/rules/runtime-safety.md +0 -1
- package/dist/agent-src/rules/scale-discipline.md +0 -1
- package/dist/agent-src/rules/secret-vcs-guard.md +0 -1
- package/dist/agent-src/rules/security-sensitive-stop.md +0 -1
- package/dist/agent-src/rules/self-repair-loop.md +0 -1
- package/dist/agent-src/rules/senior-engineering-discipline.md +0 -1
- package/dist/agent-src/rules/session-canary.md +0 -1
- package/dist/agent-src/rules/settings-ask-protocol.md +5 -6
- package/dist/agent-src/rules/size-enforcement.md +0 -1
- package/dist/agent-src/rules/skill-improvement-trigger.md +2 -3
- package/dist/agent-src/rules/skill-quality.md +0 -1
- package/dist/agent-src/rules/slash-command-routing-policy.md +0 -1
- package/dist/agent-src/rules/source-confidentiality.md +0 -1
- package/dist/agent-src/rules/source-discovery-gate.md +0 -1
- package/dist/agent-src/rules/source-of-truth.md +0 -1
- package/dist/agent-src/rules/spreadsheet-source-quality.md +1 -2
- package/dist/agent-src/rules/strategy-safety-floor.md +0 -1
- package/dist/agent-src/rules/symfony-routing.md +1 -2
- package/dist/agent-src/rules/think-before-action.md +0 -1
- package/dist/agent-src/rules/token-budget-discipline.md +14 -48
- package/dist/agent-src/rules/token-efficiency.md +0 -1
- package/dist/agent-src/rules/token-optimizer-maintenance.md +0 -1
- package/dist/agent-src/rules/tool-safety.md +0 -1
- package/dist/agent-src/rules/ui-audit-gate.md +1 -2
- package/dist/agent-src/rules/untrusted-input-defense.md +0 -1
- package/dist/agent-src/rules/upstream-proposal.md +0 -1
- package/dist/agent-src/rules/user-interaction.md +0 -1
- package/dist/agent-src/rules/user-interrupt-priority.md +0 -1
- package/dist/agent-src/scripts/gate_budget.ts +47 -23
- package/dist/agent-src/scripts/gate_execute.ts +12 -4
- package/dist/agent-src/skills/accessibility-auditor/data/aria-patterns.csv +2 -0
- package/dist/agent-src/skills/accessibility-auditor/data/manifest.json +3 -3
- package/dist/agent-src/skills/ai-council/SKILL.md +7 -4
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +21 -11
- package/dist/agent-src/skills/ai-council/references/procedure.md +12 -6
- package/dist/agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
- package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
- package/dist/agent-src/skills/canvas-design/SKILL.md +4 -2
- package/dist/agent-src/skills/command-routing/SKILL.md +3 -4
- package/dist/agent-src/skills/conventional-commits-writing/SKILL.md +127 -139
- package/dist/agent-src/skills/corpus-grounding/ATTRIBUTION.md +39 -0
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +8 -2
- package/dist/agent-src/skills/database/data/manifest.json +2 -2
- package/dist/agent-src/skills/database/data/query-tuning.csv +13 -13
- package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +13 -10
- package/dist/agent-src/skills/design-system-capture/SKILL.md +0 -3
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +49 -2
- package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +9 -0
- package/dist/agent-src/skills/git-workflow/SKILL.md +44 -44
- package/dist/agent-src/skills/git-workflow/references/branch-update.md +312 -0
- package/dist/agent-src/skills/git-workflow/references/commit-subject.md +205 -0
- package/dist/agent-src/skills/iconography/SKILL.md +4 -2
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +16 -5
- package/dist/agent-src/skills/jira-integration/SKILL.md +3 -3
- package/dist/agent-src/skills/logo-generation/SKILL.md +12 -8
- package/dist/agent-src/skills/merge-conflicts/SKILL.md +10 -4
- package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +4 -4
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +4 -2
- package/dist/agent-src/skills/source-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/svg-authoring/SKILL.md +318 -0
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +3 -1
- package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +1 -1
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -1
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
- package/dist/agent-src/skills/wireframe/SKILL.md +5 -2
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agent-settings.md +46 -129
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +3 -3
- package/dist/agent-src/templates/command.md +2 -2
- package/dist/agent-src/templates/roadmaps.md +6 -1
- package/dist/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
- package/dist/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
- package/dist/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
- package/dist/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
- package/dist/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
- package/dist/agent-src/templates/skill.md +1 -1
- package/dist/cli/commands/uiRender.js +201 -4
- package/dist/cli/commands/uiRenderAsset.js +1308 -0
- package/dist/cli/commands/uiRenderAssetCompare.js +752 -0
- package/dist/cli/commands/uiRenderAssetGrid.js +265 -0
- package/dist/cli/commands/uiRenderAssetGrounds.js +323 -0
- package/dist/cli/commands/uiRenderAssetIsolation.js +85 -0
- package/dist/cli/commands/uiRenderAssetTypes.js +145 -0
- package/dist/cli/main.js +47 -1
- package/dist/cli/registry.js +2 -1
- package/dist/cli-delegate/check_update_banner.js +195 -119
- package/dist/cli-delegate/{chunk-S4UMZNES.js → chunk-4DBG5K7M.js} +5 -5
- package/dist/cli-delegate/{chunk-TRI6DQZ6.js → chunk-5GPULQBE.js} +60 -42
- package/dist/cli-delegate/{chunk-JQVYKIZA.js → chunk-6SRJTYJS.js} +33 -177
- package/dist/cli-delegate/chunk-6V5FMA3P.js +186 -0
- package/dist/cli-delegate/chunk-6YQC2HLF.js +415 -0
- package/dist/cli-delegate/{chunk-E4XIZDIB.js → chunk-7HKRE54K.js} +1 -64
- package/dist/cli-delegate/{chunk-7HQ52DHU.js → chunk-AL3RZ22D.js} +1 -1
- package/dist/cli-delegate/{chunk-DBH4AHDK.js → chunk-ED7KCMLB.js} +9 -11
- package/dist/cli-delegate/{chunk-NXEILF2K.js → chunk-F3QDG2GT.js} +481 -72
- package/dist/cli-delegate/{chunk-CQWX336L.js → chunk-G5VVIZRC.js} +3 -3
- package/dist/cli-delegate/{chunk-JY2I2DXV.js → chunk-H76PHZBI.js} +137 -60
- package/dist/cli-delegate/chunk-IAYTIIQW.js +67 -0
- package/dist/cli-delegate/{chunk-LIYTLH6O.js → chunk-KXXWJTDO.js} +5 -10
- package/dist/cli-delegate/{chunk-T7L2QK3K.js → chunk-LQOCRFWT.js} +1 -1
- package/dist/cli-delegate/{chunk-S4YWNRKO.js → chunk-MDPPKQCQ.js} +34 -1
- package/dist/cli-delegate/chunk-OAFSJBHH.js +272 -0
- package/dist/cli-delegate/{chunk-GKE7ZVFA.js → chunk-PWX7CKMD.js} +1 -1
- package/dist/cli-delegate/{chunk-NDJLNC6Q.js → chunk-T6BP34WI.js} +1 -0
- package/dist/cli-delegate/{chunk-RQNNW7IF.js → chunk-T7XSJSUQ.js} +433 -632
- package/dist/cli-delegate/{chunk-NQ7WT43P.js → chunk-TMWYUOK4.js} +75 -12
- package/dist/cli-delegate/{chunk-EEHDXSYD.js → chunk-WQWXGIWB.js} +12 -273
- package/dist/cli-delegate/{chunk-QLDHIPWR.js → chunk-XQTPXKFA.js} +1 -1
- package/dist/cli-delegate/cmd_analyze_session.js +223 -43
- package/dist/cli-delegate/cmd_brand_status.js +3 -2
- package/dist/cli-delegate/cmd_conformance.js +489 -238
- package/dist/cli-delegate/cmd_converge.js +3 -3
- package/dist/cli-delegate/cmd_doctor.js +15 -12
- package/dist/cli-delegate/cmd_doctor_neighbours.js +11 -4
- package/dist/cli-delegate/cmd_explain.js +43 -19
- package/dist/cli-delegate/cmd_export.js +10 -10
- package/dist/cli-delegate/cmd_git_convention.js +1851 -0
- package/dist/cli-delegate/cmd_handoff.js +40 -21
- package/dist/cli-delegate/cmd_mcp_available.js +3 -2
- package/dist/cli-delegate/cmd_migrate.js +3 -3
- package/dist/cli-delegate/cmd_packs_active.js +4 -3
- package/dist/cli-delegate/cmd_prune.js +10 -10
- package/dist/cli-delegate/cmd_route_audit.js +7 -7
- package/dist/cli-delegate/cmd_route_explain.js +5 -5
- package/dist/cli-delegate/cmd_session_recycle.js +9 -7
- package/dist/cli-delegate/cmd_settings_check.js +54 -7
- package/dist/cli-delegate/cmd_settings_get.js +18 -8
- package/dist/cli-delegate/cmd_settings_migrate.js +10 -10
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +10 -10
- package/dist/cli-delegate/cmd_uninstall.js +10 -10
- package/dist/cli-delegate/cmd_update.js +7 -7
- package/dist/cli-delegate/cmd_upgrade.js +7 -7
- package/dist/cli-delegate/cmd_validate.js +10 -10
- package/dist/cli-delegate/cmd_versions.js +5 -5
- package/dist/cli-delegate/gate_budget.js +1 -1
- package/dist/cli-delegate/gate_execute.js +2 -2
- package/dist/cli-delegate/roadmap_gates.js +2 -2
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +171 -107
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +7 -7
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +41 -22
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +16 -11
- package/dist/hooks/dispatch.js +2520 -1924
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/hooks/svg_rules.chunk.cjs +1626 -0
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -0
- package/dist/install/install.mjs +462 -431
- package/dist/install/installThinLayer.js +40 -12
- package/dist/install/installedRuleLinks.js +105 -19
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +2 -2
- package/dist/mcp/registry-manifest.json +5 -5
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +3063 -2160
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +15 -120
- package/dist/scripts/_lib/compile_time_toggles.js +12 -21
- package/dist/scripts/_lib/git_convention.js +232 -0
- package/dist/scripts/_lib/global_deploy_inventory.js +730 -0
- package/dist/scripts/_lib/installed_layer.js +344 -18
- package/dist/scripts/_lib/package_root.js +68 -0
- package/dist/scripts/_lib/rule_law_section.js +1 -1
- package/dist/scripts/_lib/scan_scope.js +105 -0
- package/dist/scripts/_lib/settings_removed_keys.js +168 -0
- package/dist/scripts/_lib/svg_dom.js +284 -0
- package/dist/scripts/_lib/svg_geometry.js +477 -0
- package/dist/scripts/_lib/svg_motion.js +179 -0
- package/dist/scripts/_lib/svg_rules.js +1337 -0
- package/dist/scripts/_lib/svg_urls.js +67 -0
- package/dist/scripts/_lib/thin_rules.js +80 -3
- package/dist/scripts/lint_svg_asset.js +324 -0
- package/dist/server/app.js +2 -1
- package/dist/server/gitKeysGate.js +105 -0
- package/dist/server/routes/settings.js +67 -8
- package/dist/server/routes/wizard.js +4 -0
- package/dist/server/schemas/settings.js +23 -81
- package/dist/shared/skillRanking.js +30 -4
- package/dist/ui/assets/{index-Cwq4d0hX.js → index-C3djEJah.js} +2 -2
- package/dist/ui/index.html +1 -1
- package/docs/MIGRATION.md +72 -1
- package/docs/contracts/settings-classes.md +35 -65
- package/docs/guidelines/agent-infra/active-remediation-mechanics.md +39 -0
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +1 -1
- package/docs/guidelines/agent-infra/cross-source-consistency-mechanics.md +8 -10
- package/docs/guidelines/agent-infra/frontier-reasoning-operating-profile.md +3 -2
- package/docs/guidelines/agent-infra/layered-settings.md +13 -1
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +10 -3
- package/docs/guidelines/agent-infra/size-and-scope.md +36 -0
- package/docs/guidelines/design-antipatterns.md +1 -1
- package/docs/guidelines/php/git.md +15 -2
- package/package.json +4 -3
- package/src/agent-src/scripts/gate_budget.ts +47 -23
- package/src/agent-src/scripts/gate_execute.ts +12 -4
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +0 -6
- package/src/agent-src/templates/scripts/work_engine/directives/backend/_self_fix.ts +11 -7
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +3 -2
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +2 -1
- package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +0 -6
- package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +9 -12
- package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +2 -1
- package/src/config/agent-settings.template.yml +79 -312
- package/src/config/agents-paths.yml +16 -0
- package/src/config/assurance-capability-registry.json +7 -3
- package/src/config/ci-local-parity.yml +3 -0
- package/src/config/continuity-surface.json +3 -3
- package/src/config/discovery/packs.yml +17 -1
- package/src/config/evaluator-budgets.json +19 -6
- package/src/config/gate-coverage.yml +65 -23
- package/src/config/gate-violation-baselines.json +56 -16
- package/src/config/gitignore-block.txt +19 -0
- package/src/config/hook-bundle-budget.json +1 -1
- package/src/config/release-gate-locality.yml +2 -1
- package/src/config/routing-coverage-seed.json +55 -6
- package/src/config/rule-law-ceilings.json +12 -6
- package/src/config/rule-obligations.json +833 -0
- package/src/install/installThinLayer.ts +76 -10
- package/src/install/installedRuleLinks.ts +105 -17
- package/src/scripts/_cli/cmd_analyze_session.ts +9 -15
- package/src/scripts/_cli/cmd_conformance.ts +13 -2
- package/src/scripts/_cli/cmd_doctor.ts +10 -10
- package/src/scripts/_cli/cmd_doctor_neighbours.ts +133 -0
- package/src/scripts/_cli/cmd_explain.ts +72 -14
- package/src/scripts/_cli/cmd_git_convention.ts +637 -0
- package/src/scripts/_cli/cmd_settings_check.ts +66 -8
- package/src/scripts/_cli/cmd_settings_get.ts +18 -3
- package/src/scripts/_cli/doctor_execution.ts +72 -1
- package/src/scripts/_dispatch.bash +37 -2
- package/src/scripts/_lib/agent_settings.ts +15 -124
- package/src/scripts/_lib/blocked_by_marker.ts +1 -1
- package/src/scripts/_lib/compile_time_toggles.ts +12 -21
- package/src/scripts/_lib/dispatch_import_closure.ts +163 -0
- package/src/scripts/_lib/git_base_ref.ts +92 -0
- package/src/scripts/_lib/git_convention.ts +291 -0
- package/src/scripts/_lib/git_convention_carrier.ts +389 -0
- package/src/scripts/_lib/git_convention_grammar.ts +246 -0
- package/src/scripts/_lib/git_convention_measure.ts +344 -0
- package/src/scripts/_lib/global_deploy_inventory.ts +74 -0
- package/src/scripts/_lib/graph_feeder_record.ts +236 -13
- package/src/scripts/_lib/installed_layer.ts +448 -23
- package/src/scripts/_lib/knowledge_global.ts +14 -1
- package/src/scripts/_lib/module_reach.ts +456 -0
- package/src/scripts/_lib/neighbour_contradictions.ts +236 -0
- package/src/scripts/_lib/neighbour_tool_use.ts +8 -10
- package/src/scripts/_lib/ratification_artifact.ts +220 -1
- package/src/scripts/_lib/ratification_subject.ts +92 -0
- package/src/scripts/_lib/release_findings_ingest.ts +15 -7
- package/src/scripts/_lib/release_highlights.ts +5 -0
- package/src/scripts/_lib/rule_law_section.ts +1 -1
- package/src/scripts/_lib/rule_obligations.ts +205 -0
- package/src/scripts/_lib/self_repair.ts +1 -1
- package/src/scripts/_lib/settings_removed_keys.ts +173 -0
- package/src/scripts/_lib/svg_dom.ts +318 -0
- package/src/scripts/_lib/svg_geometry.ts +480 -0
- package/src/scripts/_lib/svg_motion.ts +208 -0
- package/src/scripts/_lib/svg_rules.ts +1453 -0
- package/src/scripts/_lib/svg_urls.ts +72 -0
- package/src/scripts/_lib/test_red_state.ts +5 -0
- package/src/scripts/_lib/thin_rules.ts +83 -3
- package/src/scripts/_lib/touched_file_quality.ts +142 -6
- package/src/scripts/_lib/verification_command.ts +59 -0
- package/src/scripts/_lib/verify_clause.ts +27 -17
- package/src/scripts/_lib/worker_budget.ts +1 -1
- package/src/scripts/adr/regenerate_index.ts +16 -1
- package/src/scripts/ai_council/config.ts +7 -7
- package/src/scripts/ai_council/modification_review.ts +100 -0
- package/src/scripts/ai_council/modification_review_questions.ts +90 -0
- package/src/scripts/ai_council/orchestrator.ts +5 -5
- package/src/scripts/ai_council/spend_gate.ts +18 -7
- package/src/scripts/ai_team/config.ts +11 -16
- package/src/scripts/audit_user_type_axis.ts +20 -8
- package/src/scripts/bench_ab_clone.ts +1 -2
- package/src/scripts/bench_concern_spawn_path.ts +129 -0
- package/src/scripts/bench_graph_feeder_latency.ts +584 -0
- package/src/scripts/check_agent_artifact_location.ts +36 -0
- package/src/scripts/check_branch_freshness.ts +147 -24
- package/src/scripts/check_enforcement_coverage.ts +130 -0
- package/src/scripts/check_evaluator_budgets.ts +4 -0
- package/src/scripts/check_finding_dispositions.ts +88 -25
- package/src/scripts/check_gate_coverage.ts +4 -3
- package/src/scripts/check_gate_reachability.ts +48 -1
- package/src/scripts/check_generator_sync.ts +48 -0
- package/src/scripts/check_hook_bundle_composition.ts +107 -0
- package/src/scripts/check_kernel_edit_ratified.ts +86 -6
- package/src/scripts/check_pack_size.ts +1 -1
- package/src/scripts/check_release_manifest_content.ts +189 -0
- package/src/scripts/check_standing_rule_delivery.ts +96 -0
- package/src/scripts/check_suppression_hygiene.ts +2 -5
- package/src/scripts/ci_settle.ts +42 -5
- package/src/scripts/classify_merge_risk.ts +320 -0
- package/src/scripts/closure_scan.ts +91 -1
- package/src/scripts/command_suggester/settings.ts +8 -108
- package/src/scripts/command_suggester/types.ts +4 -5
- package/src/scripts/consumer_matrix.ts +102 -0
- package/src/scripts/context_hygiene_hook.ts +13 -23
- package/src/scripts/cost/preflight.mjs +12 -1
- package/src/scripts/council_cli.ts +7 -7
- package/src/scripts/dispatch_r2_reviewer.ts +24 -11
- package/src/scripts/explain_run.ts +8 -13
- package/src/scripts/generate_git_convention_grammar.ts +127 -0
- package/src/scripts/generate_host_cost_table.ts +20 -3
- package/src/scripts/handoff_context_hook.ts +86 -37
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +25 -6
- package/src/scripts/hooks/block_config_weakening.ts +48 -5
- package/src/scripts/hooks/block_plumbing_writes.ts +8 -4
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +16 -1
- package/src/scripts/hooks/concern_registry.ts +2 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +2 -3
- package/src/scripts/hooks/design_pass_hook.ts +157 -3
- package/src/scripts/hooks/evidence_independence.ts +12 -4
- package/src/scripts/hooks/mcp_usage_observation_hook.ts +121 -0
- package/src/scripts/hooks/push_settle_hook.ts +4 -3
- package/src/scripts/hooks/rule_inject_hook.ts +44 -3
- package/src/scripts/hooks/state_io.ts +8 -4
- package/src/scripts/hooks/svg_obligation.ts +497 -0
- package/src/scripts/hooks/svg_rules_loader.ts +133 -0
- package/src/scripts/hooks/telemetry_usage_hook.ts +7 -46
- package/src/scripts/hooks/turn_end_gate_hook.ts +6 -3
- package/src/scripts/install-hooks.sh +42 -14
- package/src/scripts/install.ts +7 -31
- package/src/scripts/lint_blocker_citations.ts +198 -0
- package/src/scripts/lint_consolidation_lineage.ts +6 -3
- package/src/scripts/lint_design_quality.ts +60 -12
- package/src/scripts/lint_evidence_artifacts.ts +9 -0
- package/src/scripts/lint_hook_concern_budget.ts +10 -21
- package/src/scripts/lint_motion_authority_drift.ts +27 -0
- package/src/scripts/lint_pack_boundaries.ts +406 -28
- package/src/scripts/lint_roadmap_blockers.ts +282 -29
- package/src/scripts/lint_roadmap_complexity.ts +4 -2
- package/src/scripts/lint_rule_law_section.ts +151 -21
- package/src/scripts/lint_rule_skill_pack_reach.ts +17 -0
- package/src/scripts/lint_settings_classes.ts +1 -1
- package/src/scripts/lint_svg_asset.ts +365 -0
- package/src/scripts/lint_ticked_unmet_criteria.ts +165 -0
- package/src/scripts/lint_workflow_security.ts +12 -1
- package/src/scripts/measure_skill_ranker_baseline.ts +5 -0
- package/src/scripts/model_rule_injection.ts +3 -3
- package/src/scripts/onboarding_gate_hook.ts +7 -6
- package/src/scripts/print_required_checks.ts +15 -3
- package/src/scripts/probe_host_compliance.ts +33 -5
- package/src/scripts/probe_turnaround.ts +183 -3
- package/src/scripts/ratification_header.ts +77 -0
- package/src/scripts/refusal_envelope.ts +138 -0
- package/src/scripts/release_publication.ts +29 -3
- package/src/scripts/report_dispatch_import_closure.ts +76 -0
- package/src/scripts/report_installed_rule_links.ts +118 -1
- package/src/scripts/report_module_reach.ts +212 -0
- package/src/scripts/report_obligation_mechanism.ts +16 -18
- package/src/scripts/report_parked_blockers.ts +222 -0
- package/src/scripts/report_required_checks_drift.ts +196 -0
- package/src/scripts/report_skill_ranker_confusion.ts +103 -2
- package/src/scripts/report_standing_payload_by_host.ts +1 -1
- package/src/scripts/routing_doctor.ts +2 -2
- package/src/scripts/schemas/agent-settings.schema.json +17 -31
- package/src/scripts/schemas/command.schema.json +1 -1
- package/src/scripts/schemas/skill.schema.json +1 -1
- package/src/scripts/self_review_gate.ts +39 -2
- package/src/scripts/skill_tools/score_skill_relevance.ts +28 -19
- package/src/scripts/sync_pr_branch.ts +403 -132
- package/src/scripts/trigger_eval_grandfather.json +0 -16
- package/src/server/schemas/settings.ts +33 -177
- package/src/shared/skillRanking.ts +53 -4
- package/dist/cli-delegate/chunk-NYX3L2PZ.js +0 -99
- package/src/scripts/_lib/config_chain.ts +0 -477
- package/src/scripts/_lib/conformance_report.ts +0 -403
- package/src/scripts/_lib/eval_discrimination.ts +0 -95
- package/src/scripts/_lib/evaluator_promotion.ts +0 -225
- package/src/scripts/_lib/file_slicer.ts +0 -117
- package/src/scripts/_lib/legacy_boundary_map.ts +0 -228
- package/src/scripts/_lib/minimality_tiebreak.ts +0 -168
- package/src/scripts/_lib/overbuild_lens_contract.ts +0 -196
- package/src/scripts/_lib/role_split.ts +0 -338
|
@@ -170,8 +170,9 @@ them.
|
|
|
170
170
|
[`verify-before-complete`](../../rules/verify-before-complete.md).
|
|
171
171
|
- Every catalog `command:` field is restricted to the safe-prefix allowlist.
|
|
172
172
|
Never run arbitrary shell commands from the catalog.
|
|
173
|
-
- The
|
|
174
|
-
|
|
173
|
+
- The `execution.fix_loop_max` retry budget and its ladder from
|
|
174
|
+
[`autonomous-execution`](../../rules/autonomous-execution.md)
|
|
175
|
+
apply per breaking-change fix step, not per mission.
|
|
175
176
|
- Never skip the size-tier surface step — the user must see the scope before the
|
|
176
177
|
provisional branch is created.
|
|
177
178
|
|
|
@@ -97,8 +97,8 @@ surface changes.
|
|
|
97
97
|
- **Delete** — preview file, confirm, delete, scrub references.
|
|
98
98
|
- **Update** — apply explicit content changes (remove stale refs, refresh sections, add missing info).
|
|
99
99
|
- **Create context** — hand off to `/context create` with area pre-selected.
|
|
100
|
-
4. **Update roadmap progress** — flip `[ ]` → `[x]` after each action; show progress bar.
|
|
101
|
-
5. **Summary** —
|
|
100
|
+
4. **Update roadmap progress** — flip `[ ]` → `[x]` after each action; show progress bar. Continue silently to the next action — the user can interrupt; a routine "next?" confirmation is never asked.
|
|
101
|
+
5. **Summary** — one line of counts (moved · merged · deleted · updated · remaining).
|
|
102
102
|
|
|
103
103
|
**Rules:** confirm before every destructive action; always update references when moving/renaming; update the roadmap after each completed action; show file content before delete; check `.augment/` references too.
|
|
104
104
|
|
|
@@ -96,8 +96,10 @@ above that, re-invoke deliberately with fresh context.
|
|
|
96
96
|
gain is the failure the metric exists to catch.
|
|
97
97
|
- The council splits on the same question twice → STOP, escalate that
|
|
98
98
|
question to the user instead of burning a third loop on it.
|
|
99
|
-
-
|
|
100
|
-
|
|
99
|
+
- A validation target failing 3 consecutive refinement attempts triggers
|
|
100
|
+
the rule's mandatory strategy shift; exhausting the full
|
|
101
|
+
`execution.fix_loop_max` budget (default 10) on the same target → STOP
|
|
102
|
+
(`autonomous-execution`).
|
|
101
103
|
|
|
102
104
|
### Hard exclusions — never inside this command
|
|
103
105
|
|
|
@@ -125,32 +125,10 @@ Run a quick test to confirm rtk picks up the filters:
|
|
|
125
125
|
rtk config 2>&1 | tail -5
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
### 7. Present results
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
- `off` → emit nothing on success; surface errors only.
|
|
134
|
-
- `minimal` (default) → one line: `→ N filters configured in .rtk/rtk.toml`.
|
|
135
|
-
- `full` → multi-line summary table:
|
|
136
|
-
|
|
137
|
-
```
|
|
138
|
-
| # | Filter | Match | Max |
|
|
139
|
-
|-----|--------------|---------------------------------------------------------------|------|
|
|
140
|
-
| 1 | phpstan | phpstan\|quality:phpstan\|vendor/bin/phpstan | 80 |
|
|
141
|
-
| 2 | pest | pest\|phpunit\|artisan test | 60 |
|
|
142
|
-
| 3 | tsc | tsc\|tsc --noEmit | 60 |
|
|
143
|
-
| 4 | eslint | eslint\|next lint | 50 |
|
|
144
|
-
| 5 | vitest | vitest\|jest | 50 |
|
|
145
|
-
| 6 | playwright | playwright\|@playwright/test | 40 |
|
|
146
|
-
| 7 | ruff | ruff check\|ruff format | 60 |
|
|
147
|
-
| 8 | mypy | mypy\|pyright | 50 |
|
|
148
|
-
| 9 | pytest | pytest\|python -m pytest | 50 |
|
|
149
|
-
| 10 | golangci | golangci-lint\|go vet | 50 |
|
|
150
|
-
| 11 | gotest | go test | 40 |
|
|
151
|
-
| 12 | cargo | cargo build\|cargo check\|cargo clippy\|cargo test\|cargo fmt | 50 |
|
|
152
|
-
| ... | ... | (add per project as the toolchain grows) | ... |
|
|
153
|
-
```
|
|
128
|
+
### 7. Present results
|
|
129
|
+
|
|
130
|
+
One line on success: `→ N filters configured in .rtk/rtk.toml`. Errors are
|
|
131
|
+
always surfaced.
|
|
154
132
|
|
|
155
133
|
### Rules
|
|
156
134
|
|
|
@@ -22,11 +22,10 @@ packs:
|
|
|
22
22
|
|
|
23
23
|
> **Carve-out:** this command's *purpose* is the copyable preview of
|
|
24
24
|
> the PR description. It therefore **ignores**
|
|
25
|
-
> `
|
|
26
|
-
>
|
|
27
|
-
>
|
|
28
|
-
>
|
|
29
|
-
> PR is actually being created.
|
|
25
|
+
> `commands.create_pr.preview_description` — that flag governs only the
|
|
26
|
+
> bare `/create-pr` flow's preview-and-adjust loop. Removing the preview
|
|
27
|
+
> here would make the command a no-op. Do not "fix" this; the suppression
|
|
28
|
+
> flag only applies when the PR is actually being created.
|
|
30
29
|
|
|
31
30
|
## Input
|
|
32
31
|
|
|
@@ -87,7 +86,15 @@ That's 6 round-trips for what should be 2.
|
|
|
87
86
|
|
|
88
87
|
### 3. Build the PR title
|
|
89
88
|
|
|
90
|
-
-
|
|
89
|
+
- **Squash merge** — the method `/pr:merge` § 9 reads
|
|
90
|
+
(`gh repo view --json mergeCommitAllowed,squashMergeAllowed,rebaseMergeAllowed`)
|
|
91
|
+
is squash: the title becomes the commit subject on the base, so build it as a
|
|
92
|
+
subject in the convention in force — `DEV-4673 fix(working-time): correct absence calculation`
|
|
93
|
+
under `ticket-conventional`, `fix(DEV-4673): correct absence calculation` under
|
|
94
|
+
the default — and pipe it through `agent-config git:convention subject`; act on
|
|
95
|
+
the exit code as `/commit` step 5 does.
|
|
96
|
+
- **Any other method** — `{TICKET-ID}: {summary}` (e.g. `DEV-4673: Fix absence working time calculation`).
|
|
97
|
+
- The rule: [`commit-subject`](../../../../../skills/git-workflow/references/commit-subject.md) § A title that becomes a commit.
|
|
91
98
|
- Use the Jira ticket summary if available, otherwise derive from commits.
|
|
92
99
|
- If no ticket: use the most descriptive commit message or ask the user.
|
|
93
100
|
|
|
@@ -173,13 +180,12 @@ summary and `## How to test` is omitted):
|
|
|
173
180
|
|
|
174
181
|
#### 4.3 API response examples (evidence-grounded)
|
|
175
182
|
|
|
176
|
-
|
|
177
|
-
the
|
|
178
|
-
|
|
183
|
+
When the diff touches an API endpoint, add a fenced request/response example
|
|
184
|
+
under the Description. This is not a setting — it always applies, and the
|
|
185
|
+
grounding rule below is what keeps it honest.
|
|
179
186
|
|
|
180
187
|
**Detect an API-endpoint change** (fail-open — no false enrichment when
|
|
181
|
-
ambiguous)
|
|
182
|
-
the light heuristic — a route file (`routes/`, `**/api/**`, `*Controller*`,
|
|
188
|
+
ambiguous) with the light heuristic — a route file (`routes/`, `**/api/**`, `*Controller*`,
|
|
183
189
|
resource/serializer classes) whose diff adds or changes an endpoint or its
|
|
184
190
|
request/response shape. No confident match → skip silently.
|
|
185
191
|
|
|
@@ -212,8 +218,6 @@ Response `201`:
|
|
|
212
218
|
```
|
|
213
219
|
~~~
|
|
214
220
|
|
|
215
|
-
`api_examples: false` → skip this step entirely.
|
|
216
|
-
|
|
217
221
|
#### 4.4 Screenshots for frontend changes (capability-gated)
|
|
218
222
|
|
|
219
223
|
Read `commands.create_pr.screenshots` (default `false`). `false` → skip this
|
|
@@ -223,8 +227,7 @@ When `true`, this is a **capability-gated contract, never a runtime
|
|
|
223
227
|
orchestrator** — the package ships instructions, the host provides the tools:
|
|
224
228
|
|
|
225
229
|
1. **Frontend-change gate.** Only proceed if the diff touches a frontend
|
|
226
|
-
surface
|
|
227
|
-
the light heuristic (`.vue` / `.tsx` / `.jsx` / `.blade.php` / `.svelte`,
|
|
230
|
+
surface by the light heuristic (`.vue` / `.tsx` / `.jsx` / `.blade.php` / `.svelte`,
|
|
228
231
|
component/view/page/template dirs, CSS/Tailwind). No match → skip silently.
|
|
229
232
|
2. **Capability gate — explicit, never silent.** Screenshots need host
|
|
230
233
|
browser/preview tooling (a Playwright/browser MCP **and** a reachable dev-server
|
|
@@ -101,7 +101,7 @@ Run, in order:
|
|
|
101
101
|
| Gate | Overlapping open PR touches same files? | Action |
|
|
102
102
|
|---|---|---|
|
|
103
103
|
| exit `0`, prints `branch is current` | — | Proceed to Step 2 |
|
|
104
|
-
| exit `1` | No | **
|
|
104
|
+
| exit `1` | No | **Bring the base in** per `git.update_strategy` ([`branch-update`](../../../../skills/git-workflow/references/branch-update.md)). `merge` (default): `git fetch origin && git merge origin/{resolved-base} --no-edit` — no need to ask; state that you did it. `rebase`: ask first unless `git-history-discipline` already authorises the rewrite (see `branch-update` for the three cases), never fall back to a merge, and on an already-pushed branch run `branch-update`'s pre-rewrite stop and push with its `--force-with-lease` form. Then run the regeneration set below, then proceed. |
|
|
105
105
|
| exit `1` | **Yes** | STOP — surface the overlapping PR number, ask: stack on top of it / wait for it to land / proceed-anyway-and-accept-conflicts / cancel |
|
|
106
106
|
| exit `0`, prints `NOT VERIFIED` | — | The base could not be reached, so freshness is **unknown** — not confirmed. Re-run once; if it persists, say the check did not run rather than reporting a pass. A base that `ls-remote` cannot resolve (deleted or renamed after the PR opened, or a fork base) lands here too. |
|
|
107
107
|
| warns `could not ask the forge` | — | The **default** base was checked and an open PR against a different base was **not** ruled out. Say so; do not report it as a clean freshness pass. |
|
|
@@ -137,8 +137,22 @@ a generated-file conflict never is.
|
|
|
137
137
|
|
|
138
138
|
The gate above is not creation-only. **Every subsequent push** to a branch with
|
|
139
139
|
an open PR (a CI fix, a review response, a follow-up commit) re-runs the same
|
|
140
|
-
sequence first: `check_branch_freshness` → on exit `1`,
|
|
141
|
-
`origin/{resolved-base}` in
|
|
140
|
+
sequence first: `check_branch_freshness` → on exit `1`, bring
|
|
141
|
+
`origin/{resolved-base}` in per `git.update_strategy` (merge by default; under
|
|
142
|
+
`rebase` a rebase that is asked for, never a merge, and `sync_pr_branch` refuses
|
|
143
|
+
a behind branch with exit 3)
|
|
144
|
+
→ regenerate the derived files → verify → push (after a rebase:
|
|
145
|
+
`git push --force-with-lease=refs/heads/<b>:<sha> <remote> HEAD:refs/heads/<b>`,
|
|
146
|
+
never a plain push). A rebase runs only through § The rebase sequence in
|
|
147
|
+
[`branch-update`](../../../../skills/git-workflow/references/branch-update.md):
|
|
148
|
+
the ref the branch publishes is resolved from `@{push}` or the pull request's
|
|
149
|
+
head repository — never `@{u}`, and an unresolved target means no rewrite — its
|
|
150
|
+
SHA is pinned once after the fetch, must already be in `HEAD`, and is the lease
|
|
151
|
+
unchanged — so a collaborator's push lands either before the pin and halts the
|
|
152
|
+
stop, or after it and fails the lease, and is never overwritten.
|
|
153
|
+
Its steps 1–3 rebase and report, then stop: the regenerate → verify above runs
|
|
154
|
+
on the rebased tree, and only then does its step 4 publish, re-running step 1
|
|
155
|
+
with the `SAVE` and `EXPECTED` step 3 printed.
|
|
142
156
|
A PR that sits open while its base advances goes stale silently; keeping the
|
|
143
157
|
base merged **at every touch** means it stays `mergeStateStatus: CLEAN` instead
|
|
144
158
|
of accumulating conflicts for the moment the user wants to merge. If the gate
|
|
@@ -160,9 +174,13 @@ runner; the hook never merges, because a merge inside `pre-push` rewrites the
|
|
|
160
174
|
tree at the moment you believe your work is finished.
|
|
161
175
|
|
|
162
176
|
**The resolution is executable now, not just described.**
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
177
|
+
`agent-config git:convention sync --base origin/<base>`, `<base>` being the
|
|
178
|
+
`baseRefName` of the branch's `OPEN` pull request (`gh pr view --json
|
|
179
|
+
state,baseRefName`; a closed or merged one does not count, and without an open
|
|
180
|
+
one the base is the default branch), fetches and merges that
|
|
181
|
+
base in when the branch is behind, so a stacked or release-line PR is measured
|
|
182
|
+
against what it actually merges into. It never asks the forge itself: without
|
|
183
|
+
`--base` the target is the default branch, which is right only for a PR into it. The base is a
|
|
166
184
|
**set**: when the PR targets something other than the default branch, whether
|
|
167
185
|
the default branch joins the set is a per-target policy read from the *target's
|
|
168
186
|
own commit*, never from this branch — see `src/scripts/_lib/branch_convergence.ts`.
|
|
@@ -255,9 +273,9 @@ Run `/create-pr:description-only` Steps 1–4 to generate the PR title and body.
|
|
|
255
273
|
This handles: Jira ticket extraction, diff analysis, commit messages, **PR template filling**.
|
|
256
274
|
|
|
257
275
|
The generation honors the cached content flags from step 1 (§4f):
|
|
258
|
-
`detail_level` sets the Description tier (default `min`)
|
|
259
|
-
adds a grounded JSON block for
|
|
260
|
-
(
|
|
276
|
+
`detail_level` sets the Description tier (default `min`) and `screenshots`
|
|
277
|
+
(capability-gated) adds frontend screenshots; a grounded JSON block for
|
|
278
|
+
API-endpoint changes is always added (`/create-pr:description-only` § 4.3). Critical-info callouts
|
|
261
279
|
(breaking changes / migrations / security / rollback) appear at every tier.
|
|
262
280
|
|
|
263
281
|
**CRITICAL**: The PR body MUST use the project's PR template (`.github/pull_request_template.md`).
|
|
@@ -321,18 +339,15 @@ user request.
|
|
|
321
339
|
- **Head branch**: EXACT output of `git branch --show-current` from step 1.
|
|
322
340
|
- **Base branch**: default branch (`main` / `master`).
|
|
323
341
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
per-invocation with `:ready` / `:final` / `:draft`.
|
|
327
|
-
by flipping `routine_confirmations: true`. See
|
|
328
|
-
[`docs/customization.md` § Verbosity](../../docs/customization.md#verbosity).
|
|
342
|
+
`/create-pr` creates the PR as draft silently — draft-or-ready is a routine
|
|
343
|
+
confirmation with one obvious answer, so it is never asked. Override
|
|
344
|
+
per-invocation with `:ready` / `:final` / `:draft`.
|
|
329
345
|
|
|
330
346
|
Resolve `"draft"` (first match wins):
|
|
331
347
|
|
|
332
348
|
1. `:ready` / `:final` arg → `false`.
|
|
333
349
|
2. `:draft` arg → `true`.
|
|
334
|
-
3. `
|
|
335
|
-
4. Default → `true` (silent draft).
|
|
350
|
+
3. Default → `true` (silent draft).
|
|
336
351
|
|
|
337
352
|
#### 3a. Tool selection — single-call mandate
|
|
338
353
|
|
|
@@ -382,7 +397,7 @@ gh pr view {number} --json isDraft --jq '.isDraft'
|
|
|
382
397
|
# returns true → gh pr ready {number}
|
|
383
398
|
```
|
|
384
399
|
|
|
385
|
-
**Silent-draft postscript** (rule
|
|
400
|
+
**Silent-draft postscript** (rule 3) → see step 4b.
|
|
386
401
|
|
|
387
402
|
### 4. After creation
|
|
388
403
|
|
|
@@ -420,14 +435,10 @@ Run this strip-pass **after PR creation and after every body PATCH**:
|
|
|
420
435
|
the line entirely when nothing was stripped — silence is the
|
|
421
436
|
expected path, not "no footers found").
|
|
422
437
|
|
|
423
|
-
#### 4b. Show the PR URL
|
|
438
|
+
#### 4b. Show the PR URL
|
|
424
439
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
- `off` → nothing.
|
|
428
|
-
- `minimal` → `→ #N opened: <url>`. Append `→ created as draft — run
|
|
429
|
-
\`gh pr ready N\` to flip` when silent-draft (rule 4); omit on ready.
|
|
430
|
-
- `full` → multi-line: PR number, URL, draft state, base/head, ready-reminder.
|
|
440
|
+
`→ #N opened: <url>`. Append `→ created as draft — run \`gh pr ready N\` to
|
|
441
|
+
flip` when silent-draft (rule 3); omit on ready.
|
|
431
442
|
|
|
432
443
|
#### 4c. Status claims — verified facts only (MANDATORY)
|
|
433
444
|
|
|
@@ -498,7 +509,8 @@ turns on `gh pr checks` every minute is the tool-loop
|
|
|
498
509
|
untracked-`dist/` cases). When local and CI disagree, CI is authoritative.
|
|
499
510
|
3. **Fix, then re-verify locally** with the narrowest command that proves the
|
|
500
511
|
target green.
|
|
501
|
-
4. **Bounded
|
|
512
|
+
4. **Bounded by the `execution.fix_loop_max` budget (default 10) and its
|
|
513
|
+
ladder, per failing target** ([`autonomous-execution`](../rules/autonomous-execution.md)).
|
|
502
514
|
Same failure signature twice → the hypothesis is wrong; change approach
|
|
503
515
|
rather than spending the third attempt on a near-identical retry.
|
|
504
516
|
5. **The push stays gated — and a fix-the-CI instruction IS the gate being
|
|
@@ -571,19 +583,15 @@ an actual Jira API call succeeded** — never announce "skipped".
|
|
|
571
583
|
|
|
572
584
|
#### 4f. Settings short-circuit — single read per run
|
|
573
585
|
|
|
574
|
-
`
|
|
575
|
-
`commands.create_pr.
|
|
576
|
-
`commands.create_pr.api_examples`, `commands.create_pr.screenshots`,
|
|
577
|
-
`commands.create_pr.ui_paths`, and `commands.create_pr.api_paths` are read
|
|
578
|
-
**once** at the top of the run and cached for the whole `/create-pr`
|
|
586
|
+
`commands.create_pr.preview_description`, `commands.create_pr.detail_level`
|
|
587
|
+
and `commands.create_pr.screenshots` are read **once** at the top of the run and cached for the whole `/create-pr`
|
|
579
588
|
invocation. Do **not** re-read `.agent-settings.yml` in Step 2 or 4b / 4e —
|
|
580
589
|
every branch resolves from the cached values from step 1. The content flags
|
|
581
|
-
(`detail_level`, `
|
|
582
|
-
consumed by the `/create-pr:description-only` generation step (Step 2); the
|
|
590
|
+
(`detail_level`, `screenshots`) are consumed by the `/create-pr:description-only` generation step (Step 2); the
|
|
583
591
|
confirmation/report flags by steps 3–4.
|
|
584
592
|
|
|
585
|
-
When
|
|
586
|
-
|
|
593
|
+
When `preview_description` resolves to its silent default (`false`), steps
|
|
594
|
+
4b + 4e collapse to the single `→ #N opened: <url>` line
|
|
587
595
|
from 4b and a silent 4e. No extra file reads, no "checking settings…"
|
|
588
596
|
narration, no confirmation prompts. Step 4c is never collapsed — status
|
|
589
597
|
claims always carry evidence.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
model_tier: medium
|
|
3
3
|
name: git-pr-merge
|
|
4
4
|
disable-model-invocation: true
|
|
5
|
-
argument-hint: "[all|<pr-number>] [--no-merge]"
|
|
5
|
+
argument-hint: "[all|<pr-number>] [--merge|--no-merge]"
|
|
6
6
|
pack: git
|
|
7
7
|
intent: "Prepare an open PR to mergeable — sync the base in, resolve conflicts semantically, drive required checks green — then merge what the invocation named"
|
|
8
8
|
routes_to: [git-workflow, github-ci]
|
|
@@ -35,6 +35,9 @@ AN EXPLICIT `/pr:merge` INVOCATION IS THE THIS-TURN CONFIRMATION, AND IT
|
|
|
35
35
|
REACHES EXACTLY THE PRs § 1's MANIFEST SNAPSHOTTED FROM IT. IT NEVER REACHES
|
|
36
36
|
A PR THAT ARRIVED LATER, A HEAD THE MANIFEST DID NOT RECORD, OR ANY OTHER
|
|
37
37
|
HARD-FLOOR ACTION. `--no-merge` STILL STOPS BEFORE § 9.
|
|
38
|
+
ADR-282: AN OWNER AUTO-MERGE INSTRUCTION (`--merge`, OR THE OWNER'S OWN WORDS IN
|
|
39
|
+
THE SESSION) IS THE SAME CONFIRMATION FOR A `routine` PR. A `needs-council` PR
|
|
40
|
+
MERGES ONLY ON TWO CONVERGENT CLEARING SEATS (§ 9a) — OTHERWISE THE OWNER DECIDES.
|
|
38
41
|
```
|
|
39
42
|
|
|
40
43
|
**The invocation is the authorization, and nothing else is.** `pr-merge` is
|
|
@@ -76,7 +79,8 @@ merged (§ 5).
|
|
|
76
79
|
| `/pr:merge <N>` | exactly PR N | yes | yes — PR N |
|
|
77
80
|
| `/pr:merge` | ONE PR: green first, then infrastructure/tooling before content, then smallest diff (`changedFiles`, then additions+deletions), tiebreak ascending number | yes | yes — the one PR it selected |
|
|
78
81
|
| `/pr:merge all` | the whole open-PR list, under § 6's cutoff | yes | yes — the manifest, in queue order |
|
|
79
|
-
| `… --
|
|
82
|
+
| `… --merge` | as above | yes | yes, through § 9a's danger gate — the form [`/roadmap:process-full`](../../../product-basic/roadmap/process-full/command.md) calls when the owner gave an auto-merge instruction (ADR-282) |
|
|
83
|
+
| `… --no-merge` | as above | yes | **never**, explicitly. This is the form [`/roadmap:process-full`](../../../product-basic/roadmap/process-full/command.md) calls for its delivery loop without an auto-merge instruction. |
|
|
80
84
|
|
|
81
85
|
**Bare invocation** (`/pr:merge` with no argument) is a **documented default
|
|
82
86
|
flow**, not a menu: it runs the auto-selection in row 2 and says which PR it
|
|
@@ -132,14 +136,94 @@ says what happens to it instead.
|
|
|
132
136
|
|
|
133
137
|
## 2. Sync with the base
|
|
134
138
|
|
|
139
|
+
Check the PR out, read the strategy against its base, then let one script do
|
|
140
|
+
the update, so the branch-convergence policy (the base SET a non-default target
|
|
141
|
+
carries) is read on every path. `show` takes the same `--base` as `sync` and
|
|
142
|
+
runs after the checkout: without `--base` both read the default branch, and a PR
|
|
143
|
+
into any other base would be judged against the wrong commit. `--key
|
|
144
|
+
update_strategy` limits `show`'s exit to the strategy, so a `commit_format` or
|
|
145
|
+
`branch_pattern` the PR head breaks does not stop the update.
|
|
146
|
+
|
|
135
147
|
```bash
|
|
136
148
|
git fetch origin
|
|
137
149
|
gh pr checkout <N>
|
|
138
|
-
git
|
|
150
|
+
agent-config git:convention show --key update_strategy --base origin/<base> # value, source, state
|
|
151
|
+
agent-config git:convention sync --base origin/<base>
|
|
139
152
|
```
|
|
140
153
|
|
|
141
|
-
|
|
142
|
-
|
|
154
|
+
A `git.update_strategy` whose state is `malformed`, `invalid`, `discarded` or
|
|
155
|
+
`unresolvable` is not a strategy — `show` exits `1` on it and the script
|
|
156
|
+
refuses it with exit 4, or with exit 1 when the target itself cannot be
|
|
157
|
+
resolved — so stop on this PR and report the line `show` printed. A
|
|
158
|
+
candidate in such a state (this checkout's uncommitted value) is a warning
|
|
159
|
+
`show` prints with exit `0`; the script never reads it, so it does not stop
|
|
160
|
+
the PR.
|
|
161
|
+
The one narrowing: a base the server names whose commit could not be fetched is
|
|
162
|
+
the `unverified` warning below (exit `0`, nothing merged); origin unreachable at
|
|
163
|
+
the ref lookup is exit `1`. Otherwise
|
|
164
|
+
the strategy decides what the script does — under `merge` it merges the base
|
|
165
|
+
set in, under `rebase` it only checks, because a
|
|
166
|
+
`Merge branch '<base>' into …` commit is what that setting excludes and the
|
|
167
|
+
`/pr:merge` sentence authorises merging the named PRs, not rewriting their
|
|
168
|
+
branches ([`git-history-discipline`](../../../../rules/git-history-discipline.md)).
|
|
169
|
+
Read its exit and its line together:
|
|
170
|
+
|
|
171
|
+
- exit `0` with a `✅` line → the PR is current with its base, or under `merge`
|
|
172
|
+
the base was merged in cleanly; go on to § 3.
|
|
173
|
+
- exit `0` with a `⚠️` line reading `unverified` (the base commit or origin could not be fetched)
|
|
174
|
+
or `BYPASSED` (the convergence policy is disabled at the target) → **not
|
|
175
|
+
checked**: nothing is known about freshness. Stop on this PR and report the
|
|
176
|
+
line; it is never read as current.
|
|
177
|
+
- exit `1` → a conflict report goes to § 3; a base that could not be resolved
|
|
178
|
+
(a `--base` the server does not know, no origin, origin unreachable) stops
|
|
179
|
+
this PR.
|
|
180
|
+
- exit `3` → behind under a strategy other than `merge`. This run never
|
|
181
|
+
rebases a PR it did not author — the rebase is the author's, or a separate
|
|
182
|
+
request under
|
|
183
|
+
[`branch-update`](../../../../skills/git-workflow/references/branch-update.md).
|
|
184
|
+
What happens to the PR is an owner decision (recorded
|
|
185
|
+
2026-10-07), and it turns on one forge setting — whether the base requires an
|
|
186
|
+
up-to-date branch before merging:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
gh api repos/{owner}/{repo}/branches/<base>/protection \
|
|
190
|
+
--jq .required_status_checks.strict 2>&1; echo "exit=$?"
|
|
191
|
+
gh api repos/{owner}/{repo}/rules/branches/<base> \
|
|
192
|
+
--jq '.[] | select(.type == "required_status_checks") | .parameters.strict_required_status_checks_policy'; echo "exit=$?"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Each read has three outcomes, told apart by the exit code and the message:
|
|
196
|
+
|
|
197
|
+
| Read | Absent | Value | Failed |
|
|
198
|
+
|---|---|---|---|
|
|
199
|
+
| classic protection | non-zero exit **and** the output contains `(HTTP 404)` (`Branch not protected`); or exit `0` with `null` — the branch is protected but requires no status checks | exit `0`: `true` or `false` | any other non-zero exit, or output that is not `true` / `false` / `null` |
|
|
200
|
+
| rulesets | exit `0` with empty output (no rule requiring status checks) | exit `0`: one or more lines, each `true` or `false` | non-zero exit, or a line that is not `true` / `false` |
|
|
201
|
+
|
|
202
|
+
A `404` from the classic endpoint is not a failed read: it is what a branch
|
|
203
|
+
protected only by rulesets, or not protected at all, returns; nor is `null`
|
|
204
|
+
from a `200`, which is a protected branch with no required status checks.
|
|
205
|
+
The rulesets read prints one line per ruleset on the base that requires
|
|
206
|
+
status checks, so a base covered by several prints several lines: **any**
|
|
207
|
+
`true` line reads as `true`; all lines `false` reads as `false`. Either reading
|
|
208
|
+
`true` means the forge requires an up-to-date branch; both absent or `false`
|
|
209
|
+
means it does not; a **failed** read is treated as required. A base
|
|
210
|
+
protected by rulesets alone is decided by the rulesets read.
|
|
211
|
+
- **The forge does not require an up-to-date branch**, and the PR is green
|
|
212
|
+
and conflict-free → it goes on to § 3–§ 9 and is merged behind its base;
|
|
213
|
+
the summary row says so (`merged behind <base>; the forge does not require
|
|
214
|
+
an up-to-date branch`). Its checks never ran against the current base, and
|
|
215
|
+
the summary is where that stays visible.
|
|
216
|
+
- **The forge requires an up-to-date branch** → disposition
|
|
217
|
+
`blocked-external`, the row naming that setting as the reason.
|
|
218
|
+
- **The line reads `TARGET_POLICY_STALE`** → the PR is current with its
|
|
219
|
+
non-default target and that target is itself behind its default branch:
|
|
220
|
+
`blocked-external`, reason "the target's update", whatever the forge
|
|
221
|
+
setting. A PR also behind its target gets the ordinary behind line instead,
|
|
222
|
+
with the target's lag as a note.
|
|
223
|
+
- exit `4` → the strategy could not be read (the line names the reason code
|
|
224
|
+
and the file); nothing was checked or merged. Stop on this PR and report it.
|
|
225
|
+
- any other exit → the check could not run (internal error); stop on this PR
|
|
226
|
+
and report the script's message.
|
|
143
227
|
|
|
144
228
|
## 3. Resolve conflicts by class, never by taste
|
|
145
229
|
|
|
@@ -281,6 +365,15 @@ After each merge the base has moved, so the next PR is re-synced against the
|
|
|
281
365
|
NEW base — that is the loop, and it is why pre-greening several PRs ahead of
|
|
282
366
|
their merges is wasted work.
|
|
283
367
|
|
|
368
|
+
**Under a strategy other than `merge`**, every PR after the first is behind the
|
|
369
|
+
base the previous merge moved, and this run rebases none of them. Where the
|
|
370
|
+
forge does not require an up-to-date branch, a green, conflict-free PR that is
|
|
371
|
+
behind still merges (§ 2, exit `3`) — three green branches merge without three
|
|
372
|
+
sequential rebases — and each such row says it merged behind its base. Where
|
|
373
|
+
the forge requires an up-to-date branch, the first merge leaves every remaining
|
|
374
|
+
PR `blocked-external`, and the summary names that setting rather than leaving
|
|
375
|
+
the reader to find it.
|
|
376
|
+
|
|
284
377
|
**Under `--no-merge` that loop does not turn**, and the paragraph above is
|
|
285
378
|
written for the form that does. Nothing merges, so the base does not advance,
|
|
286
379
|
no PR leaves the open list, and the run is a **preparation sweep**: it syncs,
|
|
@@ -379,12 +472,41 @@ NO ROLLBACK, ONLY COMPENSATION, AND COMPENSATION IS A SEPARATELY AUTHORIZED
|
|
|
379
472
|
HUMAN DECISION. STOP, EMIT THE MERGE SHAs AND THE REASON, HAND OVER.
|
|
380
473
|
```
|
|
381
474
|
|
|
475
|
+
## 9a. Danger gate — before every merge (ADR-282)
|
|
476
|
+
|
|
477
|
+
Once required checks are green on the manifest head and the PR is mergeable:
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
./scripts-run src/scripts/classify_merge_risk <N>
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
The last line is the verdict; each trigger names the rule it comes from. An
|
|
484
|
+
unreadable diff is `needs-council` — the gate fails closed.
|
|
485
|
+
|
|
486
|
+
- **`routine`** → merge in § 9. No review step.
|
|
487
|
+
- **`needs-council`** → the AI council reviews the diff with a **neutral**
|
|
488
|
+
prompt (scope, diff, the triggers, two questions: *does any of the six
|
|
489
|
+
dangerous-action predicates of the authority-routing council record
|
|
490
|
+
(`agents/evidence/council/authority-routing-20261007.md` § 4) apply?* and *is
|
|
491
|
+
an owner review unnecessary?* — never an expected answer, per
|
|
492
|
+
`evaluator-independence`). A council may resolve doubt but cannot waive
|
|
493
|
+
danger: a seat finding that a predicate applies is a "dangerous" seat. Record the prompt and both
|
|
494
|
+
verdicts under `agents/evidence/`. **Both seats: not dangerous, owner review
|
|
495
|
+
unnecessary → merge.** Dangerous, split, degraded quorum, or council
|
|
496
|
+
unavailable → do not merge; record the PR `unauthorized` and hand it to the
|
|
497
|
+
owner with the seats' reasons.
|
|
498
|
+
|
|
499
|
+
A `needs-council` clearance only clears the merge. Deploy, release and every
|
|
500
|
+
other Hard-Floor action keep their own confirmation.
|
|
501
|
+
|
|
382
502
|
## 9. Merge, and the summary
|
|
383
503
|
|
|
384
504
|
```bash
|
|
385
|
-
gh pr merge <N> --<detected-method> --delete-branch
|
|
505
|
+
gh pr merge <N> --<detected-method> --delete-branch --match-head-commit <manifest-head-sha>
|
|
386
506
|
```
|
|
387
507
|
|
|
508
|
+
`--match-head-commit` makes the forge refuse a head the manifest did not record.
|
|
509
|
+
|
|
388
510
|
Detect the method once, at invocation, and reuse it for the whole queue:
|
|
389
511
|
|
|
390
512
|
```bash
|
|
@@ -409,8 +531,11 @@ run, so it does not exist until one has happened): one row per PR with queue
|
|
|
409
531
|
position, the `base_ref@base_sha` it was prepared against — without it a
|
|
410
532
|
"prepared" row records nothing checkable, since mergeability is a fact about a
|
|
411
533
|
base and not about a queue —
|
|
412
|
-
conflict classes hit, CI iterations used, disposition
|
|
413
|
-
|
|
534
|
+
conflict classes hit, CI iterations used, disposition **with its reason** —
|
|
535
|
+
`merged behind <base>` where § 2 merged a PR its forge let through behind,
|
|
536
|
+
`requires an up-to-date branch` or `TARGET_POLICY_STALE` for a behind PR left
|
|
537
|
+
blocked — and any edits dropped in conflict resolution. Every PR the run saw
|
|
538
|
+
gets a row; none is summarised away. The disposition set is closed:
|
|
414
539
|
|
|
415
540
|
`merged <sha>` · `superseded-closed` · `blocked-external` · `twice-exhausted` ·
|
|
416
541
|
`unauthorized` · `arrived-after-cutoff`
|
|
@@ -430,7 +555,9 @@ ends this run prepared and unmerged.
|
|
|
430
555
|
`--no-merge` is the explicit way to say stop before § 9.
|
|
431
556
|
- **Never widen, patch, or rebuild-around the git guard.** Verification of the
|
|
432
557
|
authorization window is read-only.
|
|
433
|
-
- **
|
|
558
|
+
- **The base comes in per `git.update_strategy`**: under `merge` it is merged
|
|
559
|
+
in; under `rebase` this command never rebases — a behind PR is reported
|
|
560
|
+
(exit 3) and the rewrite stays the author's, under `git-history-discipline`.
|
|
434
561
|
- **Never hand-merge a generated artefact**; regenerate it.
|
|
435
562
|
- **Never resolve a conflict outside the four classes**; halt instead.
|
|
436
563
|
- **Never call CI green off a local run**; re-verify on the pushed head.
|
|
@@ -73,6 +73,15 @@ git checkout {child-branch}
|
|
|
73
73
|
git merge {parent-branch} --no-edit
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
+
- **Under `git.update_strategy: rebase`** do not merge the chain: a merge
|
|
77
|
+
commit on a feature branch is what that setting excludes, and this command
|
|
78
|
+
must not leave one behind to be pushed later. Check the target branch back
|
|
79
|
+
out, report which branches are behind their parent, and finish without error
|
|
80
|
+
— the review then runs against `git merge-base HEAD origin/<parent-branch>`
|
|
81
|
+
(the remote ref step 4 fetched; a local branch may be missing or stale), the
|
|
82
|
+
target's direct parent in the chain, so parent PRs stay out of it. Updating the
|
|
83
|
+
chain is a rebase the user asks for
|
|
84
|
+
([`branch-update`](../../../skills/git-workflow/references/branch-update.md)).
|
|
76
85
|
- If a **merge conflict** occurs at any point:
|
|
77
86
|
- Run `git merge --abort`
|
|
78
87
|
- Abort the entire process immediately
|
|
@@ -87,18 +96,11 @@ Once all merges succeed:
|
|
|
87
96
|
git checkout {head-branch-of-target-PR}
|
|
88
97
|
```
|
|
89
98
|
|
|
90
|
-
### 7. Report
|
|
99
|
+
### 7. Report
|
|
91
100
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
- `off` → emit nothing on success; surface warnings/errors only.
|
|
96
|
-
- `minimal` (default) → one line:
|
|
97
|
-
`→ {branch} ready · {N} branches merged · {warnings or "clean"}`.
|
|
98
|
-
- `full` → multi-line block listing:
|
|
99
|
-
- Which branch chain was processed (in order)
|
|
100
|
-
- That the target branch is now checked out and up to date
|
|
101
|
-
- Any warnings (e.g. branch was already up to date)
|
|
101
|
+
One line on success:
|
|
102
|
+
`→ {branch} ready · {N} branches merged · {warnings or "clean"}`.
|
|
103
|
+
Warnings and errors are always surfaced.
|
|
102
104
|
|
|
103
105
|
## Rules
|
|
104
106
|
|
|
@@ -129,15 +129,8 @@ LEGACY CHECK (indicators):
|
|
|
129
129
|
═══════════════════════════════════════════════
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
- `false` → continue to Phase 2 silently (user invoked `/project-analyze`
|
|
135
|
-
for the full pass; "continue" is dominant).
|
|
136
|
-
- `true` → ask:
|
|
137
|
-
```
|
|
138
|
-
> 1. Continue with Phase 2 — architecture analysis
|
|
139
|
-
> 2. Stop here — keep the overview only
|
|
140
|
-
```
|
|
132
|
+
Continue to Phase 2 silently — the user invoked `/project-analyze` for the
|
|
133
|
+
full pass, so "continue" is dominant and asking is a routine confirmation.
|
|
141
134
|
|
|
142
135
|
### 2. Architecture mapping
|
|
143
136
|
|
|
@@ -249,15 +242,8 @@ BUSINESS DOMAINS:
|
|
|
249
242
|
═══════════════════════════════════════════════
|
|
250
243
|
```
|
|
251
244
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
- `false` → create domain analysis files silently (user invoked
|
|
255
|
-
`/project-analyze`; "yes, create" is dominant).
|
|
256
|
-
- `true` → ask:
|
|
257
|
-
```
|
|
258
|
-
> 1. Yes — create domain analysis files
|
|
259
|
-
> 2. Skip — continue with next phase
|
|
260
|
-
```
|
|
245
|
+
Create the domain analysis files silently — the user invoked
|
|
246
|
+
`/project-analyze`, so "yes, create" is dominant.
|
|
261
247
|
|
|
262
248
|
For each confirmed domain, create `agents/evidence/analysis/domains/{domain}.md` using the template
|
|
263
249
|
from the `project-analyzer` skill.
|
|
@@ -286,14 +272,7 @@ SERVICE MAP:
|
|
|
286
272
|
═══════════════════════════════════════════════
|
|
287
273
|
```
|
|
288
274
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
- `false` → create API + service analysis files silently.
|
|
292
|
-
- `true` → ask:
|
|
293
|
-
```
|
|
294
|
-
> 1. Yes — create API and service analysis files
|
|
295
|
-
> 2. Skip — continue with next phase
|
|
296
|
-
```
|
|
275
|
+
Create the API + service analysis files silently.
|
|
297
276
|
|
|
298
277
|
Create:
|
|
299
278
|
- `agents/evidence/analysis/api/endpoints-v1.md`
|
|
@@ -315,15 +294,8 @@ Write all remaining analysis files that haven't been created yet:
|
|
|
315
294
|
- `agents/evidence/analysis/modules/{module}.md` — one per module
|
|
316
295
|
- `agents/evidence/analysis/testing/test-map.md` — test suites, coverage, strategy
|
|
317
296
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
- `false` → create all listed files silently (per-file picker is pure
|
|
321
|
-
noise once the user invoked `/project-analyze`).
|
|
322
|
-
- `true` → for each file, ask:
|
|
323
|
-
```
|
|
324
|
-
> 1. Create — {filename}
|
|
325
|
-
> 2. Skip
|
|
326
|
-
```
|
|
297
|
+
Create all listed files silently — a per-file picker is pure noise once the
|
|
298
|
+
user invoked `/project-analyze`.
|
|
327
299
|
|
|
328
300
|
### 8. Gap analysis & action plan
|
|
329
301
|
|
|
@@ -28,7 +28,7 @@ packs:
|
|
|
28
28
|
Accept one of four input paths:
|
|
29
29
|
|
|
30
30
|
1. **Explicit key** — `/refine-ticket PROJ-123`
|
|
31
|
-
2. **Branch detection** — no arg → `git
|
|
31
|
+
2. **Branch detection** — no arg → `agent-config git:convention ticket` on the current branch ([`commit-subject`](../../../skills/git-workflow/references/commit-subject.md) § Reading the ticket)
|
|
32
32
|
3. **Pasted text** — markdown block under the command
|
|
33
33
|
4. **URL** — `/refine-ticket https://…/browse/PROJ-123`
|
|
34
34
|
|