dsh-compound-engineering 0.0.0-stage → 0.1.1
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/LICENSE +21 -0
- package/README.md +160 -2
- package/README.zh.md +161 -0
- package/cordis.patch.yml +6 -0
- package/lib/frontmatter.js +167 -0
- package/lib/index.js +46 -0
- package/lib/provider.js +201 -0
- package/package.json +62 -4
- package/skills/CODING_STANDARDS.md +68 -0
- package/skills/ce-babysit-pr/SKILL.md +59 -0
- package/skills/ce-babysit-pr/references/branch-currency.md +22 -0
- package/skills/ce-babysit-pr/references/envelope.md +44 -0
- package/skills/ce-babysit-pr/references/pipeline.md +15 -0
- package/skills/ce-babysit-pr/references/report.md +20 -0
- package/skills/ce-babysit-pr/references/settle.md +37 -0
- package/skills/ce-babysit-pr/references/setup.md +33 -0
- package/skills/ce-babysit-pr/references/stack-commands.md +39 -0
- package/skills/ce-babysit-pr/references/stack.md +43 -0
- package/skills/ce-babysit-pr/references/tick.md +102 -0
- package/skills/ce-babysit-pr/references/watch-loop.md +222 -0
- package/skills/ce-babysit-pr/scripts/pr-snapshot +3656 -0
- package/skills/ce-bakeoff/SKILL.md +48 -0
- package/skills/ce-bakeoff/references/candidates.md +37 -0
- package/skills/ce-bakeoff/references/judging.md +19 -0
- package/skills/ce-bakeoff/references/output.md +11 -0
- package/skills/ce-bakeoff/references/verification.md +15 -0
- package/skills/ce-brainstorm/SKILL.md +69 -0
- package/skills/ce-brainstorm/references/agents/slack-researcher.md +127 -0
- package/skills/ce-brainstorm/references/approaches.md +57 -0
- package/skills/ce-brainstorm/references/bakeoff.md +9 -0
- package/skills/ce-brainstorm/references/blindspot-pass.md +70 -0
- package/skills/ce-brainstorm/references/brainstorm-sections.md +458 -0
- package/skills/ce-brainstorm/references/dialogue.md +89 -0
- package/skills/ce-brainstorm/references/handoff.md +187 -0
- package/skills/ce-brainstorm/references/html-rendering.md +638 -0
- package/skills/ce-brainstorm/references/interaction-rules.md +33 -0
- package/skills/ce-brainstorm/references/markdown-rendering.md +242 -0
- package/skills/ce-brainstorm/references/model-tiers.md +13 -0
- package/skills/ce-brainstorm/references/output-mode.md +26 -0
- package/skills/ce-brainstorm/references/phase-0.md +104 -0
- package/skills/ce-brainstorm/references/plan-write.md +32 -0
- package/skills/ce-brainstorm/references/product-pressure-test.md +42 -0
- package/skills/ce-brainstorm/references/reasoning-elevation.md +124 -0
- package/skills/ce-brainstorm/references/settled-decisions.md +45 -0
- package/skills/ce-brainstorm/references/synthesis-summary.md +149 -0
- package/skills/ce-brainstorm/references/universal-brainstorming.md +72 -0
- package/skills/ce-brainstorm/references/verdict-routing.md +26 -0
- package/skills/ce-brainstorm/references/visual-probes.md +164 -0
- package/skills/ce-brainstorm/scripts/elevation-dispatch.sh +288 -0
- package/skills/ce-brainstorm/scripts/light-webserver.js +1275 -0
- package/skills/ce-brainstorm/scripts/packs-resolve.py +737 -0
- package/skills/ce-brainstorm/scripts/peer-job-runner.py +2594 -0
- package/skills/ce-code-review/SKILL.md +40 -0
- package/skills/ce-code-review/references/action-class-rubric.md +67 -0
- package/skills/ce-code-review/references/cross-model-recovery.md +38 -0
- package/skills/ce-code-review/references/cross-model-review.md +191 -0
- package/skills/ce-code-review/references/depth-paths.md +32 -0
- package/skills/ce-code-review/references/diff-scope.md +59 -0
- package/skills/ce-code-review/references/dispatch-reviewers.md +135 -0
- package/skills/ce-code-review/references/findings-schema.json +125 -0
- package/skills/ce-code-review/references/finish-input.md +118 -0
- package/skills/ce-code-review/references/finish-review.md +202 -0
- package/skills/ce-code-review/references/intent-and-plan.md +73 -0
- package/skills/ce-code-review/references/modes-and-output.md +156 -0
- package/skills/ce-code-review/references/persona-catalog.md +66 -0
- package/skills/ce-code-review/references/personas/adversarial-reviewer.md +111 -0
- package/skills/ce-code-review/references/personas/agent-native-reviewer.md +173 -0
- package/skills/ce-code-review/references/personas/api-contract-reviewer.md +44 -0
- package/skills/ce-code-review/references/personas/correctness-reviewer.md +48 -0
- package/skills/ce-code-review/references/personas/data-migration-reviewer.md +111 -0
- package/skills/ce-code-review/references/personas/deployment-verification-agent.md +157 -0
- package/skills/ce-code-review/references/personas/julik-frontend-races-reviewer.md +45 -0
- package/skills/ce-code-review/references/personas/learnings-researcher.md +260 -0
- package/skills/ce-code-review/references/personas/maintainability-reviewer.md +85 -0
- package/skills/ce-code-review/references/personas/performance-reviewer.md +45 -0
- package/skills/ce-code-review/references/personas/previous-comments-reviewer.md +59 -0
- package/skills/ce-code-review/references/personas/project-standards-reviewer.md +77 -0
- package/skills/ce-code-review/references/personas/reliability-reviewer.md +49 -0
- package/skills/ce-code-review/references/personas/security-reviewer.md +50 -0
- package/skills/ce-code-review/references/personas/swift-ios-reviewer.md +99 -0
- package/skills/ce-code-review/references/personas/testing-reviewer.md +51 -0
- package/skills/ce-code-review/references/review-output-template.md +172 -0
- package/skills/ce-code-review/references/scope.md +176 -0
- package/skills/ce-code-review/references/select-and-route.md +93 -0
- package/skills/ce-code-review/references/subagent-template.md +206 -0
- package/skills/ce-code-review/references/validator-batch-template.md +67 -0
- package/skills/ce-code-review/scripts/cross-model-adversarial-review.sh +1275 -0
- package/skills/ce-code-review/scripts/findings-mechanics.py +274 -0
- package/skills/ce-code-review/scripts/packs-resolve.py +737 -0
- package/skills/ce-code-review/scripts/peer-job-runner.py +2594 -0
- package/skills/ce-code-review/scripts/review-scope.py +419 -0
- package/skills/ce-code-review/scripts/run-log.py +280 -0
- package/skills/ce-commit/SKILL.md +60 -0
- package/skills/ce-commit-push-pr/SKILL.md +69 -0
- package/skills/ce-commit-push-pr/references/apply-and-handoff.md +79 -0
- package/skills/ce-commit-push-pr/references/branch-creation.md +47 -0
- package/skills/ce-commit-push-pr/references/commit-and-push.md +26 -0
- package/skills/ce-commit-push-pr/references/compose.md +29 -0
- package/skills/ce-commit-push-pr/references/context.md +42 -0
- package/skills/ce-commit-push-pr/references/gh-stack-cli.md +83 -0
- package/skills/ce-commit-push-pr/references/pr-description-writing.md +208 -0
- package/skills/ce-commit-push-pr/references/stack-submit.md +81 -0
- package/skills/ce-compound/SKILL.md +79 -0
- package/skills/ce-compound/assets/resolution-template.md +96 -0
- package/skills/ce-compound/references/agents/best-practices-researcher.md +115 -0
- package/skills/ce-compound/references/agents/data-integrity-guardian.md +68 -0
- package/skills/ce-compound/references/agents/framework-docs-researcher.md +93 -0
- package/skills/ce-compound/references/agents/pattern-recognition-specialist.md +55 -0
- package/skills/ce-compound/references/agents/performance-oracle.md +108 -0
- package/skills/ce-compound/references/agents/security-sentinel.md +91 -0
- package/skills/ce-compound/references/agents/session-historian.md +82 -0
- package/skills/ce-compound/references/assembly.md +127 -0
- package/skills/ce-compound/references/concepts-vocabulary.md +98 -0
- package/skills/ce-compound/references/enhancement.md +42 -0
- package/skills/ce-compound/references/grounding-validation.md +89 -0
- package/skills/ce-compound/references/lightweight.md +56 -0
- package/skills/ce-compound/references/modes.md +13 -0
- package/skills/ce-compound/references/refresh-and-discoverability.md +96 -0
- package/skills/ce-compound/references/report.md +115 -0
- package/skills/ce-compound/references/research.md +144 -0
- package/skills/ce-compound/references/schema.yaml +236 -0
- package/skills/ce-compound/references/session-history.md +73 -0
- package/skills/ce-compound/references/yaml-schema.md +130 -0
- package/skills/ce-compound/scripts/packs-resolve.py +737 -0
- package/skills/ce-compound/scripts/session-history/__pycache__/dsh_session.cpython-314.pyc +0 -0
- package/skills/ce-compound/scripts/session-history/discover-sessions.sh +290 -0
- package/skills/ce-compound/scripts/session-history/discover_dsh.py +123 -0
- package/skills/ce-compound/scripts/session-history/dsh_session.py +225 -0
- package/skills/ce-compound/scripts/session-history/extract-errors.py +178 -0
- package/skills/ce-compound/scripts/session-history/extract-metadata.py +301 -0
- package/skills/ce-compound/scripts/session-history/extract-skeleton.py +346 -0
- package/skills/ce-compound/scripts/validate-doc-claims.py +497 -0
- package/skills/ce-compound/scripts/validate-frontmatter.py +137 -0
- package/skills/ce-compound-refresh/SKILL.md +88 -0
- package/skills/ce-compound-refresh/assets/resolution-template.md +96 -0
- package/skills/ce-compound-refresh/references/classify.md +42 -0
- package/skills/ce-compound-refresh/references/commit.md +7 -0
- package/skills/ce-compound-refresh/references/concepts-vocabulary.md +116 -0
- package/skills/ce-compound-refresh/references/discoverability.md +15 -0
- package/skills/ce-compound-refresh/references/investigate.md +23 -0
- package/skills/ce-compound-refresh/references/modes.md +27 -0
- package/skills/ce-compound-refresh/references/per-action-flows.md +142 -0
- package/skills/ce-compound-refresh/references/report.md +23 -0
- package/skills/ce-compound-refresh/references/schema.yaml +236 -0
- package/skills/ce-compound-refresh/references/scope.md +18 -0
- package/skills/ce-compound-refresh/references/worth-audit.md +35 -0
- package/skills/ce-compound-refresh/references/yaml-schema.md +130 -0
- package/skills/ce-compound-refresh/scripts/validate-doc-claims.py +497 -0
- package/skills/ce-compound-refresh/scripts/validate-frontmatter.py +137 -0
- package/skills/ce-debug/SKILL.md +122 -0
- package/skills/ce-debug/references/anti-patterns.md +91 -0
- package/skills/ce-debug/references/defense-in-depth.md +39 -0
- package/skills/ce-debug/references/fix.md +21 -0
- package/skills/ce-debug/references/investigate.md +114 -0
- package/skills/ce-debug/references/investigation-techniques.md +384 -0
- package/skills/ce-debug/references/pipeline-mode.md +78 -0
- package/skills/ce-debug/references/post-fix-handoff.md +60 -0
- package/skills/ce-debug/references/return-to-caller.md +57 -0
- package/skills/ce-doc-review/SKILL.md +75 -0
- package/skills/ce-doc-review/references/bulk-preview.md +146 -0
- package/skills/ce-doc-review/references/cross-model-review.md +207 -0
- package/skills/ce-doc-review/references/decision-primer.md +47 -0
- package/skills/ce-doc-review/references/dispatch.md +56 -0
- package/skills/ce-doc-review/references/document-intake.md +44 -0
- package/skills/ce-doc-review/references/findings-schema.json +85 -0
- package/skills/ce-doc-review/references/modes.md +20 -0
- package/skills/ce-doc-review/references/open-questions-defer.md +158 -0
- package/skills/ce-doc-review/references/persona-selection.md +41 -0
- package/skills/ce-doc-review/references/personas/adversarial-document-reviewer.md +109 -0
- package/skills/ce-doc-review/references/personas/coherence-reviewer.md +69 -0
- package/skills/ce-doc-review/references/personas/design-lens-reviewer.md +48 -0
- package/skills/ce-doc-review/references/personas/feasibility-reviewer.md +50 -0
- package/skills/ce-doc-review/references/personas/product-lens-reviewer.md +85 -0
- package/skills/ce-doc-review/references/personas/scope-guardian-reviewer.md +83 -0
- package/skills/ce-doc-review/references/personas/security-lens-reviewer.md +41 -0
- package/skills/ce-doc-review/references/personas/whole-doc-reviewer.md +25 -0
- package/skills/ce-doc-review/references/rendering-floor.md +175 -0
- package/skills/ce-doc-review/references/review-output-template.md +123 -0
- package/skills/ce-doc-review/references/subagent-template.md +188 -0
- package/skills/ce-doc-review/references/synthesis-and-presentation.md +350 -0
- package/skills/ce-doc-review/references/walkthrough.md +347 -0
- package/skills/ce-doc-review/scripts/cross-model-doc-review.sh +1270 -0
- package/skills/ce-doc-review/scripts/packs-resolve.py +737 -0
- package/skills/ce-doc-review/scripts/peer-job-runner.py +2594 -0
- package/skills/ce-dogfood/SKILL.md +66 -0
- package/skills/ce-dogfood/agents/openai.yaml +2 -0
- package/skills/ce-dogfood/references/dogfood-report-template.md +97 -0
- package/skills/ce-dogfood/references/phases.md +167 -0
- package/skills/ce-dogfood/references/test-matrix-taxonomy.md +62 -0
- package/skills/ce-dogfood/scripts/packs-resolve.py +737 -0
- package/skills/ce-explain/SKILL.md +81 -0
- package/skills/ce-explain/references/agents/behavior-trace-scout.md +19 -0
- package/skills/ce-explain/references/agents/work-recap-scout.md +23 -0
- package/skills/ce-explain/references/check-in.md +18 -0
- package/skills/ce-explain/references/destinations.md +35 -0
- package/skills/ce-explain/references/explainer-html.md +29 -0
- package/skills/ce-explain/references/explainer-markdown.md +24 -0
- package/skills/ce-explain/references/intake.md +50 -0
- package/skills/ce-explain/references/orchestration.md +46 -0
- package/skills/ce-handoff/SKILL.md +54 -0
- package/skills/ce-handoff/references/create.md +88 -0
- package/skills/ce-handoff/references/resume.md +46 -0
- package/skills/ce-ideate/SKILL.md +75 -0
- package/skills/ce-ideate/references/agents/issue-intelligence-analyst.md +166 -0
- package/skills/ce-ideate/references/agents/learnings-researcher.md +247 -0
- package/skills/ce-ideate/references/agents/slack-researcher.md +127 -0
- package/skills/ce-ideate/references/agents/web-researcher.md +121 -0
- package/skills/ce-ideate/references/decomposition.md +39 -0
- package/skills/ce-ideate/references/divergent-ideation.md +112 -0
- package/skills/ce-ideate/references/grounding.md +138 -0
- package/skills/ce-ideate/references/html-rendering.md +638 -0
- package/skills/ce-ideate/references/ideation-sections.md +191 -0
- package/skills/ce-ideate/references/issue-intelligence.md +44 -0
- package/skills/ce-ideate/references/markdown-rendering.md +242 -0
- package/skills/ce-ideate/references/output-mode.md +34 -0
- package/skills/ce-ideate/references/post-ideation-workflow.md +169 -0
- package/skills/ce-ideate/references/scope-gates.md +148 -0
- package/skills/ce-ideate/references/universal-ideation.md +119 -0
- package/skills/ce-ideate/references/user-research-artifacts.md +28 -0
- package/skills/ce-ideate/references/web-research-cache.md +56 -0
- package/skills/ce-noslop/SKILL.md +45 -0
- package/skills/ce-noslop/references/patterns.md +61 -0
- package/skills/ce-noslop/references/terminology.md +3 -0
- package/skills/ce-optimize/SKILL.md +64 -0
- package/skills/ce-optimize/references/agents/learnings-researcher.md +247 -0
- package/skills/ce-optimize/references/agents/repo-research-analyst.md +258 -0
- package/skills/ce-optimize/references/example-expensive-benchmark-spec.yaml +88 -0
- package/skills/ce-optimize/references/example-hard-spec.yaml +64 -0
- package/skills/ce-optimize/references/example-judge-spec.yaml +83 -0
- package/skills/ce-optimize/references/example-text-target-spec.yaml +80 -0
- package/skills/ce-optimize/references/experiment-log-schema.yaml +563 -0
- package/skills/ce-optimize/references/experiment-prompt-template.md +143 -0
- package/skills/ce-optimize/references/judge-prompt-template.md +117 -0
- package/skills/ce-optimize/references/loop.md +286 -0
- package/skills/ce-optimize/references/measurement.md +168 -0
- package/skills/ce-optimize/references/optimize-spec-schema.yaml +570 -0
- package/skills/ce-optimize/references/persistence.md +93 -0
- package/skills/ce-optimize/references/spec.md +107 -0
- package/skills/ce-optimize/references/text-targets.md +51 -0
- package/skills/ce-optimize/references/usage-guide.md +147 -0
- package/skills/ce-optimize/references/wrap-up.md +54 -0
- package/skills/ce-optimize/scripts/decide.mjs +676 -0
- package/skills/ce-optimize/scripts/experiment-worktree.sh +330 -0
- package/skills/ce-optimize/scripts/measure.sh +140 -0
- package/skills/ce-optimize/scripts/parallel-probe.sh +134 -0
- package/skills/ce-plan/SKILL.md +60 -0
- package/skills/ce-plan/references/agents/agent-native-planning-strategist.md +66 -0
- package/skills/ce-plan/references/agents/architecture-strategist.md +46 -0
- package/skills/ce-plan/references/agents/best-practices-researcher.md +118 -0
- package/skills/ce-plan/references/agents/data-integrity-guardian.md +68 -0
- package/skills/ce-plan/references/agents/framework-docs-researcher.md +97 -0
- package/skills/ce-plan/references/agents/git-history-analyzer.md +40 -0
- package/skills/ce-plan/references/agents/learnings-researcher.md +268 -0
- package/skills/ce-plan/references/agents/pattern-recognition-specialist.md +55 -0
- package/skills/ce-plan/references/agents/performance-oracle.md +108 -0
- package/skills/ce-plan/references/agents/repo-research-analyst.md +262 -0
- package/skills/ce-plan/references/agents/security-sentinel.md +91 -0
- package/skills/ce-plan/references/agents/slack-researcher.md +131 -0
- package/skills/ce-plan/references/agents/spec-flow-analyzer.md +84 -0
- package/skills/ce-plan/references/agents/web-researcher.md +125 -0
- package/skills/ce-plan/references/approach-altitude.md +55 -0
- package/skills/ce-plan/references/bakeoff.md +9 -0
- package/skills/ce-plan/references/deepening-workflow.md +263 -0
- package/skills/ce-plan/references/final-review.md +134 -0
- package/skills/ce-plan/references/html-rendering.md +638 -0
- package/skills/ce-plan/references/intake.md +158 -0
- package/skills/ce-plan/references/markdown-rendering.md +242 -0
- package/skills/ce-plan/references/output-contracts.md +29 -0
- package/skills/ce-plan/references/output-mode.md +45 -0
- package/skills/ce-plan/references/plan-handoff.md +116 -0
- package/skills/ce-plan/references/plan-sections.md +489 -0
- package/skills/ce-plan/references/reasoning-elevation.md +124 -0
- package/skills/ce-plan/references/research.md +211 -0
- package/skills/ce-plan/references/resume.md +61 -0
- package/skills/ce-plan/references/settled-decisions.md +45 -0
- package/skills/ce-plan/references/structure.md +207 -0
- package/skills/ce-plan/references/synthesis-summary.md +260 -0
- package/skills/ce-plan/references/universal-planning.md +170 -0
- package/skills/ce-plan/scripts/elevation-dispatch.sh +288 -0
- package/skills/ce-plan/scripts/packs-resolve.py +737 -0
- package/skills/ce-plan/scripts/peer-job-runner.py +2594 -0
- package/skills/ce-polish/SKILL.md +22 -0
- package/skills/ce-polish/agents/openai.yaml +2 -0
- package/skills/ce-polish/references/dev-server-astro.md +58 -0
- package/skills/ce-polish/references/dev-server-detection.md +40 -0
- package/skills/ce-polish/references/dev-server-next.md +61 -0
- package/skills/ce-polish/references/dev-server-nuxt.md +58 -0
- package/skills/ce-polish/references/dev-server-procfile.md +59 -0
- package/skills/ce-polish/references/dev-server-rails.md +50 -0
- package/skills/ce-polish/references/dev-server-remix.md +58 -0
- package/skills/ce-polish/references/dev-server-sveltekit.md +58 -0
- package/skills/ce-polish/references/dev-server-vite.md +48 -0
- package/skills/ce-polish/references/install-riffrec.md +35 -0
- package/skills/ce-polish/references/launch-json-schema.md +177 -0
- package/skills/ce-polish/references/live-loop.md +98 -0
- package/skills/ce-polish/references/live-remote.md +35 -0
- package/skills/ce-polish/references/live-start.md +93 -0
- package/skills/ce-polish/references/live-stream-contract.md +253 -0
- package/skills/ce-polish/references/run.md +67 -0
- package/skills/ce-polish/scripts/detect-project-type.sh +277 -0
- package/skills/ce-polish/scripts/detect-riffrec.sh +225 -0
- package/skills/ce-polish/scripts/live-endpoint.js +2841 -0
- package/skills/ce-polish/scripts/read-launch-json.sh +117 -0
- package/skills/ce-polish/scripts/resolve-package-manager.sh +95 -0
- package/skills/ce-polish/scripts/resolve-port.sh +307 -0
- package/skills/ce-pov/SKILL.md +64 -0
- package/skills/ce-pov/references/agents/external-evidence-researcher.md +26 -0
- package/skills/ce-pov/references/agents/pov-peer.md +43 -0
- package/skills/ce-pov/references/agents/precedent-activity-scout.md +21 -0
- package/skills/ce-pov/references/agents/project-grounding-scout.md +32 -0
- package/skills/ce-pov/references/boundaries.md +36 -0
- package/skills/ce-pov/references/cross-model-panel.md +596 -0
- package/skills/ce-pov/references/followup.md +9 -0
- package/skills/ce-pov/references/grounding.md +47 -0
- package/skills/ce-pov/references/intake.md +61 -0
- package/skills/ce-pov/references/invocation.md +47 -0
- package/skills/ce-pov/references/method.md +68 -0
- package/skills/ce-pov/references/pov-schema.json +56 -0
- package/skills/ce-pov/references/report.md +7 -0
- package/skills/ce-pov/scripts/cross-model-pov.sh +1110 -0
- package/skills/ce-pov/scripts/peer-job-runner.py +2594 -0
- package/skills/ce-product-pulse/SKILL.md +81 -0
- package/skills/ce-product-pulse/agents/openai.yaml +2 -0
- package/skills/ce-product-pulse/references/config.md +20 -0
- package/skills/ce-product-pulse/references/interview.md +260 -0
- package/skills/ce-product-pulse/references/report-template.md +89 -0
- package/skills/ce-product-pulse/references/run.md +46 -0
- package/skills/ce-product-pulse/references/setup.md +43 -0
- package/skills/ce-promote/SKILL.md +90 -0
- package/skills/ce-promote/agents/openai.yaml +2 -0
- package/skills/ce-promote/references/spiral-cli.md +149 -0
- package/skills/ce-proof/SKILL.md +65 -0
- package/skills/ce-proof/references/api.md +176 -0
- package/skills/ce-proof/references/workflows.md +124 -0
- package/skills/ce-prototype/SKILL.md +59 -0
- package/skills/ce-prototype/assets/annotate.css +206 -0
- package/skills/ce-prototype/assets/annotate.js +837 -0
- package/skills/ce-prototype/references/annotation-loop.md +32 -0
- package/skills/ce-prototype/references/build.md +39 -0
- package/skills/ce-prototype/references/craft-floor.md +43 -0
- package/skills/ce-prototype/references/preview.md +118 -0
- package/skills/ce-prototype/references/scoping.md +38 -0
- package/skills/ce-prototype/references/write-back.md +37 -0
- package/skills/ce-prototype/scripts/light-webserver.js +1275 -0
- package/skills/ce-resolve-pr-feedback/SKILL.md +60 -0
- package/skills/ce-resolve-pr-feedback/references/agents/pr-comment-resolver.md +59 -0
- package/skills/ce-resolve-pr-feedback/references/evaluation-rubric.md +141 -0
- package/skills/ce-resolve-pr-feedback/references/full-mode.md +336 -0
- package/skills/ce-resolve-pr-feedback/references/pipeline-mode.md +23 -0
- package/skills/ce-resolve-pr-feedback/references/resume.md +60 -0
- package/skills/ce-resolve-pr-feedback/references/return-to-caller.md +111 -0
- package/skills/ce-resolve-pr-feedback/references/targeted-mode.md +48 -0
- package/skills/ce-resolve-pr-feedback/scripts/get-pr-comments +176 -0
- package/skills/ce-resolve-pr-feedback/scripts/get-thread-for-comment +84 -0
- package/skills/ce-resolve-pr-feedback/scripts/pending-feedback.py +287 -0
- package/skills/ce-resolve-pr-feedback/scripts/reply-to-pr-thread +57 -0
- package/skills/ce-resolve-pr-feedback/scripts/resolve-pr-thread +23 -0
- package/skills/ce-retune/SKILL.md +42 -0
- package/skills/ce-retune/agents/openai.yaml +2 -0
- package/skills/ce-retune/references/baseline-mining.md +122 -0
- package/skills/ce-retune/references/corpus-audit.md +128 -0
- package/skills/ce-retune/references/cut-passes.md +129 -0
- package/skills/ce-retune/references/halt-taxonomy.md +123 -0
- package/skills/ce-retune/references/noise-floor.md +131 -0
- package/skills/ce-retune/references/workflow-shapes.md +73 -0
- package/skills/ce-riffrec-feedback-analysis/SKILL.md +33 -0
- package/skills/ce-riffrec-feedback-analysis/references/analyzer.md +18 -0
- package/skills/ce-riffrec-feedback-analysis/references/compound-engineering-feedback-format.md +116 -0
- package/skills/ce-riffrec-feedback-analysis/references/extensive-analysis.md +98 -0
- package/skills/ce-riffrec-feedback-analysis/references/install-riffrec.md +27 -0
- package/skills/ce-riffrec-feedback-analysis/references/quick-bug-report.md +38 -0
- package/skills/ce-riffrec-feedback-analysis/scripts/analyze_riffrec_zip.py +1306 -0
- package/skills/ce-setup/SKILL.md +103 -0
- package/skills/ce-setup/agents/openai.yaml +2 -0
- package/skills/ce-setup/assets/compounding-directive.md +11 -0
- package/skills/ce-setup/assets/noslop-directive.md +7 -0
- package/skills/ce-setup/assets/pack-rule-template.md +11 -0
- package/skills/ce-setup/references/acpx-cache-warm.md +14 -0
- package/skills/ce-setup/references/config-template.yaml +210 -0
- package/skills/ce-setup/references/legacy-codex-tool-map.md +15 -0
- package/skills/ce-setup/references/pack-scaffold.md +45 -0
- package/skills/ce-setup/references/repo-fixes.md +121 -0
- package/skills/ce-setup/scripts/check-health +929 -0
- package/skills/ce-setup/scripts/packs-resolve.py +737 -0
- package/skills/ce-simplify-code/SKILL.md +76 -0
- package/skills/ce-simplify-code/references/personas/code-quality-reviewer.md +17 -0
- package/skills/ce-simplify-code/references/personas/code-reuse-reviewer.md +7 -0
- package/skills/ce-simplify-code/references/personas/comment-reviewer.md +24 -0
- package/skills/ce-simplify-code/references/personas/efficiency-reviewer.md +11 -0
- package/skills/ce-simplify-code/references/personas/test-value-reviewer.md +23 -0
- package/skills/ce-simplify-code/references/reviewer-dispatch.md +11 -0
- package/skills/ce-simplify-code/references/standalone-report.md +25 -0
- package/skills/ce-strategy/SKILL.md +61 -0
- package/skills/ce-strategy/references/grounding.md +22 -0
- package/skills/ce-strategy/references/interview.md +179 -0
- package/skills/ce-strategy/references/strategy-template.md +94 -0
- package/skills/ce-strategy/references/update-run.md +33 -0
- package/skills/ce-sweep/SKILL.md +93 -0
- package/skills/ce-sweep/agents/openai.yaml +2 -0
- package/skills/ce-sweep/references/agents/media-analyzer.md +54 -0
- package/skills/ce-sweep/references/interview.md +208 -0
- package/skills/ce-sweep/references/model-tiers.md +13 -0
- package/skills/ce-sweep/references/plan-template.md +62 -0
- package/skills/ce-sweep/references/run.md +126 -0
- package/skills/ce-sweep/references/sources/email.md +57 -0
- package/skills/ce-sweep/references/sources/github-issues.md +59 -0
- package/skills/ce-sweep/references/sources/slack.md +61 -0
- package/skills/ce-sweep/references/state-schema.md +157 -0
- package/skills/ce-sweep/references/subagent-template.md +60 -0
- package/skills/ce-sweep/scripts/analyze_riffrec_zip.py +1306 -0
- package/skills/ce-sweep/scripts/sweep-state.py +793 -0
- package/skills/ce-test-browser/SKILL.md +50 -0
- package/skills/ce-test-browser/references/agent-browser-driver.md +47 -0
- package/skills/ce-test-browser/references/pipeline-orchestration.md +45 -0
- package/skills/ce-test-browser/references/route-and-report.md +129 -0
- package/skills/ce-test-browser/scripts/resolve-port.sh +41 -0
- package/skills/ce-test-xcode/SKILL.md +26 -0
- package/skills/ce-test-xcode/agents/openai.yaml +2 -0
- package/skills/ce-test-xcode/references/setup-and-build.md +32 -0
- package/skills/ce-test-xcode/references/test-and-report.md +64 -0
- package/skills/ce-work/SKILL.md +62 -0
- package/skills/ce-work/references/agents/figma-design-sync.md +27 -0
- package/skills/ce-work/references/agents/implementation-worker.md +17 -0
- package/skills/ce-work/references/cross-model-execution.md +191 -0
- package/skills/ce-work/references/execution-engines.md +64 -0
- package/skills/ce-work/references/execution-strategy.md +73 -0
- package/skills/ce-work/references/implementation-loop.md +107 -0
- package/skills/ce-work/references/implementation-result-schema.json +52 -0
- package/skills/ce-work/references/input-triage.md +50 -0
- package/skills/ce-work/references/non-code-execution.md +23 -0
- package/skills/ce-work/references/return-to-caller.md +33 -0
- package/skills/ce-work/references/review-findings-followup.md +82 -0
- package/skills/ce-work/references/shipping-workflow.md +89 -0
- package/skills/ce-work/references/tracker-defer.md +150 -0
- package/skills/ce-work/references/work-intake.md +51 -0
- package/skills/ce-work/references/workspace-setup.md +27 -0
- package/skills/ce-work/scripts/__pycache__/unit_workspace_jobs.cpython-314.pyc +0 -0
- package/skills/ce-work/scripts/__pycache__/unit_workspace_state.cpython-314.pyc +0 -0
- package/skills/ce-work/scripts/cross-model-work.sh +1385 -0
- package/skills/ce-work/scripts/peer-job-runner.py +2594 -0
- package/skills/ce-work/scripts/unit-workspace.py +215 -0
- package/skills/ce-work/scripts/unit_workspace_ignored.py +93 -0
- package/skills/ce-work/scripts/unit_workspace_integration.py +677 -0
- package/skills/ce-work/scripts/unit_workspace_jobs.py +1216 -0
- package/skills/ce-work/scripts/unit_workspace_lifecycle.py +981 -0
- package/skills/ce-work/scripts/unit_workspace_state.py +1379 -0
- package/skills/ce-work/scripts/unit_workspace_transaction.py +612 -0
- package/skills/ce-worktree/SKILL.md +54 -0
- package/skills/lfg/SKILL.md +59 -0
- package/skills/lfg/references/debug-return.md +25 -0
- package/skills/lfg/references/intake.md +30 -0
- package/skills/lfg/references/next-work-handoff.md +96 -0
- package/skills/lfg/references/plan-brief.md +36 -0
- package/skills/lfg/references/review-followup.md +78 -0
- package/skills/lfg/references/shipping.md +65 -0
- package/skills/lfg/references/stage-routing.md +49 -0
- package/skills/lfg/references/task-visibility.md +11 -0
- package/skills/lfg/references/tracker-defer.md +150 -0
- package/skills/lfg/references/work-return.md +27 -0
- package/skills/wtf/SKILL.md +33 -0
- package/skills/wtf/agents/openai.yaml +2 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Phase 1: mine the archive
|
|
2
|
+
|
|
3
|
+
Zero model cost. Everything here reads files that already exist on disk. Do not run the harness in this phase. Phase 2 is where the first paid runs happen (`references/noise-floor.md`).
|
|
4
|
+
|
|
5
|
+
An archive is usually an order of magnitude larger than the experiment you can afford this week. In the engagement this method came from, 745 archived runs were on disk and 458 carried usable traces. That is more evidence than any deliberate sample, sitting unread.
|
|
6
|
+
|
|
7
|
+
## What the archive must contain
|
|
8
|
+
|
|
9
|
+
Per run, in whatever form the harness stores it (JSONL transcript, structured log, a directory per run): the ordered tool-call trace, token counts, timestamps, and the final assistant message. If it stores only a pass/fail verdict, the archive is not minable. Say so and go to Phase 2.
|
|
10
|
+
|
|
11
|
+
Find the archive by asking the harness where it writes run output, or by locating the directory it appends to after a run. Do not assume a schema. Read one run end to end and derive the field paths before writing any extractor.
|
|
12
|
+
|
|
13
|
+
## Build the phase-marker map first
|
|
14
|
+
|
|
15
|
+
`phase_trace`, `process_followed`, and the terminal-phase cross-tab are all functions of one artifact that does not exist yet: a table mapping each phase of the corpus's own workflow to the observable side effect that proves it ran. Derive it before writing the extractor, by reading the corpus's spine. Do not infer phases from the logs; that is circular.
|
|
16
|
+
|
|
17
|
+
| Phase name, in spine order | Marker in the trace |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `<phase>` | the reference file it must read, the helper it must dispatch, the artifact path it must write, or the sentinel it must emit |
|
|
20
|
+
|
|
21
|
+
Rules: one marker per phase minimum, each a **tool call or a file that exists**, never a phrase in the assistant's prose. A phase with no observable marker cannot be scored. Record it as unobservable rather than assuming it ran, and carry that list forward. It is the same list Phase 2 needs for the probe's unentered phases and Phase 5 needs for the unmeasured paths. Keep the map in the same directory as the extractor. Every later re-run and every re-scored table depends on it.
|
|
22
|
+
|
|
23
|
+
## Extract one row per run
|
|
24
|
+
|
|
25
|
+
Write a script, not a per-run read. Reading 458 transcripts by hand is the failure mode this phase is supposed to avoid.
|
|
26
|
+
|
|
27
|
+
| Field | How to derive it | Why it pays for itself |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| `run_id`, `model`, `settings` | harness metadata | the stratification keys; without them the whole table is one undifferentiated blob |
|
|
30
|
+
| `session_id`, and the child id on every dispatch | whatever the trace calls the conversation and the spawned agent | the only way to tell a real runtime boundary from a fictional one. `references/halt-taxonomy.md` opens on this comparison; extract it here or that diagnostic has no data |
|
|
31
|
+
| `phase_trace` | ordered list of which corpus phases ran | tells you **where** it stopped, not just that it did. This is the field that localizes the defect |
|
|
32
|
+
| `marker_present` | boolean; the corpus's own terminal marker in the final message | the corpus's own claim of completion, separable from whether it is true |
|
|
33
|
+
| `output_tokens` | harness token accounting | the variance channel; spread here is a stronger signal than the mean |
|
|
34
|
+
| `wall_clock_min` | last timestamp minus first | useless alone, required as a denominator |
|
|
35
|
+
| `helper_dispatches` | count of subagent/helper dispatches | how far the run got, and how it got there |
|
|
36
|
+
| `max_parallel_dispatch` | most dispatched in a single message | separates fan-out from serial plodding; a corpus that mandates parallelism and never gets it is a finding |
|
|
37
|
+
| `final_message` | verbatim, untruncated | halt language lives here and nowhere else. Do not summarize it during extraction |
|
|
38
|
+
|
|
39
|
+
Derive `phase_trace` from **artifacts, not claims**. A phase ran if the trace shows its side effect: the reference file it must read, the helper it must dispatch, the file it must write. A run asserting "Phase 3 complete" in prose is not evidence. The defect class you are hunting is exactly runs that report success without doing the work.
|
|
40
|
+
|
|
41
|
+
## Derived metrics
|
|
42
|
+
|
|
43
|
+
**Tokens per minute is the metric that separates working from stalling.** `output_tokens / wall_clock_min`. Compute it for every run and look for bimodality before looking at anything else.
|
|
44
|
+
|
|
45
|
+
In the engagement, healthy cells ran 10-12k tokens/min; every failing cell sat at 1.5-3.8k. A run burning hours at 2k tok/min is not thinking hard. It is waiting, because the prose told it a second party would respond. Duration alone cannot show this. A long successful run and a long stalled run look identical until you divide.
|
|
46
|
+
|
|
47
|
+
Treat those bands as the shape to look for, not as thresholds to import. Find your own corpus's two clusters, then read the gap.
|
|
48
|
+
|
|
49
|
+
**The two booleans the spine requires, derived independently:**
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
task_done = the run's expected deliverable exists (artifact on disk, commit, PR, file changed)
|
|
53
|
+
process_followed = every required phase appears in phase_trace, in spine order
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Never let one imply the other, and never let `marker_present` stand in for either. `task_done AND NOT process_followed` is `done-no-workflow` below: the run did the job inline and skipped the corpus. Collapsed into one success column, it reads as a win and hides the most expensive defect in the set.
|
|
57
|
+
|
|
58
|
+
## Outcome taxonomy
|
|
59
|
+
|
|
60
|
+
Apply in order. First match wins. `broken` is first so that a harness fault can never be scored as a model failure.
|
|
61
|
+
|
|
62
|
+
| # | Outcome | Test |
|
|
63
|
+
|---|---|---|
|
|
64
|
+
| 1 | `broken` | empty transcript, error exit, or `output_tokens` implausibly low for the task (set the floor from the smallest run that did real work, then check the excluded set by hand) |
|
|
65
|
+
| 2 | `complete` | `marker_present AND task_done AND process_followed` |
|
|
66
|
+
| 3 | `done-but-thin` | `marker_present AND task_done`, closing phases absent from `phase_trace` |
|
|
67
|
+
| 4 | `done-no-workflow` | `marker_present AND task_done AND NOT process_followed`; the spine barely ran |
|
|
68
|
+
| 5 | `bail-with-handoff` | no marker; `final_message` matches hand-off language (below) |
|
|
69
|
+
| 6 | `ran-but-no-marker` | substantial trace, no marker, no hand-off language. Ambiguous; keep the bucket rather than forcing it |
|
|
70
|
+
| 7 | `bail-early` | trace ends inside the first phase or two |
|
|
71
|
+
|
|
72
|
+
Report the `broken` count as its own number every time you report a rate. In the engagement 20% of usable-looking runs were broken, and excluding them falsified the first headline finding. That finding was an apparently clean monotonic relationship between reasoning effort and completion, which was really the broken runs clustering in one cell (see Confounds).
|
|
73
|
+
|
|
74
|
+
## Halt language in the final message
|
|
75
|
+
|
|
76
|
+
Match against `final_message`. Starter set, case-insensitive:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
\b(let me know|just let me know)\b
|
|
80
|
+
\b(would you like|shall I|should I)\b.*\?
|
|
81
|
+
\b(ready (to|for)|standing by|awaiting)\b
|
|
82
|
+
\b(waiting (for|on)) (your|the)\b
|
|
83
|
+
\b(next steps? (for|would be))\b
|
|
84
|
+
\bI('ll| will) (wait|pause|hold)\b
|
|
85
|
+
\bonce you (confirm|approve|reply|respond)\b
|
|
86
|
+
\b(remaining|the rest|still needs? to be) (work|done|completed)\b
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
These are **evidence that the run stopped, not proof of why.** A match tells you to open that transcript and find which phase boundary produced it. A workflow that is *supposed* to stop and ask will match every one of these and be behaving correctly. Phase 4 sorts stops by who is actually on the other side. Extend the set with the phrasings your own corpus's prose invites. Grep the corpus for its own hand-off wording and add those.
|
|
90
|
+
|
|
91
|
+
## Confounds that fool careful analysts
|
|
92
|
+
|
|
93
|
+
Each of these was believed by someone competent before being ruled out. Run the rule-out before reporting the effect.
|
|
94
|
+
|
|
95
|
+
| Apparent finding | Why it is suspect | Rule it out by |
|
|
96
|
+
|---|---|---|
|
|
97
|
+
| "The harness is timing out" | the cheapest explanation, and it makes the corpus innocent | comparing durations. Timed-out runs are **longer** than successes. In the engagement failures averaged 48 min against 88 for successes, so failures were shorter and the timeout hypothesis died. Failing *early* is a behavior, not a limit |
|
|
98
|
+
| "More helper dispatches cause success" | `helper_dispatches` is a **collider**: it measures how far the run got. A run that stopped in phase 2 cannot dispatch phase 5's helpers | never reading it as a cause. Use it as a position estimate. If you want the causal claim, it needs a build that changes dispatch behavior and a Phase 2 comparison |
|
|
99
|
+
| A clean dose-response across a setting | `broken` runs cluster by cell (one config, one date range, one machine), manufacturing the gradient | re-running the cross-tab with `broken` excluded. If the effect vanishes, it was never there. Also check whether exclusions land evenly across arms |
|
|
100
|
+
| "This model is worse at the task" | model identity and workload are often confounded in an archive nobody designed | checking whether the arms ran the *same* task list. Unequal task mixes make any per-model rate meaningless |
|
|
101
|
+
|
|
102
|
+
## Stratify before believing anything
|
|
103
|
+
|
|
104
|
+
This is the highest-leverage work in the phase. A single pooled completion rate hides everything worth knowing.
|
|
105
|
+
|
|
106
|
+
Cross-tabulate `outcome` against, at minimum:
|
|
107
|
+
|
|
108
|
+
1. **model**, the identity axis
|
|
109
|
+
2. **settings**: reasoning effort, temperature, context budget, whatever the harness varies
|
|
110
|
+
3. **terminal phase**, the last entry in `phase_trace`, which is where the run died
|
|
111
|
+
|
|
112
|
+
Read the third one against the first two. In the engagement, model identity explained roughly 3x the variance that reasoning-effort settings did, and the failing models died at **one specific phase boundary** 38-58% of the time while succeeding models died there 0-8%. That single cross-tab localized the defect without reading a line of corpus prose, and it turned Phase 3's audit from a 31-skill sweep into a targeted read.
|
|
113
|
+
|
|
114
|
+
Watch cell counts. A 3-of-4 cell is not a rate. Label small cells rather than ranking them. If every cell is small, the stratification's output is a hypothesis list, which is still the correct output of this phase.
|
|
115
|
+
|
|
116
|
+
## Hand off
|
|
117
|
+
|
|
118
|
+
Carry forward: the `broken`-excluded baseline rate for `complete`, the observed `output_tokens` range, the tokens/min clusters, and the ranked list of phase boundaries where runs die. Phase 2 needs the baseline rate to compute a bar (`references/noise-floor.md`). Phase 3 needs the phase list to know which files to read first.
|
|
119
|
+
|
|
120
|
+
## The limit
|
|
121
|
+
|
|
122
|
+
Archive mining is observational. Nobody assigned the conditions, the arms are not balanced, and the confounds above are the ones you thought to check. It produces a baseline rate and a ranked hypothesis list. It cannot attribute a cause, and a rate computed from it is not a bar until Phase 2 shows how wide the noise is. Do not credit a change against an archive number alone.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Phase 3: Adversarial Corpus Audit
|
|
2
|
+
|
|
3
|
+
Produces one finding set per corpus unit, each finding carrying a defender ruling. That ruling set is the input to Phase 4's passes. Nothing here edits a file.
|
|
4
|
+
|
|
5
|
+
The audit is not evidence. It ranks candidates; only the harness says whether a cut helped. Do not let a large finding count imply a large effect. A corpus's run-to-run spread on fixed inputs (`references/noise-floor.md`) is the same whether the audit found 6 findings or 600.
|
|
6
|
+
|
|
7
|
+
## Dispatch shape
|
|
8
|
+
|
|
9
|
+
**The two waves must run as separate dispatched agents.** A defender's ruling is only worth recording when it can genuinely disagree with the proposal that reached it, which one context holding both roles cannot do. If the host exposes no way to run them as independent agents, report that as a blocker and stop the audit. Do not run the waves inline and hand the result to Phase 4. The same context arguing both sides still emits confident `cut` rulings, and Phase 4 deletes on them. That is the demolition this reference warns about below, arriving through the dispatch layer instead of a weak model tier.
|
|
10
|
+
|
|
11
|
+
Two waves, one agent per unit each way.
|
|
12
|
+
|
|
13
|
+
**Wave 1, the proposers.** One agent per corpus unit. Give it the unit's **full directory**, not just its entry file. Conditionally-loaded reference files are usually the bulk of a unit, and the entry file alone hides them. Instruct it to return the finding schema below and nothing else: no summary prose, no recommendations about other units.
|
|
14
|
+
|
|
15
|
+
**Wave 2, the defenders.** One agent per unit, given that unit's directory *and* its proposal set, with the opposite job: find a reason each targeted line exists. A defender must search three sources, and must say which it searched:
|
|
16
|
+
|
|
17
|
+
1. The project's own documented learnings and solution docs.
|
|
18
|
+
2. The test suite. Grep a distinctive substring of the target text.
|
|
19
|
+
3. Version history. Run `git log -S '<substring>'` for the commit that introduced the line, then read that commit message and the PR it belongs to.
|
|
20
|
+
|
|
21
|
+
Source 3 is unavailable in a corpus checkout with no history, which is the normal shape of an installed or vendored copy. A defender working without history must say so in `sources_searched` and cannot return `cut` on the strength of the other two alone. That combination is "no provenance found in two of three sources", which is a verification task, not a cut. Point defenders at a checkout that has history, or record the whole audit's provenance basis as partial.
|
|
22
|
+
|
|
23
|
+
**Pipeline the waves.** Start a unit's defense as soon as its proposal set returns. Do not wait for wave 1 to finish; the two waves share no state across units. It is 2N dispatches on N units, so plan the wave count against the host's concurrency cap (`references/workflow-shapes.md`).
|
|
24
|
+
|
|
25
|
+
Keep defenders on a capable model tier. A defender that cannot read a test suite and reconstruct intent from a commit message returns "no provenance found" for everything, which silently converts the audit into a demolition.
|
|
26
|
+
|
|
27
|
+
## Finding schema
|
|
28
|
+
|
|
29
|
+
Per finding:
|
|
30
|
+
|
|
31
|
+
| Field | Shape |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `id` | stable, `<unit>-<nnn>`; defenses and later passes reference findings by id |
|
|
34
|
+
| `target` | `path/to/file.md:line` or a line range |
|
|
35
|
+
| `class` | exactly one value from the closed enum below |
|
|
36
|
+
| `size` | estimated words removed |
|
|
37
|
+
| `text` | the offending text verbatim, long enough to relocate after other edits land |
|
|
38
|
+
| `why_unneeded` | what a capable model does here without being told |
|
|
39
|
+
| `replacement` | the thinner line, or empty for pure deletion |
|
|
40
|
+
| `risk` | low / medium / high; high means it touches a contract, a guard, or a string a test may pin |
|
|
41
|
+
|
|
42
|
+
Per unit, in addition to the findings:
|
|
43
|
+
|
|
44
|
+
- `must_survive`: every line that must not be cut, each with its reason. See "Protocol regardless of model tier" below for what belongs here.
|
|
45
|
+
- `halt_sites`: every place where prose could make an orchestrating model end its turn while naming work it did not do. Quote each verbatim. This list is the highest-value output of the whole phase. A unit that reports zero halt sites has almost certainly not looked at its phase boundaries. `references/halt-taxonomy.md` carries the classes.
|
|
46
|
+
|
|
47
|
+
## Classes worth hunting
|
|
48
|
+
|
|
49
|
+
Ordered by expected behavior change per finding, not by word count. The last entry yields the most words and the least behavior.
|
|
50
|
+
|
|
51
|
+
| Class | Diagnostic question |
|
|
52
|
+
|---|---|
|
|
53
|
+
| `phantom-handoff` | Does the party this sentence hands off to (a reviewer, a caller, a next agent, a consumer of the artifact) exist in this run? |
|
|
54
|
+
| `step-machinery` | Would a different order, or skipping the ceremony, produce a different artifact? |
|
|
55
|
+
| `capability-restatement` | Would the model do this if the line were deleted? |
|
|
56
|
+
| `filler-rationale` | Does the rule survive intact if the sentence after it is removed? |
|
|
57
|
+
| `vestigial-mode` | Grep the corpus for a caller that sets this mode, flag, or branch. Is there one? |
|
|
58
|
+
| `mandatory-fanout` | Is this helper dispatch or self-verification pass conditional on anything, or does it run every time regardless of need? |
|
|
59
|
+
| `cross-unit-duplication` | Is this block near-identical elsewhere, and is factoring it out actually permitted? |
|
|
60
|
+
| `oversized-reference` | Could this file's entire content be five lines? |
|
|
61
|
+
|
|
62
|
+
Two notes that change how the results read:
|
|
63
|
+
|
|
64
|
+
- **`phantom-handoff` is the class that causes halts.** Prose written as if a second party were waiting teaches the model to stop and wait. Hunt it at phase boundaries first.
|
|
65
|
+
- **Separate always-loaded prose from conditionally-loaded references when you tally `size`.** They cost differently. Always-loaded prose is context cost on every run; a conditionally-loaded file is runtime cost only when loaded. A corpus can be mostly conditional, which makes raw word count overstate context cost and understate runtime cost. Report the split.
|
|
66
|
+
|
|
67
|
+
## Defender rulings
|
|
68
|
+
|
|
69
|
+
Exactly three, one per finding:
|
|
70
|
+
|
|
71
|
+
- **`cut`**: a real search over all three sources found no provenance. The proposal stands.
|
|
72
|
+
- **`reduce`**: the constraint is real and the prose states it at several times the length needed. The defender returns the minimal form that preserves the constraint.
|
|
73
|
+
- **`keep`**: concrete citable provenance a capable model could not infer, such as a test asserting it, a documented learning, or a commit that added it to fix a named bug. The ruling must carry the citation: path, test name, or sha.
|
|
74
|
+
|
|
75
|
+
A defender returns one row per finding, in these fields, and nothing else:
|
|
76
|
+
|
|
77
|
+
| Field | Shape |
|
|
78
|
+
|---|---|
|
|
79
|
+
| `id` | the proposer's finding id, unchanged; a ruling that cannot be joined back is discarded |
|
|
80
|
+
| `ruling` | `cut` / `reduce` / `keep` |
|
|
81
|
+
| `sources_searched` | which of the three, named; plus the query used, so an empty search is visible |
|
|
82
|
+
| `citation` | required on `keep`: path, test name, or sha. Empty is not a `keep` |
|
|
83
|
+
| `minimal_form` | required on `reduce`: the shortest text preserving the constraint |
|
|
84
|
+
| `pinning_test` | test path and assertion if a grep of the target text hits the suite, else empty |
|
|
85
|
+
|
|
86
|
+
**"A weaker model might need it" is not grounds for `keep`. Only citable provenance is.** Without that rule every line survives, because a defender asked to defend can always imagine a reader who needed the line. Where the unmeasured weaker tier is a genuine concern, the ruling is still `cut` or `reduce`, and the tier becomes a logged verification task in the Phase 5 limits report, not a keep.
|
|
87
|
+
|
|
88
|
+
Symmetrically: a defender who returns `cut` without naming which sources it searched has not searched. Send it back once. Treat a second empty search as an unaudited unit and say so.
|
|
89
|
+
|
|
90
|
+
## Protocol regardless of model tier
|
|
91
|
+
|
|
92
|
+
For three categories the default inverts: **absence of provenance is not grounds to cut.** A capable model cannot re-derive them, so keep them even when no citation turns up. This is the one unrecoverable mistake in the phase. Everything else a later pass can put back after a failed run, and these fail silently.
|
|
93
|
+
|
|
94
|
+
1. **Machine-readable strings other units parse**: field names, enum values, output paths, greppable markers, sentinel lines. These are arbitrary shared conventions. Nothing makes them true except agreement, so no amount of model capability recovers a changed one.
|
|
95
|
+
2. **Security guards.**
|
|
96
|
+
3. **Platform gotchas where the wrong behavior looks like success.** Their unifying property: *the model cannot discover them by trying*, because trying returns something that looks fine. A flag that returns empty instead of erroring, so a run reports zero findings and calls itself clean. A config key whose commented-out example matched a naive substring check and silently forced every user into the wrong mode.
|
|
97
|
+
|
|
98
|
+
What *is* cuttable around all three is the justification clause, the sentence explaining that a separate consumer is waiting on the string. Keep the data, cut the story about who wants it. That is usually a `reduce`, and it is frequently also a `phantom-handoff`.
|
|
99
|
+
|
|
100
|
+
`cross-unit-duplication` collides with this category more than any other class. Before proposing a factor-out, check whether the duplication is mandated: a documented decision, or a test that forbids sharing the block. The most-duplicated block in a corpus is often the one thing that must stay duplicated. In the engagement it was a security guard whose duplication a test explicitly required, and the largest duplication mandate was itself the documented fix for a bug that had regressed twice.
|
|
101
|
+
|
|
102
|
+
## Synthesis: rank contradiction above confirmation
|
|
103
|
+
|
|
104
|
+
The synthesis leads with what contradicts the premise the audit started from, before any cut list. Answer three questions explicitly:
|
|
105
|
+
|
|
106
|
+
- **Which proposals did defenders save, with citations?** Report the count and the strongest saves. A defense rate near zero means the defenders did not search, not that the corpus is pure junk.
|
|
107
|
+
- **Which unit was leaner than its word count implied?** Use the always-loaded / conditionally-loaded split. The largest unit by words is often not the largest by context cost.
|
|
108
|
+
- **Where does the corpus already contain a documented argument against its own ceremony that nobody had grepped for?** Corpora that document their own decisions accumulate these. A duplication mandate that is itself the recorded fix for a bug that regressed twice is the shape to look for. The ceremony you were about to cut may be a scar.
|
|
109
|
+
|
|
110
|
+
A synthesis that only confirms the premise is a finding about the audit, not about the corpus. Say so rather than shipping it.
|
|
111
|
+
|
|
112
|
+
**The per-unit partition does not carry forward.** Findings arrive grouped by unit because that is how they were gathered. Phase 4 groups them by problem, and one problem's findings cross many units (`references/cut-passes.md`). Emit the ruled findings as a flat, id-addressable set with `class` and `target` intact so a pass can select across units. Handing Phase 4 a per-unit bundle produces one agent per unit editing one problem each, which is the collision shape Phase 4 exists to avoid.
|
|
113
|
+
|
|
114
|
+
## Test pinning is the rate limiter
|
|
115
|
+
|
|
116
|
+
Expect roughly half of `reduce` items to be pinned by a test asserting exact strings. That, not authoring effort, sets how many items a pass can carry.
|
|
117
|
+
|
|
118
|
+
- Grep each `reduce` target's distinctive substring against the test suite **during the audit** and record the pinning test in the finding. Discovering the pin during Phase 4 costs a whole pass.
|
|
119
|
+
- Budget the assertion retarget as part of the item, not as follow-up. Moving an assertion from a wording to the invariant it was protecting is often larger than the prose edit.
|
|
120
|
+
- **A half-applied structural fix is worse than either endpoint.** If a pass cannot land both the prose change and the retarget, leave the item unstarted. A corpus half-migrated between two shapes has the ceremony of both and the guarantees of neither, and the harness cannot attribute a resulting failure to either shape.
|
|
121
|
+
- If the invariant a pinned string was protecting cannot be named, that is a finding to report, not a license to loosen the assertion.
|
|
122
|
+
|
|
123
|
+
## Two rules separate an audit from a demolition
|
|
124
|
+
|
|
125
|
+
- **A cut with no provenance found after a real search is a confident cut. A cut the defender saves with a citation is off the list.** Do not relitigate a defended keep.
|
|
126
|
+
- **Absence of evidence is weaker than the project's own standard for a change.** Where the guidance requires a reproduced failure or an exact failing path, a search that found nothing is a verification task, not a change. Say which of your cuts rest on that weaker basis.
|
|
127
|
+
|
|
128
|
+
Dispatch shape: one agent per skill, each reading that skill's full directory and proposing cuts with a target and a reason; then a second agent per skill whose job is the opposite, to **defend the existing prose** using the project's own documented learnings, its tests, and git history. Expect the audit to contradict the premise you started with. That is its value.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Cut Passes (Phase 4)
|
|
2
|
+
|
|
3
|
+
A pass applies **one problem class** across the corpus and stops. The work fails in two places: agents overwriting each other, and edits left half-applied. Both are prevented by protocol, not care.
|
|
4
|
+
|
|
5
|
+
`references/workflow-shapes.md` carries the cross-phase orchestration catalog. This file is the Phase 4 procedure only.
|
|
6
|
+
|
|
7
|
+
## The pass loop
|
|
8
|
+
|
|
9
|
+
1. Pick one class from the Phase 3 findings (`references/corpus-audit.md`), or one regression class from `references/halt-taxonomy.md`. One class per pass, no bundling.
|
|
10
|
+
2. Write the **file-assignment manifest**: unit -> the agent that edits it -> exact paths. Every copy of a shared asset goes to a single named agent (below).
|
|
11
|
+
3. If the rewrite has cross-referencing strings, author the **contract file** first, serially (below).
|
|
12
|
+
4. Dispatch one agent per unit through whatever sub-agent primitive the platform provides. Each prompt carries the class, the contract path if any, its own paths, and the forbidden paths.
|
|
13
|
+
5. **Reconcile** every block touched (below). This is the step that gets skipped.
|
|
14
|
+
6. Run the project's own test suite. A pinned string that disappeared is a finding to report with its test path, never a test to edit.
|
|
15
|
+
7. Collect each agent's applied/skipped report. Then measure (Phase 5) and commit the pass alone.
|
|
16
|
+
|
|
17
|
+
Eight passes landed in the engagement that produced this skill. Every one reduced to the same class. Resist widening a pass to "also fix the obvious thing". A pass that changed two classes cannot be attributed by the next measurement.
|
|
18
|
+
|
|
19
|
+
## One problem per agent, disjoint files
|
|
20
|
+
|
|
21
|
+
Fanning out by **problem** looks natural and collides immediately. A single class, say a phrasing that implies an absent reader, appears in twenty files, and the next class appears in eleven of the same twenty. Two agents open one file, both write, the second write wins, and the loss is silent because each agent's own diff looks correct.
|
|
22
|
+
|
|
23
|
+
Fan out by **unit** instead: one agent edits one skill directory and applies the class everywhere inside it. The file assignment is then a partition of the filesystem, and the invariant is checkable before dispatch: every path appears in exactly one manifest row.
|
|
24
|
+
|
|
25
|
+
| Manifest column | Content |
|
|
26
|
+
|---|---|
|
|
27
|
+
| unit | the directory the agent edits, e.g. `skills/<name>/` |
|
|
28
|
+
| paths | explicit glob or file list inside it |
|
|
29
|
+
| forbidden | shared assets and anything outside `unit`, listed by path |
|
|
30
|
+
| class | the one problem being applied |
|
|
31
|
+
| contract | path to the canonical mapping, or `none` |
|
|
32
|
+
|
|
33
|
+
State the forbidden set in the prompt as paths, not as a rule to infer. An agent told "do not touch shared files" will decide for itself what is shared.
|
|
34
|
+
|
|
35
|
+
## Isolation: separate worktrees or disjoint paths in one tree
|
|
36
|
+
|
|
37
|
+
Disjoint paths in one tree are enough when nothing an agent runs mutates state outside its own paths. That covers most cut passes: edits are text, the manifest is a partition, and a single tree keeps the diff readable and the commit trivial.
|
|
38
|
+
|
|
39
|
+
Pay for a worktree (or equivalent per-agent checkout) when any of these is true:
|
|
40
|
+
|
|
41
|
+
- Agents run builds, formatters, generators, or anything that writes outside its unit, such as lockfiles, caches, generated output, or a repo-root config.
|
|
42
|
+
- An agent needs to run the suite or the harness to check its own edit. Concurrent runs in one tree race on scratch and on git index state.
|
|
43
|
+
- Agents commit, stage, or use branch operations. One git index shared by parallel agents corrupts staging.
|
|
44
|
+
- A pass may need to be abandoned wholesale, and a clean discard is worth more than a shared diff.
|
|
45
|
+
|
|
46
|
+
Otherwise the isolation cost is real: N checkouts to create, N results to merge, and merge conflicts reintroduced on exactly the files the manifest was designed to keep apart.
|
|
47
|
+
|
|
48
|
+
## The shared-asset trap
|
|
49
|
+
|
|
50
|
+
Some corpora hold byte-identical copies of a file inside several units, deliberately, with a parity test asserting the copies match. A per-unit agent editing "its" copy breaks parity, and the breakage shows up as a test failure in a *different* pass, attributed to the wrong change.
|
|
51
|
+
|
|
52
|
+
Discover them before dispatch. Shape (POSIX shell; hash every candidate file, key by basename, report pairs appearing in more than one path):
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
find . -type f \( -name '*.md' -o -name '*.py' -o -name '*.sh' \) -exec shasum {} + \
|
|
56
|
+
| awk '{ n = $2; sub(/.*\//, "", n); print $1, n }' \
|
|
57
|
+
| sort | uniq -c | awk '$1 > 1'
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Read the output two ways. A basename with **one** hash across many paths is a maintained shared asset: assign every copy to exactly one agent, list it as forbidden for everyone else, and have that agent propagate the edit to all copies in the same pass. A basename with **several** hashes across paths is drift that already happened. That is a finding, not necessarily yours to fix in this pass.
|
|
61
|
+
|
|
62
|
+
Whether a duplication should exist at all is a proposal-time question, decided in `references/corpus-audit.md`. A pass never settles it by factoring out. Assign the copies to one agent, propagate to every copy, leave the mandate alone.
|
|
63
|
+
|
|
64
|
+
## Author the contract before a parallel rewrite
|
|
65
|
+
|
|
66
|
+
When one class spans many files and the strings **cross-reference each other** (a phrase in one unit that another unit quotes, a marker other prose routes to, a shared field name), the rewrite cannot be decided in parallel. `references/workflow-shapes.md` carries what breaks if you skip either the contract or the fan-out.
|
|
67
|
+
|
|
68
|
+
Serialize the decision. One high-effort agent (or you) writes the canonical mapping to a file first:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
old string (exact) -> new string (exact) | rationale | units affected
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Per-unit agents then apply it **verbatim** and report any occurrence the contract does not cover rather than improvising a variant. An uncovered occurrence is a contract gap to resolve serially, not an invitation to extend the contract locally.
|
|
75
|
+
|
|
76
|
+
Corollary: **gathering the inventory is parallelizable; deciding the canonical rewrite is not.** Fan out to find every occurrence, then collapse to one author to decide the mapping, then fan out to apply it.
|
|
77
|
+
|
|
78
|
+
## Reconcile
|
|
79
|
+
|
|
80
|
+
After editing, re-read every block touched and fix what the edit itself broke. A half-applied cut is worse than no cut. It leaves prose that is internally inconsistent, which is a defect the corpus did not have before.
|
|
81
|
+
|
|
82
|
+
Check each of these on every touched file:
|
|
83
|
+
|
|
84
|
+
- A reference (path, section name, phase number) pointing at something the pass removed.
|
|
85
|
+
- A numbered or ordered sequence with a hole, or with a step whose ordinal no longer matches what it depends on.
|
|
86
|
+
- An instruction whose precondition was deleted, so it now applies unconditionally or never.
|
|
87
|
+
- A reference file nothing routes to any more. Either restore the route or remove the file. An orphan reference is loaded by nobody and rots.
|
|
88
|
+
- Two surviving sentences that now contradict each other. Pick one and delete the other. Do not leave both and let the model choose.
|
|
89
|
+
- Frontmatter, description, or activation text that no longer matches what the unit does after the cut.
|
|
90
|
+
- A cut that landed in a duplicated shared asset without the sibling copies following.
|
|
91
|
+
|
|
92
|
+
## Assertions on mechanical edits
|
|
93
|
+
|
|
94
|
+
When a pass applies many exact replacements, do it under assertions rather than by hand. For each target, assert the string matches **exactly once** in its file, and abort before writing anything if any target matches zero times or more than once.
|
|
95
|
+
|
|
96
|
+
Exactly-once is the part that makes the check worth running. Zero matches means an earlier pass already rewrote the anchor. More than one means the anchor is ambiguous and the edit would land in the wrong place. In the engagement this caught an anchor a previous pass had already changed, and because the check ran before any write, nothing was partially applied. The pass was re-derived against current content instead of repaired afterward.
|
|
97
|
+
|
|
98
|
+
Fail closed, all-or-nothing per file at minimum. A script that writes files 1 through 7 and dies on 8 leaves a state no one can review.
|
|
99
|
+
|
|
100
|
+
## Report the skips
|
|
101
|
+
|
|
102
|
+
**Report what you deliberately did not cut, and why.** An agent that applied 100% of its proposals has almost certainly over-cut. A meaningful skip rate is the expected outcome, not underperformance. In the engagement's audit, 81 of 616 proposed cuts were defended and kept.
|
|
103
|
+
|
|
104
|
+
## The over-cut failure mode
|
|
105
|
+
|
|
106
|
+
Removing a "you must" does not remove the decision. It hands the decision to the model. `references/halt-taxonomy.md` class 10 carries the mechanism and the observed failure. The line that resolved it without restoring the old prose was **a unit decides its own internal delegation; whether a step runs at all is not its call.**
|
|
107
|
+
|
|
108
|
+
The pass-loop rule: for every mandate you remove, name what now decides, and check that the new decider is allowed to decide it. If the answer is "the model, at its discretion, whether a required step happens", then that mandate is a required check, and it stays. This class is also invisible to a probe that never enters the skipped phase. That is why Phase 5 audits the phases the instrument cannot reach, and why one clean run proves nothing (`references/noise-floor.md`).
|
|
109
|
+
|
|
110
|
+
## Discipline that survives contact
|
|
111
|
+
|
|
112
|
+
- **Fix at the smallest layer that defines the behavior.** Reword only when rewording is the smallest mechanism; prefer deleting the structure that made the wording necessary.
|
|
113
|
+
- **Field names, enums, greppable markers and security guards are data.** They stay. What goes is the justification clause around them that teaches the model a separate consumer is waiting.
|
|
114
|
+
- **Never edit tests to make a suite green.** A removed string a test pins is a finding to report, not a test to weaken.
|
|
115
|
+
- One problem per agent, each editing a disjoint file set so parallel work cannot collide.
|
|
116
|
+
|
|
117
|
+
## Reading the failure (Phase 5)
|
|
118
|
+
|
|
119
|
+
A failure that moves to a later phase is progress and names the next target. A failure at the same site means the fix missed. A run that completes the task while skipping the workflow is a different defect than a halt, and only shows up if Phase 1's two metrics stayed separate.
|
|
120
|
+
|
|
121
|
+
**Audit the phases the instrument cannot reach.** A probe that skips a phase can never fail in it, so a green streak certifies only what it exercised. List the phases your task never enters, read those files, and treat what you find there as equal in weight to what the runs found. Some of the most consequential defects live where no test looks.
|
|
122
|
+
|
|
123
|
+
**Report the limit.** Name the paths that remain unmeasured and what would be needed to measure them. Do not let a cleared bar imply coverage it does not have.
|
|
124
|
+
|
|
125
|
+
## Ship (Phase 6)
|
|
126
|
+
|
|
127
|
+
Commit each pass separately with its own message so the history says which change was made and why, and so release tooling can classify intent. Keep the measurement artifacts.
|
|
128
|
+
|
|
129
|
+
Then write the finding down where the next person will hit it: the mechanism, the before and after, the measured numbers, and the hypotheses that died. **Record the ones that died.** They are what stops the next attempt from re-running a dead end, and they are the part every write-up omits.
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Halt Taxonomy
|
|
2
|
+
|
|
3
|
+
## The mechanism
|
|
4
|
+
|
|
5
|
+
A workflow "phase" is often invoked by loading its instructions into the **same conversation** (a skill load, an include, a prose route to "the review phase") rather than by spawning a separate process. When that happens, the model on both sides of that seam is one model in one turn. In an unattended run there is no second party and no next user message, and a reply that contains no tool call ends the session. So an instruction to return, hand back, or report to a caller has exactly one expressible form at that seam: stop. The prose is not wrong about its protocol. The protocol has no runtime.
|
|
6
|
+
|
|
7
|
+
**The diagnostic that settles which seams are real.** In the run archive, find one session id whose trace contains *both* phase-invocation calls (skill loads, reads of another unit's `SKILL.md`) and real subagent dispatches. The phase invocations carry the same session id as the orchestrator. That is one conversation and a fictional boundary. The subagent dispatches carry a distinct child id. That is a real boundary that can carry a hand-off. One line of log settles it for the whole corpus. Run this before classifying anything. Class 9 and survival screen 3 both depend on the answer.
|
|
8
|
+
|
|
9
|
+
If the archive carries no session or child ids (`references/baseline-mining.md` extracts them where it can), substitute the weaker structural test: a seam is real only where the trace shows a **dispatch tool call whose result returns into the parent trace**. A skill load, an include, or a file read is not one. Do not treat an unlabeled trace as evidence of a real boundary. That reading keeps every halt.
|
|
10
|
+
|
|
11
|
+
Each class below gives what to grep, why the match halts, and the replacement. Grep terms are starting points for a corpus that never used exactly these words. Read the matches; do not batch-edit them. Case-insensitive, whole corpus including reference files, one class at a time:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
grep -rniE 'return control|hand back|hand off to|the caller (owns|applies)' <corpus-dir>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 1. Waits on helpers the runtime already terminated
|
|
18
|
+
|
|
19
|
+
**Grep:** `wait for all`, `in parallel`, `concurrently`, `background`, `up to <n> minutes`, `poll until`, `dispatch all <n>`
|
|
20
|
+
|
|
21
|
+
**Why it halts:** a mandated fan-out plus a wait ceiling. If the helpers were never spawned concurrently, or the runtime reaped them at turn end, the wait resolves to nothing. And "wait" has no tool call to express it, so the turn ends inside the ceiling.
|
|
22
|
+
|
|
23
|
+
**Falsifiable check before touching it:** from the archive, measure the maximum number of helpers dispatched *concurrently* per run (see `references/baseline-mining.md` for the extraction). In the engagement, 331 of 332 runs never exceeded one at a time, which falsified the wall-clock justification the corpus had written for its own fan-out machinery.
|
|
24
|
+
|
|
25
|
+
**Replacement:** dispatch serially, or state parallelism as an allowance rather than a mandate, and delete the wait ceiling with the wall-clock rationale that justified it.
|
|
26
|
+
|
|
27
|
+
## 2. Hand-off across a same-model seam
|
|
28
|
+
|
|
29
|
+
**Grep:** `return control`, `hand back`, `hand off to`, `the caller owns`, `the caller applies`, `report to the orchestrator`, `your caller will`
|
|
30
|
+
|
|
31
|
+
**Why it halts:** it names a recipient that does not exist on this side of the diagnostic above.
|
|
32
|
+
|
|
33
|
+
**Replacement:** record the structured result and continue. "Write the result to `<path>`, then continue to `<next step>`." Keep every field name in the result untouched. The fields are data; the hand-off verb is the defect.
|
|
34
|
+
|
|
35
|
+
## 3. A step ending with no instruction to advance
|
|
36
|
+
|
|
37
|
+
**Diagnostic (count, not grep):** at each boundary between consecutive steps, classify the last sentence of the step as terminal (`stop`, `done`, `await`, `report`, `wait for confirmation`, `end of step`) or forward (`then`, `next`, `continue to`, `proceed to`). A corpus with more terminal than forward endings has a structural halt, not a wording problem.
|
|
38
|
+
|
|
39
|
+
**Why it halts:** a step that closes on a terminal word and says nothing about advancing leaves ending the turn as the only complete reading.
|
|
40
|
+
|
|
41
|
+
**Replacement:** an explicit continue-to-next at **each** transition, placed at the transition and not once in a preamble, plus one statement that a checkpoint means verify and continue rather than pause.
|
|
42
|
+
|
|
43
|
+
## 4. Completion defined without a successor
|
|
44
|
+
|
|
45
|
+
**Grep:** `is done once`, `is complete when`, `you are finished when`, `definition of done`, `success criteria`
|
|
46
|
+
|
|
47
|
+
**Why it halts:** "X is done once ..." with nothing after it reads as the end of the turn, not the end of a step.
|
|
48
|
+
|
|
49
|
+
**Replacement:** say what follows being done. "X is done once <criteria>; then <next step>."
|
|
50
|
+
|
|
51
|
+
## 5. A structured output labeled as a return
|
|
52
|
+
|
|
53
|
+
**Grep:** `Return the following`, `Return:`, `your return value`, `respond with the following object`
|
|
54
|
+
|
|
55
|
+
**Why it halts:** the verb, and only the verb. A return is a control transfer; there is nowhere to transfer to.
|
|
56
|
+
|
|
57
|
+
**Replacement:** verb swap. `Return the following:` becomes `Write the following to <path>:`. The field list is untouched. This is the cheapest class and the easiest to over-cut. An agent told to fix "return" language will happily also delete the schema under it.
|
|
58
|
+
|
|
59
|
+
## 6. An output-format rule doubling as a turn boundary
|
|
60
|
+
|
|
61
|
+
**Grep:** `output nothing else`, `no other text`, `respond with only`, `a single bare`, `do not add commentary`, `the entire response must be`
|
|
62
|
+
|
|
63
|
+
**Why it halts:** a rule forbidding anything after the payload forbids the next tool call. It is a strictness constraint that has quietly become a stop instruction.
|
|
64
|
+
|
|
65
|
+
**Replacement:** write the machine-readable payload to a file at a stated path and let the reply continue. The strictness moves rather than being lost. A file at a fixed path is a *more* deterministic parse target for a programmatic consumer than the end of a transcript, so say that in the replacement text or someone will restore the old rule.
|
|
66
|
+
|
|
67
|
+
## 7. A missing optional capability treated as fatal
|
|
68
|
+
|
|
69
|
+
**Grep:** `not installed`, `must be available`, `required tool`, `abort if`, `did not start`, `if <x> is unavailable, stop`
|
|
70
|
+
|
|
71
|
+
**Why it halts:** a step that cannot execute takes the whole run with it, when the correct outcome is a partial result.
|
|
72
|
+
|
|
73
|
+
**Replacement:** record the step as skipped with the reason and what it would have covered, report partial, continue. Keep the stop only where the missing capability makes every later step meaningless. That is a real precondition, not this class.
|
|
74
|
+
|
|
75
|
+
## 8. An unresolvable precondition with no unattended path
|
|
76
|
+
|
|
77
|
+
**Grep:** `resolve ... first`, `ask the user to`, `credentials`, `log in`, `confirm before`, `requires approval`
|
|
78
|
+
|
|
79
|
+
**Why it halts:** "resolve credentials first" is satisfiable only by a human, and no human is present.
|
|
80
|
+
|
|
81
|
+
**Replacement:** report the unmet precondition and continue without the step. Where the step is mutating and unsafe to perform unattended, skip the mutation and record the exact command a human would run. Do not resolve a halt by widening what the run is allowed to change.
|
|
82
|
+
|
|
83
|
+
## 9. The subagent-prompt trap
|
|
84
|
+
|
|
85
|
+
**Grep:** the vocabulary of classes 2 and 6, restricted to the corpus's own prompt assets: its persona or agent-prompt directories and prompt templates. Also `report and stop`, `return only a gist`, `the orchestrator owns that decision`, `do not act on this yourself`.
|
|
86
|
+
|
|
87
|
+
**Why a naive sweep misses it entirely:** while the asset is sent to a real subagent, every one of those lines is correct and required. They become a live session terminator the moment a documented no-subagent fallback routes the asset **inline** into the orchestrator's own conversation. Same words, different consumer. A sweep that reads only the asset sees a correct file. A sweep that reads only the orchestrator sees no offending prose.
|
|
88
|
+
|
|
89
|
+
**Resolution:** classify each prompt asset by who actually consumes it. Grep every unit that dispatches the asset for an inlining fallback: `if you cannot dispatch`, `if subagents are unavailable`, `run this yourself`, `inline`. Then:
|
|
90
|
+
|
|
91
|
+
| Consumer | Action |
|
|
92
|
+
|---|---|
|
|
93
|
+
| Always a real subagent | Leave as is. The boundary is real. |
|
|
94
|
+
| Any documented inline fallback | Rewrite so the text is safe in both paths, or remove the fallback. |
|
|
95
|
+
| Asset shared by several units | Resolve once, for the union of consumers (see the shared-asset rule in `references/cut-passes.md`). |
|
|
96
|
+
|
|
97
|
+
Do not blanket-rewrite prompt assets. That deletes the one boundary in the corpus that was not fiction.
|
|
98
|
+
|
|
99
|
+
## 10. Over-correction: removing the mandate that made phases required
|
|
100
|
+
|
|
101
|
+
This class belongs here because the cure for 1 through 9 causes it.
|
|
102
|
+
|
|
103
|
+
A dispatch mandate carries two payloads: the fictional seam, and the requirement that the phase run at all. Remove the first without preserving the second and nothing in the corpus says the workflow's own phases are required.
|
|
104
|
+
|
|
105
|
+
**Observed:** after a dispatch-mandate removal, a run did the task inline and reported success with no artifacts. The transcript looked clean. That defect is invisible to a did-it-finish metric and shows up only if process adherence and task completion are tracked as separate numbers (`references/baseline-mining.md`).
|
|
106
|
+
|
|
107
|
+
**Replacement:** keep the requirement, drop the seam. "Phase N is required. Do it in this session; do not skip it." Then verify the phase by artifact existence, never by the final message.
|
|
108
|
+
|
|
109
|
+
## Screens for a stop that must survive
|
|
110
|
+
|
|
111
|
+
Treating every stop as the enemy is the failure mode of applying this file. Run these before editing any match above. **Any one** is sufficient to keep the stop as written.
|
|
112
|
+
|
|
113
|
+
1. **The user is genuinely the subject.** The instruction concerns a human's decision, consent, or preference, not a fabricated caller.
|
|
114
|
+
2. **It is a terminal no-op.** Nothing is left for anyone: "no findings, stop." A continuation here invents work.
|
|
115
|
+
3. **The roles split across a real runtime boundary.** The opening diagnostic shows two distinct sessions or processes. Then "return to the caller" is accurate and the halt is somebody else's turn ending, correctly.
|
|
116
|
+
4. **The site already has an unattended default.** "If no reply within X, choose Y", "in non-interactive mode, do Z." The path exists; the stop is the interactive branch.
|
|
117
|
+
5. **The word bounds an activity, not the turn.** "Stop expanding the search once you have three candidates", "halt the retry loop after two failures." A grep for `stop` catches these. They are scope quantifiers, and removing them removes a threshold.
|
|
118
|
+
|
|
119
|
+
**Sixth case, stated separately because it is the one that gets deleted anyway:** a workflow whose product **is** stopping to ask. An interview that must take one question at a time. A teaching check-in that pauses for the learner's answer. An approval step that exists in order to make the user decide. Deleting the pause deletes the unit. These get an unattended degradation path (a stated default, a skip-with-reason, or an explicit refusal to run unattended), never a deletion. If such a unit fails the benchmark, the benchmark's task is wrong for it. Exclude the unit and report the exclusion rather than editing the unit to pass.
|
|
120
|
+
|
|
121
|
+
## Why the fix is never more capability
|
|
122
|
+
|
|
123
|
+
Every class above reduces to prose written as if a second party were waiting. The fix is never to add capability. It is to remove the fictional seam and keep the requirement.
|