instar 1.3.449 → 1.3.450

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.449",
3
+ "version": "1.3.450",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-06-09T19:25:15.286Z",
5
- "instarVersion": "1.3.449",
4
+ "generatedAt": "2026-06-09T19:51:52.286Z",
5
+ "instarVersion": "1.3.450",
6
6
  "entryCount": 199,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -11,7 +11,7 @@
11
11
  "domain": "identity",
12
12
  "sourcePath": "src/core/PostUpdateMigrator.ts",
13
13
  "installedPath": ".instar/hooks/instar/session-start.sh",
14
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
14
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
15
15
  "since": "2025-01-01"
16
16
  },
17
17
  "hook:dangerous-command-guard": {
@@ -20,7 +20,7 @@
20
20
  "domain": "safety",
21
21
  "sourcePath": "src/core/PostUpdateMigrator.ts",
22
22
  "installedPath": ".instar/hooks/instar/dangerous-command-guard.sh",
23
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
23
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
24
24
  "since": "2025-01-01"
25
25
  },
26
26
  "hook:grounding-before-messaging": {
@@ -29,7 +29,7 @@
29
29
  "domain": "safety",
30
30
  "sourcePath": "src/core/PostUpdateMigrator.ts",
31
31
  "installedPath": ".instar/hooks/instar/grounding-before-messaging.sh",
32
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
32
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
33
33
  "since": "2025-01-01"
34
34
  },
35
35
  "hook:compaction-recovery": {
@@ -38,7 +38,7 @@
38
38
  "domain": "identity",
39
39
  "sourcePath": "src/core/PostUpdateMigrator.ts",
40
40
  "installedPath": ".instar/hooks/instar/compaction-recovery.sh",
41
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
41
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
42
42
  "since": "2025-01-01"
43
43
  },
44
44
  "hook:external-operation-gate": {
@@ -47,7 +47,7 @@
47
47
  "domain": "safety",
48
48
  "sourcePath": "src/core/PostUpdateMigrator.ts",
49
49
  "installedPath": ".instar/hooks/instar/external-operation-gate.js",
50
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
50
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
51
51
  "since": "2025-01-01"
52
52
  },
53
53
  "hook:deferral-detector": {
@@ -56,7 +56,7 @@
56
56
  "domain": "safety",
57
57
  "sourcePath": "src/core/PostUpdateMigrator.ts",
58
58
  "installedPath": ".instar/hooks/instar/deferral-detector.js",
59
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
59
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
60
60
  "since": "2025-01-01"
61
61
  },
62
62
  "hook:self-stop-guard": {
@@ -65,7 +65,7 @@
65
65
  "domain": "coherence",
66
66
  "sourcePath": "src/core/PostUpdateMigrator.ts",
67
67
  "installedPath": ".instar/hooks/instar/self-stop-guard.js",
68
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
68
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
69
69
  "since": "2025-01-01"
70
70
  },
71
71
  "hook:post-action-reflection": {
@@ -74,7 +74,7 @@
74
74
  "domain": "evolution",
75
75
  "sourcePath": "src/core/PostUpdateMigrator.ts",
76
76
  "installedPath": ".instar/hooks/instar/post-action-reflection.js",
77
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
77
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
78
78
  "since": "2025-01-01"
79
79
  },
80
80
  "hook:external-communication-guard": {
@@ -83,7 +83,7 @@
83
83
  "domain": "safety",
84
84
  "sourcePath": "src/core/PostUpdateMigrator.ts",
85
85
  "installedPath": ".instar/hooks/instar/external-communication-guard.js",
86
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
86
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
87
87
  "since": "2025-01-01"
88
88
  },
89
89
  "hook:scope-coherence-collector": {
@@ -92,7 +92,7 @@
92
92
  "domain": "coherence",
93
93
  "sourcePath": "src/core/PostUpdateMigrator.ts",
94
94
  "installedPath": ".instar/hooks/instar/scope-coherence-collector.js",
95
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
95
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
96
96
  "since": "2025-01-01"
97
97
  },
98
98
  "hook:scope-coherence-checkpoint": {
@@ -101,7 +101,7 @@
101
101
  "domain": "coherence",
102
102
  "sourcePath": "src/core/PostUpdateMigrator.ts",
103
103
  "installedPath": ".instar/hooks/instar/scope-coherence-checkpoint.js",
104
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
104
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
105
105
  "since": "2025-01-01"
106
106
  },
107
107
  "hook:free-text-guard": {
@@ -110,7 +110,7 @@
110
110
  "domain": "safety",
111
111
  "sourcePath": "src/core/PostUpdateMigrator.ts",
112
112
  "installedPath": ".instar/hooks/instar/free-text-guard.sh",
113
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
113
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
114
114
  "since": "2025-01-01"
115
115
  },
