instar 1.3.1042 → 1.3.1043
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/.claude/skills/autonomous/hooks/autonomous-stop-hook.sh +21 -0
- package/dist/core/PostUpdateMigrator.d.ts +13 -5
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +141 -6
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/data/standards-registry.meta.json +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +19 -19
- package/src/data/standards-registry.meta.json +1 -1
- package/upgrades/1.3.1043.md +60 -0
- package/upgrades/side-effects/autonomous-state-parse-loud.md +226 -0
|
@@ -55,6 +55,8 @@ for _arg in "$@"; do [[ "$_arg" == "--codex" ]] && IS_CODEX=1; done
|
|
|
55
55
|
# the same trusted Stop boundary when an explicit bounded task ledger is live.
|
|
56
56
|
# hook-capability: DECISION_QUALITY_REALCHECK — run_end_call carries the real-check
|
|
57
57
|
# pass|fail|configured:false observation to the existing decision-quality annotator.
|
|
58
|
+
# hook-capability: STATE_PARSE_LOUD — a selected state file with missing/malformed
|
|
59
|
+
# frontmatter is a visible hook failure, distinct from the clean no-state exit.
|
|
58
60
|
# emit — human-facing approve/status text. In codex mode the Stop hook's STDOUT must be
|
|
59
61
|
# ONLY valid decision-JSON (the `{"decision":"block",...}` case far below) or empty:
|
|
60
62
|
# codex rejects ANY other stdout as "invalid stop hook JSON output" and reports the stop
|
|
@@ -221,6 +223,22 @@ if [[ "$IS_CODEX" == "1" ]] && [[ "$CODEX_LOOP_ENABLED" != "1" ]]; then
|
|
|
221
223
|
fi
|
|
222
224
|
|
|
223
225
|
# ── Read the selected state file ──────────────────────────────────────
|
|
226
|
+
# STATE_FILE was selected only after an existence check. From this point on,
|
|
227
|
+
# "no parseable state" is corruption, NOT the same outcome as "no autonomous
|
|
228
|
+
# job". The API reader accepts plain key lines anywhere in the document, while
|
|
229
|
+
# this hook intentionally consumes fenced frontmatter. A missing/partial fence
|
|
230
|
+
# must therefore fail visibly instead of turning an active run into exit 0.
|
|
231
|
+
state_parse_failure() {
|
|
232
|
+
printf 'ERROR: Autonomous mode: autonomous state exists but its frontmatter is unparseable: %s (expected a fenced block with active: true|false)\n' "$STATE_FILE" >&2
|
|
233
|
+
exit 1
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
FM_DELIMITER_COUNT=$(awk '$0 == "---" { count++ } END { print count + 0 }' "$STATE_FILE" 2>/dev/null)
|
|
237
|
+
FM_DELIMITER_COUNT="${FM_DELIMITER_COUNT:-0}"
|
|
238
|
+
if [[ "$FM_DELIMITER_COUNT" -lt 2 ]]; then
|
|
239
|
+
state_parse_failure
|
|
240
|
+
fi
|
|
241
|
+
|
|
224
242
|
FRONTMATTER=$(sed -n '/^---$/,/^---$/{ /^---$/d; p; }' "$STATE_FILE")
|
|
225
243
|
fm_get() {
|
|
226
244
|
local key="$1"
|
|
@@ -252,6 +270,9 @@ iso8601_epoch() {
|
|
|
252
270
|
}
|
|
253
271
|
|
|
254
272
|
ACTIVE=$(fm_get active)
|
|
273
|
+
if [[ "$ACTIVE" != "true" ]] && [[ "$ACTIVE" != "false" ]]; then
|
|
274
|
+
state_parse_failure
|
|
275
|
+
fi
|
|
255
276
|
if [[ "$ACTIVE" != "true" ]]; then
|
|
256
277
|
exit 0
|
|
257
278
|
fi
|
|
@@ -19,6 +19,14 @@
|
|
|
19
19
|
* - Scripts are installed only if missing (never overwrite user modifications)
|
|
20
20
|
*/
|
|
21
21
|
import { type MigratorStep, type RunPendingStepsResult } from './MigratorStepEngine.js';
|
|
22
|
+
/**
|
|
23
|
+
* Exact SHA-256 identities of every canonical autonomous stop-hook revision in
|
|
24
|
+
* repository history through the predecessor of STATE_PARSE_LOUD. These are a
|
|
25
|
+
* conservative migration escape hatch for agents that skipped several releases:
|
|
26
|
+
* exact historical stock bytes may be replaced by the current bundle; any
|
|
27
|
+
* customization changes the hash and is refused. Keep this list append-only.
|
|
28
|
+
*/
|
|
29
|
+
export declare const AUTONOMOUS_STOP_HOOK_STOCK_SHA256: readonly ["af4b8a3666d10f3ea0e351798b045e04b1386aaf53e98eb966e96fade9ef6cbb", "b8fc09c2294a62d74d015094c4e0161418a972d468383ee58601fc4f918f7a0a", "e8b1502ef4b2f18e1e96f04bed3cb8625aefa8c82e9c280832177cdbdb487217", "ed5c1914a3af5993cef5d0cc5da9ec7fff912a7aba0d16066460e96f6193acbe", "92873086e199954f572bbbc46b4d7d9e3f2673dc6a532af7731e56cbadddbe50", "c8a437ab16400b1ad164fc84ec4baec253064fa8f130eacc796bfea260e724f2", "4e95364a4bd00d714bd2fd39895b73664e466c41212c51b4ee462a35d400248a", "fc7532480019bcf87009be9a3df75d3042e9f7ace248e1c2090f901c1db5e2a8", "044e292b8c60b9231c9517c58d6daa99b267874b5f9e80a2ca0ab22497a3554c", "33973ac0dfa974957d65670eb834471729fa3ebdefe04f544671614d3eabce23", "398545c4d6065ac3ef8f85894505167260ea663e8f4fd285a36cce67c35f4f70", "0ee8e791108c44061209ee497bbda385ee654372cbdd50233812770d3cce757d", "b79ba23293be29eb9c12265f482e183f2e82613abf416da6f905a12ee3d99fef", "9dd3fdcef05e1a3e0b33245c7c0cf2f23c8a02d60e595f4b3bc0d3dd3a3b0b0d", "396eccaa3eb44f277f4e8a68a89a1632c00a6a215a7e655a43f7331b99dd025a", "86848a69a2122a9148fbcd68de3327d868ec6d33b81bdad0f6ba08c628c2c7b6", "108a840b315b1b35059e1155671724a16bd4ce3ada7c0f3ca1b95839996fb6a1", "a5e8373c99be1e38b1237f8cbc7a3d492031424b09e2786bf1a72a1097252e8e", "972574c945ee1d43335970fab4512269d3e5e9f9afe92a13f94c99ebffba7391", "ee403db081bc96043556c767b697df47dec89e3e03fe3de359681fb1c1d9aff9", "fbb68b9d14465315653ebe597ec0f62d0846afbc3f59364a0fcc6657eeeddee1"];
|
|
22
30
|
/**
|
|
23
31
|
* The "Playwright Profile Registry" CLAUDE.md awareness section. SHARED by
|
|
24
32
|
* `generateClaudeMd` (new installs) and `migrateClaudeMd` (existing agents) so the
|
|
@@ -860,11 +868,11 @@ export declare class PostUpdateMigrator {
|
|
|
860
868
|
* these through init — a dedicated migration is the only path (Migration Parity
|
|
861
869
|
* Standard, "updating existing skill content").
|
|
862
870
|
*
|
|
863
|
-
* Idempotent + conservative per file:
|
|
864
|
-
*
|
|
865
|
-
*
|
|
866
|
-
*
|
|
867
|
-
*
|
|
871
|
+
* Idempotent + conservative per file: setup/SKILL migrations retain their
|
|
872
|
+
* established marker + fingerprint replacement. The stop-hook's latest
|
|
873
|
+
* state-parse bump is narrower: it patches exact unique recent-version anchors
|
|
874
|
+
* in place, preserving unrelated/custom bytes. Older canonical stock revisions
|
|
875
|
+
* are recognized by exact SHA-256; all unknown layouts are refused.
|
|
868
876
|
*/
|
|
869
877
|
private migrateAutonomousStopHookTopicKeyed;
|
|
870
878
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PostUpdateMigrator.d.ts","sourceRoot":"","sources":["../../src/core/PostUpdateMigrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,36 @@ import { matchTestIdentity, verifyAllowTestIdentity, loadTestIdentityKey, } from
|
|
|
57
57
|
import { readRegistryHighWater, setRegistryHighWater } from './registryHighWater.js';
|
|
58
58
|
import { ITERATIVE_CONVERGING_AUDIT_SKILL_CONTENT } from '../data/builtinSkillContent.js';
|
|
59
59
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
60
|
+
/**
|
|
61
|
+
* Exact SHA-256 identities of every canonical autonomous stop-hook revision in
|
|
62
|
+
* repository history through the predecessor of STATE_PARSE_LOUD. These are a
|
|
63
|
+
* conservative migration escape hatch for agents that skipped several releases:
|
|
64
|
+
* exact historical stock bytes may be replaced by the current bundle; any
|
|
65
|
+
* customization changes the hash and is refused. Keep this list append-only.
|
|
66
|
+
*/
|
|
67
|
+
export const AUTONOMOUS_STOP_HOOK_STOCK_SHA256 = [
|
|
68
|
+
'af4b8a3666d10f3ea0e351798b045e04b1386aaf53e98eb966e96fade9ef6cbb',
|
|
69
|
+
'b8fc09c2294a62d74d015094c4e0161418a972d468383ee58601fc4f918f7a0a',
|
|
70
|
+
'e8b1502ef4b2f18e1e96f04bed3cb8625aefa8c82e9c280832177cdbdb487217',
|
|
71
|
+
'ed5c1914a3af5993cef5d0cc5da9ec7fff912a7aba0d16066460e96f6193acbe',
|
|
72
|
+
'92873086e199954f572bbbc46b4d7d9e3f2673dc6a532af7731e56cbadddbe50',
|
|
73
|
+
'c8a437ab16400b1ad164fc84ec4baec253064fa8f130eacc796bfea260e724f2',
|
|
74
|
+
'4e95364a4bd00d714bd2fd39895b73664e466c41212c51b4ee462a35d400248a',
|
|
75
|
+
'fc7532480019bcf87009be9a3df75d3042e9f7ace248e1c2090f901c1db5e2a8',
|
|
76
|
+
'044e292b8c60b9231c9517c58d6daa99b267874b5f9e80a2ca0ab22497a3554c',
|
|
77
|
+
'33973ac0dfa974957d65670eb834471729fa3ebdefe04f544671614d3eabce23',
|
|
78
|
+
'398545c4d6065ac3ef8f85894505167260ea663e8f4fd285a36cce67c35f4f70',
|
|
79
|
+
'0ee8e791108c44061209ee497bbda385ee654372cbdd50233812770d3cce757d',
|
|
80
|
+
'b79ba23293be29eb9c12265f482e183f2e82613abf416da6f905a12ee3d99fef',
|
|
81
|
+
'9dd3fdcef05e1a3e0b33245c7c0cf2f23c8a02d60e595f4b3bc0d3dd3a3b0b0d',
|
|
82
|
+
'396eccaa3eb44f277f4e8a68a89a1632c00a6a215a7e655a43f7331b99dd025a',
|
|
83
|
+
'86848a69a2122a9148fbcd68de3327d868ec6d33b81bdad0f6ba08c628c2c7b6',
|
|
84
|
+
'108a840b315b1b35059e1155671724a16bd4ce3ada7c0f3ca1b95839996fb6a1',
|
|
85
|
+
'a5e8373c99be1e38b1237f8cbc7a3d492031424b09e2786bf1a72a1097252e8e',
|
|
86
|
+
'972574c945ee1d43335970fab4512269d3e5e9f9afe92a13f94c99ebffba7391',
|
|
87
|
+
'ee403db081bc96043556c767b697df47dec89e3e03fe3de359681fb1c1d9aff9',
|
|
88
|
+
'fbb68b9d14465315653ebe597ec0f62d0846afbc3f59364a0fcc6657eeeddee1',
|
|
89
|
+
];
|
|
60
90
|
/**
|
|
61
91
|
* The "Playwright Profile Registry" CLAUDE.md awareness section. SHARED by
|
|
62
92
|
* `generateClaudeMd` (new installs) and `migrateClaudeMd` (existing agents) so the
|
|
@@ -3970,13 +4000,111 @@ export class PostUpdateMigrator {
|
|
|
3970
4000
|
* these through init — a dedicated migration is the only path (Migration Parity
|
|
3971
4001
|
* Standard, "updating existing skill content").
|
|
3972
4002
|
*
|
|
3973
|
-
* Idempotent + conservative per file:
|
|
3974
|
-
*
|
|
3975
|
-
*
|
|
3976
|
-
*
|
|
3977
|
-
*
|
|
4003
|
+
* Idempotent + conservative per file: setup/SKILL migrations retain their
|
|
4004
|
+
* established marker + fingerprint replacement. The stop-hook's latest
|
|
4005
|
+
* state-parse bump is narrower: it patches exact unique recent-version anchors
|
|
4006
|
+
* in place, preserving unrelated/custom bytes. Older canonical stock revisions
|
|
4007
|
+
* are recognized by exact SHA-256; all unknown layouts are refused.
|
|
3978
4008
|
*/
|
|
3979
4009
|
migrateAutonomousStopHookTopicKeyed(result) {
|
|
4010
|
+
const upgradeAutonomousHookStateParse = () => {
|
|
4011
|
+
const relPath = '.claude/skills/autonomous/hooks/autonomous-stop-hook.sh';
|
|
4012
|
+
const label = 'skills/autonomous/hooks/autonomous-stop-hook.sh (visible corrupt-state refusal instead of silent no-state exit)';
|
|
4013
|
+
try {
|
|
4014
|
+
const deployed = path.join(this.config.projectDir, ...relPath.split('/'));
|
|
4015
|
+
if (!fs.existsSync(deployed))
|
|
4016
|
+
return; // installAutonomousSkill handles fresh installs
|
|
4017
|
+
const current = fs.readFileSync(deployed, 'utf8');
|
|
4018
|
+
if (current.includes('STATE_PARSE_LOUD'))
|
|
4019
|
+
return; // already current — idempotent
|
|
4020
|
+
// This marker bump must not use the generic "contains a stock-looking
|
|
4021
|
+
// header" whole-file replacement below. A customized derivative can
|
|
4022
|
+
// retain that header, and replacing it would silently erase operator
|
|
4023
|
+
// changes. Patch only three exact, unique prior-version anchors and
|
|
4024
|
+
// preserve every unrelated byte. Unknown/ambiguous layouts are left
|
|
4025
|
+
// untouched so a future migration can handle them deliberately.
|
|
4026
|
+
const markerAnchor = `# hook-capability: DECISION_QUALITY_REALCHECK — run_end_call carries the real-check
|
|
4027
|
+
# pass|fail|configured:false observation to the existing decision-quality annotator.
|
|
4028
|
+
# emit —`;
|
|
4029
|
+
const markerReplacement = `# hook-capability: DECISION_QUALITY_REALCHECK — run_end_call carries the real-check
|
|
4030
|
+
# pass|fail|configured:false observation to the existing decision-quality annotator.
|
|
4031
|
+
# hook-capability: STATE_PARSE_LOUD — a selected state file with missing/malformed
|
|
4032
|
+
# frontmatter is a visible hook failure, distinct from the clean no-state exit.
|
|
4033
|
+
# emit —`;
|
|
4034
|
+
const frontmatterAnchor = `FRONTMATTER=$(sed -n '/^---$/,/^---$/{ /^---$/d; p; }' "$STATE_FILE")`;
|
|
4035
|
+
const frontmatterReplacement = `# STATE_PARSE_LOUD: STATE_FILE was selected only after an existence check.
|
|
4036
|
+
# From this point on, an unreadable control block is corruption, not "no job".
|
|
4037
|
+
state_parse_failure() {
|
|
4038
|
+
printf 'ERROR: Autonomous mode: autonomous state exists but its frontmatter is unparseable: %s (expected a fenced block with active: true|false)\\n' "$STATE_FILE" >&2
|
|
4039
|
+
exit 1
|
|
4040
|
+
}
|
|
4041
|
+
|
|
4042
|
+
FM_DELIMITER_COUNT=$(awk '$0 == "---" { count++ } END { print count + 0 }' "$STATE_FILE" 2>/dev/null)
|
|
4043
|
+
FM_DELIMITER_COUNT="\${FM_DELIMITER_COUNT:-0}"
|
|
4044
|
+
if [[ "$FM_DELIMITER_COUNT" -lt 2 ]]; then
|
|
4045
|
+
state_parse_failure
|
|
4046
|
+
fi
|
|
4047
|
+
|
|
4048
|
+
${frontmatterAnchor}`;
|
|
4049
|
+
const activeAnchor = `ACTIVE=$(fm_get active)
|
|
4050
|
+
if [[ "$ACTIVE" != "true" ]]; then`;
|
|
4051
|
+
const activeReplacement = `ACTIVE=$(fm_get active)
|
|
4052
|
+
if [[ "$ACTIVE" != "true" ]] && [[ "$ACTIVE" != "false" ]]; then
|
|
4053
|
+
state_parse_failure
|
|
4054
|
+
fi
|
|
4055
|
+
if [[ "$ACTIVE" != "true" ]]; then`;
|
|
4056
|
+
const anchors = [
|
|
4057
|
+
[markerAnchor, markerReplacement],
|
|
4058
|
+
[frontmatterAnchor, frontmatterReplacement],
|
|
4059
|
+
[activeAnchor, activeReplacement],
|
|
4060
|
+
];
|
|
4061
|
+
let next = current;
|
|
4062
|
+
let anchorsMatched = true;
|
|
4063
|
+
for (const [anchor, replacement] of anchors) {
|
|
4064
|
+
const first = next.indexOf(anchor);
|
|
4065
|
+
const last = next.lastIndexOf(anchor);
|
|
4066
|
+
if (first < 0 || first !== last) {
|
|
4067
|
+
anchorsMatched = false;
|
|
4068
|
+
break;
|
|
4069
|
+
}
|
|
4070
|
+
next = `${next.slice(0, first)}${replacement}${next.slice(first + anchor.length)}`;
|
|
4071
|
+
}
|
|
4072
|
+
if (!anchorsMatched) {
|
|
4073
|
+
const currentSha256 = crypto.createHash('sha256').update(current).digest('hex');
|
|
4074
|
+
if (!AUTONOMOUS_STOP_HOOK_STOCK_SHA256.includes(currentSha256)) {
|
|
4075
|
+
result.skipped.push(`${relPath}: customized or unknown layout — left untouched (no exact stock hash or unique state-parse anchors)`);
|
|
4076
|
+
return;
|
|
4077
|
+
}
|
|
4078
|
+
const bundled = path.join(__dirname, '..', '..', ...relPath.split('/'));
|
|
4079
|
+
if (!fs.existsSync(bundled)) {
|
|
4080
|
+
result.errors.push(`${relPath} migration: bundled hook is missing`);
|
|
4081
|
+
return;
|
|
4082
|
+
}
|
|
4083
|
+
next = fs.readFileSync(bundled, 'utf8');
|
|
4084
|
+
if (!next.includes('STATE_PARSE_LOUD')) {
|
|
4085
|
+
result.errors.push(`${relPath} migration: bundled hook lacks STATE_PARSE_LOUD`);
|
|
4086
|
+
return;
|
|
4087
|
+
}
|
|
4088
|
+
}
|
|
4089
|
+
const tempPath = `${deployed}.state-parse.${process.pid}.${randomUUID()}.tmp`;
|
|
4090
|
+
try {
|
|
4091
|
+
fs.writeFileSync(tempPath, next, { mode: 0o755 });
|
|
4092
|
+
fs.renameSync(tempPath, deployed);
|
|
4093
|
+
}
|
|
4094
|
+
finally {
|
|
4095
|
+
if (fs.existsSync(tempPath)) {
|
|
4096
|
+
SafeFsExecutor.safeRmSync(tempPath, {
|
|
4097
|
+
force: true,
|
|
4098
|
+
operation: 'PostUpdateMigrator:migrateAutonomousStopHookTopicKeyed:temp-cleanup',
|
|
4099
|
+
});
|
|
4100
|
+
}
|
|
4101
|
+
}
|
|
4102
|
+
result.upgraded.push(label);
|
|
4103
|
+
}
|
|
4104
|
+
catch (err) {
|
|
4105
|
+
result.errors.push(`${relPath} migration: ${err instanceof Error ? err.message : String(err)}`);
|
|
4106
|
+
}
|
|
4107
|
+
};
|
|
3980
4108
|
const upgrade = (relPath, marker, fingerprint, label) => {
|
|
3981
4109
|
try {
|
|
3982
4110
|
const deployed = path.join(this.config.projectDir, ...relPath.split('/'));
|
|
@@ -4073,7 +4201,14 @@ export class PostUpdateMigrator {
|
|
|
4073
4201
|
// Marker bumped `TASK_CONTINUATION` → `DECISION_QUALITY_REALCHECK`: the
|
|
4074
4202
|
// terminal run-end payload now carries the already-observed real-check
|
|
4075
4203
|
// disposition into the existing decision-quality annotation chokepoint.
|
|
4076
|
-
|
|
4204
|
+
// Marker bumped `DECISION_QUALITY_REALCHECK` → `STATE_PARSE_LOUD`: the hook
|
|
4205
|
+
// now distinguishes a genuinely absent autonomous state file (clean allow)
|
|
4206
|
+
// from a selected file whose fenced frontmatter cannot be parsed (visible
|
|
4207
|
+
// failure). Unlike earlier cumulative hook migrations, this bump is surgical
|
|
4208
|
+
// for anchor-compatible recent revisions so stock-derived customizations survive.
|
|
4209
|
+
// Older canonical stock bytes use the exact historical SHA-256 allowlist;
|
|
4210
|
+
// every unknown layout is refused rather than overwritten.
|
|
4211
|
+
upgradeAutonomousHookStateParse();
|
|
4077
4212
|
// setup-autonomous.sh marker bumped `native-goal/set` → `IS_CODEX_AGENT`: the bundled
|
|
4078
4213
|
// setup now ALSO auto-delegates to native /goal for CODEX agents (the prior native /goal
|
|
4079
4214
|
// wiring was gated on `claude --version >= 2.1.139`, which is empty for a codex agent, so
|