@timurproko/a1 0.1.8-dev.518 → 0.1.8-dev.521

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/README.md CHANGED
@@ -230,29 +230,30 @@ a1 update --develop 0.1.8-dev.107 # install that exact full preview versio
230
230
  ### Stable
231
231
 
232
232
  ```sh
233
- npm run release -- patch # 0.1.8-dev -> 0.1.8; already-stable 0.1.8 -> 0.1.9
233
+ npm run release -- patch # 0.1.8-dev -> 0.1.8
234
234
  npm run release -- minor # 0.1.8-dev -> 0.2.0
235
235
  npm run release -- major # 0.1.8-dev -> 1.0.0
236
236
  npm run release -- 0.4.0 # an exact stable version
237
237
  ```
238
238
 
239
- Run from the repository root on a clean `develop` matching `origin/develop`.
240
- A target is required; bare `npm run release` displays usage and releases nothing.
241
- `patch` promotes the current prerelease rather than skipping its stable version.
242
-
243
- The command prepares a version-only PR in an isolated detached worktree, prints
244
- its URL, and waits for you to validate and **merge it manually**. Neither this PR
245
- nor the next-development PR is auto-merged, and green CI alone does not advance
246
- the release. After the stable PR merges, the command dispatches publication for
247
- that exact authoritative commit and waits for success. CI validates the packed
248
- release on Windows, Linux, and macOS, publishes to npm `latest` with provenance,
249
- then writes the `v<version>` tag and GitHub Release and fast-forwards `master`.
250
-
251
- Only after confirmed publication of `0.1.8` does the command prepare the separate
252
- `0.1.9-dev` PR. It reports development reopened only after you manually merge that
253
- PR too. Work added to your checkout during either wait is preserved, not reset.
254
- If publication fails or is uncertain, no reopening PR is prepared. If publication
255
- succeeded but reopening failed, inspect the reported phase and PR; do not republish
256
- the immutable stable version.
239
+ Run from the repository root on a clean `develop` matching `origin/develop` that
240
+ declares the open `-dev` version. A target is required; bare `npm run release`
241
+ displays usage and releases nothing. `patch` promotes the current prerelease rather
242
+ than skipping its stable version.
243
+
244
+ The stable version is never committed. The command dispatches publication for the
245
+ exact authoritative `develop` commit with the stable version named in the request,
246
+ and waits for success. CI stamps that version on the checked-out source before
247
+ packing, validates the packed release on Windows, Linux, and macOS, publishes to
248
+ npm `latest` with provenance, then writes the `v<version>` tag on that same
249
+ `develop` commit, records the GitHub Release, and fast-forwards `master`.
250
+
251
+ Only after confirmed publication of `0.1.8` does the command prepare the one
252
+ version-only PR, `0.1.9-dev`, in an isolated detached worktree, print its URL, and
253
+ wait for you to **merge it manually**. It is not auto-merged, and green CI alone does
254
+ not advance the release. Work added to your checkout during the wait is preserved,
255
+ not reset. If publication fails or is uncertain, no reopening PR is prepared. If
256
+ publication succeeded but reopening failed, merge or repair the reported PR by
257
+ hand; do not republish the immutable stable version.
257
258
 
258
259
  `docs/ci-release-runbook.md` has the full picture.
@@ -1,13 +1,23 @@
1
1
  import { DynamicBorder, keyHint, rawKeyHint } from "../startup-public.js";
2
- import { Container, getKeybindings, Input, Spacer, Text, TruncatedText } from "@earendil-works/pi-tui";
2
+ import { Container, getKeybindings, Input, Spacer, Text } from "@earendil-works/pi-tui";
3
3
  import { PINNED_PI_LAYOUT, piTheme } from "./theme.js";
4
- import { componentPort, ensureTheme } from "./shell-shared-facade.js";
4
+ import { componentPort, ensureTheme, piShellTruncateToWidth, piShellVisibleWidth } from "./shell-shared-facade.js";
5
5
  import { SKILL_COMMAND_PREFIX, skillMatchesQuery } from "./skills-command.js";
