instar 1.3.157 → 1.3.158

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.157",
3
+ "version": "1.3.158",
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-05-31T09:52:37.332Z",
5
- "instarVersion": "1.3.157",
4
+ "generatedAt": "2026-05-31T09:57:14.699Z",
5
+ "instarVersion": "1.3.158",
6
6
  "entryCount": 193,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -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 publish workflow now survives the publish-vs-merge git race.** Publishes are already serialized against each other (workflow concurrency group), but a concurrent PR merge — a separate workflow — can still move `main` between a publish's fetch and its final `git push`, which rejected the push and failed the release run (leaving npm briefly ahead of the committed version on main). The "Commit version bump & tag" step now retries that push: on a rejection it fetches and rebases the release commit onto the updated main and pushes again (up to five attempts). Because a concurrent merge never bumps npm, the version the run already resolved stays valid, so the rebase needs no version re-resolution. The version tag is now created on the final, landed commit. If a rebase ever hits a real conflict the run aborts loudly rather than force-pushing.
9
+
10
+ ## What to Tell Your User
11
+
12
+ Nothing user-facing — this is release-pipeline robustness. When two changes hit the main branch at the same moment, a release that would previously have failed its final push now quietly rebases and completes, so versions on the registry and in the repository stay in step.
13
+
14
+ ## Summary of New Capabilities
15
+
16
+ - The publish workflow's commit-and-push step retries with a fetch + rebase on a rejected push, then pushes the version tag on the commit that actually landed.
17
+ - The common path (push succeeds on the first try) is unchanged; the retry only runs on a rejected push, so a successful publish behaves exactly as before.
18
+
19
+ ## Evidence
20
+
21
+ - `js-yaml` parse of `.github/workflows/publish.yml` succeeds; the commit step contains the rebase-retry loop and tags after the branch push.
22
+ - Pairs with the per-PR release-note fragment system (this very note is a fragment): fragments removed the PR-level NEXT.md collisions, this removes the publish-level git-push collision.
@@ -0,0 +1,27 @@
1
+ # Side-effects review — publish-vs-merge push retry
2
+
3
+ Seven-dimension review for the `.github/workflows/publish.yml` "Commit version bump & tag" change (retry-with-rebase on a rejected push).
4
+
5
+ ## 1. Security
6
+ No new secrets, tokens, or permissions. Uses the same `RELEASE_TOKEN`/checkout already in the job. `git rebase`/`git fetch` operate only on `main`. No force-push (a conflict aborts loudly instead).
7
+
8
+ ## 2. Blast radius (release pipeline — highest concern)
9
+ This is the one workflow nothing else can tolerate breaking. Mitigation: the change is **downside-bounded** — the common path is `git push origin main` exactly as before; the retry loop only executes when that push is *rejected*. A bug in the retry can therefore only affect the already-failing case (which previously failed outright), never a successful publish. YAML validated via `js-yaml`.
10
+
11
+ ## 3. Correctness
12
+ Concurrent merges are not releases (they never bump npm), so the version this run resolved remains valid after rebasing onto them — no version re-resolution needed. The version tag is created after the successful branch push, so it always points at the commit that actually landed. Newly-arrived release-note fragments from the concurrent merge survive the rebase (this run's commit only deleted the fragments it assembled) and ride to the next publish — consistent with the fragment system.
13
+
14
+ ## 4. Rollback
15
+ Revert the one workflow step (or the commit). No state migration, no persisted data. Reverting restores the prior single-push behavior exactly.
16
+
17
+ ## 5. Observability
18
+ On a rejected push the step logs the attempt + reason; on an unrecoverable conflict it emits a GitHub `::error::` and exits non-zero (visible failed run) rather than silently proceeding.
19
+
20
+ ## 6. Multi-machine / concurrency
21
+ This IS the concurrency fix. Publishes are serialized by the workflow `concurrency` group; this closes the remaining publish-vs-merge gap. Retry cap of 5 bounds the loop.
22
+
23
+ ## 7. Backward compatibility
24
+ Pure workflow change; no API, config, schema, or agent-installed-file change. Existing releases behave identically on the common (no-race) path.
25
+
26
+ ## Second-pass review
27
+ Release-pipeline change — a human reviewer sign-off on the workflow diff is appropriate before relying on it under heavy churn. The downside-bounded property (common path unchanged) makes shipping low-risk in the interim.