devlyn-cli 3.2.1 → 3.3.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/AGENTS.md +2 -2
- package/CLAUDE.md +2 -2
- package/README.md +12 -102
- package/bin/devlyn.js +13 -225
- package/bin/instruction-templates.json +8 -0
- package/config/skills/_shared/adapters/grok.md +1 -2
- package/config/skills/_shared/archive_run.py +15 -3
- package/config/skills/_shared/judge-role-evidence.py +21 -1
- package/config/skills/_shared/runtime-principles.md +1 -1
- package/config/skills/_shared/spec-verify-check.py +0 -653
- package/config/skills/_shared/state-phase-write.py +351 -25
- package/config/skills/_shared/task-complete.py +660 -150
- package/config/skills/_shared/terminal-claim-check.py +229 -4
- package/config/skills/_shared/verify-merge-findings.py +93 -2
- package/config/skills/devlyn:ideate/SKILL.md +3 -4
- package/config/skills/devlyn:ideate/references/elicitation.md +2 -35
- package/config/skills/devlyn:ideate/references/from-spec-mode.md +3 -18
- package/config/skills/devlyn:ideate/references/project-mode.md +1 -16
- package/config/skills/devlyn:ideate/references/spec-template.md +0 -2
- package/config/skills/devlyn:queue/SKILL.md +6 -4
- package/config/skills/devlyn:resolve/SKILL.md +16 -25
- package/config/skills/devlyn:resolve/references/free-form-mode.md +0 -14
- package/config/skills/devlyn:resolve/references/outer-loop.md +1 -1
- package/config/skills/devlyn:resolve/references/phases/build-gate.md +1 -1
- package/config/skills/devlyn:resolve/references/phases/cleanup.md +3 -3
- package/config/skills/devlyn:resolve/references/phases/implement.md +1 -1
- package/config/skills/devlyn:resolve/references/phases/probe-derive.md +1 -16
- package/config/skills/devlyn:resolve/references/phases/verify.md +4 -9
- package/config/skills/devlyn:resolve/references/state-schema.md +9 -7
- package/config/skills/devlyn:resolve/references/task-completion.md +47 -38
- package/{config/skills → optional-skills}/code-health-standards/SKILL.md +4 -13
- package/{config/skills → optional-skills}/code-review-standards/SKILL.md +4 -12
- package/{config/skills → optional-skills}/root-cause-analysis/SKILL.md +4 -12
- package/{config/skills → optional-skills}/ui-implementation-standards/SKILL.md +4 -14
- package/package.json +1 -57
- package/benchmark/auto-resolve/BENCHMARK-DESIGN.md +0 -289
- package/benchmark/auto-resolve/BENCHMARK-RESULTS.md +0 -341
- package/benchmark/auto-resolve/README.md +0 -696
- package/benchmark/auto-resolve/RUBRIC.md +0 -177
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/NOTES.md +0 -34
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/expected.json +0 -68
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/setup.sh +0 -4
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/spec.md +0 -44
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/task.ko.txt +0 -8
- package/benchmark/auto-resolve/fixtures/F1-cli-trivial-flag/task.txt +0 -8
- package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/NOTES.md +0 -68
- package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/expected.json +0 -60
- package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/setup.sh +0 -17
- package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/spec.md +0 -51
- package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/task.txt +0 -9
- package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/verifiers/invalid.js +0 -29
- package/benchmark/auto-resolve/fixtures/F10-persist-write-collision/verifiers/parallel.js +0 -50
- package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/NOTES.md +0 -75
- package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/expected.json +0 -52
- package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/setup.sh +0 -171
- package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/spec.md +0 -50
- package/benchmark/auto-resolve/fixtures/F11-batch-import-all-or-nothing/task.txt +0 -9
- package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/NOTES.md +0 -89
- package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/expected.json +0 -74
- package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/setup.sh +0 -251
- package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/spec.md +0 -57
- package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/task.txt +0 -13
- package/benchmark/auto-resolve/fixtures/F12-webhook-raw-body-signature/verifiers/replay-malformed-body.js +0 -64
- package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/NOTES.md +0 -104
- package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/expected.json +0 -46
- package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/setup.sh +0 -336
- package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/spec.md +0 -51
- package/benchmark/auto-resolve/fixtures/F15-frozen-diff-race-review/task.txt +0 -9
- package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/NOTES.md +0 -38
- package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/expected.json +0 -64
- package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/setup.sh +0 -32
- package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/spec.md +0 -63
- package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/task.txt +0 -7
- package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/verifiers/exact-success.js +0 -54
- package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/verifiers/no-hardcoded-pricing.js +0 -47
- package/benchmark/auto-resolve/fixtures/F16-cli-quote-tax-rules/verifiers/stock-error.js +0 -45
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/NOTES.md +0 -57
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/expected-pair-plan-registry.json +0 -170
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/expected.json +0 -84
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/metadata.json +0 -21
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/pair-plan.sample-fail.json +0 -214
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/pair-plan.sample-pass.json +0 -223
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/setup.sh +0 -5
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/spec.md +0 -55
- package/benchmark/auto-resolve/fixtures/F2-cli-medium-subcommand/task.txt +0 -14
- package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/NOTES.md +0 -39
- package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/expected.json +0 -62
- package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/setup.sh +0 -2
- package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/spec.md +0 -67
- package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/task.txt +0 -7
- package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/verifiers/error-order.js +0 -55
- package/benchmark/auto-resolve/fixtures/F21-cli-scheduler-priority/verifiers/priority-blocked.js +0 -48
- package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/NOTES.md +0 -35
- package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/expected.json +0 -56
- package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/setup.sh +0 -2
- package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/spec.md +0 -64
- package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/task.txt +0 -7
- package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/verifiers/conflicting-duplicate.js +0 -34
- package/benchmark/auto-resolve/fixtures/F22-cli-ledger-close/verifiers/idempotent-close.js +0 -41
- package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/NOTES.md +0 -39
- package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/expected.json +0 -56
- package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/setup.sh +0 -2
- package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/spec.md +0 -76
- package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/task.txt +0 -7
- package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/verifiers/priority-rollback.js +0 -64
- package/benchmark/auto-resolve/fixtures/F23-cli-fulfillment-wave/verifiers/single-warehouse-fefo.js +0 -66
- package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/NOTES.md +0 -40
- package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/expected.json +0 -66
- package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/setup.sh +0 -36
- package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/spec.md +0 -71
- package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/task.txt +0 -7
- package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/verifiers/catalog-source.js +0 -57
- package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/verifiers/exact-success.js +0 -63
- package/benchmark/auto-resolve/fixtures/F25-cli-cart-promotion-rules/verifiers/stock-error.js +0 -34
- package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/NOTES.md +0 -31
- package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/expected.json +0 -68
- package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/setup.sh +0 -17
- package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/spec.md +0 -68
- package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/task.txt +0 -7
- package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/verifiers/conflicting-duplicate.js +0 -29
- package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/verifiers/exact-payout.js +0 -58
- package/benchmark/auto-resolve/fixtures/F26-cli-payout-ledger-rules/verifiers/rules-source.js +0 -56
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/NOTES.md +0 -35
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/expected-pair-plan-registry.json +0 -162
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/expected.json +0 -67
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/metadata.json +0 -19
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/setup.sh +0 -4
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/spec.md +0 -55
- package/benchmark/auto-resolve/fixtures/F3-backend-contract-risk/task.txt +0 -9
- package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/NOTES.md +0 -34
- package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/expected.json +0 -57
- package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/setup.sh +0 -2
- package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/spec.md +0 -67
- package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/task.txt +0 -7
- package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/verifiers/duplicate-event-error.js +0 -35
- package/benchmark/auto-resolve/fixtures/F31-cli-seat-rebalance/verifiers/priority-transfer-rollback.js +0 -53
- package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/NOTES.md +0 -38
- package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/expected.json +0 -57
- package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/setup.sh +0 -2
- package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/spec.md +0 -70
- package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/task.txt +0 -3
- package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/verifiers/duplicate-renewal-error.js +0 -42
- package/benchmark/auto-resolve/fixtures/F32-cli-subscription-renewal/verifiers/priority-credit-rollback.js +0 -70
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/NOTES.md +0 -47
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/expected.json +0 -57
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/setup.sh +0 -6
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/spec.md +0 -48
- package/benchmark/auto-resolve/fixtures/F4-web-browser-design/task.txt +0 -9
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/NOTES.md +0 -45
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/expected.json +0 -65
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/setup.sh +0 -55
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/spec.md +0 -48
- package/benchmark/auto-resolve/fixtures/F5-fix-loop-red-green/task.txt +0 -7
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/NOTES.md +0 -43
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/expected.json +0 -77
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/setup.sh +0 -4
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/spec.md +0 -48
- package/benchmark/auto-resolve/fixtures/F6-dep-audit-native-module/task.txt +0 -10
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/NOTES.md +0 -57
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/expected.json +0 -76
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/setup.sh +0 -36
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/spec.md +0 -45
- package/benchmark/auto-resolve/fixtures/F7-out-of-scope-trap/task.txt +0 -7
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/NOTES.md +0 -53
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/expected.json +0 -63
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/setup.sh +0 -4
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/spec.md +0 -48
- package/benchmark/auto-resolve/fixtures/F8-known-limit-ambiguous/task.txt +0 -1
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/NOTES.md +0 -105
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/expected.json +0 -74
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/setup.sh +0 -28
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/spec.md +0 -59
- package/benchmark/auto-resolve/fixtures/F9-e2e-ideate-to-resolve/task.txt +0 -5
- package/benchmark/auto-resolve/fixtures/SCHEMA.md +0 -188
- package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/NOTES.md +0 -37
- package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/RETIRED.md +0 -13
- package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/expected.json +0 -56
- package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/setup.sh +0 -18
- package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/spec.md +0 -69
- package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/task.txt +0 -7
- package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/verifiers/exact-proration.js +0 -48
- package/benchmark/auto-resolve/fixtures/retired/F27-cli-subscription-proration/verifiers/rules-source-and-conflict.js +0 -79
- package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/NOTES.md +0 -54
- package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/RETIRED.md +0 -7
- package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/expected.json +0 -67
- package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/setup.sh +0 -2
- package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/spec.md +0 -67
- package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/task.txt +0 -5
- package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/verifiers/policy-precedence.js +0 -72
- package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/verifiers/validation-and-immutability.js +0 -43
- package/benchmark/auto-resolve/fixtures/retired/F28-cli-return-authorization/verifiers/validation-boundary.js +0 -116
- package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/NOTES.md +0 -35
- package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/RETIRED.md +0 -12
- package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/expected.json +0 -58
- package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/setup.sh +0 -2
- package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/spec.md +0 -73
- package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/task.txt +0 -17
- package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/verifiers/mixed-idempotent-settlement.js +0 -53
- package/benchmark/auto-resolve/fixtures/retired/F30-cli-credit-hold-settlement/verifiers/rejection-boundaries.js +0 -74
- package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/NOTES.md +0 -28
- package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/RETIRED.md +0 -15
- package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/expected.json +0 -57
- package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/setup.sh +0 -50
- package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/spec.md +0 -59
- package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/task.txt +0 -9
- package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/verifiers/ordered-settlement.js +0 -88
- package/benchmark/auto-resolve/fixtures/retired/F34-cli-settle-inflight/verifiers/reject-invalid.js +0 -45
- package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/NOTES.md +0 -30
- package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/RETIRED.md +0 -16
- package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/expected.json +0 -64
- package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/setup.sh +0 -21
- package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/spec.md +0 -58
- package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/task.txt +0 -9
- package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/verifiers/dup-op.js +0 -54
- package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/verifiers/priority-apply.js +0 -82
- package/benchmark/auto-resolve/fixtures/retired/F35-cli-apply-journal/verifiers/rollback.js +0 -77
- package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/NOTES.md +0 -99
- package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/RETIRED.md +0 -18
- package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/expected.json +0 -64
- package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/setup.sh +0 -4
- package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/spec.md +0 -61
- package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/task.txt +0 -9
- package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/verifiers/correctness-small.js +0 -135
- package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/verifiers/scale.js +0 -100
- package/benchmark/auto-resolve/fixtures/retired/F36-cli-session-admission/verifiers/validation.js +0 -75
- package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/NOTES.md +0 -93
- package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/RETIRED.md +0 -16
- package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/expected.json +0 -65
- package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/setup.sh +0 -18
- package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/spec.md +0 -66
- package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/task.txt +0 -9
- package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/verifiers/correctness-small.js +0 -84
- package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/verifiers/scale.js +0 -184
- package/benchmark/auto-resolve/fixtures/retired/F37-cli-rule-lookup/verifiers/validation.js +0 -74
- package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/NOTES.md +0 -60
- package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/RETIRED.md +0 -29
- package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/expected.json +0 -73
- package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/metadata.json +0 -10
- package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/setup.sh +0 -28
- package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/spec.md +0 -58
- package/benchmark/auto-resolve/fixtures/retired/F9-e2e-ideate-to-preflight/task.txt +0 -5
- package/benchmark/auto-resolve/fixtures/test-repo/README.md +0 -12
- package/benchmark/auto-resolve/fixtures/test-repo/bin/cli.js +0 -63
- package/benchmark/auto-resolve/fixtures/test-repo/package-lock.json +0 -823
- package/benchmark/auto-resolve/fixtures/test-repo/package.json +0 -22
- package/benchmark/auto-resolve/fixtures/test-repo/playwright.config.js +0 -17
- package/benchmark/auto-resolve/fixtures/test-repo/server/index.js +0 -37
- package/benchmark/auto-resolve/fixtures/test-repo/tests/cli.test.js +0 -25
- package/benchmark/auto-resolve/fixtures/test-repo/tests/server.test.js +0 -58
- package/benchmark/auto-resolve/fixtures/test-repo/web/index.html +0 -37
- package/benchmark/auto-resolve/results/20260507-f10-f11-tier1-full-pipeline/headroom-gate.json +0 -25
- package/benchmark/auto-resolve/results/20260507-f10-f11-tier1-full-pipeline/headroom-gate.md +0 -10
- package/benchmark/auto-resolve/results/20260508-f22-exact-error-headroom/headroom-gate.json +0 -18
- package/benchmark/auto-resolve/results/20260508-f22-exact-error-headroom/headroom-gate.md +0 -9
- package/benchmark/auto-resolve/results/20260508-f26-headroom/headroom-gate.json +0 -18
- package/benchmark/auto-resolve/results/20260508-f26-headroom/headroom-gate.md +0 -9
- package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/F16-cli-quote-tax-rules/l2_risk_probes/result.json +0 -28
- package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/F23-cli-fulfillment-wave/l2_risk_probes/result.json +0 -28
- package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/F25-cli-cart-promotion-rules/l2_risk_probes/result.json +0 -30
- package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/full-pipeline-pair-gate.json +0 -82
- package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/full-pipeline-pair-gate.md +0 -18
- package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/headroom-gate.json +0 -46
- package/benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/headroom-gate.md +0 -17
- package/benchmark/auto-resolve/results/20260511-f12-webhook-headroom/headroom-gate.json +0 -28
- package/benchmark/auto-resolve/results/20260511-f12-webhook-headroom/headroom-gate.md +0 -15
- package/benchmark/auto-resolve/results/20260511-f15-concurrency-headroom/headroom-gate.json +0 -28
- package/benchmark/auto-resolve/results/20260511-f15-concurrency-headroom/headroom-gate.md +0 -15
- package/benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/F21-cli-scheduler-priority/l2_risk_probes/result.json +0 -32
- package/benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/full-pipeline-pair-gate.json +0 -44
- package/benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/full-pipeline-pair-gate.md +0 -16
- package/benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/headroom-gate.json +0 -18
- package/benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/headroom-gate.md +0 -9
- package/benchmark/auto-resolve/results/20260511-f3-http-error-headroom/headroom-gate.json +0 -28
- package/benchmark/auto-resolve/results/20260511-f3-http-error-headroom/headroom-gate.md +0 -15
- package/benchmark/auto-resolve/results/20260512-f2-medium-headroom/headroom-gate.json +0 -28
- package/benchmark/auto-resolve/results/20260512-f2-medium-headroom/headroom-gate.md +0 -15
- package/benchmark/auto-resolve/results/20260512-f31-seat-rebalance-headroom/headroom-gate.json +0 -28
- package/benchmark/auto-resolve/results/20260512-f31-seat-rebalance-headroom/headroom-gate.md +0 -15
- package/benchmark/auto-resolve/results/20260512-f32-subscription-renewal-headroom/headroom-gate.json +0 -28
- package/benchmark/auto-resolve/results/20260512-f32-subscription-renewal-headroom/headroom-gate.md +0 -15
- package/benchmark/auto-resolve/results/20260512-f4-web-headroom/headroom-gate.json +0 -28
- package/benchmark/auto-resolve/results/20260512-f4-web-headroom/headroom-gate.md +0 -15
- package/benchmark/auto-resolve/results/20260512-f5-fixloop-headroom/headroom-gate.json +0 -28
- package/benchmark/auto-resolve/results/20260512-f5-fixloop-headroom/headroom-gate.md +0 -15
- package/benchmark/auto-resolve/results/20260512-f6-checksum-headroom/headroom-gate.json +0 -28
- package/benchmark/auto-resolve/results/20260512-f6-checksum-headroom/headroom-gate.md +0 -15
- package/benchmark/auto-resolve/results/20260512-f7-scope-headroom/headroom-gate.json +0 -28
- package/benchmark/auto-resolve/results/20260512-f7-scope-headroom/headroom-gate.md +0 -15
- package/benchmark/auto-resolve/results/20260512-f9-e2e-headroom/headroom-gate.json +0 -28
- package/benchmark/auto-resolve/results/20260512-f9-e2e-headroom/headroom-gate.md +0 -15
- package/benchmark/auto-resolve/run-real-benchmark.md +0 -303
- package/benchmark/auto-resolve/scripts/audit-headroom-rejections.py +0 -441
- package/benchmark/auto-resolve/scripts/audit-pair-evidence.py +0 -1256
- package/benchmark/auto-resolve/scripts/build-pair-eligible-manifest.py +0 -306
- package/benchmark/auto-resolve/scripts/check-f9-artifacts.py +0 -268
- package/benchmark/auto-resolve/scripts/collect-swebench-predictions.py +0 -108
- package/benchmark/auto-resolve/scripts/compile-report.py +0 -493
- package/benchmark/auto-resolve/scripts/fetch-swebench-instances.py +0 -129
- package/benchmark/auto-resolve/scripts/frozen-verify-gate.py +0 -434
- package/benchmark/auto-resolve/scripts/full-pipeline-pair-gate.py +0 -612
- package/benchmark/auto-resolve/scripts/headroom-gate.py +0 -378
- package/benchmark/auto-resolve/scripts/iter-0033c-compare.py +0 -683
- package/benchmark/auto-resolve/scripts/iter-0033c-l1-summary.py +0 -97
- package/benchmark/auto-resolve/scripts/judge-opus-pass.sh +0 -542
- package/benchmark/auto-resolve/scripts/judge.sh +0 -565
- package/benchmark/auto-resolve/scripts/oracle-scope-tier-a.py +0 -256
- package/benchmark/auto-resolve/scripts/oracle-scope-tier-b.py +0 -287
- package/benchmark/auto-resolve/scripts/oracle-test-fidelity.py +0 -328
- package/benchmark/auto-resolve/scripts/pair-candidate-frontier.py +0 -469
- package/benchmark/auto-resolve/scripts/pair-plan-idgen.py +0 -401
- package/benchmark/auto-resolve/scripts/pair-plan-lint.py +0 -475
- package/benchmark/auto-resolve/scripts/pair-rejected-fixtures.sh +0 -103
- package/benchmark/auto-resolve/scripts/pair_evidence_contract.py +0 -270
- package/benchmark/auto-resolve/scripts/prepare-swebench-frozen-case.py +0 -273
- package/benchmark/auto-resolve/scripts/prepare-swebench-frozen-corpus.py +0 -148
- package/benchmark/auto-resolve/scripts/prepare-swebench-solver-worktree.py +0 -210
- package/benchmark/auto-resolve/scripts/recent-benchmark-summary.py +0 -232
- package/benchmark/auto-resolve/scripts/run-fixture.sh +0 -1024
- package/benchmark/auto-resolve/scripts/run-frozen-verify-pair.sh +0 -683
- package/benchmark/auto-resolve/scripts/run-full-pipeline-pair-candidate.sh +0 -458
- package/benchmark/auto-resolve/scripts/run-headroom-candidate.sh +0 -336
- package/benchmark/auto-resolve/scripts/run-iter-0033c.sh +0 -208
- package/benchmark/auto-resolve/scripts/run-suite.sh +0 -251
- package/benchmark/auto-resolve/scripts/run-swebench-frozen-corpus.sh +0 -310
- package/benchmark/auto-resolve/scripts/run-swebench-solver-batch.sh +0 -257
- package/benchmark/auto-resolve/scripts/ship-gate.py +0 -391
- package/benchmark/auto-resolve/scripts/solo-ceiling-avoidance.py +0 -53
- package/benchmark/auto-resolve/scripts/solo-headroom-hypothesis.py +0 -77
- package/benchmark/auto-resolve/scripts/swebench-frozen-matrix.py +0 -478
- package/benchmark/auto-resolve/scripts/test-audit-headroom-rejections.sh +0 -288
- package/benchmark/auto-resolve/scripts/test-audit-pair-evidence.sh +0 -1672
- package/benchmark/auto-resolve/scripts/test-benchmark-arg-parsing.sh +0 -1015
- package/benchmark/auto-resolve/scripts/test-build-pair-eligible-manifest.sh +0 -491
- package/benchmark/auto-resolve/scripts/test-check-f9-artifacts.sh +0 -91
- package/benchmark/auto-resolve/scripts/test-frozen-verify-gate.sh +0 -517
- package/benchmark/auto-resolve/scripts/test-full-pipeline-pair-gate.sh +0 -610
- package/benchmark/auto-resolve/scripts/test-headroom-gate.sh +0 -401
- package/benchmark/auto-resolve/scripts/test-iter-0033c-compare.sh +0 -525
- package/benchmark/auto-resolve/scripts/test-iter-0033c-l1-summary.sh +0 -254
- package/benchmark/auto-resolve/scripts/test-lint-fixtures.sh +0 -580
- package/benchmark/auto-resolve/scripts/test-pair-candidate-frontier.sh +0 -591
- package/benchmark/auto-resolve/scripts/test-run-full-pipeline-pair-candidate.sh +0 -497
- package/benchmark/auto-resolve/scripts/test-run-headroom-candidate.sh +0 -401
- package/benchmark/auto-resolve/scripts/test-run-swebench-solver-batch.sh +0 -111
- package/benchmark/auto-resolve/scripts/test-ship-gate.sh +0 -1189
- package/benchmark/auto-resolve/scripts/test-swebench-frozen-case.sh +0 -1221
- package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/NOTES.md +0 -28
- package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/expected.json +0 -63
- package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/metadata.json +0 -10
- package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/setup.sh +0 -3
- package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/spec.md +0 -47
- package/benchmark/auto-resolve/shadow-fixtures/S1-cli-lang-flag/task.txt +0 -1
- package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/NOTES.md +0 -34
- package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/expected.json +0 -53
- package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/metadata.json +0 -10
- package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/setup.sh +0 -3
- package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/spec.md +0 -50
- package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/task.txt +0 -1
- package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/verifiers/duplicate-order-error.js +0 -27
- package/benchmark/auto-resolve/shadow-fixtures/S2-cli-inventory-reservation/verifiers/priority-stock-reservation.js +0 -44
- package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/NOTES.md +0 -34
- package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/expected.json +0 -55
- package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/metadata.json +0 -10
- package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/setup.sh +0 -3
- package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/spec.md +0 -52
- package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/task.txt +0 -1
- package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/verifiers/duplicate-ticket-error.js +0 -29
- package/benchmark/auto-resolve/shadow-fixtures/S3-cli-ticket-assignment/verifiers/priority-agent-assignment.js +0 -48
- package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/NOTES.md +0 -34
- package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/expected.json +0 -55
- package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/metadata.json +0 -10
- package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/setup.sh +0 -3
- package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/spec.md +0 -55
- package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/task.txt +0 -1
- package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/verifiers/duplicate-return-error.js +0 -43
- package/benchmark/auto-resolve/shadow-fixtures/S4-cli-return-routing/verifiers/priority-return-routing.js +0 -70
- package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/NOTES.md +0 -37
- package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/expected.json +0 -54
- package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/metadata.json +0 -10
- package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/setup.sh +0 -3
- package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/spec.md +0 -59
- package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/task.txt +0 -1
- package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/verifiers/credit-ledger-priority.js +0 -98
- package/benchmark/auto-resolve/shadow-fixtures/S5-cli-credit-grant-ledger/verifiers/duplicate-charge-error.js +0 -38
- package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/NOTES.md +0 -36
- package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/expected.json +0 -56
- package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/metadata.json +0 -10
- package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/setup.sh +0 -3
- package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/spec.md +0 -59
- package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/task.txt +0 -1
- package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/verifiers/duplicate-refund-error.js +0 -41
- package/benchmark/auto-resolve/shadow-fixtures/S6-cli-refund-window-ledger/verifiers/priority-refund-ledger.js +0 -65
- package/config/skills/_shared/pair-plan-schema.md +0 -298
- package/scripts/lint-fixtures.sh +0 -352
- package/scripts/lint-shadow-fixtures.sh +0 -58
- package/scripts/lint-skills.sh +0 -4265
- package/scripts/test-owner-phases.py +0 -238
|
@@ -7,22 +7,24 @@ authorized by the task scope; no additional approval ceremony is required.
|
|
|
7
7
|
|
|
8
8
|
## Allocate before work
|
|
9
9
|
|
|
10
|
-
Use the installed `_shared/task-complete.py` from the
|
|
10
|
+
Use the installed `_shared/task-complete.py` from the anchor checkout,
|
|
11
11
|
before committing owner inputs or starting direct/full work:
|
|
12
12
|
|
|
13
13
|
```sh
|
|
14
14
|
python3 "$DEVLYN_SHARED_DIR/task-complete.py" allocate --repo . \
|
|
15
15
|
--task '<task identity>' --branch '<absent task branch>' \
|
|
16
|
-
--repository '<owner/repo>' --remote origin --base main
|
|
16
|
+
--worktree '<absent path>' --repository '<owner/repo>' --remote origin --base main
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
the common Gitdir.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
Every task owns a linked worktree; `--worktree` is required. Its baseline is the
|
|
20
|
+
exact fetched remote base, independent of the anchor's branch or dirty state;
|
|
21
|
+
allocation leaves the anchor's HEAD, index and files untouched. Save the returned
|
|
22
|
+
receipt path under the common Gitdir. `reconciled` reports earlier accepted,
|
|
23
|
+
PR-delivered tasks whose merged resources were cleaned or retained; it is
|
|
24
|
+
informational, so never resume or release a receipt you do not own. Existing
|
|
25
|
+
branches/trees cannot be adopted, even when their names look generated. An
|
|
26
|
+
interrupted allocation stays blocked for inspection; do not delete its receipt
|
|
27
|
+
and enroll the resulting branch. Unreceipted tasks remain owner-managed.
|
|
26
28
|
|
|
27
29
|
Allocation also returns a receipt-owned `scratch` directory. Put disposable
|
|
28
30
|
build intermediates there (for example, set
|
|
@@ -48,8 +50,9 @@ history are never adopted or swept. A refused cleanup does not block source
|
|
|
48
50
|
delivery; it stays visible in the handoff with its receipt and retry command
|
|
49
51
|
(`CLEANUP_PENDING` after delivered source). No task is described as cleaned
|
|
50
52
|
while owned disposable files remain. On resumption, finish any pending scratch
|
|
51
|
-
cleanup before allocating more temporary storage
|
|
52
|
-
|
|
53
|
+
cleanup before allocating more temporary storage; the next allocation also
|
|
54
|
+
retries it for completed deliveries with released writers. Rebuild from retained
|
|
55
|
+
inputs when needed; cleanup is not an instruction to restart parked work.
|
|
53
56
|
|
|
54
57
|
## Accept a scoped commit
|
|
55
58
|
|
|
@@ -87,9 +90,14 @@ Complete once per item after that commit. Failed items are never published.
|
|
|
87
90
|
|
|
88
91
|
## Deliver and resume
|
|
89
92
|
|
|
93
|
+
Wait for your children, stop your dev servers and task writers, then leave the
|
|
94
|
+
task tree. Make the FIRST completion call from outside it with the installed
|
|
95
|
+
helper and `--writers-stopped`; this releases the tree for cleanup after merge:
|
|
96
|
+
|
|
90
97
|
```sh
|
|
91
98
|
python3 "$DEVLYN_SHARED_DIR/task-complete.py" complete \
|
|
92
|
-
--receipt '<returned receipt.json>'
|
|
99
|
+
--receipt '<returned receipt.json>' \
|
|
100
|
+
--acceptance '<task worktree>/.devlyn/acceptance.json' --writers-stopped
|
|
93
101
|
```
|
|
94
102
|
|
|
95
103
|
Project policy is `git config --local devlyn.completionMode auto|pr`; absent means
|
|
@@ -98,12 +106,14 @@ Use `complete --mode auto|pr` for one task, or `--local-only`/`--no-push` to hon
|
|
|
98
106
|
the user's delivery restriction. These per-task choices persist in the receipt.
|
|
99
107
|
|
|
100
108
|
`pr` pushes the exact accepted task ref and creates/reuses its exact repository,
|
|
101
|
-
head and base PR,
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
109
|
+
head and base PR. While OPEN, it cancels owned auto-merge, reports `PR` with its URL
|
|
110
|
+
and retains the checkout. Once MERGED by any method, either mode cleans released
|
|
111
|
+
resources in that call, on resume or at the next allocation. Default `auto` also requests
|
|
112
|
+
`gh pr merge --auto --merge --match-head-commit <accepted SHA>`. Repository
|
|
113
|
+
checks/reviews and merge policy remain authoritative: no admin bypass, strategy
|
|
114
|
+
fallback or repository setting changes. When the repository disallows merge
|
|
115
|
+
commits or refuses the request, delivery reports `PR` with `merge_refused` and
|
|
116
|
+
the PR waits for a person. Command success alone never proves merge.
|
|
107
117
|
|
|
108
118
|
`PENDING` retains the workspace and reports a receipt-based resume command.
|
|
109
119
|
`BLOCKED` includes the cause and the same retry path; repair the reported condition
|
|
@@ -113,30 +123,29 @@ immutable product result; do not rewrite an archived PASS for a delivery error.
|
|
|
113
123
|
|
|
114
124
|
## Yield and retain recoverability
|
|
115
125
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
On native Windows, locking and file durability are supported, but the helper cannot prove writer cessation and reports `writer observation unsupported on this platform; retain workspace`. Even `--writers-stopped` cannot authorize deletion without that observation: retain the workspace, refs and external receipt/custody, report delivery separately, and preserve the receipt-based resume command. Do not kill unknown processes or force worktree removal to make completion pass.
|
|
126
|
+
Cleanup requires actual matching MERGED evidence; linked-tree removal also
|
|
127
|
+
requires the owner's recorded release. OS observation supplements it; neither the receipt
|
|
128
|
+
nor a scan guarantees exclusion of future writers. Processes with cwd or open
|
|
129
|
+
files inside the tree, inaccessible process state (on Linux, other users'
|
|
130
|
+
processes unless run as root), caller cwd inside the tree, dirty/untracked files,
|
|
131
|
+
a nested repository or worktree, or changed refs/Gitdir/registration retain
|
|
132
|
+
affected resources. Use `git worktree lock` to keep a tree.
|
|
133
|
+
On native Windows, locking and file durability are supported, but the helper cannot prove writer cessation and reports `writer observation unsupported on this platform; retain workspace`. Even `--writers-stopped` cannot authorize deletion without that observation: retain the workspace, its task refs and external receipt/custody, report delivery separately, and preserve the receipt-based resume command. Do not kill unknown processes or force worktree removal to make completion pass.
|
|
124
134
|
|
|
125
135
|
The receipt directory holds byte-verified `custody/`, `manifest.json` and a guarded
|
|
126
136
|
`refs/devlyn/completed/<id>` recovery ref. Archive/check evidence is copied there
|
|
127
|
-
before publication; removal rechecks it
|
|
128
|
-
Ignored
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
by the expected SHA; remote deletion uses an exact force-with-lease solely as
|
|
137
|
+
before publication; removal rechecks it, the recovery ref and the merge commit on base.
|
|
138
|
+
Ignored build output and other ignored files are disposable under native
|
|
139
|
+
non-force worktree removal. The tree's `.devlyn/` files are byte/mode-verified
|
|
140
|
+
and preserved as `<receipt dir>/records/.devlyn`; non-regular files or symlinks
|
|
141
|
+
there retain the tree. Partial/corrupt custody or records retain it for repair.
|
|
142
|
+
|
|
143
|
+
Legacy in-place receipts retire refs only once their task branch is no longer
|
|
144
|
+
checked out; their checkout is never modified. Local ref deletion is guarded by
|
|
145
|
+
the expected SHA; remote deletion uses an exact force-with-lease solely as
|
|
137
146
|
compare-and-delete, never for product publication. A changed remote branch is
|
|
138
|
-
retained. Retry
|
|
139
|
-
|
|
147
|
+
retained. Retry uses the external receipt/evidence after removal. Recovery
|
|
148
|
+
refs/evidence have no automatic expiry.
|
|
140
149
|
|
|
141
150
|
Queue drains remain serial. Record source verdict and delivery status separately;
|
|
142
151
|
retain pending/PR workspaces. Before advancing, use a separate owned branch from
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-health-standards
|
|
3
|
+
description: Maintainability standards for code you write or change — prevent dead code and orphaned references, justify every new dependency, keep functions, files, nesting and parameter counts within complexity thresholds, follow the established naming conventions, and keep debug logging, commented-out code, swallowed errors and hardcoded secrets out of production code. Use when writing, refactoring or deleting code, adding a dependency, or creating new files or modules.
|
|
4
|
+
---
|
|
1
5
|
# Code Health Standards
|
|
2
6
|
|
|
3
7
|
Standards for keeping codebases lean and maintainable. Apply these thresholds during development — catching debt early is cheaper than cleaning it later.
|
|
4
8
|
|
|
5
|
-
## Trigger
|
|
6
|
-
|
|
7
|
-
- Writing new code or modifying existing code
|
|
8
|
-
- Adding dependencies
|
|
9
|
-
- Creating new files or modules
|
|
10
|
-
- Refactoring or restructuring code
|
|
11
|
-
- Any use of `/devlyn:clean`, `/devlyn:resolve`, or `/devlyn:review`
|
|
12
|
-
|
|
13
9
|
## Dead Code Prevention
|
|
14
10
|
|
|
15
11
|
When writing code, check that you aren't creating orphans:
|
|
@@ -67,8 +63,3 @@ Code committed to production should not contain:
|
|
|
67
63
|
- Empty catch blocks or swallowed errors
|
|
68
64
|
- Hardcoded secrets, API keys, or environment-specific URLs
|
|
69
65
|
- Type `any` (TypeScript) without a justifying comment
|
|
70
|
-
|
|
71
|
-
## Routing
|
|
72
|
-
|
|
73
|
-
- **Active cleanup**: Use `/devlyn:clean` to scan and remove accumulated debt
|
|
74
|
-
- **Focused cleanup**: Use `/devlyn:clean [category]` for targeted sweeps (dead code, deps, tests, complexity, hygiene)
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review-standards
|
|
3
|
+
description: Severity framework (CRITICAL security, HIGH code quality, MEDIUM best practice, LOW cleanup) and approval criteria for judging a code change. Use when reviewing, auditing or validating a diff, pull request or just-finished implementation, or when deciding whether a change is ready to approve.
|
|
4
|
+
---
|
|
1
5
|
# Code Review Standards
|
|
2
6
|
|
|
3
7
|
Severity framework and quality bar for reviewing code changes. Apply this framework whenever reviewing, auditing, or validating code.
|
|
4
8
|
|
|
5
|
-
## Trigger
|
|
6
|
-
|
|
7
|
-
- Post-implementation review
|
|
8
|
-
- Code review requests
|
|
9
|
-
- PR review or diff analysis
|
|
10
|
-
- Any use of `/devlyn:review` or `/devlyn:team-review`
|
|
11
|
-
|
|
12
9
|
## Severity Framework
|
|
13
10
|
|
|
14
11
|
### CRITICAL — Security (blocks approval)
|
|
@@ -57,8 +54,3 @@ Severity framework and quality bar for reviewing code changes. Apply this framew
|
|
|
57
54
|
- MEDIUM issues are fixed or have concrete justification for deferral
|
|
58
55
|
- Lint passes
|
|
59
56
|
- Test suite passes
|
|
60
|
-
|
|
61
|
-
## Routing
|
|
62
|
-
|
|
63
|
-
- **Quick review** (few files, straightforward changes): Use `/devlyn:review`
|
|
64
|
-
- **Thorough review** (many files, security-sensitive, user-facing): Use `/devlyn:team-review` for multi-perspective coverage
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: root-cause-analysis
|
|
3
|
+
description: Evidence-first debugging method — trace a symptom through successive why-steps to the actionable root cause, cite file:line for every claim, and fix the cause instead of masking the symptom. Use when diagnosing a bug, error, failing test, stack trace or unexpected behavior, or when asked why something happens.
|
|
4
|
+
---
|
|
1
5
|
# Root Cause Analysis
|
|
2
6
|
|
|
3
7
|
Standard methodology for investigating bugs, issues, and unexpected behavior. Apply this framework whenever diagnosing a problem.
|
|
4
8
|
|
|
5
|
-
## Trigger
|
|
6
|
-
|
|
7
|
-
- User reports a bug or unexpected behavior
|
|
8
|
-
- Error logs or stack traces need diagnosis
|
|
9
|
-
- "Why does X happen?" or "What's causing X?" questions
|
|
10
|
-
- Debugging sessions
|
|
11
|
-
- Any use of `/devlyn:resolve`
|
|
12
|
-
|
|
13
9
|
## 5 Whys Protocol
|
|
14
10
|
|
|
15
11
|
For every issue, trace from symptom to root cause:
|
|
@@ -59,7 +55,3 @@ Every fix MUST address the root cause. Stop immediately if you catch yourself:
|
|
|
59
55
|
If the task is unreasonable or infeasible, or if any of the tests are incorrect, inform the user rather than working around them. The solution should be robust, maintainable, and extendable.
|
|
60
56
|
|
|
61
57
|
If the real fix requires significant refactoring, present the scope to the user — never ship a workaround "for now".
|
|
62
|
-
|
|
63
|
-
## Routing
|
|
64
|
-
|
|
65
|
-
- Use `/devlyn:resolve` — handles both simple and multi-module investigations; VERIFY pair-judge fires conditionally on high-risk / complex specs.
|
|
@@ -1,15 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-implementation-standards
|
|
3
|
+
description: Quality bar for building or changing user interfaces — design-system token fidelity, WCAG 2.1 AA accessibility, loading/empty/error/success/disabled state coverage, purposeful animation, and mobile-first responsive layout. Use when implementing or modifying UI components, pages or styles, or when turning a design or design system into code.
|
|
4
|
+
---
|
|
1
5
|
# UI Implementation Standards
|
|
2
6
|
|
|
3
7
|
Quality framework for building and improving UI from design systems. Apply these standards whenever implementing or modifying visual components.
|
|
4
8
|
|
|
5
|
-
## Trigger
|
|
6
|
-
|
|
7
|
-
- Building UI components or pages
|
|
8
|
-
- Implementing designs from a design system
|
|
9
|
-
- Improving or refactoring existing UI
|
|
10
|
-
- Any use of `/devlyn:design-ui`
|
|
11
|
-
- Frontend development tasks involving visual design
|
|
12
|
-
|
|
13
9
|
## Design System Fidelity
|
|
14
10
|
|
|
15
11
|
When a design system exists at `docs/design-system.md`:
|
|
@@ -66,9 +62,3 @@ Every interactive component or data-dependent view needs all states:
|
|
|
66
62
|
- No inline styles — use the token/theme system
|
|
67
63
|
- Server components where possible (Next.js), client components only for interactivity
|
|
68
64
|
- Keep component files focused — one component per file
|
|
69
|
-
|
|
70
|
-
## Routing
|
|
71
|
-
|
|
72
|
-
- **Build new UI or improve existing**: Use `/devlyn:implement-ui` for a full team approach
|
|
73
|
-
- **Add features to existing UI**: Use `/devlyn:resolve` with the feature description
|
|
74
|
-
- **Review UI code quality**: Use `/devlyn:team-review` for multi-perspective code review
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devlyn-cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.1",
|
|
4
4
|
"description": "Loop & harness engineering for AI coding agents (Claude Code, Codex, and any AGENTS.md-driven agent) — take intent to shipped, engineer-quality software hands-free with phase-gated pipelines and agent orchestration",
|
|
5
5
|
"homepage": "https://github.com/fysoul17/devlyn-cli#readme",
|
|
6
6
|
"bin": {
|
|
@@ -18,65 +18,9 @@
|
|
|
18
18
|
"!config/skills/roadmap-archival-workspace",
|
|
19
19
|
"!config/skills/roadmap-archival-workspace/**",
|
|
20
20
|
"optional-skills",
|
|
21
|
-
"benchmark/auto-resolve/BENCHMARK-DESIGN.md",
|
|
22
|
-
"benchmark/auto-resolve/BENCHMARK-RESULTS.md",
|
|
23
|
-
"benchmark/auto-resolve/README.md",
|
|
24
|
-
"benchmark/auto-resolve/RUBRIC.md",
|
|
25
|
-
"benchmark/auto-resolve/run-real-benchmark.md",
|
|
26
|
-
"benchmark/auto-resolve/fixtures/SCHEMA.md",
|
|
27
|
-
"benchmark/auto-resolve/fixtures/F*/**",
|
|
28
|
-
"benchmark/auto-resolve/fixtures/retired/F*/**",
|
|
29
|
-
"benchmark/auto-resolve/shadow-fixtures/S*/**",
|
|
30
|
-
"benchmark/auto-resolve/fixtures/test-repo/**",
|
|
31
|
-
"!benchmark/auto-resolve/fixtures/test-repo/node_modules/**",
|
|
32
|
-
"benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/headroom-gate.md",
|
|
33
|
-
"benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/headroom-gate.json",
|
|
34
|
-
"benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/full-pipeline-pair-gate.md",
|
|
35
|
-
"benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/full-pipeline-pair-gate.json",
|
|
36
|
-
"benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/F16-cli-quote-tax-rules/l2_risk_probes/result.json",
|
|
37
|
-
"benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/F23-cli-fulfillment-wave/l2_risk_probes/result.json",
|
|
38
|
-
"benchmark/auto-resolve/results/20260510-f16-f23-f25-combined-proof/F25-cli-cart-promotion-rules/l2_risk_probes/result.json",
|
|
39
|
-
"benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/headroom-gate.md",
|
|
40
|
-
"benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/headroom-gate.json",
|
|
41
|
-
"benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/full-pipeline-pair-gate.md",
|
|
42
|
-
"benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/full-pipeline-pair-gate.json",
|
|
43
|
-
"benchmark/auto-resolve/results/20260511-f21-current-riskprobes-v1/F21-cli-scheduler-priority/l2_risk_probes/result.json",
|
|
44
|
-
"benchmark/auto-resolve/results/20260507-f10-f11-tier1-full-pipeline/headroom-gate.md",
|
|
45
|
-
"benchmark/auto-resolve/results/20260507-f10-f11-tier1-full-pipeline/headroom-gate.json",
|
|
46
|
-
"benchmark/auto-resolve/results/20260508-f22-exact-error-headroom/headroom-gate.md",
|
|
47
|
-
"benchmark/auto-resolve/results/20260508-f22-exact-error-headroom/headroom-gate.json",
|
|
48
|
-
"benchmark/auto-resolve/results/20260508-f26-headroom/headroom-gate.md",
|
|
49
|
-
"benchmark/auto-resolve/results/20260508-f26-headroom/headroom-gate.json",
|
|
50
|
-
"benchmark/auto-resolve/results/20260511-f3-http-error-headroom/headroom-gate.md",
|
|
51
|
-
"benchmark/auto-resolve/results/20260511-f3-http-error-headroom/headroom-gate.json",
|
|
52
|
-
"benchmark/auto-resolve/results/20260511-f12-webhook-headroom/headroom-gate.md",
|
|
53
|
-
"benchmark/auto-resolve/results/20260511-f12-webhook-headroom/headroom-gate.json",
|
|
54
|
-
"benchmark/auto-resolve/results/20260511-f15-concurrency-headroom/headroom-gate.md",
|
|
55
|
-
"benchmark/auto-resolve/results/20260511-f15-concurrency-headroom/headroom-gate.json",
|
|
56
|
-
"benchmark/auto-resolve/results/20260512-f2-medium-headroom/headroom-gate.md",
|
|
57
|
-
"benchmark/auto-resolve/results/20260512-f2-medium-headroom/headroom-gate.json",
|
|
58
|
-
"benchmark/auto-resolve/results/20260512-f4-web-headroom/headroom-gate.md",
|
|
59
|
-
"benchmark/auto-resolve/results/20260512-f4-web-headroom/headroom-gate.json",
|
|
60
|
-
"benchmark/auto-resolve/results/20260512-f5-fixloop-headroom/headroom-gate.md",
|
|
61
|
-
"benchmark/auto-resolve/results/20260512-f5-fixloop-headroom/headroom-gate.json",
|
|
62
|
-
"benchmark/auto-resolve/results/20260512-f6-checksum-headroom/headroom-gate.md",
|
|
63
|
-
"benchmark/auto-resolve/results/20260512-f6-checksum-headroom/headroom-gate.json",
|
|
64
|
-
"benchmark/auto-resolve/results/20260512-f7-scope-headroom/headroom-gate.md",
|
|
65
|
-
"benchmark/auto-resolve/results/20260512-f7-scope-headroom/headroom-gate.json",
|
|
66
|
-
"benchmark/auto-resolve/results/20260512-f9-e2e-headroom/headroom-gate.md",
|
|
67
|
-
"benchmark/auto-resolve/results/20260512-f9-e2e-headroom/headroom-gate.json",
|
|
68
|
-
"benchmark/auto-resolve/results/20260512-f31-seat-rebalance-headroom/headroom-gate.md",
|
|
69
|
-
"benchmark/auto-resolve/results/20260512-f31-seat-rebalance-headroom/headroom-gate.json",
|
|
70
|
-
"benchmark/auto-resolve/results/20260512-f32-subscription-renewal-headroom/headroom-gate.md",
|
|
71
|
-
"benchmark/auto-resolve/results/20260512-f32-subscription-renewal-headroom/headroom-gate.json",
|
|
72
|
-
"benchmark/auto-resolve/scripts/**",
|
|
73
21
|
"!**/__pycache__",
|
|
74
22
|
"!**/__pycache__/**",
|
|
75
23
|
"!**/*.pyc",
|
|
76
|
-
"scripts/lint-fixtures.sh",
|
|
77
|
-
"scripts/lint-shadow-fixtures.sh",
|
|
78
|
-
"scripts/lint-skills.sh",
|
|
79
|
-
"scripts/test-owner-phases.py",
|
|
80
24
|
"CLAUDE.md",
|
|
81
25
|
"AGENTS.md"
|
|
82
26
|
],
|
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
# Benchmark Suite Design — v1
|
|
2
|
-
|
|
3
|
-
**Outer goal**: see [`autoresearch/NORTH-STAR.md`](../../autoresearch/NORTH-STAR.md) — the harness composes frontier LLMs into a hands-free pipeline that delivers engineer-quality software for users who do not know context engineering, with each composition layer (L0 bare → L1 solo harness → L2 pair harness) justifying its added cost on quality AND wall-time efficiency. This benchmark is the measurement instrument for that contract.
|
|
4
|
-
|
|
5
|
-
**Purpose.** Replace ad-hoc harness benchmarking with a permanent, comprehensive,
|
|
6
|
-
one-command suite that gates every future harness change with a ship/rollback
|
|
7
|
-
decision. Any prompt edit, phase reorder, new native skill, or model upgrade
|
|
8
|
-
can be validated by running the suite and reading the numbers.
|
|
9
|
-
|
|
10
|
-
**Arm structure.** Current full-pipeline evidence uses three arms: `bare` (L0),
|
|
11
|
-
`solo_claude` (L1 solo harness), and an L2 pair arm (`variant` in the smoke
|
|
12
|
-
suite, or a focused pair arm such as `l2_risk_probes` in pair-candidate runs).
|
|
13
|
-
Pair claims are headroom-gated: counted fixtures must leave room above solo
|
|
14
|
-
(`bare <= 60`, `solo_claude <= 80`, default 5-point `bare`/`solo_claude` headroom margins),
|
|
15
|
-
the pair arm must actually run, and blind judging must show pair above solo by
|
|
16
|
-
the configured margin.
|
|
17
|
-
|
|
18
|
-
**Non-goals.** Publishable-research statistical rigor. Not a regression test
|
|
19
|
-
library for the product code — those live elsewhere. Not a substitute for
|
|
20
|
-
production telemetry — just enough signal for ship decisions.
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Principles
|
|
25
|
-
|
|
26
|
-
1. **One command.** `npx devlyn-cli benchmark` runs everything and prints a
|
|
27
|
-
verdict. No manual fixture setup.
|
|
28
|
-
2. **Novice-proof.** The suite exercises the same paths a first-time user
|
|
29
|
-
hits — including an end-to-end `ideate → resolve` fixture.
|
|
30
|
-
3. **LLM-upgrade friendly.** Rubric, fixture semantics, and thresholds stay
|
|
31
|
-
stable; scores and margins float up as models improve. Nothing is
|
|
32
|
-
hardcoded to a specific model version.
|
|
33
|
-
4. **Karpathy.** No fixture earns its place unless it tests a distinct
|
|
34
|
-
failure mode. Tooling stays boring. History plumbing is simple.
|
|
35
|
-
5. **Ship gate is numbers, not vibes.** Concrete thresholds in RUBRIC.md.
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## Directory Layout
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
benchmark/auto-resolve/
|
|
43
|
-
├── BENCHMARK-DESIGN.md # this file
|
|
44
|
-
├── README.md # how to run, interpret, extend
|
|
45
|
-
├── RUBRIC.md # stable judge rubric + ship gates
|
|
46
|
-
│
|
|
47
|
-
├── fixtures/
|
|
48
|
-
│ ├── SCHEMA.md # fixture file format
|
|
49
|
-
│ ├── test-repo/ # bootstrap Node project (shared base)
|
|
50
|
-
│ │ ├── bin/cli.js
|
|
51
|
-
│ │ ├── server/index.js
|
|
52
|
-
│ │ ├── web/page.html
|
|
53
|
-
│ │ ├── tests/
|
|
54
|
-
│ │ ├── playwright.config.js
|
|
55
|
-
│ │ └── package.json
|
|
56
|
-
│ │
|
|
57
|
-
│ ├── F1-cli-trivial-flag/
|
|
58
|
-
│ ├── F2-cli-medium-subcommand/
|
|
59
|
-
│ ├── F3-backend-contract-risk/
|
|
60
|
-
│ ├── F4-web-browser-design/
|
|
61
|
-
│ ├── F5-fix-loop-red-green/
|
|
62
|
-
│ ├── F6-dep-audit-native-module/
|
|
63
|
-
│ ├── F7-out-of-scope-trap/
|
|
64
|
-
│ ├── F8-known-limit-ambiguous/
|
|
65
|
-
│ ├── F9-e2e-ideate-to-resolve/
|
|
66
|
-
│ └── F10+ extensions for headroom, full-pipeline pair, and frozen VERIFY
|
|
67
|
-
│
|
|
68
|
-
├── scripts/
|
|
69
|
-
│ ├── run-suite.sh # smoke entry — runs fixture arms + judge + report
|
|
70
|
-
│ ├── run-fixture.sh # one fixture, one arm
|
|
71
|
-
│ ├── judge.sh # Codex blind judge (model-agnostic)
|
|
72
|
-
│ ├── compile-report.py # aggregate into report.md + summary.json
|
|
73
|
-
│ └── ship-gate.py # apply thresholds, return ship/rollback verdict
|
|
74
|
-
│
|
|
75
|
-
├── results/ # per-run artifacts (overwritten)
|
|
76
|
-
│ └── <run-id>/
|
|
77
|
-
│ ├── <fixture>/
|
|
78
|
-
│ │ ├── bare/{input.md, transcript.txt, diff.patch, result.json}
|
|
79
|
-
│ │ ├── solo_claude/{same}
|
|
80
|
-
│ │ └── variant or l2_risk_probes/{same}
|
|
81
|
-
│ ├── <fixture>/judge.json
|
|
82
|
-
│ ├── report.md
|
|
83
|
-
│ └── summary.json
|
|
84
|
-
│
|
|
85
|
-
└── history/
|
|
86
|
-
├── runs/ # append-only immutable records
|
|
87
|
-
│ └── 2026-04-23T120000Z-v3.6.json
|
|
88
|
-
├── latest.json # pointer to most recent run
|
|
89
|
-
└── baselines/
|
|
90
|
-
└── shipped.json # last blessed version, used for regression check
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## Fixture Schema
|
|
96
|
-
|
|
97
|
-
Every fixture is a directory with these files (see `fixtures/SCHEMA.md`):
|
|
98
|
-
|
|
99
|
-
| File | Purpose |
|
|
100
|
-
|------|---------|
|
|
101
|
-
| `metadata.json` | id, category, difficulty, timeout, required tools, intent block |
|
|
102
|
-
| `spec.md` | pipeline-arm input (resolve-ready spec with Requirements/Constraints/Out-of-Scope/Verification) |
|
|
103
|
-
| `task.txt` | bare-arm input (same intent, natural-language framing) |
|
|
104
|
-
| `expected.json` | machine-readable acceptance criteria + forbidden patterns + verification commands |
|
|
105
|
-
| `NOTES.md` | why this fixture exists, the specific failure mode it tests |
|
|
106
|
-
| `setup.sh` | deterministic starting state — applies to a fresh copy of `test-repo/` |
|
|
107
|
-
|
|
108
|
-
**Drift prevention**: `spec.md` and `task.txt` both derive from the same
|
|
109
|
-
`intent` block in `metadata.json`. A lint step in CI verifies they stay
|
|
110
|
-
consistent.
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
## Core Fixtures And Extensions
|
|
115
|
-
|
|
116
|
-
The original v3.6 matrix covered F1-F9. Later fixtures extend the same schema
|
|
117
|
-
for headroom, full-pipeline pair, and frozen VERIFY evidence.
|
|
118
|
-
|
|
119
|
-
Category coverage matrix for the original core set (rows = concerns, columns =
|
|
120
|
-
fixtures):
|
|
121
|
-
|
|
122
|
-
| Fixture | Trivial | Medium | High-risk | Stress | Edge | E2E |
|
|
123
|
-
|---------|---------|--------|-----------|--------|------|-----|
|
|
124
|
-
| F1-cli-trivial-flag | ✓ | | | | | |
|
|
125
|
-
| F2-cli-medium-subcommand | | ✓ | | | | |
|
|
126
|
-
| F3-backend-contract-risk | | | ✓ | | | |
|
|
127
|
-
| F4-web-browser-design | | | | ✓ (browser-validate) | | |
|
|
128
|
-
| F5-fix-loop-red-green | | | | ✓ (FIX LOOP) | | |
|
|
129
|
-
| F6-dep-audit-native-module | | | | ✓ (CRITIC security dep audit) | | |
|
|
130
|
-
| F7-out-of-scope-trap | | | | ✓ (scope discipline) | | |
|
|
131
|
-
| F8-known-limit-ambiguous | | | | | ✓ (documents where pipeline may lose) | |
|
|
132
|
-
| F9-e2e-ideate-to-resolve | | | | | | ✓ (novice full-flow) |
|
|
133
|
-
|
|
134
|
-
**F9 is load-bearing** for the "novice user types `/devlyn:ideate`" promise.
|
|
135
|
-
Input is a vague idea; the pipeline path turns it into a spec with ideate and
|
|
136
|
-
then resolves that spec. Bare arm runs a direct prompt. Judge compares the final
|
|
137
|
-
usable artifact set.
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
## Single-Command Invocation
|
|
142
|
-
|
|
143
|
-
### User experience
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
npx devlyn-cli benchmark # n=1 smoke, all fixtures
|
|
147
|
-
npx devlyn-cli benchmark F2 F5 # specific fixtures only
|
|
148
|
-
npx devlyn-cli benchmark --judge-only --run-id <id> # re-judge without re-running
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
Output on completion:
|
|
152
|
-
|
|
153
|
-
```
|
|
154
|
-
Benchmark Suite Run — 2026-04-23T12:00Z (v3.6)
|
|
155
|
-
Judge: codex CLI flagship, xhigh, blind (model recorded in run history)
|
|
156
|
-
|
|
157
|
-
Fixture variant (L2) solo_claude (L1) bare (L0) variant-solo_claude Verdict
|
|
158
|
-
F1-cli-trivial-flag 95 92 88 +3 PASS
|
|
159
|
-
F2-cli-medium-subcommand 92 86 81 +6 PASS
|
|
160
|
-
F3-backend-contract-risk 89 80 72 +9 PASS
|
|
161
|
-
F4-web-browser-design 87 83 79 +4 PASS
|
|
162
|
-
F5-fix-loop-red-green 91 78 65 +13 PASS
|
|
163
|
-
F6-dep-audit-native-module 88 82 70 +6 PASS
|
|
164
|
-
F7-out-of-scope-trap 94 85 73 +9 PASS
|
|
165
|
-
F8-known-limit-ambiguous 78 79 79 -1 EXPECTED (known-limit)
|
|
166
|
-
F9-e2e-ideate-to-resolve 90 84 68 +6 PASS
|
|
167
|
-
---------------------------------------------------------
|
|
168
|
-
Suite average variant (L2) score: 89.3
|
|
169
|
-
Suite average solo_claude (L1) score: 83.2
|
|
170
|
-
Suite average bare (L0) score: 75.0
|
|
171
|
-
Suite average variant-solo_claude margin: +6.1 (pair-evidence floor: +5 on eligible fixtures)
|
|
172
|
-
Hard-floor violations: 0
|
|
173
|
-
Regression vs shipped: n/a (first run of v3.6)
|
|
174
|
-
SHIP-GATE VERDICT: ✅ PASS
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### Runner orchestration
|
|
178
|
-
|
|
179
|
-
`run-suite.sh`:
|
|
180
|
-
|
|
181
|
-
1. Generate run-id `<ISO>-<sha>-<branch>`
|
|
182
|
-
2. For each fixture × each arm (`variant`/L2, `solo_claude`/L1, `bare`/L0): parallelizable via `xargs -P`
|
|
183
|
-
- `run-fixture.sh --fixture FX --arm variant` → writes `results/<run-id>/FX/variant/*`
|
|
184
|
-
3. For each fixture: `judge.sh FX <run-id>` → writes `results/<run-id>/FX/judge.json`
|
|
185
|
-
4. `compile-report.py <run-id>` → writes `report.md` + `summary.json`
|
|
186
|
-
5. `ship-gate.py <run-id>` → exit 0 (PASS) / 1 (FAIL). Prints verdict to stdout.
|
|
187
|
-
6. If PASS and `--bless` flag: copy `summary.json` → `history/baselines/shipped.json`
|
|
188
|
-
7. Always: append `history/runs/<run-id>.json` + update `latest.json`
|
|
189
|
-
|
|
190
|
-
### `run-fixture.sh` contract
|
|
191
|
-
|
|
192
|
-
- Creates fresh temp copy of `test-repo/` at `/tmp/bench-<run-id>-<fixture>-<arm>/`
|
|
193
|
-
- Applies `setup.sh` if present
|
|
194
|
-
- Copies `spec.md` for `variant`/`solo_claude` or `task.txt` for `bare` as the prompt
|
|
195
|
-
- Invokes `/devlyn:resolve --spec` for `variant`, `/devlyn:resolve --spec --engine claude --no-pair --no-risk-probes` for `solo_claude`, or bare Claude for `bare` via isolated Agent
|
|
196
|
-
- Captures: `diff.patch`, `changed-files.txt`, `transcript.txt`, `timing.json`
|
|
197
|
-
- Runs `expected.json::verification_commands`, writes pass/fail per command to `verify.json`
|
|
198
|
-
- Writes `result.json` with aggregate: exit code, duration, files changed, verification score
|
|
199
|
-
|
|
200
|
-
### `judge.sh` contract
|
|
201
|
-
|
|
202
|
-
- Reads `results/<run-id>/<fixture>/{variant,solo_claude,bare}/{diff.patch,verify.json}` + fixture's `spec.md` + `expected.json`
|
|
203
|
-
- Builds a blind prompt: labels arms A and B randomly per fixture (seed recorded)
|
|
204
|
-
- Invokes isolated Codex (current flagship — no model hardcode) with RUBRIC.md
|
|
205
|
-
- Writes `judge.json`: per-axis scores, winner, margin, critical findings, disqualifiers
|
|
206
|
-
- Idempotent: re-running overwrites the same `judge.json`
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
## LLM-Upgrade Resilience
|
|
211
|
-
|
|
212
|
-
Three mechanisms:
|
|
213
|
-
|
|
214
|
-
1. **No hardcoded models.** Judge invocation omits `-m`, so it inherits
|
|
215
|
-
whichever flagship the CLI currently ships. The blind judge is isolated from
|
|
216
|
-
user config/rules/hooks so local agent instructions cannot contaminate the
|
|
217
|
-
judgment. Same for agents — they run against whatever Claude Code
|
|
218
|
-
session-model the caller has. Model provenance is captured in `result.json`
|
|
219
|
-
per run.
|
|
220
|
-
|
|
221
|
-
2. **Margin as primary signal, absolute score as secondary.** When models
|
|
222
|
-
improve, all arms tend to get better. Pairwise margins remain the stable
|
|
223
|
-
signal: `solo_claude`-`bare` (L1-L0) measures solo harness value,
|
|
224
|
-
pair-`solo_claude` (L2-L1) measures pair value on eligible fixtures, and
|
|
225
|
-
`variant`-`bare` (L2-L0) remains the legacy suite signal. Ship gates are
|
|
226
|
-
defined on margin (`>= +5`) and regression (`-3 or worse`), not absolute
|
|
227
|
-
score.
|
|
228
|
-
|
|
229
|
-
3. **Fixture difficulty gradient.** F1 (trivial) is expected to saturate near
|
|
230
|
-
100 quickly as models improve — that's fine, it still catches catastrophic
|
|
231
|
-
regressions. F5/F9 (stress/E2E) have enough depth that even a near-perfect
|
|
232
|
-
model won't 100-zero bare. If any fixture saturates (all compared gated arms
|
|
233
|
-
> 95 for two consecutive versions), we replace it with a harder one and
|
|
234
|
-
document the swap in `history/runs/<ts>-fixture-rotation.json`.
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## Ship Gates (from RUBRIC.md)
|
|
239
|
-
|
|
240
|
-
Hard floors (any single failure blocks ship):
|
|
241
|
-
|
|
242
|
-
- **No silent-catch / fabricated verification / skipped required test in variant.** Judge flags this as disqualifier.
|
|
243
|
-
- **Variant may not lose any fixture by more than −5** versus previous shipped version (per-fixture regression floor).
|
|
244
|
-
- **At least 7 gated, headroom-available fixtures** must have margin ≥ +5
|
|
245
|
-
(suite coverage).
|
|
246
|
-
- **F9 (E2E) must PASS** — novice-flow contract.
|
|
247
|
-
|
|
248
|
-
Soft gates (trigger rollback discussion):
|
|
249
|
-
|
|
250
|
-
- Suite average margin drop > 3 vs last shipped.
|
|
251
|
-
- Any fixture with margin ≤ 0 that previously had margin > +5.
|
|
252
|
-
- Critical-finding catch-rate decrease vs the last shipped comparable arm.
|
|
253
|
-
|
|
254
|
-
Known-limit exception:
|
|
255
|
-
|
|
256
|
-
- F8 is explicitly allowed to tie or lose (margin in [-3, +3]). Its job is to
|
|
257
|
-
document honesty, not to beat bare.
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
## Karpathy Check
|
|
262
|
-
|
|
263
|
-
Where over-engineering lurks:
|
|
264
|
-
|
|
265
|
-
- ❌ **Automatic history mutation during development.** Add append-only
|
|
266
|
-
history AFTER the suite format stabilizes (one version after initial ship).
|
|
267
|
-
- ❌ **Statistical tooling beyond mean/median/margin.** n=1-3 doesn't need
|
|
268
|
-
t-tests.
|
|
269
|
-
- ❌ **Auto-generated fixture cards / dashboards.** Plain `report.md` is enough.
|
|
270
|
-
- ✅ **Keep scripts under 100 lines each** unless they're doing concrete,
|
|
271
|
-
repeated work the user would do by hand.
|
|
272
|
-
|
|
273
|
-
If the suite tooling grows past ~800 total lines, prune aggressively before
|
|
274
|
-
adding anything.
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## Open Questions (to be answered before first full ship-gate run)
|
|
279
|
-
|
|
280
|
-
1. Where does `benchmark` subcommand live? Inside `bin/devlyn.js` or as
|
|
281
|
-
standalone `benchmark/auto-resolve/scripts/run-suite.sh` invoked via `npm
|
|
282
|
-
run`? **Proposal**: both — `bin/devlyn.js benchmark` is the advertised
|
|
283
|
-
entry, which shells out to the script.
|
|
284
|
-
2. Parallel run safety — can we run the selected fixture set × 3 arms concurrently without
|
|
285
|
-
rate-limit / lockfile conflicts? **Proposal**: default sequential with
|
|
286
|
-
`--parallel N` flag. Default `N=1` for safety; the user can opt in.
|
|
287
|
-
3. Token accounting — Claude Code doesn't expose subagent totals reliably.
|
|
288
|
-
**Proposal**: capture wall time as primary efficiency metric; token
|
|
289
|
-
estimate as best-effort secondary. Do not gate ship on token math alone.
|