116
116
  "hook:claim-intercept": {
@@ -119,7 +119,7 @@
119
119
  "domain": "coherence",
120
120
  "sourcePath": "src/core/PostUpdateMigrator.ts",
121
121
  "installedPath": ".instar/hooks/instar/claim-intercept.js",
122
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
122
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
123
123
  "since": "2025-01-01"
124
124
  },
125
125
  "hook:claim-intercept-response": {
@@ -128,7 +128,7 @@
128
128
  "domain": "coherence",
129
129
  "sourcePath": "src/core/PostUpdateMigrator.ts",
130
130
  "installedPath": ".instar/hooks/instar/claim-intercept-response.js",
131
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
131
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
132
132
  "since": "2025-01-01"
133
133
  },
134
134
  "hook:stop-gate-router": {
@@ -137,7 +137,7 @@
137
137
  "domain": "safety",
138
138
  "sourcePath": "src/core/PostUpdateMigrator.ts",
139
139
  "installedPath": ".instar/hooks/instar/stop-gate-router.js",
140
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
140
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
141
141
  "since": "2025-01-01"
142
142
  },
143
143
  "hook:auto-approve-permissions": {
@@ -146,7 +146,7 @@
146
146
  "domain": "safety",
147
147
  "sourcePath": "src/core/PostUpdateMigrator.ts",
148
148
  "installedPath": ".instar/hooks/instar/auto-approve-permissions.js",
149
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
149
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
150
150
  "since": "2025-01-01"
151
151
  },
152
152
  "job:health-check": {
@@ -370,7 +370,7 @@
370
370
  "type": "skill",
371
371
  "domain": "skills",
372
372
  "sourcePath": ".claude/skills/autonomous/SKILL.md",
373
- "contentHash": "9f257c5e5365a39e85090458381ca99430047af6cbb65178f3b9f6215c50d7e8",
373
+ "contentHash": "d1ba5ef088651ea37af1c50a0c9a6b4a0efe66a7dcf483daa2e963df8b6b7fea",
374
374
  "since": "2025-01-01"
375
375
  },
376
376
  "skill:build": {
@@ -1538,7 +1538,7 @@
1538
1538
  "type": "subsystem",
1539
1539
  "domain": "updates",
1540
1540
  "sourcePath": "src/core/PostUpdateMigrator.ts",
1541
- "contentHash": "8201a824e666b27d0eda3d8f316eff4a4d362a0942c2b553b279d57d3a5aa021",
1541
+ "contentHash": "826317d6f3c0c5bdd67b3f88dbdafa3ce7012628c1422747862e0dfe0656a879",
1542
1542
  "since": "2025-01-01"
1543
1543
  },
