ruvnet-brain 4.7.21 → 4.7.23
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 +2 -2
- package/bin/install.mjs +126 -9
- package/console/activity.js +122 -38
- package/package.json +2 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/scripts/agentdb-recall-process.mjs +115 -5
- package/plugin/scripts/agentdb-recall-reader.mjs +44 -2
- package/plugin/scripts/agentdb-recall.mjs +34 -12
- package/plugin/scripts/completion-claim-evidence.mjs +185 -11
- package/plugin/scripts/continuation-gate.mjs +52 -7
- package/plugin/scripts/lesson-gate.mjs +7 -39
- package/plugin/scripts/lesson-scope.mjs +51 -0
- package/plugin/scripts/lesson-store.mjs +1 -1
- package/plugin/scripts/ruflo-bin.mjs +14 -6
- package/plugin/scripts/ruflo-memory-hooks.mjs +157 -19
- package/plugin/scripts/session-snapshot-hook.mjs +1 -1
- package/plugin/scripts/session-start-core.mjs +2 -1
- package/plugin/scripts/session-start-health.mjs +3 -2
- package/scripts/codex-boot-surface-proof.mjs +208 -0
- package/scripts/generation-census.mjs +220 -0
- package/scripts/issue-autofix-agents.mjs +172 -0
- package/scripts/issue-autofix-comment.mjs +224 -0
- package/scripts/issue-autofix-diff.mjs +108 -0
- package/scripts/issue-autofix-exec.mjs +128 -0
- package/scripts/issue-autofix-fix.mjs +104 -0
- package/scripts/issue-autofix-gate.mjs +137 -0
- package/scripts/issue-autofix-night.mjs +164 -0
- package/scripts/issue-autofix-notes.mjs +346 -0
- package/scripts/issue-autofix-policy.mjs +349 -0
- package/scripts/issue-autofix-prompts.mjs +105 -0
- package/scripts/issue-autofix-release-ship.mjs +226 -0
- package/scripts/issue-autofix-release-util.mjs +141 -0
- package/scripts/issue-autofix-release.mjs +272 -0
- package/scripts/issue-autofix-report.mjs +121 -0
- package/scripts/issue-autofix-runner.mjs +75 -0
- package/scripts/issue-autofix-sandbox.mjs +108 -0
- package/scripts/issue-autofix-security.mjs +346 -0
- package/scripts/issue-autofix-selftest.mjs +101 -0
- package/scripts/issue-autofix-state.mjs +61 -0
- package/scripts/issue-autofix.mjs +382 -0
- package/scripts/issue-fix-lock.mjs +40 -0
- package/scripts/issue-fix.mjs +33 -20
- package/scripts/no-silent-substitution.mjs +1 -1
- package/scripts/ntfy-inbox.mjs +15 -0
- package/scripts/onboarding-console.mjs +76 -15
- package/scripts/recall-latency-probe.mjs +48 -0
- package/scripts/release-prepush-checks.mjs +251 -0
- package/scripts/release-prepush.mjs +168 -0
- package/scripts/release-qualification-contract.mjs +41 -0
- package/scripts/wired-check.mjs +13 -5
|
@@ -345,6 +345,24 @@ export const RELEASE_REQUIREMENTS = Object.freeze({
|
|
|
345
345
|
"reason": "Complete outbox tails replay and accepted pending journal events survive capacity pressure without silent deletion",
|
|
346
346
|
"files": [
|
|
347
347
|
]
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"id": "open-issue-fixes-4-7-22",
|
|
351
|
+
"reason": "Reporter-filed defects stay fixed: completion evidence never binds a masked or negated check and a masked check is an advisory, not a false 'no check ran' stop; the boot surface of a recovered Codex host is proven per changed path; Console fleet and lesson counts match by store identity and never show unknown as zero; one project-scope rule is shared by the lesson gate and the Console; a refused or unreadable memory restore is reported as such and an aborted Ruflo call leaves no child process",
|
|
352
|
+
"files": [],
|
|
353
|
+
"platformFiles": {
|
|
354
|
+
"linux": ["tests/unit/continuation-gate-codex-transcript.test.mjs", "tests/unit/codex-boot-surface-proof.test.mjs", "tests/unit/console-activity-fleet-dedupe.test.mjs", "tests/unit/console-activity-identity.test.mjs", "tests/unit/console-activity-lessons.test.mjs", "tests/unit/lesson-gate.test.mjs", "tests/unit/ruflo-memory-session.test.mjs"],
|
|
355
|
+
"macos": ["tests/unit/continuation-gate-codex-transcript.test.mjs", "tests/unit/codex-boot-surface-proof.test.mjs", "tests/unit/console-activity-fleet-dedupe.test.mjs", "tests/unit/console-activity-identity.test.mjs", "tests/unit/console-activity-lessons.test.mjs", "tests/unit/lesson-gate.test.mjs", "tests/unit/ruflo-memory-session.test.mjs"]
|
|
356
|
+
}
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"id": "issue-autofix-bounded-writer",
|
|
360
|
+
"reason": "The unattended issue fixer (ADR-107) stays inside its authority: kill switch, single-writer lock, deny-by-default editable paths, the static malware and secret scan, the manifest/lockfile/pack/audit night gate, the red-team judge, restricted tool-less LLM stages, the macOS sandbox for model-written code (macOS only), never-weakened tests, independent verifier, resumable never-doubled release steps, no force or merge, owner-marker-prefixed comments, personal notes that are never boilerplate or repeated, and a registry and LaunchAgent that match. It runs on the owner's macOS launchd, so it is qualified on macOS and Linux only, the same scope as the ntfy inbox reader",
|
|
361
|
+
"files": [],
|
|
362
|
+
"platformFiles": {
|
|
363
|
+
"linux": ["tests/unit/issue-autofix-policy.test.mjs", "tests/unit/issue-autofix-agents.test.mjs", "tests/unit/issue-autofix-release.test.mjs", "tests/unit/issue-autofix-release-ship.test.mjs", "tests/unit/issue-autofix-comment.test.mjs", "tests/unit/issue-autofix-deploy.test.mjs", "tests/unit/issue-autofix-security.test.mjs", "tests/unit/issue-autofix-notes.test.mjs", "tests/unit/issue-autofix-gate.test.mjs", "tests/unit/issue-autofix-night.test.mjs"],
|
|
364
|
+
"macos": ["tests/unit/issue-autofix-policy.test.mjs", "tests/unit/issue-autofix-agents.test.mjs", "tests/unit/issue-autofix-release.test.mjs", "tests/unit/issue-autofix-release-ship.test.mjs", "tests/unit/issue-autofix-comment.test.mjs", "tests/unit/issue-autofix-deploy.test.mjs", "tests/unit/issue-autofix-security.test.mjs", "tests/unit/issue-autofix-notes.test.mjs", "tests/unit/issue-autofix-gate.test.mjs", "tests/unit/issue-autofix-night.test.mjs", "tests/unit/issue-autofix-sandbox.test.mjs"]
|
|
365
|
+
}
|
|
348
366
|
}
|
|
349
367
|
],
|
|
350
368
|
"integration": [
|
|
@@ -367,6 +385,11 @@ export const RELEASE_REQUIREMENTS = Object.freeze({
|
|
|
367
385
|
"reason": "Retired 2026-10-12: the learning queue, flush worker and Console queue recovery were deleted (owner ruling: hooks only call rUv's memory tools); learning writes are covered by canonical-learning-capture",
|
|
368
386
|
"files": []
|
|
369
387
|
},
|
|
388
|
+
{
|
|
389
|
+
"id": "release-prepush-shift-left",
|
|
390
|
+
"reason": "The explicit release pre-push gate collects every failure with per-check timing, reads the newest corpus generation's public census over HTTP Range (refusing zip64, unknown compression and CRC mismatch), names each stale claim surface with its old and new number, refuses stray added artifacts with anchored patterns, selects text-anchored tests for changed source, and before dispatch requires the preflight's sealed generation to still be the newest",
|
|
391
|
+
"files": ["tests/unit/release-prepush.test.mjs", "tests/unit/generation-census.test.mjs"]
|
|
392
|
+
},
|
|
370
393
|
{
|
|
371
394
|
"id": "canonical-progression-store",
|
|
372
395
|
"reason": "Actual adopted canonical storage, exact readback, and concurrent session restoration retain consent and complete history",
|
|
@@ -441,6 +464,24 @@ export const RELEASE_REQUIREMENTS = Object.freeze({
|
|
|
441
464
|
"reason": "POSIX non-root permission refusal, capacity-pressure reporting and recovery preserve all accepted pending continuity events",
|
|
442
465
|
"files": [
|
|
443
466
|
]
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
"id": "open-issue-fixes-4-7-22-integration",
|
|
470
|
+
"reason": "A named release over an existing install moves, skips truthfully or warns on a downgrade instead of reporting a false lookup failure; the Ruflo memory hooks honour the absolute deadline and abort, kill the whole child process group, and never report a refused or partly unreadable restore as restored",
|
|
471
|
+
"files": [],
|
|
472
|
+
"platformFiles": {
|
|
473
|
+
"linux": ["tests/integration/stale-install-trap.test.mjs", "tests/integration/ruflo-memory-hooks.test.mjs"],
|
|
474
|
+
"macos": ["tests/integration/stale-install-trap.test.mjs", "tests/integration/ruflo-memory-hooks.test.mjs"]
|
|
475
|
+
}
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
"id": "issue-autofix-simulated-end-to-end",
|
|
479
|
+
"reason": "The whole autofix night (select, AIDefence screen, plan, build, scan, sandboxed test validity, red-team, verify, one batched release, push, pull request, fast-forward, dispatch, terminal check, one personal note per person) runs against a file:// origin with a fake gh and fake claude; hostile fixes (obfuscated payload, new dependency, off-allowlist edit, red-team flag, new audit advisory) never ship, one failing fix never blocks the others, a dropped connection or the kill switch pauses and the next run resumes without a second push or dispatch, and only a red after main moved halts. macOS and Linux only (the job is the owner's launchd tool)",
|
|
480
|
+
"files": [],
|
|
481
|
+
"platformFiles": {
|
|
482
|
+
"linux": ["tests/integration/issue-autofix-simulate.test.mjs", "tests/integration/issue-autofix-simulate-night.test.mjs"],
|
|
483
|
+
"macos": ["tests/integration/issue-autofix-simulate.test.mjs", "tests/integration/issue-autofix-simulate-night.test.mjs"]
|
|
484
|
+
}
|
|
444
485
|
}
|
|
445
486
|
]
|
|
446
487
|
});
|
package/scripts/wired-check.mjs
CHANGED
|
@@ -172,6 +172,10 @@ const STANDALONE = [
|
|
|
172
172
|
// plist's own ProgramArguments on 2026-07-23, not assumed from the header comment alone:
|
|
173
173
|
['clear-claude-tmp', 'launchd, every 3h (out-of-repo scheduler) — confirmed live: '
|
|
174
174
|
+ 'com.stuartkerr.clear-claude-tmp.plist is loaded and its ProgramArguments invoke this exact file'],
|
|
175
|
+
['issue-autofix', 'launchd, daily 10:30 (out-of-repo scheduler, ADR-107): deploy/com.ruvnet.issue-autofix.plist '
|
|
176
|
+
+ 'ProgramArguments invoke scripts/issue-fix.mjs --mode autofix through scripts/job-heartbeat.sh, and issue-fix.mjs '
|
|
177
|
+
+ 'dynamically imports this file for that mode. Off unless the repository variable ISSUE_AUTOFIX is exactly on; '
|
|
178
|
+
+ 'the owner arms it after the dry-run simulation and a supervised live dry-run'],
|
|
175
179
|
['nightly-gists', 'manual re-embed of the developer checkout gists store (the launchd job '
|
|
176
180
|
+ 'com.ruvnet.brain-gists was retired 2026-10-26: no installed brain reads that store)'],
|
|
177
181
|
['nightly-wrapper', 'author-run maintenance harness, deliberately unscheduled; refuses primary, nested, and dirty worktrees'],
|
|
@@ -226,6 +230,8 @@ const STANDALONE = [
|
|
|
226
230
|
+ 'starts themselves (--url http://127.0.0.1:.../page.html, via Playwright) — needs a live '
|
|
227
231
|
+ 'rendered page, not a static diff, so it is a dev-loop tool like gen-console-images.mjs, not a '
|
|
228
232
|
+ 'CI step'],
|
|
233
|
+
['recall-latency-probe', 'human-run measurement (#429): times prompt recall and SessionStart restore against a real '
|
|
234
|
+
+ 'project store and exits 1 outside the budgets; it reads the owner\'s live store and loads the machine, so no scheduler runs it'],
|
|
229
235
|
['dev-plugin-link', 'developer convenience CLI — its own header: "Users never run it." Hot-links '
|
|
230
236
|
+ 'the cached plugin install to the working tree so hook edits apply without a CC restart'],
|
|
231
237
|
|
|
@@ -342,11 +348,13 @@ const HELD = {
|
|
|
342
348
|
+ 'ADR-028 and 4.0-READINESS §4 both name this the single largest 4.0 gap. HELD because the fix is a '
|
|
343
349
|
+ 'real decision — one in-session consumer that speaks unprompted, with a one-action permanent silence '
|
|
344
350
|
+ '— not a line of wiring.',
|
|
345
|
-
'issue-fix': 'the GitHub-issue
|
|
346
|
-
+ 'issue-watch.yml
|
|
347
|
-
+ '
|
|
348
|
-
+ '
|
|
349
|
-
+ '
|
|
351
|
+
'issue-fix': 'the GitHub-issue fixer (modes unattended, supervised, autofix). Verified 2026-10-29: there is no '
|
|
352
|
+
+ 'issue-watch.yml — the watcher runs from launchd — and the launchd jobs com.ruvnet.issue-fix '
|
|
353
|
+
+ '(--mode unattended, read-only triage) and com.ruvnet.issue-autofix (--mode autofix, ADR-107) run this '
|
|
354
|
+
+ 'file through scripts/job-heartbeat.sh from deploy/*.plist. A .plist is not a scanned caller extension, so '
|
|
355
|
+
+ 'the gate cannot see that invocation; it stays HELD for that reason, not because it is unwired. The '
|
|
356
|
+
+ 'autofix mode is armed only by the owner (repository variable ISSUE_AUTOFIX=on plus the LaunchAgent), '
|
|
357
|
+
+ 'a cost-and-consent decision, not a gap to silently close.',
|
|
350
358
|
};
|
|
351
359
|
|
|
352
360
|
/** Where first-party executables live. v1 knew only the first line of this table. */
|