Skip to content

Commit 075f238

Browse files
committed
fix: make retirement sampler help side effect free
1 parent 6d21a8c commit 075f238

2 files changed

Lines changed: 28 additions & 2 deletions

File tree

‎scripts/run-skill-route-retirement-sample.js‎

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,22 @@ const SOURCE_ROOT = path.resolve(__dirname, '..')
1414
const HOSTS = ['claude', 'codex', 'copilot', 'gemini', 'grok']
1515
const argv = process.argv.slice(2)
1616

17+
function usage () {
18+
return [
19+
'Usage: node scripts/run-skill-route-retirement-sample.js [options]',
20+
'',
21+
'Options:',
22+
' --host <name[,name...]> Exact hosts to sample (default: all)',
23+
' --root <path> DevCodex active-root',
24+
' --evidence-dir <path> Evidence output directory',
25+
' --timeout-ms <ms> Per-host probe timeout (default: 900000)',
26+
' --max-turns <count> Grok probe turn limit (default: 32)',
27+
' --candidate Run candidate probes instead of production-eligible probes',
28+
' --strict Exit non-zero when a probe or the retirement gate blocks',
29+
' --help Show this help without running probes'
30+
].join('\n')
31+
}
32+
1733
function argument (name, fallback = '') {
1834
const index = argv.indexOf(name)
1935
return index >= 0 && argv[index + 1] ? argv[index + 1] : fallback
@@ -56,6 +72,10 @@ function runProbe (host, evidenceFile, candidate) {
5672
}
5773

5874
function main () {
75+
if (argv.includes('--help')) {
76+
process.stdout.write(`${usage()}\n`)
77+
return
78+
}
5979
const candidate = argv.includes('--candidate')
6080
const activeRoot = path.resolve(
6181
argument(
@@ -139,5 +159,6 @@ if (require.main === module) main()
139159
module.exports = {
140160
HOSTS,
141161
safeStamp,
142-
selectedHosts
162+
selectedHosts,
163+
usage
143164
}

‎scripts/test-skill-route-retirement.js‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ const {
1111
const {
1212
HOST_VARIANTS
1313
} = require('../hooks/_runtime/host-adapter-identity.cjs')
14+
const {
15+
usage: retirementSampleUsage
16+
} = require('./run-skill-route-retirement-sample.js')
1417

1518
const policy = require(POLICY_PATH)
1619
const runtimeDigest = crypto.createHash('sha256').update('runtime').digest('hex')
@@ -145,5 +148,7 @@ const unboundCurrentContract = evaluateSkillRouteRetirement({
145148
})
146149
assert.strictEqual(unboundCurrentContract.status, 'BLOCK')
147150
assert(unboundCurrentContract.reasons.includes('current-runtime-digest-unbound'))
151+
assert(retirementSampleUsage().includes('--help'))
152+
assert(retirementSampleUsage().includes('--host <name[,name...]>'))
148153

149-
console.log('skill route retirement gate passed: hosts=5 runs=100 windowHours=72 negativeProbes=5')
154+
console.log('skill route retirement gate passed: hosts=5 runs=100 windowHours=72 negativeProbes=5 samplerHelp=PASS')

0 commit comments

Comments
 (0)