1544
1544
  "subsystem:scheduler": {
@@ -0,0 +1,24 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ feat(autonomous): add an explicit **"Legitimate Stop Conditions" allowlist** to the autonomous skill, so an agent in a pre-approved autonomous session doesn't exit early for reversible decisions, milestones, late-hour, or "the operator might have an opinion."
9
+
10
+ - New `## Legitimate Stop Conditions (the ONLY valid reasons to exit)` section in `.claude/skills/autonomous/SKILL.md`: the only valid stops are (a) a genuine HARD external blocker the agent can't resolve, (b) duration expiry, (c) the completion-condition/promise genuinely met — with a NON-stops table naming each early-exit rationalization (decisions/milestones/2 AM/"needs your steer"/quiet off-ramp) and why it's a *continue*. Quotes the operator's own framing ("decisions are not that critical … ship dark … use best judgment").
11
+ - Two new anti-pattern entries ("This Needs Your Steer", "Quiet Off-Ramp"); cross-referenced into the existing Defer-to-Future-Self trap.
12
+ - **Migration Parity:** reuses the existing `migrateAutonomousStopHookTopicKeyed` migration (marker bumped to `LEGITIMATE_STOP_CONDITIONS`), so existing agents receive the section on update. Content-sniffing + idempotent: deploys only when the section is absent AND the SKILL.md still matches the stock fingerprint; a customized SKILL.md is left untouched.
13
+
14
+ ## What to Tell Your User
15
+
16
+ Autonomous sessions now run to completion more reliably. Previously an agent in a pre-approved autonomous run could talk itself into stopping early — "this is a clean milestone," "this decision needs your steer," "it's late." The autonomous skill now spells out, in the agent's own playbook, that the only valid reasons to stop are a genuine external blocker it can't resolve, the time running out, or the work actually being done — and that reversible, dark-shipped decisions are for it to make and keep moving. Nothing for you to configure; existing agents pick it up on their next update.
17
+
18
+ ## Summary of New Capabilities
19
+
20
+ - The autonomous skill carries an explicit legitimate-stops allowlist + NON-stops table, reinforcing "make the reversible call and keep going" in a pre-approved autonomous session. Reaches existing agents via a content-sniffing `PostUpdateMigrator` migration that never clobbers a customized skill.
21
+
22
+ ## Evidence
23
+
24
+ - `tests/unit/PostUpdateMigrator-autonomousStopHook.test.ts` — 12 pass (incl. re-deploys-to-existing-agent, idempotent-on-second-run, leaves-customized-untouched, no-op-when-absent). Related suites (autonomous-skill-deployment, migration-parity, autonomousHookPath, idle-backoff): 52 pass. `tsc --noEmit` clean; lint clean. Tier 1 (skill content + a marker bump on an existing tested migration; gate signaled Tier 2 for the migration surface → declared Tier 1, recorded `belowFloor` in the decision audit).
@@ -0,0 +1,108 @@
1
+ # Side-Effects Review — Autonomous "Legitimate Stop Conditions" allowlist
2
+
3
+ **Version / slug:** `autonomous-legitimate-stops`
4
+ **Date:** `2026-06-09`
5
+ **Author:** `Instar Agent (echo)`
6
+ **Second-pass reviewer:** `not required`
7
+
8
+ ## Summary of the change
9
+
10
+ Adds a new top-level section to the autonomous skill's instruction file — **"## Legitimate Stop Conditions (the ONLY valid reasons to exit)"** — enumerating the only three valid reasons a pre-approved autonomous session may exit: (a) a genuine hard external blocker the agent cannot resolve, (b) duration expiry, (c) the completion condition/promise genuinely met. It pairs that with an explicit NON-stops table (reversible decisions, milestones, late-hour, "needs your steer/opinion," "good stopping point," quiet off-ramp-with-no-reply) and reinforces the existing Anti-Patterns list with two new entries ("This Needs Your Steer" and "Quiet Off-Ramp"). Files touched: `.claude/skills/autonomous/SKILL.md` (the bundled shipping source — new agents get it via `init`/`installAutonomousSkill`), `src/core/PostUpdateMigrator.ts` (bumps the existing `migrateAutonomousStopHookTopicKeyed` SKILL.md marker from `PER-TOPIC (setup-race hardening)` to `LEGITIMATE_STOP_CONDITIONS` so existing agents receive the section on update), and `tests/unit/PostUpdateMigrator-autonomousStopHook.test.ts` (four new migration tests). This is prompt/skill CONTENT plus its Migration-Parity migration — NOT a change to any decision-point code logic.
11
+
12
+ ## Decision-point inventory
13
+
14
+ The change touches **no runtime decision point.** It does NOT modify the autonomous stop hook's blocking logic (`autonomous-stop-hook.sh`), the completion-condition judge, the emergency-stop check, or any gate/sentinel/watchdog. The stop hook continues to decide exit exactly as before; this change only edits the prose the agent reads and adds a content-sniffing migration that re-deploys that prose to existing installs.
15
+
16
+ - `migrateAutonomousStopHookTopicKeyed` (SKILL.md upgrade arm) — modify (marker bump only) — re-deploys the bundled SKILL.md to existing agents whose installed copy lacks the new sentinel.
17
+
18
+ ---
19
+
20
+ ## 1. Over-block
21
+
22
+ **What legitimate inputs does this change reject that it shouldn't?**
23
+
24
+ No block/allow surface — over-block not applicable. The migration's `upgrade()` helper writes a file only when the installed copy lacks the new marker AND matches the stock fingerprint (`ALL_TASKS_COMPLETE`); a customized SKILL.md is left untouched (reported as `skipped`), so it cannot "over-write" operator customizations.
25
+
26
+ ---
27
+
28
+ ## 2. Under-block
29
+
30
+ **What failure modes does this still miss?**
31
+
32
+ No block/allow surface — under-block not applicable. As prose guidance, the section is advisory: the structural stop hook is what actually enforces continuation. An agent could still rationalize an early stop despite the guidance — but that is the stop-hook's job to catch (out of scope here, tracked as the separate Tier-2 stop-hook logic change). This change strengthens the guidance the agent reads each iteration; it does not claim to be the enforcement layer.
33
+
34
+ ---
35
+
36
+ ## 3. Level-of-abstraction fit
37
+
38
+ **Is this at the right layer?**
39
+
40
+ Yes. This is skill CONTENT (prompt-level guidance), which is the correct layer for "here are the only valid reasons to exit." The structural enforcement (the stop hook) is a separate, lower layer that this content complements. The migration rides the EXISTING `migrateAutonomousStopHookTopicKeyed` path — the established, correct home for autonomous SKILL.md content updates — rather than introducing a parallel migration. The marker-bump mechanism is the same content-sniffing pattern already used for the prior SKILL.md fixes (per-topic write, registration-path fix), so it reuses rather than re-implements.
41
+
42
+ ---
43
+
44
+ ## 4. Signal vs authority compliance
45
+
46
+ **Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
47
+
48
+ **Does this change hold blocking authority with brittle logic?**
49
+
50
+ - [x] No — this change has no block/allow surface.
51
+
52
+ This is documentation/skill-content plus an idempotent file-deployment migration. It makes no allow/block decision, holds no authority over message flow or session lifecycle, and adds no brittle detector. The migration only writes a markdown file under content-sniffing guards.
53
+
54
+ ---
55
+
56
+ ## 5. Interactions
57
+
58
+ **Does this interact with existing checks, recovery paths, or infrastructure?**
59
+
60
+ - **Shadowing:** None. The migration's SKILL.md arm shares the same `upgrade()` helper as the stop-hook and setup-script arms within `migrateAutonomousStopHookTopicKeyed`; each arm targets a distinct file path, so they cannot shadow each other. The marker bump on the SKILL.md arm does not affect the hook/setup arms (independent markers).
61
+ - **Double-fire:** None. `installAutonomousSkill()` (init path) is install-if-missing and won't overwrite; the migration is the single content-update path. They do not both write the same file in the same run (init only writes when absent).
62
+ - **Races:** None. The migration runs synchronously inside the PostUpdateMigrator sequence at update time; no shared concurrent state.
63
+ - **Feedback loops:** None.
64
+
65
+ One real interaction verified: the existing test `PostUpdateMigrator-autonomousStopHook.test.ts` already exercises this migration; the marker bump from `PER-TOPIC (setup-race hardening)` to `LEGITIMATE_STOP_CONDITIONS` required no change to the existing hook/setup test cases (those assert their own markers, not the SKILL.md marker), and the new SKILL.md tests were added alongside. Verified the bundled SKILL.md contains BOTH the new marker (so `next.includes(marker)` passes and the upgrade actually writes) AND the fingerprint.
66
+
67
+ ---
68
+
69
+ ## 6. External surfaces
70
+
71
+ **Does this change anything visible outside the immediate code path?**
72
+
73
+ - Other agents on the same machine: only their autonomous SKILL.md content updates on their next PostUpdateMigrator run — the intended Migration-Parity effect.
74
+ - Other users of the install base: same — they get the new guidance on update.
75
+ - External systems (Telegram, Slack, GitHub, Cloudflare): none.
76
+ - Persistent state: none beyond rewriting the one markdown file the migration targets (only when stale + stock).
77
+ - Timing/runtime conditions: none.
78
+
79
+ ---
80
+
81
+ ## 7. Rollback cost
82
+
83
+ **If this turns out wrong in production, what's the back-out?**
84
+
85
+ Pure content change — revert the SKILL.md edit and the marker bump, ship as the next patch. No persistent state to clean up, no data migration, no agent-state repair. Existing agents that already received the re-deployed SKILL.md would simply receive the reverted version on a subsequent marker bump (or keep the harmless prose section). No user-visible regression during the rollback window.
86
+
87
+ ---
88
+
89
+ ## Conclusion
90
+
91
+ This review confirms the change is content-only with no decision-point surface. It adds the operator-requested "Legitimate Stop Conditions" allowlist + NON-stops table to the autonomous skill, ships it to new agents via the bundled source, and reaches existing agents via the established content-sniffing SKILL.md migration arm (marker bump, idempotent, customization-preserving). No design changes were required by the review. Clear to ship pending human review.
92
+
93
+ ---
94
+
95
+ ## Second-pass review (if required)
96
+
97
+ **Reviewer:** not required
98
+
99
+ Tier 1, content-only, no block/allow or session-lifecycle decision logic touched — the Phase 5 second-pass triggers do not apply.
100
+
101
+ ---
102
+
103
+ ## Evidence pointers
104
+
105
+ - `npx tsc --noEmit` → exit 0 (clean).
106
+ - `npx vitest run tests/unit/PostUpdateMigrator-autonomousStopHook.test.ts` → 12 passed (8 prior + 4 new SKILL.md cases).
107
+ - `npx vitest run tests/unit/autonomous-skill-deployment.test.ts tests/unit/migration-parity.test.ts tests/unit/PostUpdateMigrator-autonomousHookPath.test.ts tests/unit/autonomous-stop-hook-idle-backoff.test.ts` → 52 passed.
108
+ - Bundled SKILL.md verified to contain both `LEGITIMATE_STOP_CONDITIONS` (marker) and `ALL_TASKS_COMPLETE` (fingerprint).