instar 1.0.8 → 1.0.10

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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-05-19T19:32:42.283Z",
5
- "instarVersion": "1.0.8",
4
+ "generatedAt": "2026-05-19T20:08:37.872Z",
5
+ "instarVersion": "1.0.10",
6
6
  "entryCount": 189,
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": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
14
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
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": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
23
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
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": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
32
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
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": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
41
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
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": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
50
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
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": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
59
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
60
60
  "since": "2025-01-01"
61
61
  },
62
62
  "hook:post-action-reflection": {
@@ -65,7 +65,7 @@
65
65
  "domain": "evolution",
66
66
  "sourcePath": "src/core/PostUpdateMigrator.ts",
67
67
  "installedPath": ".instar/hooks/instar/post-action-reflection.js",
68
- "contentHash": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
68
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
69
69
  "since": "2025-01-01"
70
70
  },
71
71
  "hook:external-communication-guard": {
@@ -74,7 +74,7 @@
74
74
  "domain": "safety",
75
75
  "sourcePath": "src/core/PostUpdateMigrator.ts",
76
76
  "installedPath": ".instar/hooks/instar/external-communication-guard.js",
77
- "contentHash": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
77
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
78
78
  "since": "2025-01-01"
79
79
  },
80
80
  "hook:scope-coherence-collector": {
@@ -83,7 +83,7 @@
83
83
  "domain": "coherence",
84
84
  "sourcePath": "src/core/PostUpdateMigrator.ts",
85
85
  "installedPath": ".instar/hooks/instar/scope-coherence-collector.js",
86
- "contentHash": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
86
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
87
87
  "since": "2025-01-01"
88
88
  },
89
89
  "hook:scope-coherence-checkpoint": {
@@ -92,7 +92,7 @@
92
92
  "domain": "coherence",
93
93
  "sourcePath": "src/core/PostUpdateMigrator.ts",
94
94
  "installedPath": ".instar/hooks/instar/scope-coherence-checkpoint.js",
95
- "contentHash": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
95
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
96
96
  "since": "2025-01-01"
97
97
  },
98
98
  "hook:free-text-guard": {
@@ -101,7 +101,7 @@
101
101
  "domain": "safety",
102
102
  "sourcePath": "src/core/PostUpdateMigrator.ts",
103
103
  "installedPath": ".instar/hooks/instar/free-text-guard.sh",
104
- "contentHash": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
104
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
105
105
  "since": "2025-01-01"
106
106
  },
107
107
  "hook:claim-intercept": {
@@ -110,7 +110,7 @@
110
110
  "domain": "coherence",
111
111
  "sourcePath": "src/core/PostUpdateMigrator.ts",
112
112
  "installedPath": ".instar/hooks/instar/claim-intercept.js",
113
- "contentHash": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
113
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
114
114
  "since": "2025-01-01"
115
115
  },
116
116
  "hook:claim-intercept-response": {
@@ -119,7 +119,7 @@
119
119
  "domain": "coherence",
120
120
  "sourcePath": "src/core/PostUpdateMigrator.ts",
121
121
  "installedPath": ".instar/hooks/instar/claim-intercept-response.js",
122
- "contentHash": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
122
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
123
123
  "since": "2025-01-01"
124
124
  },
125
125
  "hook:auto-approve-permissions": {
@@ -128,7 +128,7 @@
128
128
  "domain": "safety",
129
129
  "sourcePath": "src/core/PostUpdateMigrator.ts",
130
130
  "installedPath": ".instar/hooks/instar/auto-approve-permissions.js",
131
- "contentHash": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
131
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
132
132
  "since": "2025-01-01"
133
133
  },
134
134
  "job:health-check": {
@@ -1456,7 +1456,7 @@
1456
1456
  "type": "subsystem",
1457
1457
  "domain": "updates",
1458
1458
  "sourcePath": "src/core/PostUpdateMigrator.ts",
1459
- "contentHash": "a156953ebeb92e9933387946aad8919825df0de17fba326e01ce8cb22b93c23b",
1459
+ "contentHash": "d8ba2811113c6f6417d5555bd5490d5169dd41d5774ff5af9e171693e4d140aa",
1460
1460
  "since": "2025-01-01"
1461
1461
  },
