lazycodex-ai 5.1.6 → 5.1.8
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/dist/cli/index.js +49 -45
- package/dist/cli/run/runnable-agent-resolver.d.ts +3 -0
- package/dist/cli-node/index.js +49 -45
- package/package.json +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +13 -3
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/test/download.test.ts +0 -16
- package/packages/omo-codex/plugin/components/bootstrap/test/environment.test.ts +3 -0
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +0 -27
- package/packages/omo-codex/plugin/components/rules/README.md +0 -1
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.5.md +1 -1
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.6.md +1 -1
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/test/directive-source.test.ts +0 -6
- package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +0 -15
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-role-matrix.test.ts +16 -0
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +8 -0
- package/packages/omo-codex/plugin/test/AGENTS.md +11 -0
- package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +0 -50
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +15 -5
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/debugging/SKILL.md +1 -1
- package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +8 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sisyphuslabs/omo-codex-plugin",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.8",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@sisyphuslabs/omo-codex-plugin",
|
|
9
|
-
"version": "5.1.
|
|
9
|
+
"version": "5.1.8",
|
|
10
10
|
"workspaces": [
|
|
11
11
|
"components/comment-checker",
|
|
12
12
|
"components/git-bash",
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
},
|
|
96
96
|
"components/comment-checker": {
|
|
97
97
|
"name": "@code-yeongyu/codex-comment-checker",
|
|
98
|
-
"version": "5.1.
|
|
98
|
+
"version": "5.1.8",
|
|
99
99
|
"license": "MIT",
|
|
100
100
|
"bin": {
|
|
101
101
|
"omo-comment-checker": "dist/cli.js"
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
},
|
|
118
118
|
"components/git-bash": {
|
|
119
119
|
"name": "@sisyphuslabs/codex-git-bash-hook",
|
|
120
|
-
"version": "5.1.
|
|
120
|
+
"version": "5.1.8",
|
|
121
121
|
"bin": {
|
|
122
122
|
"omo-git-bash-hook": "dist/cli.js"
|
|
123
123
|
},
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
},
|
|
132
132
|
"components/lazycodex-executor-verify": {
|
|
133
133
|
"name": "@code-yeongyu/codex-lazycodex-executor-verify",
|
|
134
|
-
"version": "5.1.
|
|
134
|
+
"version": "5.1.8",
|
|
135
135
|
"license": "MIT",
|
|
136
136
|
"bin": {
|
|
137
137
|
"lazycodex-executor-verify": "dist/cli.js"
|
|
@@ -149,7 +149,7 @@
|
|
|
149
149
|
},
|
|
150
150
|
"components/lsp": {
|
|
151
151
|
"name": "@code-yeongyu/codex-lsp",
|
|
152
|
-
"version": "5.1.
|
|
152
|
+
"version": "5.1.8",
|
|
153
153
|
"license": "MIT",
|
|
154
154
|
"dependencies": {
|
|
155
155
|
"@code-yeongyu/lsp-daemon": "file:../../../../lsp-daemon",
|
|
@@ -171,7 +171,7 @@
|
|
|
171
171
|
},
|
|
172
172
|
"components/rules": {
|
|
173
173
|
"name": "@code-yeongyu/codex-rules",
|
|
174
|
-
"version": "5.1.
|
|
174
|
+
"version": "5.1.8",
|
|
175
175
|
"license": "MIT",
|
|
176
176
|
"dependencies": {
|
|
177
177
|
"picomatch": "^4.0.7"
|
|
@@ -194,7 +194,7 @@
|
|
|
194
194
|
},
|
|
195
195
|
"components/teammode": {
|
|
196
196
|
"name": "@sisyphuslabs/codex-teammode",
|
|
197
|
-
"version": "5.1.
|
|
197
|
+
"version": "5.1.8",
|
|
198
198
|
"devDependencies": {
|
|
199
199
|
"@types/node": "^26.6.2",
|
|
200
200
|
"@vitest/coverage-v8": "5.0.1",
|
|
@@ -208,7 +208,7 @@
|
|
|
208
208
|
},
|
|
209
209
|
"components/telemetry": {
|
|
210
210
|
"name": "@code-yeongyu/codex-telemetry",
|
|
211
|
-
"version": "5.1.
|
|
211
|
+
"version": "5.1.8",
|
|
212
212
|
"license": "MIT",
|
|
213
213
|
"bin": {
|
|
214
214
|
"omo-telemetry": "dist/cli.js"
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
},
|
|
228
228
|
"components/ultrawork": {
|
|
229
229
|
"name": "@code-yeongyu/codex-ultrawork",
|
|
230
|
-
"version": "5.1.
|
|
230
|
+
"version": "5.1.8",
|
|
231
231
|
"license": "MIT",
|
|
232
232
|
"bin": {
|
|
233
233
|
"omo-ultrawork": "dist/cli.js"
|
|
@@ -246,7 +246,7 @@
|
|
|
246
246
|
},
|
|
247
247
|
"components/ulw-execute-continuation": {
|
|
248
248
|
"name": "@code-yeongyu/codex-ulw-execute-continuation",
|
|
249
|
-
"version": "5.1.
|
|
249
|
+
"version": "5.1.8",
|
|
250
250
|
"license": "MIT",
|
|
251
251
|
"bin": {
|
|
252
252
|
"omo-ulw-execute-continuation": "dist/cli.js"
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
},
|
|
265
265
|
"components/ulw-loop": {
|
|
266
266
|
"name": "@code-yeongyu/codex-ulw-loop",
|
|
267
|
-
"version": "5.1.
|
|
267
|
+
"version": "5.1.8",
|
|
268
268
|
"license": "MIT",
|
|
269
269
|
"bin": {
|
|
270
270
|
"omo-ulw-loop": "dist/cli.js",
|
|
@@ -73,7 +73,7 @@ Each phase has exactly one reference. Read it as you enter the phase — not in
|
|
|
73
73
|
| 4 | **Oracle Triple** — after 2 consecutive failed rounds, spawn three Oracles with orthogonal framings and synthesize | [references/methodology/04-oracle-triple.md](references/methodology/04-oracle-triple.md) |
|
|
74
74
|
| 5 | **User decision escalation** — only when evidence exhausted and the call has policy implications | [references/methodology/05-escalate.md](references/methodology/05-escalate.md) |
|
|
75
75
|
| 6 | **Root cause confirmation** — confirmed only when toggling the suspected cause toggles the bug | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
|
|
76
|
-
| 7 | **
|
|
76
|
+
| 7 | **Fix locked by a failing proof** — reuse the owner test that already fails or add one regression that fails on the pre-fix code, minimal green, no scope expansion | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
|
|
77
77
|
| 8 | **Manual QA** — actually use the system (tmux for CLI, Playwright for browser, real curl for API, real repro for binary) | [references/methodology/08-qa.md](references/methodology/08-qa.md) |
|
|
78
78
|
| 9 | **Cleanup** — walk the journal, revert every artifact, verify `git diff` shows only fix + test | [references/methodology/09-cleanup.md](references/methodology/09-cleanup.md) |
|
|
79
79
|
| 10 | **Final verification** — four evidence gates before declaring done | [references/methodology/09-cleanup.md](references/methodology/09-cleanup.md) |
|
|
@@ -51,6 +51,14 @@ The "mechanism" field is the acid test. If you can't write the causal chain from
|
|
|
51
51
|
|
|
52
52
|
Red, green, refactor. No shortcuts.
|
|
53
53
|
|
|
54
|
+
### 0. Look for the owner test first
|
|
55
|
+
|
|
56
|
+
Before writing a reproduction test, find the test that already owns this contract at the strongest boundary. Run it on the pre-fix code:
|
|
57
|
+
|
|
58
|
+
- **It already fails for this bug.** It is the red proof. Record its failure and skip step 1.
|
|
59
|
+
- **It passes but covers the path.** Extend it with the failing case (a table row, a fixture case) instead of adding a parallel test.
|
|
60
|
+
- **No owner exists.** Write the new reproduction test in step 1, and apply the repository's test-authoring gate if it has one.
|
|
61
|
+
|
|
54
62
|
### 1. Red — the reproduction as a test
|
|
55
63
|
|
|
56
64
|
Write a test that fails *specifically because of this bug*. Requirements:
|
|
@@ -41,6 +41,17 @@
|
|
|
41
41
|
- Hooks must fail closed/silent on malformed input; migration must not mutate user-owned settings or change bytes on repeat runs.
|
|
42
42
|
- Never assert prompt/skill prose wording — machine-consumed fields and shipped-copy equality only.
|
|
43
43
|
|
|
44
|
+
## TEST AUTHORING GATE
|
|
45
|
+
|
|
46
|
+
Before adding or changing a suite here, answer all four. A missing answer means do not add it yet:
|
|
47
|
+
|
|
48
|
+
1. What observable contract over the generated or installed artifact does it protect?
|
|
49
|
+
2. What credible regression in the build, sync, or install makes it fail?
|
|
50
|
+
3. Why does an existing suite not already catch it? Extend the family's owner suite or shared fixture instead of adding a near-duplicate.
|
|
51
|
+
4. Does it need a seam no shipped artifact needs? If yes, check the real artifact instead.
|
|
52
|
+
|
|
53
|
+
Reject the following unless the case independently guards a manifest, hook, migration, install, or cross-platform contract (and say which one): copied inventories, exact string greps over sources, replays of a shared fixture through a wrapper, and assertions that restate a manifest field. A retained suite that fails on the base is a product bug to fix, never a suite to delete. The full list is `.omo/rules/test-discipline.md` `## AUTHORING GATE` in the OmO repository.
|
|
54
|
+
|
|
44
55
|
## COMMANDS
|
|
45
56
|
|
|
46
57
|
- `npm test` (from `plugin/`, after `npm run build`)
|
|
@@ -340,56 +340,6 @@ function smokeImportComponent(component, event) {
|
|
|
340
340
|
}
|
|
341
341
|
}
|
|
342
342
|
|
|
343
|
-
function writeFakeLspDaemonCli(path) {
|
|
344
|
-
writeFileSync(
|
|
345
|
-
path,
|
|
346
|
-
[
|
|
347
|
-
"#!/usr/bin/env node",
|
|
348
|
-
'import { createHash } from "node:crypto";',
|
|
349
|
-
'import { appendFileSync, mkdirSync, readdirSync, unlinkSync } from "node:fs";',
|
|
350
|
-
'import { tmpdir } from "node:os";',
|
|
351
|
-
'import { dirname, join } from "node:path";',
|
|
352
|
-
'import { createServer } from "node:net";',
|
|
353
|
-
"",
|
|
354
|
-
"appendFileSync(process.env.FAKE_LSP_DAEMON_LOG, `${JSON.stringify(process.argv.slice(2))}\\n`);",
|
|
355
|
-
"const baseDir = process.env.OMO_LSP_DAEMON_DIR;",
|
|
356
|
-
'const versionDirName = readdirSync(baseDir).find((entry) => entry.startsWith("v")) ?? "v0";',
|
|
357
|
-
"const version = versionDirName.slice(1);",
|
|
358
|
-
"const dir = join(baseDir, versionDirName);",
|
|
359
|
-
'const naturalSocket = join(dir, "daemon.sock");',
|
|
360
|
-
'const digest = createHash("sha256").update(dir).digest("hex").slice(0, 16);',
|
|
361
|
-
"const socketPath = process.platform === \"win32\"",
|
|
362
|
-
"\t? `\\\\\\\\.\\\\pipe\\\\omo-lsp-${version}-${digest}`",
|
|
363
|
-
"\t: naturalSocket.length < 100 ? naturalSocket : join(tmpdir(), `omo-lsp-${version}-${digest}.sock`);",
|
|
364
|
-
"if (process.platform !== \"win32\") {",
|
|
365
|
-
"\tmkdirSync(dirname(socketPath), { recursive: true });",
|
|
366
|
-
"\ttry { unlinkSync(socketPath); } catch {}",
|
|
367
|
-
"}",
|
|
368
|
-
"const server = createServer((socket) => {",
|
|
369
|
-
'\tlet raw = "";',
|
|
370
|
-
'\tsocket.setEncoding("utf8");',
|
|
371
|
-
'\tsocket.on("data", (chunk) => {',
|
|
372
|
-
"\t\traw += chunk;",
|
|
373
|
-
'\t\tif (!raw.includes("\\n")) return;',
|
|
374
|
-
"\t\tconst request = JSON.parse(raw.trim());",
|
|
375
|
-
"\t\tconst response = {",
|
|
376
|
-
'\t\t\tjsonrpc: "2.0",',
|
|
377
|
-
"\t\t\tid: request.id,",
|
|
378
|
-
"\t\t\tresult: {",
|
|
379
|
-
'\t\t\t\tcontent: [{ type: "text", text: "error[fake] (1) at 1:1: Missing fake symbol." }],',
|
|
380
|
-
"\t\t\t},",
|
|
381
|
-
"\t\t};",
|
|
382
|
-
'\t\tsocket.end(`${JSON.stringify(response)}\\n`);',
|
|
383
|
-
"\t\tserver.close(() => process.exit(0));",
|
|
384
|
-
"\t});",
|
|
385
|
-
"});",
|
|
386
|
-
"server.listen(socketPath);",
|
|
387
|
-
"setTimeout(() => process.exit(1), 10000).unref();",
|
|
388
|
-
"",
|
|
389
|
-
].join("\n"),
|
|
390
|
-
);
|
|
391
|
-
}
|
|
392
|
-
|
|
393
343
|
async function stopTestDaemons(daemonRoot) {
|
|
394
344
|
if (!existsSync(daemonRoot)) return;
|
|
395
345
|
for (const versionDir of readdirSync(daemonRoot)) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// omo-codex-install:
|
|
2
|
+
// omo-codex-install:a1f96096cef4f8615e30953c86b15240f13309b354e404cf5f0ee3eb8c12905c:e5e0ce072c9aecb36bb20f87b647831eb69af1120a97e6d8f9751489afcb2166
|
|
3
3
|
var __esm = (fn, res, err) => () => {
|
|
4
4
|
if (fn)
|
|
5
5
|
try {
|
|
@@ -9984,7 +9984,7 @@ var package_default;
|
|
|
9984
9984
|
var init_package = __esm(() => {
|
|
9985
9985
|
package_default = {
|
|
9986
9986
|
name: "@oh-my-opencode/omo-codex",
|
|
9987
|
-
version: "5.1.
|
|
9987
|
+
version: "5.1.8",
|
|
9988
9988
|
type: "module",
|
|
9989
9989
|
private: true,
|
|
9990
9990
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -12529,6 +12529,12 @@ ${featureName} = true
|
|
|
12529
12529
|
}
|
|
12530
12530
|
return replaceOrInsertSetting(config, section, featureName, "true");
|
|
12531
12531
|
}
|
|
12532
|
+
function removeFeature(config, featureName) {
|
|
12533
|
+
const section = findTomlSection(config, "features");
|
|
12534
|
+
if (section !== null)
|
|
12535
|
+
return removeSetting(config, section, featureName);
|
|
12536
|
+
return removeRootSetting(config, `features.${featureName}`);
|
|
12537
|
+
}
|
|
12532
12538
|
|
|
12533
12539
|
// packages/omo-codex/src/install/codex-config-marketplaces.ts
|
|
12534
12540
|
var SISYPHUS_LEGACY_MARKETPLACES = ["lazycodex", "code-yeongyu-codex-plugins"];
|
|
@@ -13121,6 +13127,7 @@ async function updateCodexConfig(input) {
|
|
|
13121
13127
|
config = ensureFeatureEnabled(config, "plugins");
|
|
13122
13128
|
config = ensureFeatureEnabled(config, "plugin_hooks");
|
|
13123
13129
|
config = ensureFeatureEnabled(config, "multi_agent");
|
|
13130
|
+
config = removeFeature(config, "child_agents_md");
|
|
13124
13131
|
config = removeUnsupportedCodexMultiAgentModeConfig(config);
|
|
13125
13132
|
config = ensureCodexReasoningConfig(config, applyReasoningOverride(await readCodexModelCatalog(input.repoRoot), input.reasoning));
|
|
13126
13133
|
config = ensureCodexMultiAgentV2Config(config, {
|
|
@@ -19442,7 +19449,8 @@ var OmoMemoryRecallSchema = object({
|
|
|
19442
19449
|
event_caps: OmoMemoryRecallEventCapsSchema.default({ tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 }),
|
|
19443
19450
|
sidecar_max_tokens: number2().int().positive().default(48000),
|
|
19444
19451
|
max_concurrent_wakes: number2().int().positive().default(2),
|
|
19445
|
-
tool_budget: number2().int().positive().default(8)
|
|
19452
|
+
tool_budget: number2().int().positive().default(8),
|
|
19453
|
+
query_expansion: boolean2().default(false)
|
|
19446
19454
|
}).strict();
|
|
19447
19455
|
var OmoMemoryNudgeSchema = object({
|
|
19448
19456
|
enabled: boolean2().default(true),
|
|
@@ -19503,7 +19511,8 @@ var OmoMemoryRecallLayerSchema = object({
|
|
|
19503
19511
|
event_caps: OmoMemoryRecallEventCapsLayerSchema.optional(),
|
|
19504
19512
|
sidecar_max_tokens: number2().int().positive().optional(),
|
|
19505
19513
|
max_concurrent_wakes: number2().int().positive().optional(),
|
|
19506
|
-
tool_budget: number2().int().positive().optional()
|
|
19514
|
+
tool_budget: number2().int().positive().optional(),
|
|
19515
|
+
query_expansion: boolean2().optional()
|
|
19507
19516
|
}).strict();
|
|
19508
19517
|
var OmoMemoryNudgeLayerSchema = object({
|
|
19509
19518
|
enabled: boolean2().optional(),
|
|
@@ -19580,7 +19589,8 @@ var OmoMemorySettingsSchema = object({
|
|
|
19580
19589
|
event_caps: { tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 },
|
|
19581
19590
|
sidecar_max_tokens: 48000,
|
|
19582
19591
|
max_concurrent_wakes: 2,
|
|
19583
|
-
tool_budget: 8
|
|
19592
|
+
tool_budget: 8,
|
|
19593
|
+
query_expansion: false
|
|
19584
19594
|
}),
|
|
19585
19595
|
compile_warn_tokens: number2().int().positive().default(30000),
|
|
19586
19596
|
agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
|
|
@@ -73,7 +73,7 @@ Each phase has exactly one reference. Read it as you enter the phase — not in
|
|
|
73
73
|
| 4 | **Oracle Triple** — after 2 consecutive failed rounds, spawn three Oracles with orthogonal framings and synthesize | [references/methodology/04-oracle-triple.md](references/methodology/04-oracle-triple.md) |
|
|
74
74
|
| 5 | **User decision escalation** — only when evidence exhausted and the call has policy implications | [references/methodology/05-escalate.md](references/methodology/05-escalate.md) |
|
|
75
75
|
| 6 | **Root cause confirmation** — confirmed only when toggling the suspected cause toggles the bug | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
|
|
76
|
-
| 7 | **
|
|
76
|
+
| 7 | **Fix locked by a failing proof** — reuse the owner test that already fails or add one regression that fails on the pre-fix code, minimal green, no scope expansion | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
|
|
77
77
|
| 8 | **Manual QA** — actually use the system (tmux for CLI, Playwright for browser, real curl for API, real repro for binary) | [references/methodology/08-qa.md](references/methodology/08-qa.md) |
|
|
78
78
|
| 9 | **Cleanup** — walk the journal, revert every artifact, verify `git diff` shows only fix + test | [references/methodology/09-cleanup.md](references/methodology/09-cleanup.md) |
|
|
79
79
|
| 10 | **Final verification** — four evidence gates before declaring done | [references/methodology/09-cleanup.md](references/methodology/09-cleanup.md) |
|
|
@@ -51,6 +51,14 @@ The "mechanism" field is the acid test. If you can't write the causal chain from
|
|
|
51
51
|
|
|
52
52
|
Red, green, refactor. No shortcuts.
|
|
53
53
|
|
|
54
|
+
### 0. Look for the owner test first
|
|
55
|
+
|
|
56
|
+
Before writing a reproduction test, find the test that already owns this contract at the strongest boundary. Run it on the pre-fix code:
|
|
57
|
+
|
|
58
|
+
- **It already fails for this bug.** It is the red proof. Record its failure and skip step 1.
|
|
59
|
+
- **It passes but covers the path.** Extend it with the failing case (a table row, a fixture case) instead of adding a parallel test.
|
|
60
|
+
- **No owner exists.** Write the new reproduction test in step 1, and apply the repository's test-authoring gate if it has one.
|
|
61
|
+
|
|
54
62
|
### 1. Red — the reproduction as a test
|
|
55
63
|
|
|
56
64
|
Write a test that fails *specifically because of this bug*. Requirements:
|