instar 1.3.261 → 1.3.263

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.261",
3
+ "version": "1.3.263",
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",
@@ -91,9 +91,15 @@ export function parseBumpType(content) {
91
91
  * is internal-only (see assembleNextMd). The pre-push gate independently verifies
92
92
  * the marker against the staged diff (an internal-only fragment whose PR touches
93
93
  * runtime `src/` is rejected), so the marker cannot be misused.
94
+ *
95
+ * The marker is recognized ONLY as a standalone directive line (like the
96
+ * `<!-- bump: -->` line) — never an inline mention inside prose or backticks. A
97
+ * fragment that merely DOCUMENTS the lane (e.g. this lane's own docs fragment,
98
+ * which quotes the literal `<!-- internal-only -->` marker in backticks) must not
99
+ * be misread as USING it and trip the §3c src-conflict gate.
94
100
  */
95
101
  export function hasInternalOnlyMarker(content) {
96
- return /<!--\s*internal-only\s*-->/i.test(String(content));
102
+ return /^[ \t]*<!--\s*internal-only\s*-->[ \t]*$/im.test(String(content));
97
103
  }
98
104
 
99
105
  /** Canonical text auto-filled into the user-facing sections of an all-internal release. */
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-06-05T01:20:58.426Z",
5
- "instarVersion": "1.3.261",
4
+ "generatedAt": "2026-06-05T02:04:35.056Z",
5
+ "instarVersion": "1.3.263",
6
6
  "entryCount": 198,
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
14
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
23
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
32
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
41
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
50
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
59
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
68
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
77
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
86
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
95
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
104
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
113
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
122
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
131
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
140
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
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": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
149
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
150
150
  "since": "2025-01-01"
151
151
  },
152
152
  "job:health-check": {
@@ -1530,7 +1530,7 @@
1530
1530
  "type": "subsystem",
1531
1531
  "domain": "updates",
1532
1532
  "sourcePath": "src/core/PostUpdateMigrator.ts",
1533
- "contentHash": "b97e0a63b1003f867891c195c2df5968744f22b1437db56888305d053eee50fd",
1533
+ "contentHash": "7b24d5f0ce709b9b960d78d17a92d2cb24ad6319175d2edd1e3ffef17f30ba80",
1534
1534
  "since": "2025-01-01"
1535
1535
  },