1462
1462
  "subsystem:scheduler": {
@@ -0,0 +1,55 @@
1
+ # Upgrade Guide — v1.0.10 (portability hardening 2 of 6)
2
+
3
+ <!-- bump: patch -->
4
+
5
+ ## What Changed
6
+
7
+ Second of the six cross-framework portability hardening patches (v1.0.9–v1.0.14).
8
+
9
+ The Telegram reply helper script (`telegram-reply.sh`) is now also installed at
10
+ the framework-neutral location `.instar/scripts/telegram-reply.sh`, not only
11
+ under `.claude/scripts/`. The agent identity file's relay instructions now
12
+ point at the neutral path (with the old Claude path documented as a fallback
13
+ for older installs).
14
+
15
+ Before this, a Codex or Gemini agent — which has no `.claude/scripts/` folder —
16
+ was instructed by its identity file to run a relay script that did not exist,
17
+ so it could not reply on Telegram.
18
+
19
+ ## Evidence
20
+
21
+ Reproduction prior to this change: configure an agent to run under Codex with
22
+ Telegram enabled. Its AGENTS.md relay section instructed `cat ... |
23
+ .claude/scripts/telegram-reply.sh`, a path absent on a non-Claude install. The
24
+ SessionStart hook already preferred the neutral path, but the neutral copy was
25
+ never installed, so even that preference fell back to the missing Claude path.
26
+
27
+ Observed after this change: `migrateScripts` installs the same generated script
28
+ to `.instar/scripts/telegram-reply.sh` (install-if-missing plus the existing
29
+ SHA-migrate guard for user-customized copies). The identity relay section now
30
+ references the neutral path. The Claude-Code copy is retained unchanged, so
31
+ Claude Code behavior is identical.
32
+
33
+ Unit verification: `tests/unit/PostUpdateMigrator-neutralRelayPath.test.ts` —
34
+ four cases: both locations installed with identical content; neutral copy
35
+ executable; idempotent on re-run; no-op when Telegram is not configured. The
36
+ IdentityRenderer assertion was updated to the neutral path plus fallback note,
37
+ and four adjacent relay-path test files were regression-checked green.
38
+
39
+ ## What to Tell Your User
40
+
41
+ - "Agents running on Codex or Gemini can now reply on Telegram. The reply helper is installed in a runtime-neutral location instead of a Claude-only folder. Claude Code agents are unaffected — their existing setup is unchanged and they pick up the neutral copy on their next update."
42
+
43
+ ## Summary of New Capabilities
44
+
45
+ | Capability | How to Use |
46
+ |-----------|-----------|
47
+ | Neutral relay script location | Automatic on update. The reply helper is mirrored to `.instar/scripts/` for every runtime. |
48
+ | Framework-neutral relay instructions | Automatic. The identity file's relay section points at the neutral path with a documented fallback. |
49
+
50
+ ## Deferred (Tracked Follow-ups)
51
+
52
+ - Four remaining cross-framework portability gaps ship as v1.0.11–v1.0.14:
53
+ framework-aware connector-server registration, framework-session-store
54
+ abstraction, post-update-migrator framework guards, and the
55
+ migrator/identity-renderer unification.
@@ -0,0 +1,54 @@
1
+ # Upgrade Guide — v1.0.9 (portability hardening 1 of 6)
2
+
3
+ <!-- bump: patch -->
4
+
5
+ ## What Changed
6
+
7
+ First of the six cross-framework portability hardening patches the v1.0.8
8
+ release notes committed to (v1.0.9–v1.0.14).
9
+
10
+ `instar init` now writes the non-Claude identity files (AGENTS.md for Codex,
11
+ GEMINI.md for Gemini) from the canonical `.instar/AGENT.md` at setup time,
12
+ instead of writing only the Claude-Code-specific CLAUDE.md and leaving
13
+ non-Claude runtimes with no identity file until the first server spawn.
14
+
15
+ A new `renderNonClaudeIdentityShadows` helper renders every known framework
16
+ shadow except `claude-code` (whose CLAUDE.md is a rich capability document,
17
+ intentionally left to its own generator). It is additive, idempotent, and a
18
+ safe no-op when no canonical identity exists yet.
19
+
20
+ ## Evidence
21
+
22
+ Reproduction prior to this change: run `instar init` for a project intended to
23
+ run under Codex. Result: a CLAUDE.md (which Codex does not read) and no
24
+ AGENTS.md. The agent had no auto-loaded identity until the first server spawn
25
+ triggered the runtime self-heal.
26
+
27
+ Observed after this change: the same setup additionally produces AGENTS.md and
28
+ GEMINI.md rendered from the canonical identity, immediately at init. CLAUDE.md
29
+ is byte-for-byte unchanged. With no canonical AGENT.md present the helper is a
30
+ clean no-op and does not throw.
31
+
32
+ Unit verification: `tests/unit/renderNonClaudeIdentityShadows.test.ts` — five
33
+ cases: renders AGENTS.md + GEMINI.md from canonical AGENT.md; never
34
+ writes/clobbers CLAUDE.md; no-op-no-throw when AGENT.md is absent; idempotent;
35
+ Telegram relay appendix on request.
36
+
37
+ ## What to Tell Your User
38
+
39
+ - "If you set up an agent to run on Codex or Gemini, it now gets the right identity file from the moment you create it, instead of only after its first session start. Claude Code setups are unchanged."
40
+
41
+ ## Summary of New Capabilities
42
+
43
+ | Capability | How to Use |
44
+ |-----------|-----------|
45
+ | Init-time non-Claude identity | Automatic during `instar init`. AGENTS.md / GEMINI.md are rendered from the canonical identity alongside CLAUDE.md. |
46
+ | Idempotent re-render | The helper reproduces identical shadow content on repeat runs and no-ops without a canonical source. |
47
+
48
+ ## Deferred (Tracked Follow-ups)
49
+
50
+ - Five remaining cross-framework portability gaps ship as v1.0.10–v1.0.14:
51
+ framework-aware connector-server registration, framework-session-store
52
+ abstraction, neutral relay-script path, post-update-migrator framework
53
+ guards, and the migrator/identity-renderer unification (which will revisit
54
+ how CLAUDE.md relates to the canonical identity render).
@@ -0,0 +1,59 @@
1
+ # Side-effects review — Init non-Claude identity shadows (Gap 1)
2
+
3
+ Per L6. Seven dimensions.
4
+
5
+ ## 1. Over-block / under-block
6
+
7
+ Before: UNDER — a non-Claude install got no identity file at init. After: no
8
+ over-block. claude-code is explicitly excluded so the rich CLAUDE.md is never
9
+ touched; only AGENTS.md/GEMINI.md are added. No new under-block: a no-canonical
10
+ state is a clean no-op, matching prior behavior (nothing was written then
11
+ either).
12
+
13
+ ## 2. Level-of-abstraction fit
14
+
15
+ The render logic lives in IdentityRenderer (where all shadow rendering lives).
16
+ init just calls it. Correct altitude — init orchestrates, the renderer renders.
17
+
18
+ ## 3. Signal vs Authority compliance
19
+
20
+ Canonical `.instar/AGENT.md` is the AUTHORITY. The shadow files are derived
21
+ SIGNAL copies carrying the auto-generated banner. The helper never invents
22
+ identity; it copies the canonical body. No brittle filter gains authority.
23
+
24
+ ## 4. Interactions with adjacent systems
25
+
26
+ - **generateClaudeMd / CLAUDE.md** — untouched (excluded by design).
27
+ - **ensureFrameworkIdentityFile** (runtime spawn) — unchanged; this closes the
28
+ init-time window before first spawn, the two are complementary and both
29
+ idempotent so double-render is harmless.
30
+ - **Gap 6 (migrator/renderer unification)** — independent; this PR does not
31
+ pre-empt or block it.
32
+ - **PostUpdateMigrator** — not touched. Existing installs are unaffected (they
33
+ already self-heal at spawn via ensureFrameworkIdentityFile).
34
+
35
+ ## 5. Rollback cost
36
+
37
+ Low. One new exported function + two call sites + one test file. `git revert`
38
+ restores prior behavior; no state migration, deployed agents unaffected
39
+ (runtime self-heal path unchanged).
40
+
41
+ ## 6. Backwards compatibility / drift surface
42
+
43
+ Fully backward-compatible. Claude-code installs: identical behavior (CLAUDE.md
44
+ written exactly as before; AGENTS.md/GEMINI.md additionally appear but are
45
+ inert for Claude Code). Non-Claude installs: strictly better (identity present
46
+ from init). Drift surface: none — shadows are deterministic renders of
47
+ canonical, idempotent.
48
+
49
+ ## 7. Authorization / Trust posture
50
+
51
+ No new authority. The helper reads canonical AGENT.md and writes derived
52
+ shadows under projectDir — the same write surface init already owns. Best-
53
+ effort: a render failure cannot break init or escalate anything.
54
+
55
+ ## Outcome
56
+
57
+ Ship. Narrow, additive, verified against actual code, idempotent, fully
58
+ tested, trivial rollback. First of the v1.0.9–v1.0.14 portability hardening
59
+ series the v1.0.8 notes committed to.
@@ -0,0 +1,61 @@
1
+ # Side-effects review — Framework-neutral relay path (Gap 4)
2
+
3
+ Per L6. Seven dimensions.
4
+
5
+ ## 1. Over-block / under-block
6
+
7
+ Before: UNDER — Codex/Gemini agents instructed to run a nonexistent script.
8
+ After: no over-block. The `.claude/scripts/` copy is retained, so Claude Code
9
+ behavior is byte-identical. The neutral copy is additive.
10
+
11
+ ## 2. Level-of-abstraction fit
12
+
13
+ Script installation stays in `migrateScripts` (where all reply-script
14
+ installation lives). The identity instruction stays in IdentityRenderer. No
15
+ logic leaked elsewhere.
16
+
17
+ ## 3. Signal vs Authority compliance
18
+
19
+ The generated script content is the single source; both locations receive the
20
+ same bytes. The SHA-migrate guard remains the authority on whether a
21
+ user-customized copy is overwritten — unchanged, now applied to both copies.
22
+
23
+ ## 4. Interactions with adjacent systems
24
+
25
+ - **SessionStart hook (3309-3314)** — already preferred the neutral path; now
26
+ it resolves because the file exists. No hook change needed.
27
+ - **Claude SessionStart hook template (1822)** — intentionally unchanged
28
+ (Claude-only path; Codex has no SessionStart hook — that's why the appendix
29
+ exists).
30
+ - **buildTelegramRelayBlock (bootstrap helper)** — separate function, not
31
+ touched; its tests still pass.
32
+ - **TemplatesDriftVerifier / verify-deployed-templates** — checks
33
+ `.claude/scripts/telegram-reply.sh`; that file still exists with the same
34
+ content, so drift verification is unaffected (regression-tested).
35
+
36
+ ## 5. Rollback cost
37
+
38
+ Low. Two source edits + one new test + one updated assertion. `git revert`
39
+ restores prior behavior. The neutral copy left on disk after a revert is an
40
+ inert extra file (the appendix would point back at `.claude/scripts/`),
41
+ harmless.
42
+
43
+ ## 6. Backwards compatibility / drift surface
44
+
45
+ Fully backward-compatible. Claude Code: unchanged. Existing agents: get the
46
+ neutral mirror on next update via Migration Parity, idempotent. Drift surface:
47
+ the two copies are generated from the same content in the same pass — they
48
+ cannot diverge within a run; the SHA-migrate guard handles user customization
49
+ identically for both.
50
+
51
+ ## 7. Authorization / Trust posture
52
+
53
+ No new authority. Same write surface the migrator already owns
54
+ (`.claude/scripts/` and `.instar/scripts/` are both under projectDir/stateDir
55
+ the migrator already writes to). Best-effort: a neutral-copy write failure is
56
+ captured as a migration error, never throws out of the migration run.
57
+
58
+ ## Outcome
59
+
60
+ Ship. Surgical, additive, Migration-Parity-compliant, regression-swept,
61
+ trivial rollback. Second of the v1.0.9–v1.0.14 hardening series.