6
+ /** A single line clipped at the viewport width: no wrap, no ellipsis, padded to the full width. */
7
+ class ClippedLine {
8
+ #text;
9
+ constructor(text) { this.#text = text; }
10
+ invalidate() { }
11
+ render(width) {
12
+ const line = piShellTruncateToWidth(this.#text.split("\n", 1)[0] ?? "", width);
13
+ return [line + " ".repeat(Math.max(0, width - piShellVisibleWidth(line)))];
14
+ }
15
+ }
6
16
  /**
7
17
  * The A1-owned searchable Skills dialog. Its composition is the model selector's (border, spacer,
8
18
  * search input, spacer, list, spacer, hint footer, border) built from public pi-tui components; its
9
19
  * content follows the v2 skills extension: an accent bold title, `skill:<name>` rows, the selected
10
- * skill's description truncated to one line under the rows, the pinned scroll counter on overflow,
20
+ * skill's description cut to one line under the rows, the pinned scroll counter on overflow,
11
21
  * and the two empty states. Enter applies the selected skill with no arguments; the query is never appended.
12
22
  */
13
23
  class SkillsSelectorComponent extends Container {
@@ -102,8 +112,8 @@ class SkillsSelectorComponent extends Container {
102
112
  const description = this.#filtered[this.#selectedIndex]?.description ?? "";
103
113
  if (description.length > 0) {
104
114
  this.#listContainer.addChild(new Spacer(1));
105
- // Invariant: the description never wraps; it is cut to the viewport width with an ellipsis.
106
- this.#listContainer.addChild(new TruncatedText(theme.fg("muted", ` ${description}`), 0, 0));
115
+ // Invariant: the description never wraps; it is cut at the viewport width with no ellipsis.
116
+ this.#listContainer.addChild(new ClippedLine(theme.fg("muted", ` ${description}`)));
107
117
  }
108
118
  }
109
119
  }
@@ -5,7 +5,7 @@
5
5
  "platform": "darwin",
6
6
  "architecture": "arm64",
7
7
  "capability": "supported",
8
- "builtAt": "2026-09-19T16:47:03.520Z",
8
+ "builtAt": "2026-09-19T18:13:50.437Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian",
11
11
  "sha256": "9db1726bbe3fc2e8292f2ead1e7e9d0fd4d7d0dc9217b372582bf354b0f565dc",
@@ -5,7 +5,7 @@
5
5
  "platform": "linux",
6
6
  "architecture": "x64",
7
7
  "capability": "supported",
8
- "builtAt": "2026-09-19T16:46:51.393Z",
8
+ "builtAt": "2026-09-19T18:13:35.456Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian",
11
11
  "sha256": "d8cda6b0c7cb36c0cc41e90802aceebf6c02eaebbc08a83d7d963d2e918dbd7a",
@@ -5,10 +5,10 @@
5
5
  "platform": "win32",
6
6
  "architecture": "x64",
7
7
  "capability": "supported",
8
- "builtAt": "2026-09-19T16:47:27.951Z",
8
+ "builtAt": "2026-09-19T18:14:28.078Z",
9
9
  "artifact": {
10
10
  "filename": "process-guardian.exe",
11
- "sha256": "760dc53aa17d5e0df1c0fa5cbd3be56f73b6cf662b0cef5994edffff68ca9d8f",
11
+ "sha256": "b9d22d7d10dfa55e8a4221500376db60f16164267885533c916a6a42b1db09b4",
12
12
  "size": 177664
13
13
  },
14
14
  "provenance": {
@@ -49,7 +49,7 @@ effect of stable publication, not a trigger.
49
49
  | Pull request into `develop` | Bounded PR-cadence validation; changed/new source documentation is checked once, rendering runs as `none`, `smoke`, or `full`, and exhaustive owners are reported as deferred |
50
50
  | `npm run develop` | Preview package gates on Windows, Linux, and macOS; an existing numbered preview is an early successful no-op |
51
51
  | Nightly at `03:17 UTC` | One full documentation review plus the complete non-physical suite on Windows, Linux, and macOS, every night |
52
- | `npm run release -- ...` | Complete exact-byte stable gates, then npm `latest`, tag, GitHub Release, and `master` |
52
+ | `npm run release -- ...` | Stamps the requested stable version on the open `develop` source, runs the complete exact-byte stable gates, then npm `latest`, tag, GitHub Release, and `master`; one reopening PR follows |
53
53
  | `.github/workflows/full-regression.yml` | Additional on-demand complete regression without publication authority |
54
54
  | `.github/workflows/pi-upstream-sync.yml` | Nightly at `03:23 UTC`: when npm publishes a newer Pi than the pin that no closed proposal skipped, proposes the upgrade as a draft pull request with the vendored copies that follow upstream merged, the kept copies reported with their upstream delta, the ledger, headers, inventories, public API and feature baselines, startup graph, and parity evidence regenerated, and every gate verdict (passed, failed, or blocked by conflict markers) and review item in the body; never merges and never replaces a proposal a human has continued |
55
55
  | `.github/workflows/nightly-regression-triage.yml` | After every completed `Full regression` run on `develop` or scheduled `Release` validation: judges the startup budget across the three most recent runs and, after a failure or a persistent overrun, opens `fix/nightly-regression-<date>` as a draft pull request carrying the failed commands per lane, their tests, a bounded log excerpt, the `develop` commits since the last green run, and an OpenSpec fix scaffold, or refreshes the open candidate with the same failed scope set; re-runs nothing, never writes `develop`, never merges |
@@ -195,43 +195,50 @@ work.
195
195
  From the repository root on clean `develop` matching `origin/develop`:
196
196
 
197
197
  ```sh
198
- npm run release -- patch # 0.1.8-dev -> 0.1.8; already-stable 0.1.8 -> 0.1.9
198
+ npm run release -- patch # 0.1.8-dev -> 0.1.8
199
199
  npm run release -- minor # 0.1.8-dev -> 0.2.0
200
200
  npm run release -- major # 0.1.8-dev -> 1.0.0
201
201
  npm run release -- 0.4.0 # exact stable target
202
202
  ```
203
203
 
204
204
  A target is required: `npm run release` alone is a mutation-free usage error.
205
- `patch` preserves prerelease-aware semantics, including `0.1.8-dev.123 -> 0.1.8`.
205
+ `patch` promotes the open prerelease, `0.1.8-dev -> 0.1.8`. `develop` must declare
206
+ exactly one open `x.y.z-dev` version; a stable or numbered version there is refused.
206
207
  The command reports its source, stable target, and prospective reopening before
207
- preparing anything.
208
-
209
- 1. The stable-version edit is committed in an owned detached worktree beneath
210
- `.worktrees/`. Only this package's manifest and root lockfile version change.
211
- 2. Follow the printed PR URL, wait for required CI, perform local validation, and
212
- **merge manually after acceptance**. The helper does not merge PRs or enable
213
- auto-merge. It polls for actual merge with a bounded 30-minute wait.
214
- 3. The helper verifies the merged version and source SHA against authoritative
215
- develop, then explicitly dispatches stable publication for that exact source.
216
- A changed source is an error, not permission to substitute a newer commit.
217
- 4. Only after verified publication of `0.1.8` does it prepare a separate PR for
218
- `0.1.9-dev`. Validate and manually merge that PR as well. Until then the helper
219
- reports development reopening as incomplete.
208
+ touching anything, and the stable version is never committed to `develop`.
209
+
210
+ 1. The helper checks that the registry and `v<version>` tag do not already hold the
211
+ target, re-reads authoritative `develop`, and explicitly dispatches stable
212
+ publication for that exact source with the stable version in the request. A changed source is
213
+ an error, not permission to substitute a newer commit.
214
+ 2. The workflow stamps the requested version on the checked-out source
215
+ (`npm version <x.y.z> --no-git-tag-version`) before packing, so the tarball
216
+ declares `0.1.8` while the tagged commit still declares `0.1.8-dev`. Everything
217
+ else about the package is byte-identical to that commit's tree; `git checkout
218
+ v0.1.8 && npm version 0.1.8 --no-git-tag-version && npm pack` reproduces it.
219
+ 3. Only after verified publication of `0.1.8` does the helper commit `0.1.9-dev`
220
+ in an owned detached worktree beneath `.worktrees/` (only this package's manifest
221
+ and root lockfile version change), open the one version PR, and wait for you to
222
+ **merge it manually** with a bounded 30-minute poll. The helper never merges
223
+ PRs or enables auto-merge. Until that merge the helper reports development
224
+ reopening as incomplete, and previews cannot be published from a `develop`
225
+ whose `-dev` version sorts below the stable release.
220
226
 
221
227
  Closed PRs, timeout, cancellation, and query failures retain identifiable phase
222
228
  work for inspection. Conflicting existing branches/PRs are not overwritten;
223
- matching pending PRs can be observed again without replacing them. Worktrees
229
+ a matching pending reopening PR is observed rather than replaced. Worktrees
224
230
  retained by an earlier attempt are not removed by a later invocation. Cleanup
225
231
  only removes clean, owned, confirmed-merged phase worktrees and unchanged remote
226
232
  phase branches. The caller is never hard-reset: a final fast-forward is attempted
227
233
  only when its branch, original HEAD, and cleanliness remain unchanged. Otherwise
228
234
  preserve local work and synchronize manually with the reported remote state.
229
235
 
230
- Stable publication builds the process guardian on all supported platforms, packs
231
- once, runs the complete suite against those exact bytes on Windows, Linux, and
232
- macOS, publishes to npm `latest` with provenance from the `npm-publish`
233
- environment, and then writes `vx.y.z`, records the GitHub Release, and fast-forwards
234
- `master`. A push of the stable version does not publish it.
236
+ Stable publication builds the process guardian on all supported platforms, stamps
237
+ the version, packs once, runs the complete suite against those exact bytes on
238
+ Windows, Linux, and macOS, publishes to npm `latest` with provenance from the
239
+ `npm-publish` environment, and then writes `vx.y.z` on the source commit, records
240
+ the GitHub Release, and fast-forwards `master`. A push of the stable version does
241
+ not publish it, and no automation ever pushes one.
235
242
 
236
243
  Rules that do not bend:
237
244
 
@@ -257,7 +264,8 @@ Rules that do not bend:
257
264
  - **Nightly documentation review fails:** inspect the reported paths and rules, identify the introducing merge from the nightly interval, and repair the invariant before unrelated work proceeds.
258
265
  - **Development publication fails:** fix the cause and rerun `npm run develop`; an npm version that already exists is never overwritten.
259
266
  - **Registry verification times out:** a `has not propagated` failure after a successful `npm publish` means npm is still ingesting the upload; it warns that a provenance-signed package "may take a few minutes" and the publisher polls for ten minutes. Confirm the version and its shasum on `https://registry.npmjs.org/<name>/<version>`, then rerun the failed jobs: the final registry check finds the exact bytes, skips `npm publish`, and verification passes. A digest or tag mismatch is not a timeout and is never repaired by rerunning.
260
- - **Stable preparation stops before dispatch:** inspect the reported version PR/worktree. After preserving work, an exact matching pending PR can be observed again. If develop already declares the prepared stable version, use its exact target (for example `npm run release -- 0.1.8`) only after verifying that source's merged PR and confirming the registry/tag guards still permit it. Do not use `patch` from stable develop to retry the same version: that deliberately selects the next patch.
267
+ - **Stable publication fails or is uncertain:** no reopening PR was prepared and `develop` still declares the open `-dev` version. Inspect the workflow run, npm, and the `v<version>` tag. When nothing was published, fix the cause and rerun the same target; the registry and tag guards refuse a version that already exists.
268
+ - **Stable is published but reopening stopped:** the helper reports the reopening PR or retained worktree. Merge the pending `chore/release-<x.y.z>-dev` PR by hand once its CI passes, or repair the branch and open the PR yourself; never rerun the release for the published version.
261
269
  - **Stable publication fails or is uncertain:** inspect the workflow, registry version/digest, tag, and release before choosing recovery. No reopening PR is prepared. Never republish immutable bytes or move a release tag.
262
270
  - **Stable publication succeeded but reopening stops:** the stable version is already published. Inspect and finish the reported next-development PR manually; do not repeat stable publication. If no reopening PR was created, prepare the next-development version through a separately validated manual PR after inspecting remote state.
263
271
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@timurproko/a1",
3
- "version": "0.1.8-dev.518",
3
+ "version": "0.1.8-dev.521",
4
4
  "description": "Standalone terminal workspace for supervised native and managed agents",
5
5
  "type": "module",
6
6
  "privateLaunchContract": "neutral-launch-v1",