@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
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* policy file.
|
|
11
11
|
* - FIRE-AND-FORGET: learnFromRejection() never throws, never awaits
|
|
12
12
|
* anything on the critical path. All I/O is wrapped in try/catch.
|
|
13
|
-
* - GATED: every code path checks cfg.foundry?.selfImprove
|
|
14
|
-
* (default
|
|
13
|
+
* - GATED: every code path checks cfg.foundry?.selfImprove === true
|
|
14
|
+
* (default OFF). Unless the flag is explicitly true the function returns
|
|
15
15
|
* immediately — byte-identical to having no call at all.
|
|
16
16
|
* - ADDITIVE: the genome entry is informational grounding for future runs.
|
|
17
17
|
* It is NOT an execution directive; it does not alter the merge gate,
|
|
@@ -23,8 +23,9 @@
|
|
|
23
23
|
* - TELEMETRY: a usage counter is appended to the decisions ledger under
|
|
24
24
|
* action 'self-improve:written' for observability (no PII, no secrets).
|
|
25
25
|
*/
|
|
26
|
-
import
|
|
27
|
-
import {
|
|
26
|
+
import fs from 'node:fs';
|
|
27
|
+
import { appendHubEntry, hubStorePath } from '../genome/store.js';
|
|
28
|
+
import { readDecisions, readDecisionsDetailed, recordDecision } from './decisions-ledger.js';
|
|
28
29
|
// ---------------------------------------------------------------------------
|
|
29
30
|
// Constants
|
|
30
31
|
// ---------------------------------------------------------------------------
|
|
@@ -35,9 +36,80 @@ const STALE_DAYS = 90;
|
|
|
35
36
|
export const ANTI_PLAYBOOK_INJECT_CAP = 800;
|
|
36
37
|
/** Tag prefix for all genome entries written by this module. */
|
|
37
38
|
const TAG = 'm235:anti-playbook';
|
|
39
|
+
/** Maximum newly appended bytes inspected to acknowledge one lesson write. */
|
|
40
|
+
const APPEND_ACK_MAX_BYTES = 1024 * 1024;
|
|
41
|
+
function hubSizeBeforeAppend() {
|
|
42
|
+
const file = hubStorePath();
|
|
43
|
+
try {
|
|
44
|
+
return fs.statSync(file).size;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return fs.existsSync(file) ? null : 0;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function appendedBytesContainEntry(entry, offset) {
|
|
51
|
+
const file = hubStorePath();
|
|
52
|
+
let fd;
|
|
53
|
+
try {
|
|
54
|
+
const noFollow = typeof fs.constants.O_NOFOLLOW === 'number' ? fs.constants.O_NOFOLLOW : 0;
|
|
55
|
+
fd = fs.openSync(file, fs.constants.O_RDONLY | noFollow);
|
|
56
|
+
const openedBefore = fs.fstatSync(fd);
|
|
57
|
+
const namedBefore = fs.lstatSync(file);
|
|
58
|
+
if (!openedBefore.isFile() || namedBefore.isSymbolicLink() || !namedBefore.isFile() ||
|
|
59
|
+
openedBefore.dev !== namedBefore.dev || openedBefore.ino !== namedBefore.ino)
|
|
60
|
+
return false;
|
|
61
|
+
const size = openedBefore.size;
|
|
62
|
+
const growth = size - offset;
|
|
63
|
+
if (growth <= 0 || growth > APPEND_ACK_MAX_BYTES)
|
|
64
|
+
return false;
|
|
65
|
+
const bytes = Buffer.alloc(growth);
|
|
66
|
+
if (fs.readSync(fd, bytes, 0, growth, offset) !== growth)
|
|
67
|
+
return false;
|
|
68
|
+
const openedAfter = fs.fstatSync(fd);
|
|
69
|
+
const namedAfter = fs.lstatSync(file);
|
|
70
|
+
if (!openedAfter.isFile() || namedAfter.isSymbolicLink() || !namedAfter.isFile() ||
|
|
71
|
+
openedBefore.dev !== openedAfter.dev || openedBefore.ino !== openedAfter.ino ||
|
|
72
|
+
openedAfter.dev !== namedAfter.dev || openedAfter.ino !== namedAfter.ino ||
|
|
73
|
+
openedBefore.size !== openedAfter.size ||
|
|
74
|
+
openedBefore.mtimeMs !== openedAfter.mtimeMs ||
|
|
75
|
+
openedBefore.ctimeMs !== openedAfter.ctimeMs ||
|
|
76
|
+
openedAfter.size !== namedAfter.size ||
|
|
77
|
+
openedAfter.mtimeMs !== namedAfter.mtimeMs ||
|
|
78
|
+
openedAfter.ctimeMs !== namedAfter.ctimeMs)
|
|
79
|
+
return false;
|
|
80
|
+
return bytes.toString('utf8').split('\n').some((line) => {
|
|
81
|
+
if (!line.trim())
|
|
82
|
+
return false;
|
|
83
|
+
try {
|
|
84
|
+
return JSON.parse(line).id === entry.id;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
if (fd !== undefined) {
|
|
96
|
+
try {
|
|
97
|
+
fs.closeSync(fd);
|
|
98
|
+
}
|
|
99
|
+
catch { /* best-effort close */ }
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
38
103
|
function isRejection(v) {
|
|
39
104
|
return v === 'review' || v === 'noise' || v === 'harmful';
|
|
40
105
|
}
|
|
106
|
+
function isConsideredRejection(entry) {
|
|
107
|
+
const verdict = (entry.verdict ?? '').toLowerCase();
|
|
108
|
+
if (!isRejection(verdict))
|
|
109
|
+
return false;
|
|
110
|
+
const expectedReason = `judge-${verdict}`;
|
|
111
|
+
return entry.judgeReasonCode === expectedReason;
|
|
112
|
+
}
|
|
41
113
|
// ---------------------------------------------------------------------------
|
|
42
114
|
// Lesson derivation (pure, deterministic, no LLM)
|
|
43
115
|
// ---------------------------------------------------------------------------
|
|
@@ -66,7 +138,7 @@ export function deriveLesson(verdict, _reasoning, _proposalTitle) {
|
|
|
66
138
|
* 2. A decisions-ledger entry for telemetry/observability.
|
|
67
139
|
*
|
|
68
140
|
* NEVER THROWS. NEVER BLOCKS (all I/O is synchronous JSONL append behind
|
|
69
|
-
* try/catch). Gated on cfg.foundry?.selfImprove
|
|
141
|
+
* try/catch). Gated on cfg.foundry?.selfImprove === true.
|
|
70
142
|
*
|
|
71
143
|
* @param proposalId The proposal id (for ledger correlation).
|
|
72
144
|
* @param proposalTitle Legacy compatibility input; deliberately discarded.
|
|
@@ -75,31 +147,38 @@ export function deriveLesson(verdict, _reasoning, _proposalTitle) {
|
|
|
75
147
|
* @param cfg Fleet config.
|
|
76
148
|
*/
|
|
77
149
|
export function learnFromRejection(proposalId, proposalTitle, verdict, reasoning, cfg) {
|
|
78
|
-
// Gate: default
|
|
150
|
+
// Gate: default OFF; only explicit true authorizes durable learning.
|
|
79
151
|
try {
|
|
80
152
|
const foundry = cfg.foundry;
|
|
81
|
-
if (foundry?.['selfImprove']
|
|
82
|
-
return;
|
|
153
|
+
if (foundry?.['selfImprove'] !== true)
|
|
154
|
+
return false;
|
|
83
155
|
}
|
|
84
156
|
catch {
|
|
85
|
-
return;
|
|
157
|
+
return false;
|
|
86
158
|
}
|
|
87
159
|
// Only act on rejection verdicts.
|
|
88
160
|
if (!isRejection(verdict))
|
|
89
|
-
return;
|
|
161
|
+
return false;
|
|
90
162
|
// Derive and write the lesson.
|
|
91
163
|
try {
|
|
164
|
+
const appendOffset = hubSizeBeforeAppend();
|
|
165
|
+
if (appendOffset === null)
|
|
166
|
+
return false;
|
|
92
167
|
const lesson = deriveLesson(verdict, reasoning, proposalTitle);
|
|
93
168
|
const title = `Anti-playbook observation: ${verdict}`;
|
|
94
|
-
appendHubEntry({
|
|
169
|
+
const entry = appendHubEntry({
|
|
95
170
|
title,
|
|
96
171
|
text: lesson,
|
|
97
172
|
tags: [TAG, `verdict:${verdict}`, `proposal:${proposalId.slice(0, 24)}`],
|
|
98
173
|
hubOnly: true,
|
|
99
174
|
});
|
|
175
|
+
if (!appendedBytesContainEntry(entry, appendOffset))
|
|
176
|
+
return false;
|
|
100
177
|
}
|
|
101
178
|
catch {
|
|
102
|
-
//
|
|
179
|
+
// No durable lesson means no success acknowledgment and no idempotency
|
|
180
|
+
// telemetry. The sweep may safely retry on a later pass.
|
|
181
|
+
return false;
|
|
103
182
|
}
|
|
104
183
|
// Telemetry: record to decisions ledger (action 'self-improve:written').
|
|
105
184
|
try {
|
|
@@ -116,6 +195,116 @@ export function learnFromRejection(proposalId, proposalTitle, verdict, reasoning
|
|
|
116
195
|
catch {
|
|
117
196
|
// Ledger write is best-effort observability only.
|
|
118
197
|
}
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
// ---------------------------------------------------------------------------
|
|
201
|
+
// Public: sweepRejectionLearning — auto-merge-independent reachability
|
|
202
|
+
// ---------------------------------------------------------------------------
|
|
203
|
+
/**
|
|
204
|
+
* Bound on judged-decision candidates inspected per sweep pass.
|
|
205
|
+
*/
|
|
206
|
+
const MAX_REJECTION_SWEEP_CANDIDATES = 200;
|
|
207
|
+
/**
|
|
208
|
+
* Sweep the decisions ledger for considered judged rejection verdicts (review
|
|
209
|
+
* | noise | harmful with their matching judgeReasonCode) and call
|
|
210
|
+
* learnFromRejection() for each one that hasn't already produced a lesson.
|
|
211
|
+
*
|
|
212
|
+
* learnFromRejection's ONLY prior caller was automerge-pass.ts, reached
|
|
213
|
+
* exclusively from inside the auto-merge pass (cfg.foundry.autoMerge.enabled
|
|
214
|
+
* === true). With auto-merge off — the default — a judge verdict could still
|
|
215
|
+
* be recorded (manual `ashlr judge`, a shadow/observe-only judge pass, etc.)
|
|
216
|
+
* but the fleet never learned from it. This sweep reads the SAME
|
|
217
|
+
* decisions-ledger 'judged' rows regardless of what produced them, so a
|
|
218
|
+
* rejected or failed run teaches the fleet whether or not auto-merge is on.
|
|
219
|
+
*
|
|
220
|
+
* Idempotent: a proposalId that already has a 'self-improve:written'
|
|
221
|
+
* telemetry row is skipped. Bounded, fail-open-on-nothing-to-do,
|
|
222
|
+
* fail-closed-on-source-degradation (sourceComplete:false signals "retry
|
|
223
|
+
* later", never treated as "nothing to learn"). Never throws.
|
|
224
|
+
*/
|
|
225
|
+
export function sweepRejectionLearning(cfg, opts = {}) {
|
|
226
|
+
const result = {
|
|
227
|
+
scanned: 0, written: 0, skipped: 0, sourceComplete: true,
|
|
228
|
+
};
|
|
229
|
+
try {
|
|
230
|
+
const foundry = cfg.foundry;
|
|
231
|
+
if (foundry?.['selfImprove'] !== true)
|
|
232
|
+
return result;
|
|
233
|
+
let decisions;
|
|
234
|
+
if (typeof opts.listDecisions === 'function') {
|
|
235
|
+
try {
|
|
236
|
+
decisions = opts.listDecisions();
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
result.sourceComplete = false;
|
|
240
|
+
return result;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
const read = readDecisionsDetailed({
|
|
245
|
+
requireComplete: true,
|
|
246
|
+
...(opts.sinceMs !== undefined ? { sinceMs: opts.sinceMs } : {}),
|
|
247
|
+
});
|
|
248
|
+
if (!read.complete || read.sourceState === 'degraded') {
|
|
249
|
+
result.sourceComplete = false;
|
|
250
|
+
return result;
|
|
251
|
+
}
|
|
252
|
+
decisions = read.decisions;
|
|
253
|
+
}
|
|
254
|
+
// Newest judged verdict per proposalId — mirrors the isNewerDecision
|
|
255
|
+
// pattern used elsewhere (feedback.ts, quality-metrics.ts). The compare
|
|
256
|
+
// must run over EVERY judged verdict (not just rejection-shaped ones):
|
|
257
|
+
// if a proposal's latest verdict is 'ship', a stale earlier
|
|
258
|
+
// noise/harmful/review verdict must not be taught as a lesson — it was
|
|
259
|
+
// superseded.
|
|
260
|
+
const latestJudged = new Map();
|
|
261
|
+
for (const entry of decisions) {
|
|
262
|
+
if (entry.action !== 'judged')
|
|
263
|
+
continue;
|
|
264
|
+
const existing = latestJudged.get(entry.proposalId);
|
|
265
|
+
if (!existing || Date.parse(entry.ts) > Date.parse(existing.ts)) {
|
|
266
|
+
latestJudged.set(entry.proposalId, entry);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
const latestRejection = new Map();
|
|
270
|
+
for (const [proposalId, entry] of latestJudged) {
|
|
271
|
+
if (isConsideredRejection(entry))
|
|
272
|
+
latestRejection.set(proposalId, entry);
|
|
273
|
+
}
|
|
274
|
+
let inspected = 0;
|
|
275
|
+
for (const [proposalId, entry] of latestRejection) {
|
|
276
|
+
if (inspected >= MAX_REJECTION_SWEEP_CANDIDATES) {
|
|
277
|
+
result.sourceComplete = false;
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
inspected++;
|
|
281
|
+
result.scanned++;
|
|
282
|
+
try {
|
|
283
|
+
const existing = readDecisions({ proposalId, requireComplete: true });
|
|
284
|
+
const existingQuality = existing.sourceQuality;
|
|
285
|
+
if (existingQuality && (existingQuality.sourceState === 'degraded' || existingQuality.complete === false)) {
|
|
286
|
+
result.skipped++;
|
|
287
|
+
result.sourceComplete = false;
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
if (existing.some((row) => row.action === 'self-improve:written'))
|
|
291
|
+
continue;
|
|
292
|
+
if (learnFromRejection(proposalId, '', entry.verdict ?? 'review', '', cfg)) {
|
|
293
|
+
result.written++;
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
result.skipped++;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
result.skipped++;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return result;
|
|
304
|
+
}
|
|
305
|
+
catch {
|
|
306
|
+
return result;
|
|
307
|
+
}
|
|
119
308
|
}
|
|
120
309
|
// ---------------------------------------------------------------------------
|
|
121
310
|
// Curator: curateAntiPlaybooks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-improve.js","sourceRoot":"","sources":["../../../src/core/fleet/self-improve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"self-improve.js","sourceRoot":"","sources":["../../../src/core/fleet/self-improve.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,7 +69,26 @@ export declare function distillWorkflow(proposal: Proposal): string;
|
|
|
69
69
|
*/
|
|
70
70
|
export declare function learnFromApplied(proposal: Proposal, cfg: AshlrConfig): void;
|
|
71
71
|
/**
|
|
72
|
-
*
|
|
73
|
-
* and
|
|
72
|
+
* Genome hub entries are unsigned free text — appendHubEntry has no
|
|
73
|
+
* authentication, and (per test/m243.skill-library.test.ts's "release
|
|
74
|
+
* verifier unavailable" suite) a forged entry carrying tags ['m243:skill',
|
|
75
|
+
* 'credit:released-v1'] must not be trusted into future-agent prompts just
|
|
76
|
+
* because it carries the right tag. There is no way to cryptographically
|
|
77
|
+
* verify a GenomeEntry's authenticity — genome rows carry no attestation
|
|
78
|
+
* field at all, unlike SkillCard (contentHash + attestation).
|
|
79
|
+
*
|
|
80
|
+
* Real positive-credit skill recall is NOT this function's job: it already
|
|
81
|
+
* exists, and already works, via skill-retrieval.ts's
|
|
82
|
+
* selectVerifiedSkills()/inspectVerifiedSkillCorpus() — those read the
|
|
83
|
+
* cryptographically-signed SkillCard corpus (skill-records.ts) and verify
|
|
84
|
+
* each card's attestation (verifyAttestedSkillCard) plus
|
|
85
|
+
* hasReleasedPostMergeCredit(card.labelBasis) before ever surfacing it. That
|
|
86
|
+
* pathway is what lights up once evaluatePostMergeCreditRelease() /
|
|
87
|
+
* attestPostMergeCreditSkillCard() start minting real signed cards — no
|
|
88
|
+
* change to this function was needed or safe to make.
|
|
89
|
+
*
|
|
90
|
+
* curateSkills() therefore stays a closed stub, matching curateAntiPlaybooks'
|
|
91
|
+
* signature for API symmetry with self-improve.ts but never promoting
|
|
92
|
+
* unsigned genome text to injected grounding. Pure; never throws.
|
|
74
93
|
*/
|
|
75
94
|
export declare function curateSkills(_entries: GenomeEntry[]): GenomeEntry[];
|
|
@@ -43,9 +43,8 @@ import { loadProposal } from '../inbox/store.js';
|
|
|
43
43
|
import { hasRealizedMergeEvidence } from '../inbox/realized-merge.js';
|
|
44
44
|
import { scrubSecrets } from '../util/scrub.js';
|
|
45
45
|
import { recordDecision } from './decisions-ledger.js';
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
48
|
-
import { recordSkillCard, sanitizeSkillCard } from './skill-records.js';
|
|
46
|
+
import { attestPostMergeCreditSkillCard, evaluatePostMergeCreditRelease } from './post-merge-credit.js';
|
|
47
|
+
import { recordSkillCard, readSkillCards, sanitizeSkillCard } from './skill-records.js';
|
|
49
48
|
// ---------------------------------------------------------------------------
|
|
50
49
|
// Constants
|
|
51
50
|
// ---------------------------------------------------------------------------
|
|
@@ -146,7 +145,10 @@ function verifiedSkillInput(proposalId) {
|
|
|
146
145
|
if (!proposal || proposal.id !== proposalId || proposal.status !== 'applied' ||
|
|
147
146
|
!hasRealizedMergeEvidence(proposal))
|
|
148
147
|
return null;
|
|
149
|
-
|
|
148
|
+
// Eligibility is computed fresh from the authenticated merge witness and
|
|
149
|
+
// the observation ledger — never trusted off a caller-set proposal field.
|
|
150
|
+
const eligibility = evaluatePostMergeCreditRelease(proposal);
|
|
151
|
+
if (!eligibility.eligible || !eligibility.label)
|
|
150
152
|
return null;
|
|
151
153
|
if (typeof proposal.diff !== 'string' || proposal.diff.length === 0)
|
|
152
154
|
return null;
|
|
@@ -184,14 +186,14 @@ function verifiedSkillInput(proposalId) {
|
|
|
184
186
|
return null;
|
|
185
187
|
if (routeHasSkillSelection(proposal.routeSnapshot) || routeHasSkillSelection(evidence.routeSnapshot))
|
|
186
188
|
return null;
|
|
187
|
-
return { proposal, evidence, diffHash: currentDiffHash, commandKinds };
|
|
189
|
+
return { proposal, evidence, diffHash: currentDiffHash, commandKinds, labelBasis: eligibility.label };
|
|
188
190
|
}
|
|
189
191
|
catch {
|
|
190
192
|
return null;
|
|
191
193
|
}
|
|
192
194
|
}
|
|
193
195
|
function skillCardFromVerified(input, ts) {
|
|
194
|
-
const { proposal, evidence, diffHash, commandKinds } = input;
|
|
196
|
+
const { proposal, evidence, diffHash, commandKinds, labelBasis } = input;
|
|
195
197
|
const taskClass = deriveTaskClass(boundedMetadataText(proposal.title, 100, 'verified workflow'));
|
|
196
198
|
const safeTitle = `Verified ${taskClass} workflow`;
|
|
197
199
|
const safeSummary = boundedMetadataText(`Evidence-bound ${taskClass} workflow verified with ${commandKinds.join(', ')} commands at ${evidence.riskClass} risk.`, 400);
|
|
@@ -205,9 +207,14 @@ function skillCardFromVerified(input, ts) {
|
|
|
205
207
|
summary: safeSummary,
|
|
206
208
|
status: 'verified',
|
|
207
209
|
source: 'verified-proposal',
|
|
210
|
+
// NOTE: SKILL_CREDIT_RELEASE_TAG is deliberately NOT added here.
|
|
211
|
+
// skill-records.ts's recordSkillCard() unconditionally refuses any card
|
|
212
|
+
// carrying that tag (a defense against unauthenticated release claims
|
|
213
|
+
// written before this protocol existed). Real release authority now
|
|
214
|
+
// lives entirely in `labelBasis` (a signed token, verified by
|
|
215
|
+
// hasReleasedPostMergeCredit), which recordSkillCard does not block.
|
|
208
216
|
tags: [
|
|
209
217
|
TAG,
|
|
210
|
-
SKILL_CREDIT_RELEASE_TAG,
|
|
211
218
|
`engine:${proposal.engineTier}`,
|
|
212
219
|
`proposal:${boundedMetadataText(proposal.id, 24, 'unknown')}`,
|
|
213
220
|
],
|
|
@@ -245,7 +252,7 @@ function skillCardFromVerified(input, ts) {
|
|
|
245
252
|
gateCount,
|
|
246
253
|
},
|
|
247
254
|
learningSource: 'verified-proposal',
|
|
248
|
-
labelBasis
|
|
255
|
+
labelBasis,
|
|
249
256
|
...(proposal.routerPolicyVersion ?? evidence.routerPolicyVersion
|
|
250
257
|
? { routerPolicyVersion: proposal.routerPolicyVersion ?? evidence.routerPolicyVersion }
|
|
251
258
|
: {}),
|
|
@@ -306,6 +313,18 @@ export function learnFromApplied(proposal, cfg) {
|
|
|
306
313
|
catch {
|
|
307
314
|
return;
|
|
308
315
|
}
|
|
316
|
+
// Idempotency: post-merge credit only becomes eligible well after merge (see
|
|
317
|
+
// MIN_POST_MERGE_OBSERVATION_WINDOW_MS), so this is expected to be called
|
|
318
|
+
// repeatedly (a periodic sweep, not a one-shot at merge time). Never write a
|
|
319
|
+
// second card for a proposal that already has one.
|
|
320
|
+
try {
|
|
321
|
+
const corpus = readSkillCards({ complete: true });
|
|
322
|
+
if (corpus.some((card) => card.proposalId === proposal.id))
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
309
328
|
// Caller fields (including status, verification, route, and tier) are only a
|
|
310
329
|
// lookup hint. Every authority-bearing field comes from the persisted state.
|
|
311
330
|
let verified;
|
|
@@ -319,7 +338,11 @@ export function learnFromApplied(proposal, cfg) {
|
|
|
319
338
|
return;
|
|
320
339
|
const authoritative = verified.proposal;
|
|
321
340
|
const now = new Date().toISOString();
|
|
322
|
-
|
|
341
|
+
// attestPostMergeCreditSkillCard (not the generic attestSkillCard) is the
|
|
342
|
+
// dedicated signing boundary for release-labeled cards — see
|
|
343
|
+
// post-merge-credit.ts's module doc for why the generic attester refuses
|
|
344
|
+
// them.
|
|
345
|
+
const structuredCard = attestPostMergeCreditSkillCard(sanitizeSkillCard(skillCardFromVerified(verified, now)));
|
|
323
346
|
if (!structuredCard)
|
|
324
347
|
return;
|
|
325
348
|
// Preserve the legacy genome note for compatibility.
|
|
@@ -356,7 +379,7 @@ export function learnFromApplied(proposal, cfg) {
|
|
|
356
379
|
proposalId: authoritative.id,
|
|
357
380
|
action: 'skill-library:written',
|
|
358
381
|
detail: `engine=${authoritative.engineTier}`,
|
|
359
|
-
labelBasis:
|
|
382
|
+
labelBasis: structuredCard.labelBasis,
|
|
360
383
|
repo: authoritative.repo ?? '',
|
|
361
384
|
engine: authoritative.engineModel ?? '',
|
|
362
385
|
model: '',
|
|
@@ -370,8 +393,27 @@ export function learnFromApplied(proposal, cfg) {
|
|
|
370
393
|
// Curator: curateSkills
|
|
371
394
|
// ---------------------------------------------------------------------------
|
|
372
395
|
/**
|
|
373
|
-
*
|
|
374
|
-
* and
|
|
396
|
+
* Genome hub entries are unsigned free text — appendHubEntry has no
|
|
397
|
+
* authentication, and (per test/m243.skill-library.test.ts's "release
|
|
398
|
+
* verifier unavailable" suite) a forged entry carrying tags ['m243:skill',
|
|
399
|
+
* 'credit:released-v1'] must not be trusted into future-agent prompts just
|
|
400
|
+
* because it carries the right tag. There is no way to cryptographically
|
|
401
|
+
* verify a GenomeEntry's authenticity — genome rows carry no attestation
|
|
402
|
+
* field at all, unlike SkillCard (contentHash + attestation).
|
|
403
|
+
*
|
|
404
|
+
* Real positive-credit skill recall is NOT this function's job: it already
|
|
405
|
+
* exists, and already works, via skill-retrieval.ts's
|
|
406
|
+
* selectVerifiedSkills()/inspectVerifiedSkillCorpus() — those read the
|
|
407
|
+
* cryptographically-signed SkillCard corpus (skill-records.ts) and verify
|
|
408
|
+
* each card's attestation (verifyAttestedSkillCard) plus
|
|
409
|
+
* hasReleasedPostMergeCredit(card.labelBasis) before ever surfacing it. That
|
|
410
|
+
* pathway is what lights up once evaluatePostMergeCreditRelease() /
|
|
411
|
+
* attestPostMergeCreditSkillCard() start minting real signed cards — no
|
|
412
|
+
* change to this function was needed or safe to make.
|
|
413
|
+
*
|
|
414
|
+
* curateSkills() therefore stays a closed stub, matching curateAntiPlaybooks'
|
|
415
|
+
* signature for API symmetry with self-improve.ts but never promoting
|
|
416
|
+
* unsigned genome text to injected grounding. Pure; never throws.
|
|
375
417
|
*/
|
|
376
418
|
export function curateSkills(_entries) {
|
|
377
419
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-library.js","sourceRoot":"","sources":["../../../src/core/fleet/skill-library.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-library.js","sourceRoot":"","sources":["../../../src/core/fleet/skill-library.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,15 @@ import { type DispatchProductionParentIdentity } from './dispatch-production-led
|
|
|
22
22
|
/** Default cooldown window: 6 hours in milliseconds. */
|
|
23
23
|
export declare const DEFAULT_COOLDOWN_MS: number;
|
|
24
24
|
export declare const GENERATED_REPAIR_DISPATCH_BLOCKED_COOLDOWN_MS: number;
|
|
25
|
+
/**
|
|
26
|
+
* Cooldown alone only delays a retry — after enough cooldown windows elapse,
|
|
27
|
+
* a persistently-rejected work item comes back forever (backlog dedup only
|
|
28
|
+
* suppresses re-filing while a proposal is PENDING; once rejected it becomes
|
|
29
|
+
* eligible again next cycle). This bounds the total number of times the
|
|
30
|
+
* fleet will keep re-dispatching the same logical item after real judge
|
|
31
|
+
* rejections before parking it. See rejectionAttemptCount / isRejectionWorkedOutcome.
|
|
32
|
+
*/
|
|
33
|
+
export declare const DEFAULT_MAX_REJECTION_ATTEMPTS = 3;
|
|
25
34
|
/**
|
|
26
35
|
* The outcome of a single item run or judge verdict.
|
|
27
36
|
*
|
|
@@ -119,6 +128,19 @@ export declare function recentlyDeclined(itemId: string, cooldownMs?: number, no
|
|
|
119
128
|
export declare function latestWorkedEvent(itemId: string): WorkedEvent | undefined;
|
|
120
129
|
export declare function latestWorkedEventForKeys(events: readonly WorkedEvent[], itemIds: readonly string[]): WorkedEvent | undefined;
|
|
121
130
|
export declare function workedEventIsCooling(event: WorkedEvent | undefined, cooldownMs: number, now?: number): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* True for outcomes that represent an actual judge rejection of a proposal —
|
|
133
|
+
* as opposed to 'empty' (no diff produced) or 'dispatch-blocked' (an infra
|
|
134
|
+
* hiccup), neither of which is a considered rejection.
|
|
135
|
+
*/
|
|
136
|
+
export declare function isRejectionWorkedOutcome(outcome: WorkedOutcome): boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Count of past judge-rejection outcomes recorded for any of the given
|
|
139
|
+
* identity keys (a WorkItem's cooldown keys). Unlike workedEventIsCooling
|
|
140
|
+
* (which only looks at the MOST RECENT event within a time window), this is
|
|
141
|
+
* a monotonic all-time count used to bound total attempts per logical item.
|
|
142
|
+
*/
|
|
143
|
+
export declare function rejectionAttemptCount(events: readonly WorkedEvent[], itemIds: readonly string[]): number;
|
|
122
144
|
/**
|
|
123
145
|
* Map a raw judge verdict string to a WorkedOutcome decline class.
|
|
124
146
|
* Returns undefined when the verdict should NOT suppress the item
|
|
@@ -35,6 +35,15 @@ const MAX_WORKED_LEDGER_BYTES = 2 * 1024 * 1024;
|
|
|
35
35
|
/** Default cooldown window: 6 hours in milliseconds. */
|
|
36
36
|
export const DEFAULT_COOLDOWN_MS = 6 * 60 * 60 * 1000;
|
|
37
37
|
export const GENERATED_REPAIR_DISPATCH_BLOCKED_COOLDOWN_MS = 5 * 60 * 1000;
|
|
38
|
+
/**
|
|
39
|
+
* Cooldown alone only delays a retry — after enough cooldown windows elapse,
|
|
40
|
+
* a persistently-rejected work item comes back forever (backlog dedup only
|
|
41
|
+
* suppresses re-filing while a proposal is PENDING; once rejected it becomes
|
|
42
|
+
* eligible again next cycle). This bounds the total number of times the
|
|
43
|
+
* fleet will keep re-dispatching the same logical item after real judge
|
|
44
|
+
* rejections before parking it. See rejectionAttemptCount / isRejectionWorkedOutcome.
|
|
45
|
+
*/
|
|
46
|
+
export const DEFAULT_MAX_REJECTION_ATTEMPTS = 3;
|
|
38
47
|
let workedLedgerTestHooks;
|
|
39
48
|
export function _setWorkedLedgerHooksForTest(hooks) {
|
|
40
49
|
workedLedgerTestHooks = hooks;
|
|
@@ -808,6 +817,29 @@ export function workedEventIsCooling(event, cooldownMs, now) {
|
|
|
808
817
|
const elapsedMs = (now ?? Date.now()) - eventMs;
|
|
809
818
|
return elapsedMs >= 0 && elapsedMs < cooldownMs;
|
|
810
819
|
}
|
|
820
|
+
/**
|
|
821
|
+
* True for outcomes that represent an actual judge rejection of a proposal —
|
|
822
|
+
* as opposed to 'empty' (no diff produced) or 'dispatch-blocked' (an infra
|
|
823
|
+
* hiccup), neither of which is a considered rejection.
|
|
824
|
+
*/
|
|
825
|
+
export function isRejectionWorkedOutcome(outcome) {
|
|
826
|
+
return outcome === 'judged-review' || outcome === 'judged-noise' || outcome === 'judged-decline';
|
|
827
|
+
}
|
|
828
|
+
/**
|
|
829
|
+
* Count of past judge-rejection outcomes recorded for any of the given
|
|
830
|
+
* identity keys (a WorkItem's cooldown keys). Unlike workedEventIsCooling
|
|
831
|
+
* (which only looks at the MOST RECENT event within a time window), this is
|
|
832
|
+
* a monotonic all-time count used to bound total attempts per logical item.
|
|
833
|
+
*/
|
|
834
|
+
export function rejectionAttemptCount(events, itemIds) {
|
|
835
|
+
const keys = new Set(itemIds);
|
|
836
|
+
let count = 0;
|
|
837
|
+
for (const event of events) {
|
|
838
|
+
if (keys.has(event.itemId) && isRejectionWorkedOutcome(event.outcome))
|
|
839
|
+
count++;
|
|
840
|
+
}
|
|
841
|
+
return count;
|
|
842
|
+
}
|
|
811
843
|
// ---------------------------------------------------------------------------
|
|
812
844
|
// M220: Judge-verdict feedback — recordVerdict + sweepJudgedProposals
|
|
813
845
|
// ---------------------------------------------------------------------------
|