@timurproko/a1 0.1.1-dev.5 → 0.1.1-dev.7
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 +32 -9
- package/bin/a1-guardian.js +22 -0
- package/bin/a1-ui.js +7 -4
- package/dist/native/darwin-arm64/a1-process-guardian +0 -0
- package/dist/native/darwin-arm64/manifest.json +20 -0
- package/dist/native/linux-x64/a1-process-guardian +0 -0
- package/dist/native/linux-x64/manifest.json +20 -0
- package/dist/native/win32-x64/a1-process-guardian.exe +0 -0
- package/dist/native/win32-x64/manifest.json +20 -0
- package/dist/src/composition/index.d.ts +26 -0
- package/dist/src/composition/index.js +88 -2
- package/dist/src/features/launch/runtime-selection.d.ts +2 -1
- package/dist/src/features/launch/runtime-selection.js +2 -2
- package/dist/src/features/owned-ui/index.d.ts +1 -0
- package/dist/src/features/owned-ui/index.js +1 -0
- package/dist/src/features/owned-ui/run.d.ts +6 -0
- package/dist/src/features/owned-ui/run.js +3 -1
- package/dist/src/features/owned-ui/settings-app.d.ts +22 -0
- package/dist/src/features/owned-ui/settings-app.js +631 -0
- package/dist/src/foundation/agent-engine-contracts/domain.d.ts +26 -0
- package/dist/src/foundation/launch-guardian/index.d.ts +1 -0
- package/dist/src/foundation/launch-guardian/index.js +1 -0
- package/dist/src/foundation/launch-guardian/main.d.ts +31 -0
- package/dist/src/foundation/launch-guardian/main.js +165 -0
- package/dist/src/foundation/lifecycle/commands.d.ts +40 -0
- package/dist/src/foundation/lifecycle/commands.js +1 -0
- package/dist/src/foundation/lifecycle/index.d.ts +2 -0
- package/dist/src/foundation/lifecycle/index.js +2 -0
- package/dist/src/foundation/lifecycle/launch-instance.d.ts +46 -0
- package/dist/src/foundation/lifecycle/launch-instance.js +134 -0
- package/dist/src/foundation/lifecycle/model.d.ts +6 -42
- package/dist/src/foundation/owned-ui-settings/declarations.d.ts +13 -0
- package/dist/src/foundation/owned-ui-settings/declarations.js +39 -0
- package/dist/src/foundation/owned-ui-settings/index.d.ts +6 -0
- package/dist/src/foundation/owned-ui-settings/index.js +6 -0
- package/dist/src/foundation/owned-ui-settings/migrations.d.ts +13 -0
- package/dist/src/foundation/owned-ui-settings/migrations.js +28 -0
- package/dist/src/foundation/owned-ui-settings/resolution.d.ts +45 -0
- package/dist/src/foundation/owned-ui-settings/resolution.js +147 -0
- package/dist/src/foundation/owned-ui-settings/sections.d.ts +70 -0
- package/dist/src/foundation/owned-ui-settings/sections.js +93 -0
- package/dist/src/foundation/owned-ui-settings/session.d.ts +44 -0
- package/dist/src/foundation/owned-ui-settings/session.js +145 -0
- package/dist/src/foundation/owned-ui-settings/store.d.ts +28 -0
- package/dist/src/foundation/owned-ui-settings/store.js +90 -0
- package/dist/src/foundation/pi-component-adapter/index.d.ts +1 -0
- package/dist/src/foundation/pi-component-adapter/index.js +1 -0
- package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.d.ts +9 -1
- package/dist/src/foundation/pi-component-adapter/shell-selectors-dialogs.js +10 -8
- package/dist/src/foundation/pi-engine-adapter/adapter.d.ts +12 -3
- package/dist/src/foundation/pi-engine-adapter/adapter.js +73 -7
- package/dist/src/foundation/pi-engine-adapter/pi-settings-metadata.json +374 -0
- package/dist/src/foundation/pi-engine-adapter/public-main-entry.js +10 -1
- package/dist/src/foundation/pi-engine-adapter/settings-integration.d.ts +42 -2
- package/dist/src/foundation/pi-engine-adapter/settings-integration.js +185 -24
- package/dist/src/foundation/pi-engine-adapter/workflows.d.ts +9 -0
- package/dist/src/foundation/pi-owned-ui-integration/index.d.ts +1 -0
- package/dist/src/foundation/pi-owned-ui-integration/index.js +1 -0
- package/dist/src/foundation/pi-owned-ui-integration/route-host.d.ts +29 -0
- package/dist/src/foundation/pi-owned-ui-integration/route-host.js +1 -0
- package/dist/src/foundation/pi-owned-ui-integration/session-shell.d.ts +6 -0
- package/dist/src/foundation/pi-owned-ui-integration/session-shell.js +71 -1
- package/dist/src/foundation/pi-tui-runtime-adapter/adapter.d.ts +6 -0
- package/dist/src/foundation/pi-tui-runtime-adapter/adapter.js +9 -0
- package/dist/src/foundation/process-containment/artifact.d.ts +1 -0
- package/dist/src/foundation/process-containment/artifact.js +34 -0
- package/dist/src/foundation/process-containment/contracts.d.ts +31 -0
- package/dist/src/foundation/process-containment/contracts.js +35 -0
- package/dist/src/foundation/process-containment/index.d.ts +5 -0
- package/dist/src/foundation/process-containment/index.js +5 -0
- package/dist/src/foundation/process-containment/linux-process-inspector.d.ts +6 -0
- package/dist/src/foundation/process-containment/linux-process-inspector.js +26 -0
- package/dist/src/foundation/process-containment/native-guardian-containment.d.ts +16 -0
- package/dist/src/foundation/process-containment/native-guardian-containment.js +139 -0
- package/dist/src/foundation/process-containment/windows-process-inspector.d.ts +17 -0
- package/dist/src/foundation/process-containment/windows-process-inspector.js +53 -0
- package/dist/src/foundation/protocol/client.d.ts +2 -1
- package/dist/src/foundation/protocol/client.js +3 -0
- package/dist/src/foundation/protocol/messages.d.ts +5 -5
- package/dist/src/foundation/protocol/messages.js +1 -1
- package/dist/src/foundation/release/bootstrap.js +29 -10
- package/dist/src/foundation/release/cohort-selection.js +3 -3
- package/dist/src/foundation/release/cohort-state.d.ts +3 -2
- package/dist/src/foundation/release/process-cleanup.d.ts +1 -1
- package/dist/src/foundation/release/process-cleanup.js +2 -2
- package/dist/src/foundation/release/update.js +2 -2
- package/dist/src/foundation/storage/control-store.d.ts +8 -7
- package/dist/src/foundation/storage/control-store.js +105 -55
- package/dist/src/foundation/supervision/server.d.ts +4 -2
- package/dist/src/foundation/supervision/server.js +254 -87
- package/dist/src/foundation/transparent-terminal/command-resolution.js +6 -3
- package/dist/src/foundation/transparent-terminal/foreground-broker.d.ts +5 -13
- package/dist/src/foundation/transparent-terminal/foreground-broker.js +11 -68
- package/dist/src/foundation/transparent-terminal/main.js +1 -8
- package/dist/src/foundation/ui-apps/contracts.d.ts +42 -0
- package/dist/src/foundation/ui-apps/contracts.js +12 -0
- package/dist/src/foundation/ui-apps/host.d.ts +42 -0
- package/dist/src/foundation/ui-apps/host.js +152 -0
- package/dist/src/foundation/ui-apps/index.d.ts +3 -0
- package/dist/src/foundation/ui-apps/index.js +3 -0
- package/dist/src/foundation/ui-apps/registry.d.ts +11 -0
- package/dist/src/foundation/ui-apps/registry.js +32 -0
- package/dist/src/foundation/ui-components/dialog-panel.d.ts +36 -0
- package/dist/src/foundation/ui-components/dialog-panel.js +47 -0
- package/dist/src/foundation/ui-components/frame.d.ts +21 -0
- package/dist/src/foundation/ui-components/frame.js +54 -0
- package/dist/src/foundation/ui-components/index.d.ts +18 -0
- package/dist/src/foundation/ui-components/index.js +18 -0
- package/dist/src/foundation/ui-components/label.d.ts +8 -0
- package/dist/src/foundation/ui-components/label.js +36 -0
- package/dist/src/foundation/ui-components/line-input.d.ts +74 -0
- package/dist/src/foundation/ui-components/line-input.js +245 -0
- package/dist/src/foundation/ui-components/list-block.d.ts +66 -0
- package/dist/src/foundation/ui-components/list-block.js +176 -0
- package/dist/src/foundation/ui-components/list-view.d.ts +66 -0
- package/dist/src/foundation/ui-components/list-view.js +76 -0
- package/dist/src/foundation/ui-components/mouse.d.ts +15 -0
- package/dist/src/foundation/ui-components/mouse.js +46 -0
- package/dist/src/foundation/ui-components/pane.d.ts +33 -0
- package/dist/src/foundation/ui-components/pane.js +7 -0
- package/dist/src/foundation/ui-components/revision.d.ts +35 -0
- package/dist/src/foundation/ui-components/revision.js +79 -0
- package/dist/src/foundation/ui-components/scrollbar.d.ts +62 -0
- package/dist/src/foundation/ui-components/scrollbar.js +102 -0
- package/dist/src/foundation/ui-components/shortcuts.d.ts +57 -0
- package/dist/src/foundation/ui-components/shortcuts.js +81 -0
- package/dist/src/foundation/ui-components/spans.d.ts +7 -0
- package/dist/src/foundation/ui-components/spans.js +59 -0
- package/dist/src/foundation/ui-components/status-line.d.ts +16 -0
- package/dist/src/foundation/ui-components/status-line.js +14 -0
- package/dist/src/foundation/ui-components/stepper.d.ts +24 -0
- package/dist/src/foundation/ui-components/stepper.js +33 -0
- package/dist/src/foundation/ui-components/surface.d.ts +20 -0
- package/dist/src/foundation/ui-components/surface.js +38 -0
- package/dist/src/foundation/ui-components/text.d.ts +24 -0
- package/dist/src/foundation/ui-components/text.js +123 -0
- package/dist/src/foundation/ui-components/theme.d.ts +17 -0
- package/dist/src/foundation/ui-components/theme.js +12 -0
- package/dist/src/foundation/ui-components/value-menu.d.ts +41 -0
- package/dist/src/foundation/ui-components/value-menu.js +33 -0
- package/dist/src/product-identity.d.ts +2 -2
- package/dist/src/product-identity.js +2 -1
- package/dist/src/product-identity.json +3 -0
- package/docs/architecture/boundaries.md +31 -13
- package/docs/architecture/process-guardian-provenance.md +26 -0
- package/docs/architecture/toolchain.md +6 -0
- package/docs/architecture/ui-reference-provenance.md +50 -0
- package/docs/ci-release-runbook.md +38 -42
- package/docs/features/launch-profiles.md +7 -1
- package/docs/manual-launch-instance-acceptance.md +66 -0
- package/package.json +11 -12
|
@@ -1,63 +1,59 @@
|
|
|
1
1
|
# CI and release operations
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
GitHub Actions is the only automation platform. Two required checks protect the branches:
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
Repository rules use job display names, not internal job keys. Keep these names stable:
|
|
8
|
-
|
|
9
|
-
| Protected flow | Required check | Producer |
|
|
5
|
+
| Branch | Required check | Produced by |
|
|
10
6
|
| --- | --- | --- |
|
|
11
|
-
|
|
|
12
|
-
|
|
|
13
|
-
| Promotion into `master` | `Stable candidate required` | `.github/workflows/certify-stable.yml` |
|
|
7
|
+
| `develop` | `Development validation required` | `.github/workflows/ci.yml` |
|
|
8
|
+
| `master` | `Stable candidate required` | `.github/workflows/certify-stable.yml` |
|
|
14
9
|
|
|
15
|
-
|
|
10
|
+
These are job display names. If you rename one, update the ruleset definition, this runbook, and the live ruleset together.
|
|
16
11
|
|
|
17
|
-
##
|
|
12
|
+
## How much validation runs when
|
|
18
13
|
|
|
19
|
-
|
|
14
|
+
| Change | Validation |
|
|
15
|
+
| --- | --- |
|
|
16
|
+
| Docs or specs only | OpenSpec strict lint, nothing else |
|
|
17
|
+
| Any code PR into `develop` | Fast tier: typecheck, architecture checks, unit/contract tests |
|
|
18
|
+
| Preview candidate (`next`) | Fast tier + package gates: content, clean install, dependency policy |
|
|
19
|
+
| Stable candidate (`latest`) | Complete suite on Windows, Linux, and macOS + physical evidence |
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
Need more coverage for a risky preview? Dispatch the candidate with `full: true`, or run the **Full regression** workflow on demand.
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
## Publish a preview to npm `next`
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
1. Make sure `Development validation required` is green on the `develop` tip.
|
|
26
|
+
2. Dispatch **Build npm next candidate** with the exact commit and `confirm_candidate=build-uncertified-next-candidate`.
|
|
27
|
+
3. Check the resulting `candidate-evidence.json`: gates passed, package integrity matches.
|
|
28
|
+
4. Approve the `npm-next` environment and dispatch **Publish npm next** with the candidate run id.
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
2. Dispatch **Build npm next candidate** on `develop` with the exact source commit, a trusted ancestor base commit, and `confirm_candidate=build-uncertified-next-candidate`. Use `full: true` whenever ordinary affected coverage is not sufficient for the release decision.
|
|
29
|
-
3. Review `candidate-evidence.json`, selected scopes, gate outcomes, package integrity, and source tree. The candidate remains explicitly stable-ineligible.
|
|
30
|
-
4. Approve the protected `npm-next` environment and dispatch **Publish npm next** with the successful candidate run id and `confirm_next=publish-certified-next`.
|
|
31
|
-
5. The publisher downloads and verifies the certified tarball, then publishes those bytes without checkout, installation, build, or tests. Verify its registry digest and `next` tag result.
|
|
30
|
+
The publisher uploads the exact validated tarball — it never rebuilds. Candidates expire after 14 days; an expired or mismatched artifact means building a new candidate, not patching the old one.
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
## Publish a stable release to npm `latest`
|
|
34
33
|
|
|
35
|
-
|
|
34
|
+
1. Commit the final version to `develop` (clean tree, version not yet on the registry).
|
|
35
|
+
2. Dispatch **Build stable candidate** — it packs once and validates the same bytes on all three platforms.
|
|
36
|
+
3. Dispatch **Certify stable physical platforms** on the dedicated isolated workers (they set `PHYSICAL_WORKER_ISOLATED=true` and run under the `stable-physical` environment). Never run physical host probes on a developer workstation.
|
|
37
|
+
4. Dispatch **Certify stable candidate** with both run ids. `Stable candidate required` passes only when every verdict binds the same commit, version, and digest.
|
|
38
|
+
5. Merge that exact commit to `master`, tag it `v<version>`, and dispatch **Publish npm stable**, then approve `npm-stable`.
|
|
36
39
|
|
|
37
|
-
|
|
38
|
-
2. Dispatch **Build stable candidate** on that exact `develop` commit with `confirm_candidate=build-stable-candidate`. It packs once on Windows and fans the same verified digest to Windows, Linux, and macOS complete automated validation and clean installation.
|
|
39
|
-
3. Review the `Stable automated candidate` artifact. It is not stable-eligible; physical evidence is still required.
|
|
40
|
-
4. On dedicated isolated workers only, dispatch **Certify stable physical platforms** for the same source and automated-candidate run with `confirm_isolated=run-isolated-physical-certification`. Workers must carry `self-hosted`, `a1-physical`, and platform-specific labels, set `PHYSICAL_WORKER_ISOLATED=true`, and be protected by the `stable-physical` environment. Never run physical host probes on a developer workstation or ordinary hosted runner.
|
|
41
|
-
5. Dispatch **Certify stable candidate** with the successful automated and physical run ids and `confirm_certification=certify-stable-candidate`. `Stable candidate required` passes only when all three automated and all three isolated physical verdicts bind the same commit, tree, version, integrity, and shasum.
|
|
42
|
-
6. Promote that exact commit to `master` without source or package changes and create `v<version>` at the same commit. The protected `master` rule requires the existing `Stable candidate required` check on that commit.
|
|
43
|
-
7. Dispatch **Publish npm stable** on the tag with the certification run id and `confirm_stable=publish-certified-stable-latest`, then approve `npm-stable`. It requires the current `master` and tag to equal the certified source, confirms the version is unpublished, publishes the exact tarball to `latest` with provenance, and verifies registry bytes.
|
|
40
|
+
Stable artifacts expire after 30 days. The same rule as previews applies: publication still requires exact certified bytes. Never upload locally rebuilt bytes, and never route around certification by rebuilding inside a publisher.
|
|
44
41
|
|
|
45
|
-
|
|
42
|
+
## When something fails
|
|
46
43
|
|
|
47
|
-
|
|
44
|
+
- **PR validation fails:** fix the code and push. Do not mark a failed tier optional.
|
|
45
|
+
- **Candidate validation fails:** discard the candidate and build a new one after the fix.
|
|
46
|
+
- **Physical worker fails:** fix or replace the worker, then rerun the full physical evidence for the candidate.
|
|
47
|
+
- **Publisher fails before npm accepted the bytes:** diagnose and retry with the same candidate while it is unexpired and the version is still unpublished.
|
|
48
|
+
- **Publisher is uncertain after npm accepted the bytes:** stop. Check the registry for the version, tag, and digest. Repair a dist-tag only as a separate reviewed operation — never republish.
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
- **Candidate validation failure:** discard the candidate. Any source change, package change, or uncertain evidence requires a new candidate run.
|
|
51
|
-
- **Physical failure:** quarantine the worker result, fix or replace the isolated worker, and rerun all evidence needed for one exact package. A hosted matrix cannot substitute for physical evidence.
|
|
52
|
-
- **Approval or artifact expiry:** create and certify a new candidate. Never upload locally rebuilt bytes.
|
|
53
|
-
- **Publisher failure before npm accepts bytes:** retain the candidate and diagnose identity, permissions, registry, or provenance. Retry only with the same candidate run if the registry still proves the version unpublished and the artifact has not expired.
|
|
54
|
-
- **Publisher uncertainty after npm accepts bytes:** do not republish or rebuild. Query the registry for version, dist-tag, integrity, and shasum; repair a dist-tag only through a separately reviewed registry operation.
|
|
55
|
-
- **Partial stable certification:** stable eligibility remains false. Missing, duplicated, failed, non-isolated, or mismatched platform evidence fails closed.
|
|
50
|
+
## Why the rulesets look the way they do
|
|
56
51
|
|
|
57
|
-
|
|
52
|
+
One person maintains this repository, and GitHub does not let a PR author approve their own PR. Requiring even one approval would therefore deadlock the authorized solo-maintainer path — no PR could ever merge. So both rulesets require a pull request, a green required check, and resolved review threads, but set required approving reviews to zero.
|
|
58
53
|
|
|
59
|
-
|
|
54
|
+
- `develop` does not require the branch to be up to date: once a PR is approved and green, it merges even if unrelated work landed first — no re-validation loop.
|
|
55
|
+
- `master` does require it: a stable promotion always validates the exact final state.
|
|
60
56
|
|
|
61
|
-
If a
|
|
57
|
+
If a second maintainer joins, raise the approval count. Do not add a direct-push bypass as a shortcut, and never weaken the force-push or deletion protection.
|
|
62
58
|
|
|
63
|
-
|
|
59
|
+
Ruleset mutation is a separate administrative operation: run `node scripts/check-github-rulesets.mjs` to see the diff, and apply only when a maintainer explicitly confirms with `--apply --confirm apply-a1-ci-rulesets`.
|
|
@@ -43,7 +43,13 @@ Run Pi’s normal `/login` independently in each profile that needs stored authe
|
|
|
43
43
|
|
|
44
44
|
Bare `a1` runs the A1-owned full-viewport TUI over public Pi engine, component, and terminal APIs. A1 owns composition, input routing, modal focus, selection behavior, scrolling, and restoration without inserting a PTY or terminal-byte relay. Its default presentation is pinned to vanilla Pi parity; structured tabs and A1-specific visual customization are not enabled.
|
|
45
45
|
|
|
46
|
-
`a1 pi` and `a1 sandbox` retain transparent direct attachment. In those profiles,
|
|
46
|
+
`a1 pi` and `a1 sandbox` retain transparent direct attachment. In those profiles, untouched Pi and the physical terminal own rendering, input, selection, clipboard, scrollback, and terminal modes; A1 owns only per-invocation process containment and lifecycle evidence.
|
|
47
|
+
|
|
48
|
+
## Concurrent instance lifecycle
|
|
49
|
+
|
|
50
|
+
Every `a1`, `a1 pi`, and `a1 sandbox` invocation receives a unique non-detachable launch instance. There is no product-wide foreground slot: the same profile or any mixture of profiles may run concurrently in separate terminals. Profile files remain shared according to the selected profile root, while process ownership, lifecycle outcome, and cleanup remain scoped to the command that launched them.
|
|
51
|
+
|
|
52
|
+
Normal root exit, terminal closure, guardian failure, and verified update shutdown all close the instance's remaining process tree within bounded graceful and forced deadlines. Closing one instance never closes another. A control supervisor may remain idle afterward, but closed instances leave no UI, Pi, extension daemon, agent worker, tool, or descendant process. Ordinary recovery never asks users to kill a PID or delete the control database.
|
|
47
53
|
|
|
48
54
|
## Recovery and comparison
|
|
49
55
|
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Launch-instance exact-artifact acceptance
|
|
2
|
+
|
|
3
|
+
Run this checklist only against a packaged candidate on a user-controlled terminal or isolated disposable Windows worker. Do not automate launching, focusing, driving, or closing terminal windows on an active workstation.
|
|
4
|
+
|
|
5
|
+
## Artifact identity
|
|
6
|
+
|
|
7
|
+
Record before testing:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
A1 release ID:
|
|
11
|
+
A1 package version:
|
|
12
|
+
Source commit:
|
|
13
|
+
Candidate tarball SHA-256/integrity:
|
|
14
|
+
Process guardian target: win32-x64
|
|
15
|
+
Process guardian crate version:
|
|
16
|
+
Process guardian protocol version:
|
|
17
|
+
Process guardian SHA-256:
|
|
18
|
+
Process guardian signature/attestation status:
|
|
19
|
+
Machine/Windows/terminal versions:
|
|
20
|
+
Tester or worker attestation:
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The process guardian values must match `dist/native/win32-x64/manifest.json` inside the exact installed candidate. Stop if the file is missing, mismatched, altered, or reports an unsupported capability.
|
|
24
|
+
|
|
25
|
+
## Concurrent launch matrix
|
|
26
|
+
|
|
27
|
+
Open four independent terminal tabs and launch:
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
Terminal 1: a1
|
|
31
|
+
Terminal 2: a1
|
|
32
|
+
Terminal 3: a1 pi
|
|
33
|
+
Terminal 4: a1 sandbox
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Confirm all four become usable without a global foreground-lease error. Record each launch-instance ID from supervisor metadata and verify all four IDs are distinct.
|
|
37
|
+
|
|
38
|
+
## Isolated closure
|
|
39
|
+
|
|
40
|
+
1. Exit Terminal 3 normally. Confirm only its vanilla Pi tree exits; Terminals 1, 2, and 4 remain usable.
|
|
41
|
+
2. Close the Terminal 4 tab/window without exiting Pi first. Confirm its sandbox Pi, extension daemons, agent workers, tools, and descendants disappear within the bounded deadline while both bare-A1 terminals remain usable.
|
|
42
|
+
3. Exit Terminal 1 normally after causing a fixture extension to create a child and grandchild. Confirm the complete tree disappears and Terminal 2 remains usable.
|
|
43
|
+
4. Force the Terminal 2 launch guardian to fail on the isolated worker. Confirm Job Object kill-on-close removes its root and descendants and leaves unrelated fixture processes alive.
|
|
44
|
+
|
|
45
|
+
Record root, child, and grandchild native identities before each close and the observed terminal outcome afterward. Do not substitute manual PID termination for a failed cleanup.
|
|
46
|
+
|
|
47
|
+
## Stale-state recovery
|
|
48
|
+
|
|
49
|
+
Using isolated control directories, install a version-4 fixture database containing one requested or active legacy foreground lease whose former PID is dead. Run `a1 sandbox` once. Confirm that the same invocation migrates the row to historical interrupted state and launches normally without restarting the supervisor, deleting state, or discovering a PID.
|
|
50
|
+
|
|
51
|
+
Repeat with an ownership-uncertain fixture process. Confirm a new independent launch still starts and the uncertain unrelated process is not terminated.
|
|
52
|
+
|
|
53
|
+
## Update fan-out
|
|
54
|
+
|
|
55
|
+
With at least three mixed-profile instances active, run the candidate's update-shutdown fixture. Confirm every instance receives one stop intent, each complete process tree closes, and cohort replacement occurs only after all verified terminal outcomes. A delayed or uncertain instance must prevent unsafe replacement without causing another instance to be reported idle prematurely.
|
|
56
|
+
|
|
57
|
+
## Verdict
|
|
58
|
+
|
|
59
|
+
Record one of:
|
|
60
|
+
|
|
61
|
+
```text
|
|
62
|
+
ACCEPTED — exact package and guardian digests above passed every scenario
|
|
63
|
+
REJECTED — include failed step, observed process identities, outcomes, and diagnostics
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Acceptance applies only to the exact package and process-guardian bytes recorded above. It does not certify macOS, Linux, composed terminals, detached agents, or an operating-system security sandbox.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timurproko/a1",
|
|
3
|
-
"version": "0.1.1-dev.
|
|
3
|
+
"version": "0.1.1-dev.7",
|
|
4
4
|
"description": "Standalone terminal workspace for supervised native and managed agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.13.0",
|
|
@@ -19,20 +19,17 @@
|
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
21
|
"clean": "node scripts/clean.mjs",
|
|
22
|
-
"build": "npm run clean && tsc -p tsconfig.build.json",
|
|
22
|
+
"build": "npm run clean && tsc -p tsconfig.build.json && node scripts/build-process-guardian.mjs",
|
|
23
|
+
"build:process-guardian": "node scripts/build-process-guardian.mjs",
|
|
23
24
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
24
|
-
"check:architecture": "node scripts/check-architecture.mjs && node scripts/product-identifier-policy.mjs --check && node scripts/check-product-identity-boundaries.mjs && node scripts/check-package-identity.mjs && node scripts/check-pinned-pi-source-ledger.mjs && node scripts/check-terminal-host-provenance.mjs
|
|
25
|
+
"check:architecture": "node scripts/check-architecture.mjs && node scripts/product-identifier-policy.mjs --check && node scripts/check-product-identity-boundaries.mjs && node scripts/check-package-identity.mjs && node scripts/check-pinned-pi-source-ledger.mjs && node scripts/check-terminal-host-provenance.mjs",
|
|
25
26
|
"check:customization-ready": "node scripts/check-owned-ui-customization-prerequisites.mjs",
|
|
26
27
|
"check:deprecated": "node scripts/check-deprecated-dependencies.mjs",
|
|
27
28
|
"branches:prune": "node scripts/prune-merged-branches.mjs",
|
|
28
|
-
"
|
|
29
|
-
"check": "npm run test:release",
|
|
30
|
-
"validate:agent": "npm run check",
|
|
29
|
+
"check": "npm run test:fast",
|
|
31
30
|
"publish:next": "tsx scripts/publish-next.ts",
|
|
32
31
|
"test": "npm run test:fast",
|
|
33
|
-
"test:fast": "node scripts/run-validation-tier.mjs
|
|
34
|
-
"test:unit": "node scripts/run-validation-tier.mjs fast",
|
|
35
|
-
"test:integration": "node scripts/run-validation-tier.mjs launch-integration pi-engine-conformance release-update structured-runtime-integration",
|
|
32
|
+
"test:fast": "node scripts/run-validation-tier.mjs typecheck fast",
|
|
36
33
|
"test:scope": "node scripts/run-validation-tier.mjs",
|
|
37
34
|
"test:full": "node scripts/run-validation-tier.mjs full-release",
|
|
38
35
|
"test:release": "node scripts/run-release-gates.mjs",
|
|
@@ -40,14 +37,16 @@
|
|
|
40
37
|
"test:pi-terminal-parity": "npm run build --silent && node scripts/run-pi-terminal-parity.mjs",
|
|
41
38
|
"test:pi-engine-conformance": "vitest run test/foundation/pi-engine-adapter/conformance.test.ts test/foundation/pi-engine-adapter/runtime-integration.test.ts test/foundation/pi-engine-adapter/session-integration.test.ts",
|
|
42
39
|
"report:pi-engine-conformance": "npm run build --silent && node scripts/run-pi-engine-conformance.mjs",
|
|
43
|
-
"sync:pi-ui": "npm run update:pi-component-parity && npm run update:pi-event-frame-parity",
|
|
40
|
+
"sync:pi-ui": "npm run update:pi-component-parity && npm run update:pi-event-frame-parity && npm run update:pi-settings-metadata",
|
|
44
41
|
"update:pi-component-parity": "tsx scripts/update-pi-component-parity.ts",
|
|
45
42
|
"update:pi-event-frame-parity": "tsx scripts/update-pi-event-frame-parity.ts",
|
|
46
43
|
"proof:terminal-host": "node scripts/run-terminal-host.mjs",
|
|
47
44
|
"start": "npm run build && node scripts/start-local.mjs",
|
|
48
45
|
"prepack": "node scripts/prepack-gate.mjs",
|
|
49
|
-
"prepublishOnly": "npm run
|
|
50
|
-
"prepare": "npm run build"
|
|
46
|
+
"prepublishOnly": "npm run test:release",
|
|
47
|
+
"prepare": "npm run build",
|
|
48
|
+
"update:pi-settings-metadata": "node scripts/update-pi-settings-metadata.mjs",
|
|
49
|
+
"clean:worktrees": "node scripts/clean-worktrees.mjs"
|
|
51
50
|
},
|
|
52
51
|
"dependencies": {
|
|
53
52
|
"@earendil-works/pi-coding-agent": "0.84.2",
|