@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 +20 -19
- package/dist/integrations/pi/components/skills-dialog.js +15 -5
- package/dist/native/darwin-arm64/manifest.json +1 -1
- package/dist/native/linux-x64/manifest.json +1 -1
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/native/win32-x64/process-guardian.exe +0 -0
- package/docs/ci-release-runbook.md +31 -23
- package/package.json +1 -1
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
|
|
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`
|
|
241
|
-
`patch` promotes the current prerelease rather
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
Only after confirmed publication of `0.1.8` does the command prepare the
|
|
252
|
-
`0.1.9-dev
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
the
|
|
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
|
|
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
|
|
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
|
|
106
|
-
this.#listContainer.addChild(new
|
|
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-
|
|
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-
|
|
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-
|
|
8
|
+
"builtAt": "2026-09-19T18:14:28.078Z",
|
|
9
9
|
"artifact": {
|
|
10
10
|
"filename": "process-guardian.exe",
|
|
11
|
-
"sha256": "
|
|
11
|
+
"sha256": "b9d22d7d10dfa55e8a4221500376db60f16164267885533c916a6a42b1db09b4",
|
|
12
12
|
"size": 177664
|
|
13
13
|
},
|
|
14
14
|
"provenance": {
|
|
Binary file
|
|
@@ -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 -- ...` |
|
|
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
|
|
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`
|
|
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
|
-
|
|
208
|
-
|
|
209
|
-
1. The
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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
|
|
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,
|
|
231
|
-
once, runs the complete suite against those exact bytes on
|
|
232
|
-
macOS, publishes to npm `latest` with provenance from the
|
|
233
|
-
environment, and then writes `vx.y.z
|
|
234
|
-
`master`. A push of the stable version does
|
|
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
|
|
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