1536
1536
  "subsystem:scheduler": {
@@ -0,0 +1,23 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ Documented the internal-only release-note lane in the bundled instar-dev skill and added a PostUpdateMigrator backfill so existing agents with stock deployed copies receive the same guidance after update.
9
+
10
+ The new skill section explains the `<!-- internal-only -->` fragment marker, the ability to omit the two user-facing release-note sections, the assembler's all-internal-only auto-fill rule, and the pre-push gate that rejects the marker when runtime `src/*.ts` files changed.
11
+
12
+ ## What to Tell Your User
13
+
14
+ Nothing changes in normal product behavior. This update improves the development workflow so agents know when the internal-only release-note lane is valid and existing agents receive that guidance automatically.
15
+
16
+ ## Summary of New Capabilities
17
+
18
+ Existing agents with stock instar-dev skill installs now learn the internal-only release-note lane through the post-update migration path instead of waiting for a fresh install.
19
+
20
+ ## Evidence
21
+
22
+ - Added a focused PostUpdateMigrator unit test covering update, idempotency, customized-skill preservation, and missing-skill no-op behavior.
23
+ - Ran the existing build-location migration test and the new internal-only-lane migration test together: 8 tests passed.
@@ -0,0 +1,22 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ The generated `src/data/builtin-manifest.json` is no longer committed to git. It was a build artifact (produced by `scripts/generate-builtin-manifest.cjs` during `npm run build` and `prepublishOnly`) that, because every skill/hook PR regenerates it, conflicted on a fast-moving main almost every time main advanced — an unwinnable resolve→CI→re-conflict loop (one docs PR hit it 5×). It is now `.gitignore`d and untracked. The published package still ships it (the `.npmignore` allowlist, not `.gitignore`, governs packing — verified with `npm pack --dry-run`), the build regenerates it before publish, the sole runtime reader already degrades gracefully if it's absent, and the one test that reads it now self-generates it in a `beforeAll`. Net: future skill/hook PRs stop fighting this file; build/publish/CI are unchanged.
9
+
10
+ ## What to Tell Your User
11
+
12
+ None — internal change (no user-facing surface).
13
+
14
+ ## Summary of New Capabilities
15
+
16
+ None — internal change (no user-facing surface).
17
+
18
+ ## Evidence
19
+
20
+ - `npm pack --dry-run` (with the file gitignored) still lists `src/data/builtin-manifest.json` (61.4kB) in the tarball — the `.npmignore` allowlist governs packing.
21
+ - `vitest run tests/unit/builtin-manifest.test.ts` after deleting the file: regenerates it in `beforeAll`, all 9 assertions pass.
22
+ - `tsc --noEmit` clean; `no-silent-fallbacks` ratchet unchanged.
@@ -0,0 +1,103 @@
1
+ # Side-Effects Review — instar-dev internal-only release-note lane docs
2
+
3
+ **Version / slug:** `instar-dev-internal-only-lane-docs`
4
+ **Date:** `2026-06-04`
5
+ **Author:** `instar-codey`
6
+ **Second-pass reviewer:** `not required`
7
+
8
+ ## Summary of the change
9
+
10
+ This change documents PR #765's internal-only release-note lane in the bundled `/instar-dev` skill and adds a PostUpdateMigrator backfill so existing deployed stock skill copies receive the same guidance.
11
+
12
+ The skill text documents four operational facts grounded in #765: `<!-- internal-only -->` opts a fragment into the lane, the marker lets the fragment omit `What to Tell Your User` and `Summary of New Capabilities`, the shared assembler auto-fills those sections only when every contributing fragment is internal-only, and the pre-push gate rejects the marker when runtime `src/*.ts` files changed.
13
+
14
+ ## Decision-point inventory
15
+
16
+ - `/instar-dev` skill text — modify — teaches agents when the internal-only lane is valid.
17
+ - `PostUpdateMigrator` built-in skill migration — modify — copies the bundled stock skill into existing stock deployed copies when the new marker is missing.
18
+ - Release gates — `hasInternalOnlyMarker` (`scripts/assemble-next-md.mjs`) hardened to match the marker only as a standalone directive line (see §8); pre-push behavior otherwise unchanged.
19
+
20
+ ---
21
+
22
+ ## 1. Over-block
23
+
24
+ The migration may skip a deployed instar-dev skill that is structurally stock but lacks the conservative fingerprint (`# /instar-dev` and `### Phase 2 — Planning`). That is acceptable because the alternative is clobbering customized local workflows. Fresh installs still receive the bundled skill.
25
+
26
+ ---
27
+
28
+ ## 2. Under-block
29
+
30
+ This does not enforce correct use of the internal-only marker beyond documenting the already-merged pre-push gate. An agent can still misunderstand the lane, but the guidance now lives in the skill at the point where agents prepare release fragments.
31
+
32
+ ---
33
+
34
+ ## 3. Level-of-abstraction fit
35
+
36
+ The skill is the right documentation layer because `/instar-dev` owns the release-fragment workflow. PostUpdateMigrator is the right deployment layer because installed skills are untracked agent-local files; package updates alone do not rewrite existing copies.
37
+
38
+ ---
39
+
40
+ ## 4. Signal vs authority compliance
41
+
42
+ - [x] No new authority is introduced.
43
+
44
+ This PR changes documentation and migration parity only. The objective authority remains PR #765's existing pre-push gate, which checks the marker against the diff.
45
+
46
+ ---
47
+
48
+ ## 5. Interactions
49
+
50
+ - **#760 migration:** This mirrors the existing build-location skill migration but uses a new marker phrase, so both migrations are independently idempotent.
51
+ - **Fresh installs:** `installBuiltinSkills` gets the updated bundled skill directly.
52
+ - **Existing installs:** PostUpdateMigrator rewrites only stock deployed copies missing the new phrase.
53
+ - **Customized installs:** The conservative fingerprint check leaves them untouched.
54
+
55
+ ---
56
+
57
+ ## 6. External surfaces
58
+
59
+ The visible surface is limited to development agents reading `/instar-dev`. End-user behavior does not change. Existing agents with stock skill installs will see the new guidance after update.
60
+
61
+ ---
62
+
63
+ ## 7. Rollback cost
64
+
65
+ Rollback is a normal code revert. Agents that already received the updated skill keep a harmless documentation section until a later migration rewrites the file. There is no persistent database migration.
66
+
67
+ ---
68
+
69
+ ## Conclusion
70
+
71
+ The change closes the deploy-awareness half of #765 without changing the ship-lane mechanism itself. The main risk is overwriting customized skills, and the migration avoids that by using the same conservative content-sniffing pattern as #760.
72
+
73
+ ---
74
+
75
+ ## Second-pass review (if required)
76
+
77
+ **Reviewer:** not required
78
+ **Independent read of the artifact:** not required
79
+
80
+ This touches development-skill documentation and an idempotent post-update skill migration. It does not alter session lifecycle, messaging gates, sentinels, or runtime block/allow decisions.
81
+
82
+ ---
83
+
84
+ ## 8. Marker-detection hardening (surfaced while building this PR)
85
+
86
+ Building this docs PR surfaced a false-positive in `hasInternalOnlyMarker`
87
+ (`scripts/assemble-next-md.mjs`): the matcher used a whole-content regex, so a
88
+ fragment that merely *documents* the `<!-- internal-only -->` marker in prose (as
89
+ this PR's own release fragment does, quoting the literal marker in backticks) was
90
+ misread as *using* the internal-only lane — and tripped its own §3c src-conflict
91
+ gate (this PR touches `PostUpdateMigrator.ts`). Hardened the matcher to recognize
92
+ the marker ONLY as a standalone directive line (like `<!-- bump: -->`), never an
93
+ inline/backtick mention. Pure script + test change; no `src/` runtime surface.
94
+ Behavior for genuine internal-only fragments (marker on its own line) is unchanged
95
+ — all three prior `detects the marker` assertions stay green. Regression test
96
+ added (`does NOT detect an inline/backtick mention…`).
97
+
98
+ ---
99
+
100
+ ## Evidence pointers
101
+
102
+ - `npm test -- --run tests/unit/migrate-instar-dev-build-location.test.ts tests/unit/migrate-instar-dev-internal-only-lane.test.ts`
103
+ - `npm test -- --run tests/unit/assemble-next-md.test.ts tests/unit/pre-push-gate.test.ts` (47 tests — marker false-positive regression)
@@ -0,0 +1,44 @@
1
+ # Side-Effects Review — gitignore the generated builtin-manifest (end the conflict loop)
2
+
3
+ **Version / slug:** `manifest-gitignore-end-conflict-loop`
4
+ **Date:** `2026-06-04`
5
+ **Author:** `echo`
6
+ **Second-pass reviewer:** `not required (internal dev-workflow change, no runtime/user surface)`
7
+
8
+ ## Summary of the change
9
+
10
+ `src/data/builtin-manifest.json` is a GENERATED build artifact (`scripts/generate-builtin-manifest.cjs`, run as the first step of `npm run build` and again by `prepublishOnly`) that was nevertheless committed to git. Because every skill/hook PR regenerates it, it conflicted on git on a fast-moving main almost every time main advanced — a structural, unwinnable resolve→CI→re-conflict loop (one docs PR hit it 5×). This change stops committing it: adds it to `.gitignore`, `git rm --cached`s it (file stays on disk), and makes the single test that reads it self-generate it if absent.
11
+
12
+ ## Decision-point inventory
13
+
14
+ 1. **`.gitignore`** — add `src/data/builtin-manifest.json`. The conflict becomes impossible because nothing commits the file.
15
+ 2. **`git rm --cached src/data/builtin-manifest.json`** — untrack it; the on-disk file is untouched.
16
+ 3. **`tests/unit/builtin-manifest.test.ts`** — `beforeAll` regenerates the file if missing (it's the only test that reads it).
17
+
18
+ ## 1. Publish path (does the package still ship the manifest?)
19
+
20
+ YES — verified. A `.npmignore` EXISTS, so npm uses `.npmignore` (not `.gitignore`) when packing; the manifest is not in `.npmignore`, so it remains in the tarball. Confirmed with `npm pack --dry-run` after gitignoring: the tarball still lists `src/data/builtin-manifest.json` (61.4kB). `prepublishOnly: npm run build` regenerates it before publish, so it always exists at pack time. No package.json `files` change needed.
21
+
22
+ ## 2. Runtime path (does anything break if the file is missing?)
23
+
24
+ NO — `CapabilityMapper.loadBuiltinManifest()` is the only runtime reader; it guards with `if (fs.existsSync(...))` inside a try/catch and `return {}` otherwise — a missing manifest degrades to an empty capability map, never a crash. (Pre-existing behavior, unchanged.)
25
+
26
+ ## 3. Test/CI path
27
+
28
+ - `builtin-manifest.test.ts` is the only test reading the file; it now regenerates it in `beforeAll`. Verified: `rm` the file → run the test → it regenerates and all 9 assertions pass.
29
+ - CI's "Build" job runs `npm run build` (regenerates the manifest); the unit-test job's `builtin-manifest.test.ts` self-generates. No CI step asserts a clean git tree against the committed manifest, so removing it eliminates (rather than introduces) a drift-failure class.
30
+ - The other files matching "builtin-manifest" in tests reference the unrelated playbook `builtin-manifests/` directory, not this file.
31
+
32
+ ## 4. Reversibility
33
+
34
+ Fully reversible: `git add -f src/data/builtin-manifest.json`, drop the `.gitignore` line, revert the test `beforeAll`. No state, no format, no migration.
35
+
36
+ ## 5. Blast radius
37
+
38
+ `.gitignore` (1 line + comment), `tests/unit/builtin-manifest.test.ts` (a `beforeAll`), and the untracking of one generated JSON. NO runtime `src/*.ts` change. Build/publish/CI behavior is identical because the file is still produced at build time.
39
+
40
+ ## Evidence pointers
41
+
42
+ - `npm pack --dry-run` (with the file gitignored) lists `src/data/builtin-manifest.json` in the tarball.
43
+ - `node_modules/.bin/vitest run tests/unit/builtin-manifest.test.ts` after `rm`-ing the file: 9 passed; file regenerated.
44
+ - `tsc --noEmit` clean; `no-silent-fallbacks` ratchet unchanged (no src catches touched).