@ashlr/hub 3.2.7 → 3.3.2
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/CHANGELOG.md +314 -2
- package/README.md +54 -38
- package/dist/build-identity.json +2 -2
- package/dist/cli/audit.js +18 -0
- package/dist/cli/audit.js.map +1 -1
- package/dist/cli/backlog.d.ts +0 -5
- package/dist/cli/backlog.js +18 -0
- package/dist/cli/backlog.js.map +1 -1
- package/dist/cli/comms.js +20 -0
- package/dist/cli/comms.js.map +1 -1
- package/dist/cli/completions.d.ts +6 -1
- package/dist/cli/completions.js +33 -10
- package/dist/cli/completions.js.map +1 -1
- package/dist/cli/daemon.js +10 -3
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/dashboard.js +5 -4
- package/dist/cli/dashboard.js.map +1 -1
- package/dist/cli/demo.d.ts +0 -27
- package/dist/cli/demo.js +17 -0
- package/dist/cli/demo.js.map +1 -1
- package/dist/cli/help.js +22 -9
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/inbox.d.ts +14 -2
- package/dist/cli/inbox.js +137 -23
- package/dist/cli/inbox.js.map +1 -1
- package/dist/cli/onboard.d.ts +0 -13
- package/dist/cli/onboard.js +20 -0
- package/dist/cli/onboard.js.map +1 -1
- package/dist/cli/resources.js +15 -0
- package/dist/cli/resources.js.map +1 -1
- package/dist/cli/run.js +1 -1
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/sandbox.js +43 -0
- package/dist/cli/sandbox.js.map +1 -1
- package/dist/cli/serve.js +7 -3
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/setup.d.ts +5 -3
- package/dist/cli/setup.js +14 -7
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/tui.d.ts +0 -6
- package/dist/cli/tui.js +14 -0
- package/dist/cli/tui.js.map +1 -1
- package/dist/cli/update.js +3 -1
- package/dist/cli/update.js.map +1 -1
- package/dist/core/config.js +70 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/daemon/loop.js +83 -3
- package/dist/core/daemon/loop.js.map +1 -1
- package/dist/core/daemon/runtime-activation-resident-start-protocol.d.ts +141 -0
- package/dist/core/daemon/runtime-activation-resident-start-protocol.js +462 -0
- package/dist/core/daemon/runtime-activation-resident-start-protocol.js.map +1 -0
- package/dist/core/daemon/runtime-activation-resident-start-runtime.d.ts +27 -0
- package/dist/core/daemon/runtime-activation-resident-start-runtime.js +28 -0
- package/dist/core/daemon/runtime-activation-resident-start-runtime.js.map +1 -0
- package/dist/core/daemon/runtime-activation-stopped-consumer.d.ts +139 -0
- package/dist/core/daemon/runtime-activation-stopped-consumer.js +995 -0
- package/dist/core/daemon/runtime-activation-stopped-consumer.js.map +1 -0
- package/dist/core/daemon/runtime-activation-stopped-runtime.d.ts +36 -0
- package/dist/core/daemon/runtime-activation-stopped-runtime.js +134 -0
- package/dist/core/daemon/runtime-activation-stopped-runtime.js.map +1 -0
- package/dist/core/daemon/runtime-activation-transaction.d.ts +41 -17
- package/dist/core/daemon/runtime-activation-transaction.js +80 -11
- package/dist/core/daemon/runtime-activation-transaction.js.map +1 -1
- package/dist/core/daemon/runtime-release-dependency-inventory.js +1 -0
- package/dist/core/daemon/runtime-release-dependency-inventory.js.map +1 -1
- package/dist/core/daemon/service-install-authority.d.ts +1 -1
- package/dist/core/daemon/service-install-authority.js +4 -2
- package/dist/core/daemon/service-install-authority.js.map +1 -1
- package/dist/core/dashboard.d.ts +10 -0
- package/dist/core/dashboard.js +103 -28
- package/dist/core/dashboard.js.map +1 -1
- package/dist/core/effective-config.js +7 -0
- package/dist/core/effective-config.js.map +1 -1
- package/dist/core/fleet/automerge-pass.js +57 -73
- package/dist/core/fleet/automerge-pass.js.map +1 -1
- package/dist/core/fleet/decisions-ledger.js +36 -13
- package/dist/core/fleet/decisions-ledger.js.map +1 -1
- package/dist/core/fleet/external-skill-git-capture.js +9 -1
- package/dist/core/fleet/external-skill-git-capture.js.map +1 -1
- package/dist/core/fleet/judge-decision-metadata.d.ts +8 -1
- package/dist/core/fleet/judge-decision-metadata.js +14 -1
- package/dist/core/fleet/judge-decision-metadata.js.map +1 -1
- package/dist/core/fleet/judge-trace.js +2 -1
- package/dist/core/fleet/judge-trace.js.map +1 -1
- package/dist/core/fleet/manager.d.ts +21 -1
- package/dist/core/fleet/manager.js +137 -41
- package/dist/core/fleet/manager.js.map +1 -1
- package/dist/core/fleet/post-merge-credit-label.d.ts +10 -0
- package/dist/core/fleet/post-merge-credit-label.js +13 -0
- package/dist/core/fleet/post-merge-credit-label.js.map +1 -0
- package/dist/core/fleet/post-merge-credit.d.ts +119 -12
- package/dist/core/fleet/post-merge-credit.js +353 -14
- package/dist/core/fleet/post-merge-credit.js.map +1 -1
- package/dist/core/fleet/self-improve.d.ts +38 -5
- package/dist/core/fleet/self-improve.js +201 -12
- package/dist/core/fleet/self-improve.js.map +1 -1
- package/dist/core/fleet/skill-library.d.ts +21 -2
- package/dist/core/fleet/skill-library.js +54 -12
- package/dist/core/fleet/skill-library.js.map +1 -1
- package/dist/core/fleet/worked-ledger.d.ts +22 -0
- package/dist/core/fleet/worked-ledger.js +32 -0
- package/dist/core/fleet/worked-ledger.js.map +1 -1
- package/dist/core/goals/store.js +60 -6
- package/dist/core/goals/store.js.map +1 -1
- package/dist/core/inbox/apply.js +2 -1
- package/dist/core/inbox/apply.js.map +1 -1
- package/dist/core/inbox/merge.d.ts +10 -1
- package/dist/core/inbox/merge.js +97 -18
- package/dist/core/inbox/merge.js.map +1 -1
- package/dist/core/integrations/github.d.ts +2 -0
- package/dist/core/integrations/github.js +2 -1
- package/dist/core/integrations/github.js.map +1 -1
- package/dist/core/learn/reflect.d.ts +42 -4
- package/dist/core/learn/reflect.js +66 -5
- package/dist/core/learn/reflect.js.map +1 -1
- package/dist/core/onboard.d.ts +2 -0
- package/dist/core/onboard.js +9 -3
- package/dist/core/onboard.js.map +1 -1
- package/dist/core/run/engines.d.ts +8 -0
- package/dist/core/run/engines.js +9 -1
- package/dist/core/run/engines.js.map +1 -1
- package/dist/core/run/learned-router.js +28 -3
- package/dist/core/run/learned-router.js.map +1 -1
- package/dist/core/run/orchestrator.d.ts +7 -2
- package/dist/core/run/orchestrator.js +88 -60
- package/dist/core/run/orchestrator.js.map +1 -1
- package/dist/core/swarm/rollback.d.ts +11 -0
- package/dist/core/swarm/rollback.js +54 -0
- package/dist/core/swarm/rollback.js.map +1 -1
- package/dist/core/swarm/runner.js +94 -8
- package/dist/core/swarm/runner.js.map +1 -1
- package/dist/core/types.d.ts +103 -3
- package/dist/core/types.js.map +1 -1
- package/dist/core/web/api.d.ts +6 -0
- package/dist/core/web/api.js +174 -18
- package/dist/core/web/api.js.map +1 -1
- package/dist/core/web/control.d.ts +20 -0
- package/dist/core/web/control.js +44 -32
- package/dist/core/web/control.js.map +1 -1
- package/dist/core/web/fleet-status-cache.d.ts +68 -0
- package/dist/core/web/fleet-status-cache.js +120 -0
- package/dist/core/web/fleet-status-cache.js.map +1 -0
- package/dist/core/web/public/app.js +5 -1
- package/dist/core/web/public/next/assets/index-CDHQraxS.css +1 -0
- package/dist/core/web/public/next/assets/index-zVKD9krw.js +69 -0
- package/dist/core/web/public/next/assets/index-zVKD9krw.js.map +1 -0
- package/dist/core/web/public/next/index.html +15 -0
- package/dist/core/web/read-session-revocations.d.ts +26 -0
- package/dist/core/web/read-session-revocations.js +48 -0
- package/dist/core/web/read-session-revocations.js.map +1 -0
- package/dist/core/web/server.js +73 -27
- package/dist/core/web/server.js.map +1 -1
- package/dist/core/web/static.d.ts +1 -1
- package/dist/core/web/static.js +54 -20
- package/dist/core/web/static.js.map +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/docs/RUNTIME_ACTIVATION_AUTHORITY.md +115 -21
- package/docs/contracts/CONTRACT-M521.md +102 -0
- package/node_modules/fast-uri/index.js +201 -48
- package/node_modules/fast-uri/lib/schemes.js +9 -4
- package/node_modules/fast-uri/lib/utils.js +388 -91
- package/node_modules/fast-uri/package.json +1 -1
- package/node_modules/fast-uri/test/component-safe-serialization.test.js +105 -0
- package/node_modules/fast-uri/test/equal.test.js +31 -3
- package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +2 -0
- package/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
- package/node_modules/fast-uri/test/ipv6-validation.test.js +90 -0
- package/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
- package/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
- package/node_modules/fast-uri/test/parse.test.js +7 -3
- package/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
- package/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
- package/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
- package/node_modules/fast-uri/test/security-normalization.test.js +101 -0
- package/node_modules/fast-uri/test/security.test.js +75 -3
- package/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
- package/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
- package/node_modules/qs/.github/THREAT_MODEL.md +3 -3
- package/node_modules/qs/CHANGELOG.md +26 -0
- package/node_modules/qs/README.md +19 -1
- package/node_modules/qs/dist/qs.js +25 -25
- package/node_modules/qs/eslint.config.mjs +1 -1
- package/node_modules/qs/lib/parse.js +16 -6
- package/node_modules/qs/lib/stringify.js +23 -8
- package/node_modules/qs/lib/utils.js +57 -11
- package/node_modules/qs/package.json +8 -7
- package/node_modules/qs/test/parse.js +419 -0
- package/node_modules/qs/test/stringify.js +317 -0
- package/node_modules/qs/test/utils.js +206 -0
- package/package.json +24 -6
- package/schema/config.schema.json +800 -5
- package/node_modules/which/CHANGELOG.md +0 -166
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,316 @@ hub (M1–M20). Entries below detail each milestone; dates are merge dates into
|
|
|
11
11
|
|
|
12
12
|
## [Unreleased]
|
|
13
13
|
|
|
14
|
+
## [3.3.2] — 2026-08-20 — Safe successor after the failed immutable 3.3.1 release attempt
|
|
15
|
+
|
|
16
|
+
- Carries forward the reviewed fail-closed runtime and operator-console closure
|
|
17
|
+
prepared for 3.3.1, plus the deterministic trajectory-fixture clock repair
|
|
18
|
+
merged at protected revision
|
|
19
|
+
`d6c1a5ec3626f715018a8ffb929906ac0f52f5c9`. That exact protected revision is
|
|
20
|
+
the required first-parent rollback for the 3.3.2 release merge.
|
|
21
|
+
- Preserves the failed lightweight `v3.3.1` tag at
|
|
22
|
+
`f2c9353db35fbf12889bddafd8acc2b7ca5ae67c` and its failed release workflow
|
|
23
|
+
run `32396250683`, attempt 1. npm version 3.3.1 and its GitHub Release remain
|
|
24
|
+
absent; the tag, version, run, and absence must never be rewritten, rerun,
|
|
25
|
+
published, or reused.
|
|
26
|
+
- Keeps the immutable public 3.3.0 predecessor quarantined at its exact package
|
|
27
|
+
integrity and tag while preparing 3.3.2 as the sole candidate successor. npm
|
|
28
|
+
`latest` remains 3.0.1 until isolated acceptance and a separate observation-
|
|
29
|
+
only promotion admission approved solely by `masonwyatt23` both succeed.
|
|
30
|
+
|
|
31
|
+
## [3.3.1] — 2026-08-18 — Fail-closed runtime boundaries and emergency neutralization of the quarantined 3.3.0 candidate
|
|
32
|
+
|
|
33
|
+
- Restores the hostile-reviewed, fail-closed authority and web-security tree
|
|
34
|
+
after an unsafe 3.3.0 candidate was merged and published concurrently. The
|
|
35
|
+
immutable 3.3.0 package and lightweight tag remain preserved for provenance,
|
|
36
|
+
but 3.3.0 must never move to npm `latest` or be installed or activated as the
|
|
37
|
+
production runtime. npm `latest` remains 3.0.1.
|
|
38
|
+
- Compiled daemon and conductor trust roots are empty; resident-start,
|
|
39
|
+
service-install, and host-merge authority remain dormant. Post-merge credit
|
|
40
|
+
and learning signals stay report-only. This restores exact
|
|
41
|
+
session revocation and operator-truth safeguards; and breaks the cold-import
|
|
42
|
+
post-merge-credit ESM cycle without widening the public API or operational
|
|
43
|
+
learning authority.
|
|
44
|
+
- Restores the operator-console security boundary: session-bound and expiry-bound
|
|
45
|
+
SSE with exact logout revocation, descriptor-bound static reads, strict
|
|
46
|
+
CSP/security headers, and stable bounded public error responses.
|
|
47
|
+
- The source-neutralization merge itself was intentionally not a release. The
|
|
48
|
+
protected lightweight `v3.3.1` tag remains fixed at
|
|
49
|
+
`f2c9353db35fbf12889bddafd8acc2b7ca5ae67c`; release workflow run
|
|
50
|
+
`32396250683`, attempt 1, failed during native verification. Every downstream
|
|
51
|
+
release stage—the signed canary, prepare, npm publish, publication
|
|
52
|
+
verification, and GitHub Release—was skipped. npm version 3.3.1 and its
|
|
53
|
+
GitHub Release remain absent. The tag and reserved version must not be moved,
|
|
54
|
+
reused, published, or promoted; 3.3.2 is the sole successor lane.
|
|
55
|
+
|
|
56
|
+
## [3.3.0] — 2026-08-17 — Fleet activation, autonomous merge, and the operator console
|
|
57
|
+
|
|
58
|
+
### 2026-08-16 — Fleet activation unblocked, autonomous merge wired, learning loop closed
|
|
59
|
+
|
|
60
|
+
Nine threads landed together: the daemon activation-authority system that had
|
|
61
|
+
been unconditionally denying itself was replaced with a real granted-scope
|
|
62
|
+
check, and the bug that made it self-invalidate every permit was fixed; the
|
|
63
|
+
previously dead-code autonomous-merge revocation protocol got its first
|
|
64
|
+
caller; the fleet's self-improvement loop went from recording zero lessons on
|
|
65
|
+
rejection to recording them from every rejection; a test-isolation escape that
|
|
66
|
+
had corrupted the operator's real `~/.ashlr/daemon.json` for 11 days was
|
|
67
|
+
closed fail-closed; and a new React operator console shipped alongside the
|
|
68
|
+
untouched legacy dashboard. Milestone-level detail and today's newly
|
|
69
|
+
discovered ID collision are in
|
|
70
|
+
[`docs/MILESTONE-INDEX.md`](docs/MILESTONE-INDEX.md); the mechanics of
|
|
71
|
+
turning any of this on — including four non-obvious gates that block
|
|
72
|
+
unattended activation even after a grant — are in
|
|
73
|
+
[`docs/RUNTIME-FLEET-ACTIVATION.md`](docs/RUNTIME-FLEET-ACTIVATION.md).
|
|
74
|
+
|
|
75
|
+
- **Daemon activation authority replaces its own denials (M470 — see
|
|
76
|
+
collision note below).** Five hard-coded refusals — `DAEMON_ACTIVATION_TRUST_ROOTS`
|
|
77
|
+
frozen empty, `liveConductorActivationAuthorized()` returning a literal
|
|
78
|
+
`false`, `assertResidentServiceInstallAuthorized()` throwing
|
|
79
|
+
unconditionally, and two more in the same family — are replaced by a real
|
|
80
|
+
check against an operator-owned trust-root store (`~/.ashlr/activation/`,
|
|
81
|
+
0700/0600, owner-checked, fail-closed on missing/malformed to the
|
|
82
|
+
*identical* prior denial) and Ed25519-signed, expiring, revocable standing
|
|
83
|
+
grants across nine scopes: `once`, `resident`, `residentStanding`,
|
|
84
|
+
`conductor`, `automerge`, `repair`, `deploy`, `install`, `proposalOnly`
|
|
85
|
+
(`src/core/daemon/activation-permit.ts:121-131`). `residentStanding` is
|
|
86
|
+
new — the scope that lets the daemon restart unattended; it is not implied
|
|
87
|
+
by `resident` and must be granted explicitly.
|
|
88
|
+
|
|
89
|
+
Root-cause bug fixed in the same change: `daemonActivationAuthorityStateDigest()`
|
|
90
|
+
folded `~/.ashlr`'s own directory mtime into the digest a permit is
|
|
91
|
+
checked against, but `daemon start`'s `acquireDaemonLock()`
|
|
92
|
+
(`src/core/daemon/state.ts`) creates `~/.ashlr/daemon.lock` — a new direct
|
|
93
|
+
child of `~/.ashlr` — *before* the permit is ever consumed, bumping that
|
|
94
|
+
same mtime. Every freshly minted permit self-invalidated, 100%
|
|
95
|
+
reproducibly, before it could be used — the fleet could never have
|
|
96
|
+
activated unattended even with a valid grant. Fixed to key the digest on
|
|
97
|
+
the directory's `dev`+`ino` instead, which survive ordinary child churn
|
|
98
|
+
(`src/core/daemon/activation-permit.ts:961-997`).
|
|
99
|
+
|
|
100
|
+
**ID collision introduced today:** `test/m470.activation-authority.test.ts`
|
|
101
|
+
reuses milestone number M470, which was already assigned to the
|
|
102
|
+
already-shipped "proposal capture candidate identity"
|
|
103
|
+
(`test/m470.proposal-capture-candidate-identity.test.ts`; see the M464–M503
|
|
104
|
+
entry below). Recorded as a new row in `docs/MILESTONE-INDEX.md` §2.
|
|
105
|
+
|
|
106
|
+
- **Autonomous PR merge gets its first caller (M504, M505).** The durable
|
|
107
|
+
merge-revocation protocol (`src/core/autonomy/host-merge-revocation-protocol.ts`)
|
|
108
|
+
existed with zero callers before today; it is now invoked from
|
|
109
|
+
`attemptHostAutoMerge()` (`src/core/merge.ts:2845-2901`), gated behind
|
|
110
|
+
`foundry.autoMerge.hostAutoMerge`, which **defaults to `false`**
|
|
111
|
+
(`src/core/merge.ts:2795`; `test/m505.host-auto-merge.test.ts` pins the
|
|
112
|
+
default-off behavior). A `failureCategory`
|
|
113
|
+
(`'code' | 'tool' | 'timeout' | 'infra' | 'cancelled' | 'invalid-command'`,
|
|
114
|
+
`src/core/run/verify-commands.ts:86-92`) is now threaded through
|
|
115
|
+
verify-commands, verify, run-tests, merge, the detached post-merge
|
|
116
|
+
runner/verification, the regression sentinel, and self-heal — exit 127
|
|
117
|
+
(missing binary) now classifies as `'tool'`, not a broken diff. `git apply
|
|
118
|
+
--3way` is now used in both `verifyProposal` and `attemptHostAutoMerge`
|
|
119
|
+
(`src/core/merge.ts:2313, 2984`) so a stale base no longer reads as a real
|
|
120
|
+
conflict. The self-eval parity gate — previously a single flaky
|
|
121
|
+
invariant-test failure was a GLOBAL merge blocker — now retries up to
|
|
122
|
+
`SELF_EVAL_PARITY_RETRY_ATTEMPTS = 2` times with a 500ms delay before
|
|
123
|
+
failing (`src/core/merge.ts:265-267`).
|
|
124
|
+
|
|
125
|
+
- **Learning loop closed; judge parse failures stop posing as verdicts.**
|
|
126
|
+
`hasReleasedPostMergeCredit()` (`src/core/fleet/post-merge-credit.ts:137-150`)
|
|
127
|
+
no longer hardcodes `false` — it verifies an HMAC-signed, timing-safe-compared
|
|
128
|
+
token — unblocking consumers across `learned-router.ts`,
|
|
129
|
+
`skill-attestation.ts`, `feedback.ts`, `quality-metrics.ts`,
|
|
130
|
+
`judge-trace.ts`, and `post-merge-credit.ts` itself. `learnFromRejection`
|
|
131
|
+
is no longer reachable only when auto-merge is on: a new
|
|
132
|
+
`sweepRejectionLearning()` (`src/core/fleet/self-improve.ts`) reads the
|
|
133
|
+
decisions ledger directly and learns from rejections regardless of the
|
|
134
|
+
auto-merge flag. (The commit message cites 672 rejections the fleet had
|
|
135
|
+
never learned from while auto-merge defaulted off; that figure is the
|
|
136
|
+
author's estimate, not a value stored or checked anywhere in `src/` or
|
|
137
|
+
`test/` — do not repeat it as a verified count.) `curateAntiPlaybooks()`
|
|
138
|
+
(`src/core/fleet/self-improve.ts:284-322`), previously unreferenced, now
|
|
139
|
+
has a caller in `src/core/fleet/orchestrator.ts:1338`. Separately, a July
|
|
140
|
+
refactor had given every real judge verdict a reason code but not the
|
|
141
|
+
parse-failure fallback — parse failures were structurally indistinguishable
|
|
142
|
+
from considered reviews and incremented `judgeNonShipCount`, pushing good
|
|
143
|
+
proposals toward auto-archive. Parse failures now get their own
|
|
144
|
+
`'judge-parse-failure'` reason code (`src/core/fleet/judge-decision-metadata.ts:20`)
|
|
145
|
+
and are excluded from `judgeNonShipCount` entirely
|
|
146
|
+
(`src/core/fleet/automerge-pass.ts:335-337`).
|
|
147
|
+
|
|
148
|
+
- **Test isolation: HOME escape closed fail-closed.** On 2026-08-05 a vitest
|
|
149
|
+
run escaped HOME isolation and wrote the operator's real
|
|
150
|
+
`~/.ashlr/daemon.json`, leaving the daemon unstartable for 11 days. Cause:
|
|
151
|
+
`test/setup/home.ts` fell back to the real `os.homedir()` whenever
|
|
152
|
+
`process.env.HOME` was unset — fail-open. It now throws immediately if
|
|
153
|
+
`HOME` is unset or resolves to the real developer home
|
|
154
|
+
(`test/setup/home.ts:52-65`).
|
|
155
|
+
|
|
156
|
+
- **Fleet-status cache correction.** `GET /api/fleet` no longer performs
|
|
157
|
+
API-side response recomposition (`src/core/web/api.ts`, pinned by
|
|
158
|
+
`test/build-identity.test.ts`) — a response-shape fix, landed today. The
|
|
159
|
+
shared TTL cache for `buildFleetStatus()`
|
|
160
|
+
(`src/core/web/fleet-status-cache.ts`: 5s TTL, stale-while-refresh to 60s,
|
|
161
|
+
in-flight dedup) landed with the new console earlier this week, not today.
|
|
162
|
+
**The "32.5s cold → 4.0s cold / 0ms warm" figures reported for this work do
|
|
163
|
+
not appear anywhere in the code, tests, or the cache module's own
|
|
164
|
+
documentation and could not be verified — do not repeat them.** The cache
|
|
165
|
+
module's comment instead cites a worse pre-fix baseline (`/api/snapshot`
|
|
166
|
+
2.4s idle → 69.4s under load; `/api/control` similarly degraded). Call-site
|
|
167
|
+
count is also imprecise across sources: the cache module's comment says
|
|
168
|
+
six, a test comment says seven, a source grep finds eleven — the true
|
|
169
|
+
count depends on what "independent call site" means and isn't settled.
|
|
170
|
+
|
|
171
|
+
- **New operator console (`src/web-ui/`).** React 19 + Vite 6, served at
|
|
172
|
+
`/next/` alongside the untouched legacy vanilla-JS SPA at `/`
|
|
173
|
+
(`vite.config.web.ts:11-26`, `src/core/web/static.ts:87-88`). **16 views**
|
|
174
|
+
(not the 13 originally reported), a chart layer
|
|
175
|
+
(`src/web-ui/components/charts/`), a work journal
|
|
176
|
+
(`src/web-ui/routes/journal/`), live run streaming
|
|
177
|
+
(`src/web-ui/components/stream/`, `useRunStream.ts`), and a notification
|
|
178
|
+
centre (`src/web-ui/components/notifications/`). Backend changes were
|
|
179
|
+
minimal and additive — query-param filtering on `src/core/web/api.ts` for
|
|
180
|
+
the inbox history view — not a rewrite; `server.ts`/`static.ts` routing is
|
|
181
|
+
unchanged.
|
|
182
|
+
|
|
183
|
+
- **Two activation designs now formally coexist; the guard protecting the
|
|
184
|
+
boundary between them was strengthened, not weakened.**
|
|
185
|
+
`conductor-permit` (`src/core/daemon/goal-conductor-permit-operator.ts`,
|
|
186
|
+
offline cold-custody, used by the goal conductor — M516–M518) and
|
|
187
|
+
`activation` (`src/core/daemon/activation-permit.ts`, on-machine standing
|
|
188
|
+
grants, M470 above) are separate modules with non-overlapping imports. The
|
|
189
|
+
test protecting this boundary used to check that a file
|
|
190
|
+
(`src/cli/activation.ts`) did not exist by name — a check that would have
|
|
191
|
+
broken the moment that file needed to exist for a legitimate, unrelated
|
|
192
|
+
reason. It now asserts the real invariant: the daemon activation CLI's
|
|
193
|
+
source text must not match any conductor-authority symbol name
|
|
194
|
+
(`test/m518.goal-conductor-permit-operator.test.ts:924-926`) — conductor
|
|
195
|
+
authority must be unreachable from the daemon surface, not merely absent
|
|
196
|
+
from a filename.
|
|
197
|
+
|
|
198
|
+
### 2026-08-16 — Live-data web UI crash and TITRR proposal-quality fixes
|
|
199
|
+
|
|
200
|
+
- **`/work/swarms` crashed on real fleet data; a route error boundary now
|
|
201
|
+
contains that class of bug.** `SwarmsView` and `SwarmDetailView` read
|
|
202
|
+
`sw.plan.tasks.length` and `sw.usage.tokensIn` unguarded; two of eighty real
|
|
203
|
+
swarm records (legacy smoke-test runs) carry neither field, so the view
|
|
204
|
+
threw, React unmounted the root, and the screen went blank with no recovery
|
|
205
|
+
short of a hard reload. Both reads are now guarded, and a new
|
|
206
|
+
`RouteErrorBoundary` (`src/web-ui/components/primitives/RouteErrorBoundary.tsx`)
|
|
207
|
+
wraps the route outlet so a failing view renders an inline error card with
|
|
208
|
+
retry while the sidebar, topbar, and command palette stay alive — the
|
|
209
|
+
durable fix; the optional chaining is the specific one.
|
|
210
|
+
- **Crushed tables got their column widths back.** The inbox proposal table
|
|
211
|
+
had no fixed layout, so auto-layout divided space evenly across seven
|
|
212
|
+
columns and crushed `Title` to roughly one word per line. The same pattern
|
|
213
|
+
— traced to the Fleet Dashboard's Recent Runs panel, which `DESIGN.md`
|
|
214
|
+
names as the reference other views copy — also affected Runs' goal column,
|
|
215
|
+
where a single multi-paragraph prompt could balloon one row past the
|
|
216
|
+
viewport. All three (`src/web-ui/routes/inbox/ProposalList.tsx`,
|
|
217
|
+
`src/web-ui/routes/fleet-dashboard/RunsPanel.tsx`,
|
|
218
|
+
`src/web-ui/routes/work/runs/RunsView.tsx`) now use fixed layout with
|
|
219
|
+
explicit column widths and a shared two-line clamp utility. GenomeView's
|
|
220
|
+
plain "Loading…" text was also swapped for the SkeletonRow convention used
|
|
221
|
+
everywhere else, noticeable because that endpoint takes ~6s for 2014
|
|
222
|
+
entries.
|
|
223
|
+
- **TITRR stopped filing proposals it already knew had failed verification.**
|
|
224
|
+
`TITRR_MAX_ATTEMPTS` was hardcoded to 2 ("1 initial + 1 repair"); on
|
|
225
|
+
exhausting it with tests still failing, the loop unconditionally filed the
|
|
226
|
+
diff anyway via `captureTitrrProposal({isPartial:true,
|
|
227
|
+
forceGateBlockReason})` — the root cause of `[partial]` proposals that
|
|
228
|
+
could never pass verification, and, per the fix commit's own estimate (not
|
|
229
|
+
a value stored or checked anywhere in `src/` or `test/` — do not repeat it
|
|
230
|
+
as a verified count), a large share of the 672 proposals the fleet had
|
|
231
|
+
never merged. `TITRR_MAX_ATTEMPTS` is raised to 4, and exhaustion now drops
|
|
232
|
+
with no proposal at all rather than filing an unverifiable one; the
|
|
233
|
+
annotation is kept on the run for audit but nothing reaches the inbox.
|
|
234
|
+
|
|
235
|
+
### M464–M503 — daemon durability, post-merge verification pipeline, Mission OS extensions
|
|
236
|
+
|
|
237
|
+
Forty milestones landed on `master` with no CHANGELOG entry; this backfills
|
|
238
|
+
them by theme. Full per-milestone detail, file:line citations, and the four
|
|
239
|
+
that warrant a standalone contract are indexed in
|
|
240
|
+
[`docs/MILESTONE-INDEX.md`](docs/MILESTONE-INDEX.md) §5. Gaps M474, M483,
|
|
241
|
+
M489, M499, M500 have no corresponding test file or milestone.
|
|
242
|
+
|
|
243
|
+
- **Daemon crash-safety and recovery (M486, M487, M490, M501, M488, M476).**
|
|
244
|
+
Daemon accounting writes now cross an fsync power-loss barrier (temp write +
|
|
245
|
+
fsync, rename, directory fsync) before being reported durable (M486). A new
|
|
246
|
+
authorized quarantine flow hard-links crash-suspect daemon state into
|
|
247
|
+
immutable evidence with a signed receipt and a 10-minute plan expiry (M487),
|
|
248
|
+
and a paired resolution flow consumes that receipt to produce fresh state
|
|
249
|
+
that conservatively carries forward same-day spend accounting when it can
|
|
250
|
+
be verified (never silently resets a daily budget to zero), refusing while
|
|
251
|
+
service activity or execution retries are in flight (M501). Both are wired into the CLI as explicit, authorization-gated
|
|
252
|
+
subcommands (`recover-state` / `resolve-state`, M490). Runtime-release
|
|
253
|
+
canary/rollback pairs get an observation-only signature and digest check
|
|
254
|
+
with no deployment authority (M488). Release-tip observations are recorded
|
|
255
|
+
in an immutable, HMAC-sealed, no-clobber sequence ledger — not a
|
|
256
|
+
transparency log or release authority (M476).
|
|
257
|
+
|
|
258
|
+
- **Detached post-merge verification pipeline (M465, M466, M467, M468, M472,
|
|
259
|
+
M478, M482).** Auto-merge canary promotion readiness is evaluated
|
|
260
|
+
observation-only against verification coverage, release evidence, and
|
|
261
|
+
post-merge cohorts — it never grants activation (M465). Diff scope for
|
|
262
|
+
auto-merge is measured with fail-closed rejection of symlinks, gitlinks,
|
|
263
|
+
and malformed patch headers, alongside a durable prepared→armed→revoked
|
|
264
|
+
host-merge cancellation state machine (M466). Post-merge verification
|
|
265
|
+
cohorts are recorded as signed, immutable, metadata-only records —
|
|
266
|
+
explicitly excluding prompts, diffs, and command output — and can neither
|
|
267
|
+
authorize merge nor rollback (M467). A runner checks out one exact commit
|
|
268
|
+
into a scratch worktree, runs the repo's own verification profile, and
|
|
269
|
+
records only bounded pass/fail metadata before cleanup (M468), scheduled by
|
|
270
|
+
an observation-only orchestrator that emits at most one work ticket per
|
|
271
|
+
invocation (M472). Root verification contracts are detected read-only from
|
|
272
|
+
each repo's own manifests (`package.json`, `tsconfig.json`,
|
|
273
|
+
`vitest.config.ts`, …) without ever spawning a package manager (M478).
|
|
274
|
+
Release artifacts get a dependency-inventory + manifest-integrity contract
|
|
275
|
+
with hard size caps (M482).
|
|
276
|
+
|
|
277
|
+
- **Proposal funnel + capture identity (M464, M469, M470, M471, M473,
|
|
278
|
+
M475).** Agent work lifecycle transitions are now recorded as a
|
|
279
|
+
metadata-only, cryptographically-chained audit trail with a closed
|
|
280
|
+
vocabulary of phases/transitions/triggers — no raw prompts, diffs, or file
|
|
281
|
+
paths (M464). Proposal-funnel metrics (attempts, capture errors, policy
|
|
282
|
+
suppressions, gate blocks) are scrubbed before aggregation and withheld on
|
|
283
|
+
unstable snapshots rather than guessed (M469). Proposal capture now binds a
|
|
284
|
+
durable candidate identity from sandboxed execution (M470), settled through
|
|
285
|
+
a transactional claim/settle/reconcile task store with compare-and-swap
|
|
286
|
+
leases (M471). A new verifier-execution-authority layer admits signed,
|
|
287
|
+
data-only capsule statements against caller-pinned trust policies (M473),
|
|
288
|
+
gated by a separate crypto-only policy-approval observation that itself
|
|
289
|
+
signs, persists, or executes nothing (M475).
|
|
290
|
+
|
|
291
|
+
- **Mission OS extensions (M485, M491, M492, M493, M494, M495, M496, M497,
|
|
292
|
+
M502).** The mission compiler reconciles goals from briefings — respecting
|
|
293
|
+
dependencies, active-goal caps, and human gates, rejecting cycles — behind
|
|
294
|
+
a read-only operator briefing UI (M485). Ecosystem-wide mission graphs
|
|
295
|
+
compile deterministically into one cycle-checked, digested structure bounded
|
|
296
|
+
to 24 nodes (M491), projected through a fail-closed, mutation-free "outcome
|
|
297
|
+
room" view (M492). Mission state can now be captured into a signed,
|
|
298
|
+
durable observation receipt carrying no execution authority (M493), and a
|
|
299
|
+
shadow reconciler suggests — but never creates — up to 16 candidate goals
|
|
300
|
+
per preview, verified against that receipt (M494). External ecosystem
|
|
301
|
+
inputs (Cortex mission candidates, Locus identity evidence) get bounded,
|
|
302
|
+
fail-closed-on-expiry validation schemas that import no authority (M495).
|
|
303
|
+
Mission observations are captured only from authenticated, realized-merge
|
|
304
|
+
proposals (M496), and both the read-only shadow observer (M502) and its
|
|
305
|
+
CLI entry point (`vision shadow`, M497) prove the whole planning loop can
|
|
306
|
+
run end-to-end with zero effect.
|
|
307
|
+
|
|
308
|
+
- **Supply-chain and dashboard hardening (M477, M480, M481, M479, M498,
|
|
309
|
+
M503, M484).** Public JSON payloads are scrubbed of secret-shaped strings
|
|
310
|
+
and home-directory paths and de-recursed before they reach the dashboard or
|
|
311
|
+
API (M477). The dashboard's mobile shell keeps navigation in one
|
|
312
|
+
horizontally-scrollable row (M480). Every action in every CI workflow is
|
|
313
|
+
now pinned to a reviewed immutable commit (M481), and the npm release
|
|
314
|
+
workflow additionally validates the release tag's target commit is in
|
|
315
|
+
protected `master` history before `npm publish --provenance` runs (M479).
|
|
316
|
+
Best-of-N's `-n` CLI flag is validated before config or model loading —
|
|
317
|
+
rejecting non-integers, floats, zero, negative, and unsafe-integer values
|
|
318
|
+
with exit code 2 (M498). The dashboard gained a read-only auth mode that
|
|
319
|
+
permits SSE and reads but blocks all mutating endpoints (M503). PR stack
|
|
320
|
+
topology (linearity, dependency correctness, convergence declarations) is
|
|
321
|
+
now shadow-observed read-only against GitHub with no mutation capability
|
|
322
|
+
(M484).
|
|
323
|
+
|
|
14
324
|
## [3.2.7] — 2026-08-16 — Immutable candidate supersession
|
|
15
325
|
|
|
16
326
|
- Carries forward the immutable 3.2.6 candidate and all subsequently merged
|
|
@@ -199,8 +509,10 @@ hub (M1–M20). Entries below detail each milestone; dates are merge dates into
|
|
|
199
509
|
- **Temporary resident-service authority restriction.** Production service
|
|
200
510
|
install, reinstall, repair, restart, worker setup, and the service portion of
|
|
201
511
|
first-run setup now fail closed at a shared deny-only boundary. Existing
|
|
202
|
-
services retain status and uninstall
|
|
203
|
-
|
|
512
|
+
services retain status and uninstall. Compiled daemon and conductor trust
|
|
513
|
+
roots are empty, so non-dry daemon/conductor execution remains dormant;
|
|
514
|
+
owner-invoked `ashlr run`/`ashlr swarm` and daemon dry-run remain available.
|
|
515
|
+
Both git and npm update channels block before code replacement
|
|
204
516
|
for present, unknown, or running service state. Status now combines expected
|
|
205
517
|
service-file and native-manager evidence into explicit `present`, `absent`, or
|
|
206
518
|
`unknown` registration state; setup refusal occurs before all config/wizard
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ashlr-hub
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**A governed autonomous-engineering fleet architecture — proposal-first, sandboxed, and gated by explicit runtime and merge authority.**
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@ashlr/hub)
|
|
6
6
|
[](https://www.npmjs.com/package/@ashlr/hub)
|
|
@@ -12,25 +12,25 @@
|
|
|
12
12
|
|
|
13
13
|
## What is this?
|
|
14
14
|
|
|
15
|
-
ashlr-hub is a single Node binary
|
|
15
|
+
ashlr-hub is a single Node binary containing an autonomous agent fleet for enrolled repositories. In the current production build, compiled daemon and conductor trust roots are empty, so live non-dry fleet execution is deliberately dormant; verified dry-run, status, and local-console paths remain available.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
When an independently provisioned runtime admits it, the fleet scans your backlog, dispatches sandboxed agent swarms across multiple backends (local Ollama/LM Studio, Claude Code, Codex, any OpenAI-compatible API), and deposits proposed diffs into an **Approval Inbox**. By default, nothing touches a branch until you explicitly approve it. A separate, default-off auto-merge subsystem can be enabled only with explicit authority and fail-closed verification. The kill-switch is a single file.
|
|
18
18
|
|
|
19
19
|
It is also a local unifying harness: one CLI and web dashboard that indexes your enrolled projects, aggregates all your MCP servers into a single gateway, tracks real spend, and provides `ashlr run` / `ashlr swarm` for ad-hoc work.
|
|
20
20
|
|
|
21
21
|
### Authority defaults
|
|
22
22
|
|
|
23
|
-
First activation
|
|
23
|
+
First activation currently stops at observation: run `ashlr preflight`, enroll a repo, and complete a dry-run. Empty compiled trust roots refuse live non-dry daemon and conductor effects, and resident service mutation has no production authority. Existing proposals can still be inspected, but no dry-run or readiness result widens runtime authority.
|
|
24
24
|
|
|
25
25
|
| Path | Default | Required authority | Possible outward effect |
|
|
26
26
|
|------|---------|--------------------|-------------------------|
|
|
27
|
-
| Daemon generation |
|
|
27
|
+
| Daemon generation | **Dormant in production** | A separately provisioned compiled trust root; the shipped roots are empty | Dry-run/status only; live non-dry dispatch refuses before effects |
|
|
28
28
|
| Inbox apply | Manual | Explicit `ashlr inbox approve`, confirmation, enrollment, kill-switch clear | Applies to a dedicated local branch; never silently edits the working tree |
|
|
29
29
|
| Protected PR submit | Operator-invoked | Explicit `ashlr inbox submit`, caller confirmation, signed frontier provenance, fresh verification, and live protected-remote evidence | Opens one review PR; never merges `main` or contacts a model. `--yes` is caller intent, not an authenticated human receipt. |
|
|
30
30
|
| Autonomous merge | **Off** | `foundry.autoMerge.enabled: true` plus the selected tier, judge-backed verification, or evidence authority gates | Local merge or protected remote PR, depending on policy; every refusal is fail-closed |
|
|
31
31
|
| Judge-free evidence merge | **Off** | Base- and diff-bound deterministic verification, signed provenance/evidence, strict scope/risk policy, and live protected-branch checks | Protected remote PR handoff only; no local fallback, self-target merge, partial capture, or build/CI/manifest change |
|
|
32
32
|
| Deploy | Never performed by the daemon | Explicit `ashlr ship --deploy <target> --confirm` after pre-ship checks | Runs the selected production deploy command |
|
|
33
|
-
| OS service mutation | **Temporarily unavailable** | No production install/reinstall/repair/restart authority is currently issued | Existing services expose status and uninstall only;
|
|
33
|
+
| OS service mutation | **Temporarily unavailable** | No production install/reinstall/repair/restart authority is currently issued | Existing services expose status and uninstall only; no live one-shot or resident start is admitted |
|
|
34
34
|
|
|
35
35
|
No successful test, model verdict, or proposal record grants deployment or service-install authority. Those are separate operator commands.
|
|
36
36
|
|
|
@@ -38,7 +38,7 @@ No successful test, model verdict, or proposal record grants deployment or servi
|
|
|
38
38
|
|
|
39
39
|
## What makes it different
|
|
40
40
|
|
|
41
|
-
Most AI coding tools are request-response: you ask, the model answers.
|
|
41
|
+
Most AI coding tools are request-response: you ask, the model answers. Ashlr's source architecture defines a **continuous autonomous loop**, but the current production entrypoints keep its non-dry daemon and conductor effects dormant because their compiled trust roots are empty:
|
|
42
42
|
|
|
43
43
|
```
|
|
44
44
|
End-State Spec (your vision)
|
|
@@ -54,7 +54,7 @@ End-State Spec (your vision)
|
|
|
54
54
|
→ Scorecard feedback (outcomes feed learned routing)
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
**What this unlocks:**
|
|
57
|
+
**What this architecture unlocks once an independently provisioned runtime admits it:**
|
|
58
58
|
|
|
59
59
|
- The fleet works your backlog while you sleep.
|
|
60
60
|
- You review proposals with `ashlr inbox`, not a chat window.
|
|
@@ -99,13 +99,13 @@ cd ashlr-hub
|
|
|
99
99
|
|
|
100
100
|
`install.sh` requires Node 22.15+ and is idempotent — safe to re-run after pulling updates.
|
|
101
101
|
|
|
102
|
-
### 1.
|
|
102
|
+
### 1. Confirm the setup boundary
|
|
103
103
|
|
|
104
104
|
```sh
|
|
105
|
-
ashlr setup # currently
|
|
105
|
+
ashlr setup # currently refuses before config or wizard work
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
Setup currently refuses before loading config or running the wizard while install/reinstall/repair/restart authority is withheld. It returns nonzero and leaves setup state untouched. Existing services support `ashlr daemon service-status` and `ashlr daemon uninstall`;
|
|
108
|
+
Setup currently refuses before loading config or running the wizard while install/reinstall/repair/restart authority is withheld. It returns nonzero and leaves setup state untouched. Existing services support `ashlr daemon service-status` and `ashlr daemon uninstall`; live one-shot and resident starts remain dormant because the production daemon trust roots are compiled empty. Service status reports registration as `present`, `absent`, or `unknown`; only proven absence permits an in-place update.
|
|
109
109
|
|
|
110
110
|
### 1a. Preflight check (optional but recommended)
|
|
111
111
|
|
|
@@ -113,7 +113,7 @@ Setup currently refuses before loading config or running the wizard while instal
|
|
|
113
113
|
ashlr preflight
|
|
114
114
|
```
|
|
115
115
|
|
|
116
|
-
Verifies daemon readiness, backend connectivity, and key configuration before you enroll any repos.
|
|
116
|
+
Verifies daemon readiness, backend connectivity, and key configuration before you enroll any repos. Run it directly: `ashlr setup` does not reach these checks in the current release because it refuses before config or wizard work.
|
|
117
117
|
|
|
118
118
|
### 2. Enroll a repo
|
|
119
119
|
|
|
@@ -132,13 +132,16 @@ ashlr daemon start --once --dry-run
|
|
|
132
132
|
|
|
133
133
|
Prints what the fleet would work on. Creates no proposals, spends $0.
|
|
134
134
|
|
|
135
|
-
### 4.
|
|
135
|
+
### 4. Confirm the live boundary
|
|
136
136
|
|
|
137
137
|
```sh
|
|
138
138
|
ashlr daemon start --once
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
-
The
|
|
141
|
+
The current production build refuses this non-dry command before dispatch or
|
|
142
|
+
proposal creation because its compiled daemon trust roots are empty. Use
|
|
143
|
+
`ashlr daemon status`, the dry-run above, and Mission Control for verified
|
|
144
|
+
observation. A test-only injected trust root is not production activation.
|
|
142
145
|
|
|
143
146
|
### 5. Review proposals
|
|
144
147
|
|
|
@@ -161,21 +164,29 @@ ashlr serve # web dashboard at http://127.0.0.1:7777 (localhost only)
|
|
|
161
164
|
ashlr serve --open # also opens the browser
|
|
162
165
|
```
|
|
163
166
|
|
|
164
|
-
The dashboard shows fleet status, all runs and swarms, the inbox, rolling spend analytics, and shared memory.
|
|
165
|
-
|
|
166
|
-
`ashlr serve` prints a fresh read token on every start.
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
HttpOnly cookie
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
167
|
+
The dashboard shows fleet status, all runs and swarms, the inbox, rolling spend analytics, and shared memory. The new console is at `/next/`; `/` is the separately labelled legacy dashboard.
|
|
168
|
+
|
|
169
|
+
`ashlr serve` prints a fresh read token on every start. In `/next/`, paste it
|
|
170
|
+
into the **Read token** control once. The new console uses it only for the
|
|
171
|
+
`POST /api/session` exchange and then discards the raw read token. A 15-minute,
|
|
172
|
+
read-only HttpOnly cookie plus a random 256-bit client proof in
|
|
173
|
+
`sessionStorage` survives a page reload until the signed ticket expires. After
|
|
174
|
+
expiry, enter the raw read token again; `/next/` cannot silently renew because
|
|
175
|
+
it does not retain that token. EventSource sends only the non-authority proof
|
|
176
|
+
in its URL: it is useless without the matching signed HttpOnly ticket, and a
|
|
177
|
+
`no-referrer` policy keeps it from leaving the dashboard.
|
|
178
|
+
|
|
179
|
+
When `/next/` mutations are explicitly enabled, its separate mutation token is
|
|
180
|
+
held only in module memory for a 20-minute idle window. It is never written to
|
|
181
|
+
`sessionStorage`, local storage, a cookie, or a URL; **Lock** clears it
|
|
182
|
+
immediately. The legacy dashboard at `/` has a different, separately labelled
|
|
183
|
+
transport: it retains its raw read token in tab `sessionStorage` to renew the
|
|
184
|
+
cookie, and prompts independently for mutation authority rather than using the
|
|
185
|
+
new console's held-token contract.
|
|
186
|
+
|
|
187
|
+
Static assets and the minimal `{ "ok": true }` liveness response remain public
|
|
188
|
+
on loopback; every proprietary API read requires the read token or the ticket
|
|
189
|
+
plus its matching client proof.
|
|
179
190
|
|
|
180
191
|
Headless clients send the read token as a header:
|
|
181
192
|
|
|
@@ -186,16 +197,17 @@ curl -H "X-Ashlr-Token: $ASHLR_DASHBOARD_READ_TOKEN" \
|
|
|
186
197
|
|
|
187
198
|
Read tokens and cookies cannot approve, dispatch, pause, resume, repair, or open
|
|
188
199
|
local paths. When mutations are explicitly enabled, the server prints a second,
|
|
189
|
-
independent mutation token.
|
|
190
|
-
|
|
191
|
-
`sessionStorage`, a cookie, or a URL. Mutations accept only that token in
|
|
200
|
+
independent mutation token. Both console contracts keep it out of persistent
|
|
201
|
+
browser storage, cookies, and URLs. Mutations accept only that token in
|
|
192
202
|
`X-Ashlr-Token`.
|
|
193
203
|
|
|
194
204
|
---
|
|
195
205
|
|
|
196
|
-
##
|
|
206
|
+
## Resident loop and owner-invoked goals
|
|
197
207
|
|
|
198
|
-
|
|
208
|
+
The source includes a resident goal conductor, but current production compiled
|
|
209
|
+
conductor trust roots are empty. The loop dry-run is available; live non-dry
|
|
210
|
+
loop commands below refuse before effects:
|
|
199
211
|
|
|
200
212
|
```sh
|
|
201
213
|
ashlr loop # one tick — advances active goals, then backlog fallback
|
|
@@ -203,7 +215,9 @@ ashlr loop --watch # continuous (Ctrl-C to stop)
|
|
|
203
215
|
ashlr loop --dry-run # show what would advance, no proposals
|
|
204
216
|
```
|
|
205
217
|
|
|
206
|
-
|
|
218
|
+
`ashlr goal "<objective>"` is different: it is a live, owner-invoked,
|
|
219
|
+
proposal-only path that plans and advances one bounded milestone. It does not
|
|
220
|
+
grant resident or unattended conductor authority:
|
|
207
221
|
|
|
208
222
|
```sh
|
|
209
223
|
ashlr goal "harden the inbox apply path"
|
|
@@ -371,8 +385,8 @@ next actions point at work the daemon can select now instead of phantom backlog.
|
|
|
371
385
|
| `ashlr onboard <repo>` | Enroll one repo with walkthrough + dry run |
|
|
372
386
|
| `ashlr enroll add/remove/list` | Manage enrolled repos |
|
|
373
387
|
| `ashlr enroll kill on/off` | Engage/clear the kill-switch |
|
|
374
|
-
| `ashlr daemon start/stop/status` |
|
|
375
|
-
| `ashlr loop [--watch] [--dry-run]` | Goal-aware conductor
|
|
388
|
+
| `ashlr daemon start/stop/status` | Runtime operator; current production start refuses with empty compiled roots, while status remains observational |
|
|
389
|
+
| `ashlr loop [--watch] [--dry-run]` | Goal-aware conductor; current production admits dry-run only |
|
|
376
390
|
| `ashlr goal "<objective>"` | Set a strategic goal; plan + dispatch milestones |
|
|
377
391
|
| `ashlr goals list/show/plan/advance` | Manage goals + milestones |
|
|
378
392
|
| `ashlr vision show/review/preview/shadow/approve/reconcile` | Mission OS: strategy, bounded DAG preview, authenticated shadow evidence, and explicit goal adoption |
|
|
@@ -548,7 +562,8 @@ preflight soft-warns *consider locus.firm for production* (non-blocking).
|
|
|
548
562
|
| **v2** (M21–M30) | Autonomous org — sandboxed swarms, Approval Inbox, enrollment, kill-switch | Shipped |
|
|
549
563
|
| **v2.1** (H1–H8) | Harden and prove — adversarial test suite, safety invariants proven by tests | Shipped |
|
|
550
564
|
| **v2.2** (M31–M33) | Agent-native — plugin system, Raycast, update channel | Shipped |
|
|
551
|
-
| **v3** (
|
|
565
|
+
| **v3-Weapon** (M41–M44) | Local Weapon — adaptive model-sized prompts, sandboxed engineer tool surface, verify→repair, eval | Shipped |
|
|
566
|
+
| **v3-Team** (M34–M40) | Team Command Center — multi-machine inbox, coordinated daemons, team visibility | **Spec'd, not built** — see [`docs/SPEC-V3-TEAM.md`](docs/SPEC-V3-TEAM.md) |
|
|
552
567
|
| **v4** (M45–M49) | Foundry — multi-backend engines, backend router, tiered-trust merge gate, HMAC provenance, fleet supervisor | Shipped |
|
|
553
568
|
| **v5** (M50–M55) | Open Fleet — declarative engine registry, tri-tier trust, OS confinement, fleet intelligence, self-improving fleet, goal/loop conductor | Shipped |
|
|
554
569
|
| **v5.1** (M320–M324) | Claude 5 Model Intelligence — Sonnet 5 workhorse routing, Fable 5 judge with Opus fallback, per-model ROI telemetry, cost-aware learned routing | Shipped |
|
|
@@ -572,6 +587,7 @@ See [`docs/ECOSYSTEM-MAP.md`](docs/ECOSYSTEM-MAP.md) for the full capability map
|
|
|
572
587
|
| Doc | What it covers |
|
|
573
588
|
|-----|----------------|
|
|
574
589
|
| [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) | Module map, the autonomous loop, engine tiers, safety gates, the `~/.ashlr/` layout |
|
|
590
|
+
| [`docs/MILESTONE-INDEX.md`](docs/MILESTONE-INDEX.md) | Authoritative milestone ID → subject → status lookup (M2–M519), incl. confirmed ID collisions (spec-vs-shipped and shipped-vs-shipped) |
|
|
575
591
|
| [`docs/MISSION-OS.md`](docs/MISSION-OS.md) | Mission DAG, receipts, shadow workflow, Cortex/Locus boundaries, privacy, and troubleshooting |
|
|
576
592
|
| [`docs/ELITE-AGENT-EFFICIENCY.md`](docs/ELITE-AGENT-EFFICIENCY.md) | Current primary-source research translated into Hub efficiency priorities and measurable autonomy gates |
|
|
577
593
|
| [`docs/RUNTIME_ACTIVATION_AUTHORITY.md`](docs/RUNTIME_ACTIVATION_AUTHORITY.md) | Signed read-only resident activation admission, explicit mutation refusal, and native launchd v2 requirements |
|
package/dist/build-identity.json
CHANGED
package/dist/cli/audit.js
CHANGED
|
@@ -166,7 +166,25 @@ function formatAuditEntry(entry) {
|
|
|
166
166
|
// ---------------------------------------------------------------------------
|
|
167
167
|
// cmdAudit — the command entry point
|
|
168
168
|
// ---------------------------------------------------------------------------
|
|
169
|
+
function printAuditHelp() {
|
|
170
|
+
console.log('');
|
|
171
|
+
console.log(bold(' ashlr audit') + dim(' — READ-ONLY audit-trail viewer (tails ~/.ashlr/audit/*.jsonl)'));
|
|
172
|
+
console.log('');
|
|
173
|
+
console.log(dim('Usage: ashlr audit [N | --limit N] [--json] [--action <verb>] ' +
|
|
174
|
+
'[--result ok|refused|error] [--since <ISO|YYYY-MM-DD>]'));
|
|
175
|
+
console.log('');
|
|
176
|
+
console.log(` ${dim('N')} positional shorthand for --limit N`);
|
|
177
|
+
console.log(` ${dim('--action <verb>')} filter by action; bare verb matches verb:*`);
|
|
178
|
+
console.log(` ${dim('--result <ok|refused|error>')} filter by outcome`);
|
|
179
|
+
console.log(` ${dim('--since <ISO|YYYY-MM-DD>')} drop records older than this`);
|
|
180
|
+
console.log(` ${dim('--json')} emit the records as a JSON array`);
|
|
181
|
+
console.log('');
|
|
182
|
+
}
|
|
169
183
|
export async function cmdAudit(args) {
|
|
184
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
185
|
+
printAuditHelp();
|
|
186
|
+
return 0;
|
|
187
|
+
}
|
|
170
188
|
const parsed = parseArgs(args);
|
|
171
189
|
if ('error' in parsed) {
|
|
172
190
|
console.error(red('error: ') + parsed.error);
|
package/dist/cli/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/cli/audit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/cli/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/backlog.d.ts
CHANGED
|
@@ -20,9 +20,4 @@
|
|
|
20
20
|
*/
|
|
21
21
|
export declare const BACKLOG_SOURCE_FILTERS: readonly ["issue", "todo", "test", "dep", "doc", "security", "plugin", "self", "lint", "goal", "hygiene", "invent"];
|
|
22
22
|
export declare const BACKLOG_SOURCE_FILTER_HELP: string;
|
|
23
|
-
/**
|
|
24
|
-
* `ashlr backlog [refresh] [--repo <path>] [--source <src>] [--limit <n>] [--json]`
|
|
25
|
-
*
|
|
26
|
-
* Returns process exit code (0 = success, 1 = error, 2 = usage error).
|
|
27
|
-
*/
|
|
28
23
|
export declare function cmdBacklog(args: string[]): Promise<number>;
|