Skip to content

feat(integrations): connect named Hermes profiles (#7674) - #7700

Merged
lidge-jun merged 8 commits into
devfrom
lane/m2-hermes-profiles
Oct 25, 2026
Merged

lidge-jun merged 8 commits into
devfrom
lane/m2-hermes-profiles

Conversation

@lidge-jun

@lidge-jun lidge-jun commented Oct 24, 2026 •

Copy link
Copy Markdown
Owner

Summary

Hermes keeps a separate home for each bot profile: the default profile is HERMES_HOME / %LOCALAPPDATA%\hermes / ~/.hermes, and each named profile is <root>/profiles/<name>/config.yaml, run with HERMES_HOME pointed at it. Connect → Hermes only ever wrote the default profile, so other bots never received the OpenCodex provider or model catalog (#7674).

  • Discovery follows Hermes' own rules (NousResearch/hermes-agent hermes_constants.py at 4dcef215: PROFILE_ID_RE, identity markers, profiles/.deleted tombstones, _hermes_root_of root derivation, Windows %LOCALAPPDATA%\hermes); links and junctions are never listed. Docs: https://hermes-agent.nousresearch.com/docs/user-guide/profiles
  • Selection is explicit: profile=<name> on /api/client-integrations/hermes, client=hermes&profile=<name> on preview/journal/restore; GET /api/client-integrations/hermes/profiles lists every profile with its own state. No selector (or profile=default) behaves exactly as before.
  • Ownership per named profile lives in integrations/hermes-profiles/<name>/ (records, journal, snapshots), so apply, disable, replace, undo and history deletion stay inside that profile. Only providers.opencodex is written; each profile keeps its model.default and other providers.
  • Boundaries: scoped requests never reach Aside handlers or non-Hermes operations; flight keys carry the profile (a second profile is busy, never joined); a guarded store facade plus the writer's synchronous guard (restore now honors it too) re-check the pinned profile directories, link/junction refusal, tombstones and the owner record path before any disk access, so a same-named profile under another Hermes home cannot take over ownership. Uninstall pins and guards every owned profile.
  • Connect → Hermes lists profiles with per-profile status; selecting one scopes the switch, preview, history and undo to it.
  • Docs: docs-site integrations guide section; new structure/clients/hermes.md (structure/clients/integrations.md net 0 lines).

Out of scope: CLI profile flags, an "apply to all profiles" batch action, translated docs pages, aggregating named-profile rows into the unscoped journal. Hermes has no automatic catalog refresh today (default included), so profiles match that.

Connect → Hermes with named profiles

Closes #7674

Verification

Final head d3718f787cf9c33af24cff8d1d7e7cc52943f131 (includes origin/dev 26598df2c), Windows 11, Bun 1.4.3 test runner.

  • Regression red before the fix (base 0aeaf0cb6): bun test tests/clients/hermes-profile-routes.test.ts → 0 pass / 8 fail (every profile-scoped request answered 400).
  • Focused + affected at head: bun test tests/clients/hermes-profile-routes.test.ts tests/clients/hermes-profiles.test.ts tests/test-layout-tooling.test.ts tests/test-layout.test.ts tests/server/management-integration-routes.test.ts tests/cli/uninstall.test.ts tests/cli/cli-integration-preview.test.ts → 312 pass / 0 fail.
  • bun run typecheck, bun run structure:check, bun run privacy:scan, bun run lint:gui → exit 0. GUI tests (cd gui && bun run test) → 3515 pass / 0 fail. GUI tsc -b exit 0. docs-site astro build exit 0 (593 pages, internal links checked).
  • bun run test:changed → exit 124 on this host. The failures are EICACLS (icacls) inside atomicWriteFile under the parallel isolate runner and affect Claude Desktop, native-main, Aside and Hermes write tests alike. The same runner on clean origin/dev 26598df2c fails the same way (bun run test tests/server/management-integration-routes.test.ts tests/cli/uninstall.test.ts tests/codex-integration/native-profile-startup.test.ts → 166 pass / 38 fail), and those files pass when run directly here (above). Treated as a pre-existing host environment failure; coverage left to CI.
  • Independent read-only review (codex/gpt-6.1-sol high): rounds 1–3 FAIL with 10 blockers, all fixed with regression tests; round 4 PASS; final review at 3c21fd4b3 PASS (one low GUI finding, fixed in df90448a4); delta re-review at df90448a4 PASS, 0 findings.
  • react-doctor@0.9.11 gui --scope changed --blocking warning → no issues (the profile list uses ul/li since a70741830); GUI tests rerun at that head → 3515 pass / 0 fail.
  • CI shard 1/4 at a70741830 caught a real regression: tests/clients/integrations-writer-guard.test.ts "restore keeps its existing contract" (restore must ignore the background-refresh guard). Fixed in d3718f787 with a separate restoreGuard hook for the Hermes boundary; that file plus Hermes, management-route, uninstall and Aside suites → 266 pass / 0 fail. Remaining direct-run failures on this host (claude-messages-endpoint: 3 tests) reproduce identically on clean origin/dev 26598df2c.
  • CI: ci.yml workflow_dispatch lane=all on the exact head: https://github.com/lidge-jun/opencodex/actions/runs/40143539223
  • NOT RUN: full bun run test (shared Windows host; the per-user test lock is contended by other lanes and the runner hits the EICACLS environment failure above).

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

Hermes keeps one home per profile (<root>/profiles/<name>/config.yaml, run
with HERMES_HOME pointed at it), and Connect only ever wrote the default
profile. Named profiles are now discovered with Hermes' own rules (id grammar,
identity markers, .deleted tombstones, _hermes_root_of root derivation,
Windows %LOCALAPPDATA%\hermes) and selected explicitly with profile=<name>.

Each named profile owns integrations/hermes-profiles/<name>/ (records,
journal, snapshots), so apply, disable, replace, undo and history deletion
stay inside that profile. Without a selector, or with profile=default, the
default profile, root store and paths behave exactly as before. Only
providers.opencodex is written; model.default is never touched.

A scoped request skips every Aside delegation and sees only Hermes
operations; flight keys carry the profile so a second profile is busy rather
than joined; a guarded store facade and the writer's synchronous guard
(restore now honors it too) re-check the pinned profile directories, link and
junction refusal, tombstones and the owner record path before any disk
access. Uninstall pins and guards every owned profile.

Connect -> Hermes lists profiles with per-profile status; docs-site guide and
structure/clients/hermes.md describe the contract.
@coderabbitai

coderabbitai Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Caution

Review failed

The pull request is closed.

Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

✅ Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the enhancement New feature or request label Oct 24, 2026
@lidge-jun

Copy link
Copy Markdown
Owner Author

Local CI-equivalent (Linux) at d3718f7

PASS under the temporary base-identical exception; raw failed exits are retained below.

Host lidge-AI-AI; Ubuntu 24.04.4 LTS x86_64; kernel 7.0.0-30-generic. Pressure before suite: ok, load 0.16, 16 CPUs, available memory 24.0 GiB.
Exact detached/tested SHA d3718f787cf9c33af24cff8d1d7e7cc52943f131; brief SHA a7074183018081ec865151fa0f2cfa3e76203688; head moved: True. Comparison base 26598df2c4c07d781e344ac6119953fed77ecb27; merge-base 26598df2c4c07d781e344ac6119953fed77ecb27. Workflow and setup-action authority are the files at this exact head. Bun test-runner 1.4.3 / runtime 1.4.4, scratch-installed binaries verified and first on PATH for their respective roles.

Environment: CI=true, private 0700 OPENCODEX_TEST_TRUSTED_FIXTURE_DIR=/home/lidgeai/ocx-linux-r2.uFsToH/trusted-fixtures. GIT_DIR, GIT_INDEX_FILE, GIT_WORK_TREE explicitly unset. Default scope/general, batch size ≤12, no parallel override; original 120s batch deadline, 15s kill grace, --timeout 60000 retained. Original planner/runner functions are unchanged except absolute script-directory anchors; the final loop continues after a failed batch without retrying it. Shared identical frozen installs/GUI build were executed once.

Selectors: ci=True, GUI=True, docs=True, structure=True. The requested direct structure check runs as well.

Shard Completed / selected batches Complete
1/4 63/63 True
2/4 59/59 True
3/4 64/64 True
4/4 64/64 True

Test-file coverage: 2602/2602 general files, no gaps/duplicates: True. Dedicated storage-policy/api-usage and GUI tests are separate below.

Command Bun Exit Pass / fail / skip
bun install --frozen-lockfile 1.4.3 0 N/A
cd gui && bun install --frozen-lockfile 1.4.3 0 N/A
cd gui && bun run build 1.4.3 0 N/A
bash /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7700-d3718f787c/shard-1.sh 1/4 (full-coverage continuation of scripts/ci/run-bun-test-batches.sh) 1.4.3 0 14110/0/26
bash /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7700-d3718f787c/shard-2.sh 2/4 (full-coverage continuation of scripts/ci/run-bun-test-batches.sh) 1.4.3 1 12537/0/51
bash /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7700-d3718f787c/shard-3.sh 3/4 (full-coverage continuation of scripts/ci/run-bun-test-batches.sh) 1.4.3 0 12989/0/84
bash /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7700-d3718f787c/shard-4.sh 4/4 (full-coverage continuation of scripts/ci/run-bun-test-batches.sh) 1.4.3 0 12698/0/13
cd gui; bun run lint 1.4.3 0 N/A
bun x tsc --noEmit 1.4.3 0 N/A
bun x tsc --noEmit -p tests/tsconfig.doctor-service-memory-contract.json 1.4.3 0 N/A
bun x tsc --ignoreConfig --noEmit --strict --target ESNext --module ESNext --moduleResolution bundler --types bun-types --skipLibCheck scripts/ci/docker-smoke.ts 1.4.3 0 N/A
cd gui && bun test --isolate tests 1.4.3 0 3515/0/0
bun run privacy:scan 1.4.3 0 N/A
bun run skill:surface:check 1.4.3 0 N/A
bun build scripts/release.ts --target=bun --outdir=.tmp/ci-release-script-check 1.4.3 0 N/A
git rev-parse HEAD > gui/dist/build-commit.txt; git rev-parse HEAD:gui > gui/dist/build-gui-tree.txt 1.4.3 0 N/A
bun run src/cli/index.ts help 1.4.3 0 N/A
bun run structure:check 1.4.4 0 N/A
bun test --isolate ./tests/storage/api-storage-policy-already-running.test.ts ./tests/storage/api-storage-policy-mutation-busy.test.ts ./tests/storage/api-storage-policy-put-race.test.ts ./tests/storage/api-storage-policy-run.test.ts ./tests/storage/api-storage-policy.test.ts ./tests/storage/api-storage.test.ts 1.4.3 0 9/0/0
bun test --isolate ./tests/server/api-usage.test.ts 1.4.3 0 34/0/0
cd docs-site && bun install --frozen-lockfile 1.4.4 0 N/A
cd docs-site && bun run build 1.4.4 0 N/A

Every batch uses bun test --isolate --timeout 60000 <exact manifest files> under the unchanged process deadline:

Shard / batch Exit Pass Fail Skip
1/4, 1/63 0 242 0 0
1/4, 2/63 0 237 0 0
1/4, 3/63 0 279 0 0
1/4, 4/63 0 324 0 0
1/4, 5/63 0 218 0 0
1/4, 6/63 0 279 0 3
1/4, 7/63 0 259 0 0
1/4, 8/63 0 322 0 0
1/4, 9/63 0 276 0 0
1/4, 10/63 0 254 0 0
1/4, 11/63 0 184 0 0
1/4, 12/63 0 8 0 0
1/4, 13/63 0 295 0 2
1/4, 14/63 0 215 0 0
1/4, 15/63 0 135 0 0
1/4, 16/63 0 245 0 0
1/4, 17/63 0 621 0 0
1/4, 18/63 0 223 0 0
1/4, 19/63 0 277 0 2
1/4, 20/63 0 461 0 1
1/4, 21/63 0 303 0 1
1/4, 22/63 0 93 0 0
1/4, 23/63 0 14 0 0
1/4, 24/63 0 24 0 0
1/4, 25/63 0 217 0 0
1/4, 26/63 0 239 0 0
1/4, 27/63 0 112 0 0
1/4, 28/63 0 141 0 0
1/4, 29/63 0 53 0 0
1/4, 30/63 0 235 0 0
1/4, 31/63 0 203 0 6
1/4, 32/63 0 206 0 0
1/4, 33/63 0 240 0 0
1/4, 34/63 0 301 0 0
1/4, 35/63 0 302 0 0
1/4, 36/63 0 219 0 0
1/4, 37/63 0 245 0 0
1/4, 38/63 0 219 0 0
1/4, 39/63 0 377 0 0
1/4, 40/63 0 290 0 0
1/4, 41/63 0 185 0 0
1/4, 42/63 0 407 0 0
1/4, 43/63 0 175 0 0
1/4, 44/63 0 296 0 0
1/4, 45/63 0 224 0 0
1/4, 46/63 0 274 0 0
1/4, 47/63 0 533 0 0
1/4, 48/63 0 236 0 0
1/4, 49/63 0 332 0 0
1/4, 50/63 0 200 0 0
1/4, 51/63 0 190 0 0
1/4, 52/63 0 232 0 2
1/4, 53/63 0 200 0 1
1/4, 54/63 0 239 0 0
1/4, 55/63 0 61 0 0
1/4, 56/63 0 71 0 0
1/4, 57/63 0 5 0 0
1/4, 58/63 0 18 0 0
1/4, 59/63 0 212 0 0
1/4, 60/63 0 137 0 2
1/4, 61/63 0 213 0 0
1/4, 62/63 0 121 0 0
1/4, 63/63 0 162 0 6
2/4, 1/59 0 278 0 0
2/4, 2/59 0 251 0 0
2/4, 3/59 0 201 0 0
2/4, 4/59 0 282 0 0
2/4, 5/59 0 186 0 0
2/4, 6/59 0 166 0 7
2/4, 7/59 0 204 0 0
2/4, 8/59 0 320 0 0
2/4, 9/59 0 217 0 1
2/4, 10/59 0 380 0 0
2/4, 11/59 1 330 0 0
2/4, 12/59 0 247 0 0
2/4, 13/59 0 237 0 2
2/4, 14/59 0 228 0 2
2/4, 15/59 0 138 0 1
2/4, 16/59 0 7 0 0
2/4, 17/59 0 15 0 0
2/4, 18/59 0 189 0 0
2/4, 19/59 0 468 0 2
2/4, 20/59 0 105 0 0
2/4, 21/59 0 92 0 0
2/4, 22/59 0 1 0 0
2/4, 23/59 0 17 0 0
2/4, 24/59 0 239 0 0
2/4, 25/59 0 416 0 1
2/4, 26/59 0 268 0 2
2/4, 27/59 0 233 0 0
2/4, 28/59 0 177 0 2
2/4, 29/59 0 249 0 0
2/4, 30/59 0 172 0 0
2/4, 31/59 0 92 0 0
2/4, 32/59 0 80 0 0
2/4, 33/59 0 234 0 0
2/4, 34/59 0 185 0 0
2/4, 35/59 0 141 0 0
2/4, 36/59 0 202 0 0
2/4, 37/59 0 342 0 0
2/4, 38/59 0 232 0 0
2/4, 39/59 0 212 0 0
2/4, 40/59 0 221 0 0
2/4, 41/59 0 231 0 0
2/4, 42/59 0 184 0 0
2/4, 43/59 0 327 0 0
2/4, 44/59 0 189 0 0
2/4, 45/59 0 183 0 0
2/4, 46/59 0 130 0 0
2/4, 47/59 0 394 0 0
2/4, 48/59 0 362 0 0
2/4, 49/59 0 204 0 0
2/4, 50/59 0 212 0 0
2/4, 51/59 0 75 0 0
2/4, 52/59 0 189 0 0
2/4, 53/59 0 241 0 0
2/4, 54/59 0 247 0 0
2/4, 55/59 0 239 0 0
2/4, 56/59 0 179 0 1
2/4, 57/59 0 135 0 0
2/4, 58/59 0 266 0 0
2/4, 59/59 0 296 0 30
3/4, 1/64 0 257 0 0
3/4, 2/64 0 238 0 0
3/4, 3/64 0 244 0 0
3/4, 4/64 0 1 0 0
3/4, 5/64 0 167 0 0
3/4, 6/64 0 16 0 0
3/4, 7/64 0 9 0 0
3/4, 8/64 0 312 0 0
3/4, 9/64 0 191 0 0
3/4, 10/64 0 169 0 0
3/4, 11/64 0 326 0 0
3/4, 12/64 0 248 0 2
3/4, 13/64 0 333 0 0
3/4, 14/64 0 276 0 0
3/4, 15/64 0 146 0 29
3/4, 16/64 0 213 0 5
3/4, 17/64 0 142 0 0
3/4, 18/64 0 119 0 2
3/4, 19/64 0 209 0 0
3/4, 20/64 0 282 0 10
3/4, 21/64 0 361 0 1
3/4, 22/64 0 410 0 0
3/4, 23/64 0 53 0 0
3/4, 24/64 0 81 0 23
3/4, 25/64 0 264 0 0
3/4, 26/64 0 315 0 0
3/4, 27/64 0 259 0 1
3/4, 28/64 0 183 0 0
3/4, 29/64 0 122 0 0
3/4, 30/64 0 223 0 1
3/4, 31/64 0 106 0 0
3/4, 32/64 0 146 0 0
3/4, 33/64 0 226 0 0
3/4, 34/64 0 158 0 0
3/4, 35/64 0 225 0 0
3/4, 36/64 0 16 0 0
3/4, 37/64 0 18 0 0
3/4, 38/64 0 193 0 0
3/4, 39/64 0 202 0 0
3/4, 40/64 0 227 0 1
3/4, 41/64 0 307 0 0
3/4, 42/64 0 240 0 0
3/4, 43/64 0 269 0 0
3/4, 44/64 0 220 0 0
3/4, 45/64 0 371 0 0
3/4, 46/64 0 313 0 0
3/4, 47/64 0 210 0 0
3/4, 48/64 0 153 0 1
3/4, 49/64 0 554 0 0
3/4, 50/64 0 282 0 0
3/4, 51/64 0 339 0 2
3/4, 52/64 0 132 0 0
3/4, 53/64 0 170 0 0
3/4, 54/64 0 331 0 0
3/4, 55/64 0 92 0 0
3/4, 56/64 0 55 0 0
3/4, 57/64 0 142 0 0
3/4, 58/64 0 124 0 0
3/4, 59/64 0 46 0 0
3/4, 60/64 0 200 0 0
3/4, 61/64 0 329 0 0
3/4, 62/64 0 114 0 0
3/4, 63/64 0 299 0 6
3/4, 64/64 0 11 0 0
4/4, 1/64 0 266 0 0
4/4, 2/64 0 213 0 0
4/4, 3/64 0 354 0 0
4/4, 4/64 0 240 0 0
4/4, 5/64 0 267 0 0
4/4, 6/64 0 166 0 0
4/4, 7/64 0 40 0 0
4/4, 8/64 0 43 0 0
4/4, 9/64 0 51 0 0
4/4, 10/64 0 158 0 0
4/4, 11/64 0 301 0 0
4/4, 12/64 0 261 0 0
4/4, 13/64 0 282 0 2
4/4, 14/64 0 382 0 0
4/4, 15/64 0 427 0 0
4/4, 16/64 0 212 0 0
4/4, 17/64 0 177 0 3
4/4, 18/64 0 222 0 0
4/4, 19/64 0 209 0 1
4/4, 20/64 0 157 0 0
4/4, 21/64 0 307 0 1
4/4, 22/64 0 313 0 1
4/4, 23/64 0 157 0 0
4/4, 24/64 0 263 0 1
4/4, 25/64 0 140 0 0
4/4, 26/64 0 17 0 0
4/4, 27/64 0 324 0 1
4/4, 28/64 0 241 0 0
4/4, 29/64 0 202 0 0
4/4, 30/64 0 137 0 0
4/4, 31/64 0 178 0 0
4/4, 32/64 0 223 0 0
4/4, 33/64 0 168 0 0
4/4, 34/64 0 164 0 0
4/4, 35/64 0 257 0 0
4/4, 36/64 0 229 0 0
4/4, 37/64 0 229 0 0
4/4, 38/64 0 248 0 0
4/4, 39/64 0 189 0 0
4/4, 40/64 0 170 0 0
4/4, 41/64 0 308 0 0
4/4, 42/64 0 183 0 0
4/4, 43/64 0 226 0 0
4/4, 44/64 0 321 0 0
4/4, 45/64 0 161 0 0
4/4, 46/64 0 280 0 0
4/4, 47/64 0 106 0 0
4/4, 48/64 0 304 0 1
4/4, 49/64 0 90 0 0
4/4, 50/64 0 26 0 0
4/4, 51/64 0 184 0 0
4/4, 52/64 0 199 0 0
4/4, 53/64 0 264 0 0
4/4, 54/64 0 371 0 1
4/4, 55/64 0 293 0 0
4/4, 56/64 0 143 0 0
4/4, 57/64 0 8 0 0
4/4, 58/64 0 95 0 0
4/4, 59/64 0 4 0 0
4/4, 60/64 0 151 0 1
4/4, 61/64 0 26 0 0
4/4, 62/64 0 268 0 0
4/4, 63/64 0 83 0 0
4/4, 64/64 0 20 0 0

Combined command counts: 55892 pass / 0 fail / 174 skip. Failed command/batch exits stay failed.

Failures:

  • BASE-IDENTICAL — test 2/4 batch 11/59, tests/cli/cli-models-reasoning.test.ts: test process exited nonzero with no failed assertions. Assertion signature no failed assertion; process-status comparison. Base exit 1, 330/0/0; bun test --isolate --timeout 60000 tests/cli/cli-export-command.test.ts tests/cli/cli-headless-parity.test.ts tests/cli/cli-help-navigation.test.ts tests/cli/cli-help.test.ts tests/cli/cli-integration-journal.test.ts tests/cli/cli-kiro-auto-selection.test.ts tests/cli/cli-link-cleanup.test.ts tests/cli/cli-models-reasoning.test.ts tests/cli/cli-models-set.test.ts tests/cli/cli-native-profile.test.ts tests/cli/cli-provider-batch.test.ts tests/cli/cli-provider-result.test.ts (Bun 1.4.3); log /home/lidgeai/ocx-linux-r2.uFsToH/base-evidence-26598df2c4-1.4.3/batch-2871dc6031f190ea.log. Exact failed batch and every file compared on base once. Individually reproduced with identical test-file bytes and case outcomes: ['tests/cli/cli-models-reasoning.test.ts']. Raw process failure remains failed.

Base command ledger (once per base/runtime/file or exact batch, cached across these PRs):

Command Bun Exit Pass / fail / skip
bun test --isolate --timeout 60000 tests/cli/cli-export-command.test.ts tests/cli/cli-headless-parity.test.ts tests/cli/cli-help-navigation.test.ts tests/cli/cli-help.test.ts tests/cli/cli-integration-journal.test.ts tests/cli/cli-kiro-auto-selection.test.ts tests/cli/cli-link-cleanup.test.ts tests/cli/cli-models-reasoning.test.ts tests/cli/cli-models-set.test.ts tests/cli/cli-native-profile.test.ts tests/cli/cli-provider-batch.test.ts tests/cli/cli-provider-result.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 1 330/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-export-command.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 32/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-headless-parity.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 107/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-help-navigation.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 9/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-help.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 17/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-integration-journal.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 35/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-kiro-auto-selection.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 5/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-link-cleanup.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 16/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-models-reasoning.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 1 18/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-models-set.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 12/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-native-profile.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 11/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-provider-batch.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 46/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-provider-result.test.ts (cwd /home/lidgeai/ocx-linux-r2.uFsToH/base-26598df2c4-1.4.3) 1.4.3 0 22/0/0

Earlier head snapshots (superseded for the current verdict):

  • a7074183018081ec865151fa0f2cfa3e76203688: FAIL, 55890 pass / 2 fail / 174 skip, full batch coverage completed. Introduced assertions: ['restore keeps its existing contract on no-lock', 'restore keeps its existing contract on locked']. Evidence /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7700-a707418301. The old worktree was removed; these failed results remain recorded.

NOT RUN: GitHub Actions checkout/setup/upload-artifact infrastructure and other platform/job legs outside this assignment; checkout, Bun role setup and dependency artifacts are reproduced locally

Fresh final PR head d3718f787cf9c33af24cff8d1d7e7cc52943f131; scratch HEAD d3718f787cf9c33af24cff8d1d7e7cc52943f131; source status clean. No PR branch/source edits, pushes, approvals, or merges were performed. Scratch worktrees are removed after posting; evidence logs remain outside them.

Exact per-batch file lists, exits and logs: /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7700-d3718f787c/batches.json; command ledger /home/lidgeai/ocx-linux-r2.uFsToH/evidence-7700-d3718f787c/results.json; base comparisons /home/lidgeai/ocx-linux-r2.uFsToH/base-cache.json.

  • Manifest 1/4 SHA-256 e3d80ae31541f72e84d999f7543e0858be7611a5245ec1d6fa249a46671536c4 (/home/lidgeai/ocx-linux-r2.uFsToH/evidence-7700-d3718f787c/shard-1-manifest.tsv).
  • Manifest 2/4 SHA-256 0273c7a6d48dea33397419ebce09aa5aadc8adac5f949692cd18372d4ef6b3e9 (/home/lidgeai/ocx-linux-r2.uFsToH/evidence-7700-d3718f787c/shard-2-manifest.tsv).
  • Manifest 3/4 SHA-256 447881c5580ad43c254a661867f77012a8347c049d773b01c906aa6519ac7606 (/home/lidgeai/ocx-linux-r2.uFsToH/evidence-7700-d3718f787c/shard-3-manifest.tsv).
  • Manifest 4/4 SHA-256 93bb33907471d3e9e97184d41595a8076ab7c151443cef3319738e08a7cecc03 (/home/lidgeai/ocx-linux-r2.uFsToH/evidence-7700-d3718f787c/shard-4-manifest.tsv).

UTC: 2026-10-25T00:40:34.601458+00:00

# Conflicts:
#	scripts/test-layout/layout-clients.json
@lidge-jun

Copy link
Copy Markdown
Owner Author

macOS real-machine verification addendum (owner lane mac3): INCOMPLETE, stopped by the manager

Head 6d79ad1519d509934abefecae6b4b426a69d7507 (merge base dev 6269f5c5bd). Host: Apple Mac16,9, macOS 26.6.2 arm64. Bun 1.4.4 was used for both the test runner and the runtime, as this head pins. Env: clean env -i, CI=true, private 0700 OPENCODEX_TEST_TRUSTED_FIXTURE_DIR, and the workflow's batch env. Batches ran through a continue-past-failure copy of scripts/ci/run-bun-test-batches.sh.

Leg Exit Files Pass Fail Skip Time
macos 1/3 0 870/870 (89 batches) 17168 0 92 730s
macos 2/3 0 870/870 (86 batches) 17909 0 22 577s
macos 3/3 0 871/871 (80 batches) 17367 0 55 631s

The CLI help smoke exited 0 on every shard. The shards cover 870 + 870 + 871 = 2611 files, equal to the control membership.

INCOMPLETE / NOT RUN: macos control was stopped by the manager after 209 of 2611 files (4410 pass, 0 fail). macos widget + bundle was not run. Hosted lane=all CI was queued for this head, so verification moved there. A run against the earlier head a707418301 was discarded when the head moved. No failures were recorded on this head.

No changes, pushes, approvals, or merges were made.

@lidge-jun

Copy link
Copy Markdown
Owner Author

Local CI-equivalent (Linux) at 6d79ad1

PASS under the owner-approved local verification rule. No INTRODUCED failures: 27 BASE-IDENTICAL assertion failures and one BASE-IDENTICAL process-exit failure are recorded below; raw nonzero commands remain failed. This evidence applies only to 6d79ad1519d509934abefecae6b4b426a69d7507. Requested head matched git fetch origin pull/7700/head; the head was fetched again after verification.

Host: lidge-AI-AI; Ubuntu 24.04.4 LTS, Linux x86_64. Test-runner Bun 1.4.4, runtime Bun 1.4.4, both resolved from this head's package.json through the setup action's roles. Official Bun binary installed in a private scratch directory, first on PATH. Initial host pressure: OK, 16 CPUs, load 0.35, about 19 GB available memory. One heavy verification lane at a time.

Fresh detached worktree; GIT_DIR, GIT_INDEX_FILE, GIT_WORK_TREE explicitly removed from the test environment. CI=true. OPENCODEX_TEST_TRUSTED_FIXTURE_DIR=/home/lidgeai/ocx-linux-7700-zmrl5t8c/trusted-fixtures (mode 0700). No source/PR branch changes, push, approval, or merge.

Failure comparison: freshly fetched origin/dev snapshot 323a5e11772c38c15b271d23c7696c5947bb97da. Head/dev merge base: 6269f5c5bdc4fed2d982567171b1295f77134b56. BASE-IDENTICAL requires the same test label and assertion to fail on that dev snapshot with the same Bun and environment. Base file comparisons run once per distinct file.

Full primary general-suite coverage: 2604 files, 250 batches, no missing/duplicate files. Dedicated storage-policy and api-usage files run separately. All requested head-command totals: 55927/27/174 pass/fail/skip, excluding base comparisons and diagnostic reruns.

CI selectors: ci=true, gui=true, docs=true, structure=true. GUI lint/tests/build and docs build were selected and executed.

Command results (counts are pass/fail/skip; 0/0/0 for commands without test counters):

Command / working directory Exit Counts
bun install --frozen-lockfile 0 0/0/0
cd gui && bun install --frozen-lockfile 0 0/0/0
cd gui && bun run build 0 0/0/0
bash scripts/ci/run-bun-test-batches.sh "1/4" 1 6439/13/12
shard 1/4 continuation: batches 28–64 0 7144/0/14
bash scripts/ci/run-bun-test-batches.sh "2/4" 1 1275/1/0
shard 2/4 continuation: batches 6–59 1 11269/6/44
bash scripts/ci/run-bun-test-batches.sh "3/4" 1 4719/3/54
shard 3/4 continuation: batches 23–62 0 8906/0/38
bash scripts/ci/run-bun-test-batches.sh "4/4" 1 3046/0/1
shard 4/4 continuation: batches 15–65 1 9571/4/11
cd gui && bun run lint 0 0/0/0
bun x tsc --noEmit 0 0/0/0
bun x tsc --noEmit -p tests/tsconfig.doctor-service-memory-contract.json 0 0/0/0
bun x tsc --ignoreConfig --noEmit --strict --target ESNext --module ESNext --moduleResolution bundler --types bun-types --skipLibCheck scripts/ci/docker-smoke.ts 0 0/0/0
cd gui && bun test --isolate tests 0 3515/0/0
bun run privacy:scan 0 0/0/0
bun run skill:surface:check 0 0/0/0
bun build scripts/release.ts --target=bun --outdir=.tmp/ci-release-script-check 0 0/0/0
cd gui && bun run build 0 0/0/0
git rev-parse HEAD > gui/dist/build-commit.txt && git rev-parse HEAD:gui > gui/dist/build-gui-tree.txt 0 0/0/0
bun run src/cli/index.ts help 0 0/0/0
bun run structure:check 0 0/0/0
bun test --isolate ./tests/storage/api-storage-policy-already-running.test.ts ./tests/storage/api-storage-policy-mutation-busy.test.ts ./tests/storage/api-storage-policy-put-race.test.ts ./tests/storage/api-storage-policy-run.test.ts ./tests/storage/api-storage-policy.test.ts ./tests/storage/api-storage.test.ts 0 9/0/0
bun test --isolate ./tests/server/api-usage.test.ts 0 34/0/0
cd docs-site && bun install --frozen-lockfile 0 0/0/0
cd docs-site && bun run build 0 0/0/0

The original bash scripts/ci/run-bun-test-batches.sh "N/4" ran first for each shard. When its fail-fast exit stopped coverage, only later batches continued in the same order. The continuation uses the unchanged planner and run_test_once from this head, with only external script-location resolution and continuation bookkeeping added; no tracked script was edited. Batch command: timeout --signal=TERM --kill-after=15s 120s bun test --isolate --timeout 60000 <exact planned files>. Scope=general, max batch size=12, same duration table/serial manifest, no parallel override, no time extensions. Original nonzero exits remain failures.

Failure classification:

  • BASE-IDENTICAL — tests/config/serving-runtimes.test.ts; head: test 1/4 batch 27/64. Base command bun test --isolate --timeout 60000 ./tests/config/serving-runtimes.test.ts exited 1, 23/13/0.
    • selectNewerServingRuntime > returns the strictly newer sibling that still exists and re-verifies:131 — expect(selected).not.toBeNull();
    • selectNewerServingRuntime > a dead top candidate falls through to the next newer install:194 — expect(selected).not.toBeNull();
    • selectNewerServingRuntime > the greatest probed version wins over a higher recorded claim:213 — expect(selected!.command).toEqual([verified]);
    • deferToNewerServiceRuntime > hands the serve to the newer install and propagates its exit code:270 — expect(exit).toBe(42);
    • deferToNewerServiceRuntime > any pre-bind exit, including 0 and the stay-out code, falls back to this installation:305 — expect(lines.join("\n")).toContain(exited before bind (status ${exitCode}));
    • deferToNewerServiceRuntime > a delegate that published its bind owns its exit, including 0:318 — })).toBe(0);
    • deferToNewerServiceRuntime > a real child that marks bind propagates a later nonzero exit:345 — })).toBe(42);
    • deferToNewerServiceRuntime > repeated signals share an escalation and clean it up on force exit:423 — expect(handler).toBeDefined();
    • deferToNewerServiceRuntime > repeated signals share an escalation and clean it up on graceful exit:423 — expect(handler).toBeDefined();
    • deferToNewerServiceRuntime > a delegated child receives the parent's SIGTERM and its status survives:461 — expect(await deferred).toBeOneOf([0, 128 + 15]);
    • deferServiceChildToNewerRuntime > only a non-sibling service child defers:507 — })).toBe(0);
    • deferServiceChildToNewerRuntime > hasNewerRecordedServingRuntime ignores self, stale, and missing commands:547 — expect(hasNewerRecordedServingRuntime("2.67.0", self, { dir, exists: () => true })).toBe(true);
    • deferServiceChildToNewerRuntime > a generated WinSW service child delegates to a newer recorded install:609 — })).toBe(0);
  • BASE-IDENTICAL — tests/ci-workflows/bun-runtime.test.ts; head: test 2/4 batch 5/59. Base command bun test --isolate --timeout 60000 ./tests/ci-workflows/bun-runtime.test.ts exited 1, 19/1/0.
    • bundledBunPath / durableBunPath > PATH-selected process provenance survives durable selection and project dotenv:94 — expect(selected).not.toBeNull();
  • BASE-IDENTICAL — tests/cli/ocx-launcher-runtime.test.ts; head: test 2/4 batch 13/59. Base command bun test --isolate --timeout 60000 ./tests/cli/ocx-launcher-runtime.test.ts exited 1, 73/4/2.
    • real PATH Bun validation > real PATH validation rejects the small stub and accepts the complete executable:760 — expect(selected?.path).toBe(realpathSync.native(join(last, name)));
    • Node launcher PATH fallback activation > missing bundle reaches validated PATH Bun:840 — expect(result.status).toBe(0);
    • Node launcher PATH fallback activation > broken bundle reaches validated PATH Bun:840 — expect(result.status).toBe(0);
    • Node launcher PATH fallback activation > inspection bundle reaches validated PATH Bun:840 — expect(result.status).toBe(0);
  • BASE-IDENTICAL — tests/codex-integration/codex-shim-standalone.test.ts; head: test 2/4 batch 26/59. Base command bun test --isolate --timeout 60000 ./tests/codex-integration/codex-shim-standalone.test.ts exited 1, 3/2/0.
    • compiled Unix shim installation and launch (#6276) > installs through the compiled probe and confines BUN_BE_BUN to its supervisor:98 — const fixture = installFixture();
    • compiled Unix shim installation and launch (#6276) > an installed wrapper runs compiled ensure then preserves Codex args and exit status:104 — const fixture = installFixture();
  • BASE-IDENTICAL — tests/codex-integration/codex-shim-readiness.test.ts; head: test 3/4 batch 22/62. Base command bun test --isolate --timeout 60000 ./tests/codex-integration/codex-shim-readiness.test.ts exited 1, 7/3/0.
    • Codex shim install readiness > a refused install exits unsuccessfully and preserves its reason:57 — expect(result.stdout).toContain(process.platform === "win32" ? "Refusing to rename a real .exe" : "Native Codex launcher not found");
    • Codex shim install readiness > the install command surfaces readiness warnings without leaking the proxy URL:212 — expect(result.status).toBe(0);
    • Codex shim install readiness > keeps install advisory when the Codex config cannot be read:257 — expect(result.status).toBe(0);
  • BASE-IDENTICAL — tests/cli/cli-models-reasoning.test.ts; head: test 4/4 batch 14/65. Base command timeout --signal=TERM --kill-after=15s 120s bun test --isolate --timeout 60000 tests/cli/cli-json-input.test.ts tests/cli/cli-log-follow.test.ts tests/cli/cli-log-history.test.ts tests/cli/cli-logout-runtime.test.ts tests/cli/cli-management-auth.test.ts tests/cli/cli-models-free-only.test.ts tests/cli/cli-models-price.test.ts tests/cli/cli-models-reasoning.test.ts tests/cli/cli-provider-lifecycle-runtime.test.ts tests/cli/cli-provider-settings.test.ts tests/cli/cli-ready-subprocess.test.ts tests/cli/cli-resolve-subprocess.test.ts exited 1, 300/0/0.
    • test process exited nonzero with no failed assertions — identical test file and recorded assertion outcomes; nonzero process exit
      Exact failed batch and every file compared on base once; batch exit, counters, test-file bytes and case outcomes compared. Individually reproduced with identical test-file bytes and case outcomes: ['tests/cli/cli-models-reasoning.test.ts']. Raw process failure remains failed.
  • BASE-IDENTICAL — tests/codex-integration/codex-shim-fnm.test.ts; head: test 4/4 batch 24/65. Base command bun test --isolate --timeout 60000 ./tests/codex-integration/codex-shim-fnm.test.ts exited 1, 4/2/0.
    • fnm Codex shim discovery > Unix fnm multishell install records only the durable node installation target:42 — const state = readFileSync(join(home, "codex-shim.json"), "utf8");
    • fnm Codex shim discovery > Unix install reports the fnm refusal instead of a missing Codex (#6963):143 — expect(installed.message).toContain("fnm's temporary multishell path");
  • BASE-IDENTICAL — tests/gui/gui-pair-client.test.ts; head: test 4/4 batch 30/65. Base command bun test --isolate --timeout 60000 ./tests/gui/gui-pair-client.test.ts exited 1, 18/2/0.
    • GUI pairing client > sends one bodyless origin-bound capability and redacts rejected bodies:131 — expect(result).toEqual({ kind: "created", grant: ocx_pair_${"C".repeat(43)}, browserOrigin, serverOrigin: "https://hub.example.test", expiresAt: now + 300_000, });
    • operator CLI proof -> one-use grant -> real paired session -> guarded join, without an isPaired stub:291 — expect(result).toBe(0); expect(output).toHaveLength(1);

Introduced-failure batch reruns: NOT RUN because no failure was classified INTRODUCED.

Every primary batch: exit and pass/fail/skip counts
Shard Batch Files Exit Pass/fail/skip
1/4 1/64 12 0 267/0/0
1/4 2/64 12 0 187/0/0
1/4 3/64 12 0 323/0/0
1/4 4/64 12 0 308/0/0
1/4 5/64 12 0 366/0/0
1/4 6/64 12 0 254/0/3
1/4 7/64 12 0 214/0/0
1/4 8/64 12 0 281/0/0
1/4 9/64 12 0 345/0/2
1/4 10/64 12 0 381/0/0
1/4 11/64 3 0 64/0/0
1/4 12/64 1 0 8/0/0
1/4 13/64 12 0 283/0/2
1/4 14/64 12 0 211/0/0
1/4 15/64 12 0 170/0/3
1/4 16/64 12 0 128/0/0
1/4 17/64 12 0 643/0/0
1/4 18/64 12 0 300/0/0
1/4 19/64 12 0 296/0/0
1/4 20/64 12 0 441/0/1
1/4 21/64 12 0 268/0/0
1/4 22/64 12 0 186/0/1
1/4 23/64 2 0 23/0/0
1/4 24/64 1 0 14/0/0
1/4 25/64 1 0 24/0/0
1/4 26/64 12 0 209/0/0
1/4 27/64 12 1 245/13/0
1/4 28/64 12 0 85/0/0
1/4 29/64 12 0 96/0/0
1/4 30/64 2 0 60/0/0
1/4 31/64 1 0 53/0/0
1/4 32/64 12 0 109/0/0
1/4 33/64 12 0 202/0/6
1/4 34/64 12 0 243/0/0
1/4 35/64 12 0 187/0/0
1/4 36/64 12 0 316/0/0
1/4 37/64 12 0 200/0/0
1/4 38/64 12 0 179/0/0
1/4 39/64 12 0 342/0/0
1/4 40/64 12 0 271/0/0
1/4 41/64 12 0 360/0/0
1/4 42/64 12 0 246/0/0
1/4 43/64 12 0 185/0/0
1/4 44/64 12 0 247/0/0
1/4 45/64 12 0 177/0/0
1/4 46/64 12 0 290/0/0
1/4 47/64 12 0 271/0/0
1/4 48/64 12 0 292/0/0
1/4 49/64 12 0 241/0/0
1/4 50/64 12 0 272/0/0
1/4 51/64 12 0 335/0/0
1/4 52/64 12 0 186/0/0
1/4 53/64 12 0 221/0/0
1/4 54/64 12 0 295/0/2
1/4 55/64 12 0 188/0/0
1/4 56/64 6 0 100/0/0
1/4 57/64 1 0 61/0/0
1/4 58/64 6 0 80/0/0
1/4 59/64 1 0 5/0/0
1/4 60/64 1 0 212/0/0
1/4 61/64 12 0 186/0/0
1/4 62/64 12 0 101/0/0
1/4 63/64 12 0 111/0/0
1/4 64/64 12 0 139/0/6
2/4 1/59 12 0 297/0/0
2/4 2/59 12 0 316/0/0
2/4 3/59 12 0 239/0/0
2/4 4/59 12 0 210/0/0
2/4 5/59 12 1 213/1/0
2/4 6/59 12 0 158/0/0
2/4 7/59 12 0 204/0/0
2/4 8/59 12 0 282/0/0
2/4 9/59 12 0 218/0/0
2/4 10/59 12 0 413/0/0
2/4 11/59 12 0 290/0/0
2/4 12/59 12 0 222/0/0
2/4 13/59 12 1 208/4/2
2/4 14/59 12 0 207/0/2
2/4 15/59 12 0 161/0/0
2/4 16/59 12 0 115/0/2
2/4 17/59 1 0 4/0/0
2/4 18/59 1 0 15/0/0
2/4 19/59 12 0 257/0/0
2/4 20/59 12 0 451/0/3
2/4 21/59 9 0 72/0/0
2/4 22/59 1 0 92/0/0
2/4 23/59 1 0 1/0/0
2/4 24/59 1 0 17/0/0
2/4 25/59 12 0 278/0/0
2/4 26/59 12 1 343/2/2
2/4 27/59 12 0 312/0/1
2/4 28/59 12 0 207/0/0
2/4 29/59 12 0 255/0/1
2/4 30/59 12 0 140/0/0
2/4 31/59 12 0 124/0/0
2/4 32/59 12 0 88/0/0
2/4 33/59 12 0 197/0/0
2/4 34/59 12 0 232/0/0
2/4 35/59 12 0 168/0/0
2/4 36/59 12 0 135/0/0
2/4 37/59 12 0 265/0/0
2/4 38/59 12 0 234/0/0
2/4 39/59 12 0 294/0/0
2/4 40/59 12 0 229/0/0
2/4 41/59 12 0 325/0/0
2/4 42/59 12 0 160/0/0
2/4 43/59 12 0 185/0/0
2/4 44/59 12 0 406/0/0
2/4 45/59 12 0 99/0/0
2/4 46/59 12 0 269/0/0
2/4 47/59 12 0 334/0/0
2/4 48/59 12 0 232/0/0
2/4 49/59 12 0 156/0/0
2/4 50/59 12 0 188/0/0
2/4 51/59 12 0 118/0/0
2/4 52/59 12 0 147/0/0
2/4 53/59 12 0 328/0/0
2/4 54/59 12 0 238/0/0
2/4 55/59 12 0 221/0/0
2/4 56/59 12 0 245/0/2
2/4 57/59 12 0 164/0/0
2/4 58/59 12 0 240/0/0
2/4 59/59 12 0 326/0/29
3/4 1/62 12 0 233/0/0
3/4 2/62 12 0 205/0/0
3/4 3/62 12 0 322/0/0
3/4 4/62 1 0 1/0/0
3/4 5/62 11 0 168/0/0
3/4 6/62 1 0 9/0/0
3/4 7/62 12 0 249/0/0
3/4 8/62 12 0 196/0/7
3/4 9/62 12 0 270/0/1
3/4 10/62 12 0 325/0/0
3/4 11/62 12 0 155/0/1
3/4 12/62 12 0 369/0/0
3/4 13/62 12 0 236/0/0
3/4 14/62 12 0 189/0/30
3/4 15/62 12 0 130/0/0
3/4 16/62 12 0 141/0/2
3/4 17/62 12 0 178/0/0
3/4 18/62 12 0 148/0/0
3/4 19/62 12 0 256/0/11
3/4 20/62 12 0 281/0/2
3/4 21/62 12 0 429/0/0
3/4 22/62 6 1 229/3/0
3/4 23/62 1 0 81/0/23
3/4 24/62 12 0 269/0/0
3/4 25/62 12 0 346/0/1
3/4 26/62 12 0 276/0/0
3/4 27/62 12 0 159/0/0
3/4 28/62 12 0 235/0/1
3/4 29/62 12 0 159/0/0
3/4 30/62 12 0 174/0/0
3/4 31/62 12 0 195/0/0
3/4 32/62 12 0 167/0/0
3/4 33/62 12 0 258/0/0
3/4 34/62 7 0 120/0/0
3/4 35/62 1 0 18/0/0
3/4 36/62 12 0 263/0/0
3/4 37/62 12 0 264/0/0
3/4 38/62 12 0 118/0/1
3/4 39/62 12 0 314/0/0
3/4 40/62 12 0 227/0/0
3/4 41/62 12 0 290/0/0
3/4 42/62 12 0 227/0/0
3/4 43/62 12 0 552/0/0
3/4 44/62 12 0 243/0/0
3/4 45/62 12 0 314/0/0
3/4 46/62 12 0 166/0/1
3/4 47/62 12 0 504/0/0
3/4 48/62 12 0 470/0/0
3/4 49/62 12 0 326/0/2
3/4 50/62 12 0 154/0/0
3/4 51/62 12 0 148/0/0
3/4 52/62 12 0 285/0/0
3/4 53/62 12 0 109/0/0
3/4 54/62 1 0 5/0/1
3/4 55/62 1 0 55/0/0
3/4 56/62 12 0 159/0/0
3/4 57/62 9 0 153/0/0
3/4 58/62 1 0 46/0/0
3/4 59/62 12 0 190/0/0
3/4 60/62 12 0 428/0/2
3/4 61/62 12 0 108/0/0
3/4 62/62 12 0 331/0/6
4/4 1/65 12 0 207/0/0
4/4 2/65 12 0 356/0/0
4/4 3/65 12 0 245/0/0
4/4 4/65 12 0 159/0/0
4/4 5/65 11 0 261/0/0
4/4 6/65 1 0 40/0/0
4/4 7/65 3 0 43/0/0
4/4 8/65 1 0 51/0/0
4/4 9/65 12 0 199/0/0
4/4 10/65 12 0 222/0/0
4/4 11/65 12 0 264/0/0
4/4 12/65 12 0 271/0/0
4/4 13/65 12 0 428/0/1
4/4 14/65 12 1 300/0/0
4/4 15/65 12 0 368/0/0
4/4 16/65 12 0 279/0/4
4/4 17/65 12 0 227/0/0
4/4 18/65 12 0 217/0/0
4/4 19/65 12 0 149/0/0
4/4 20/65 12 0 233/0/1
4/4 21/65 12 0 239/0/0
4/4 22/65 12 0 221/0/0
4/4 23/65 12 0 334/0/1
4/4 24/65 12 1 113/2/1
4/4 25/65 2 0 37/0/0
4/4 26/65 1 0 17/0/0
4/4 27/65 12 0 300/0/1
4/4 28/65 12 0 229/0/0
4/4 29/65 12 0 160/0/0
4/4 30/65 12 1 250/2/0
4/4 31/65 12 0 111/0/0
4/4 32/65 12 0 217/0/0
4/4 33/65 12 0 166/0/0
4/4 34/65 12 0 165/0/0
4/4 35/65 12 0 354/0/0
4/4 36/65 12 0 122/0/0
4/4 37/65 12 0 334/0/0
4/4 38/65 12 0 120/0/0
4/4 39/65 12 0 180/0/0
4/4 40/65 12 0 237/0/0
4/4 41/65 12 0 204/0/0
4/4 42/65 12 0 259/0/0
4/4 43/65 12 0 242/0/0
4/4 44/65 12 0 173/0/0
4/4 45/65 12 0 224/0/0
4/4 46/65 12 0 181/0/0
4/4 47/65 12 0 141/0/0
4/4 48/65 12 0 323/0/1
4/4 49/65 12 0 289/0/0
4/4 50/65 1 0 37/0/0
4/4 51/65 1 0 26/0/0
4/4 52/65 12 0 207/0/0
4/4 53/65 12 0 283/0/0
4/4 54/65 12 0 253/0/1
4/4 55/65 12 0 333/0/0
4/4 56/65 12 0 229/0/0
4/4 57/65 2 0 22/0/0
4/4 58/65 1 0 8/0/0
4/4 59/65 9 0 164/0/0
4/4 60/65 1 0 4/0/0
4/4 61/65 9 0 115/0/0
4/4 62/65 1 0 26/0/0
4/4 63/65 12 0 232/0/0
4/4 64/65 12 0 159/0/0
4/4 65/65 8 0 58/0/1
Base comparison commands
Command / working directory Exit Pass/fail/skip
bun install --frozen-lockfile [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 0/0/0
bun install --frozen-lockfile [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev/gui] 0 0/0/0
bun run build [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev/gui] 0 0/0/0
bun test --isolate --timeout 60000 ./tests/config/serving-runtimes.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 1 23/13/0
bun test --isolate --timeout 60000 ./tests/ci-workflows/bun-runtime.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 1 19/1/0
bun test --isolate --timeout 60000 ./tests/cli/ocx-launcher-runtime.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 1 73/4/2
bun test --isolate --timeout 60000 ./tests/codex-integration/codex-shim-standalone.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 1 3/2/0
bun test --isolate --timeout 60000 ./tests/codex-integration/codex-shim-readiness.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 1 7/3/0
timeout --signal=TERM --kill-after=15s 120s bun test --isolate --timeout 60000 tests/cli/cli-json-input.test.ts tests/cli/cli-log-follow.test.ts tests/cli/cli-log-history.test.ts tests/cli/cli-logout-runtime.test.ts tests/cli/cli-management-auth.test.ts tests/cli/cli-models-free-only.test.ts tests/cli/cli-models-price.test.ts tests/cli/cli-models-reasoning.test.ts tests/cli/cli-provider-lifecycle-runtime.test.ts tests/cli/cli-provider-settings.test.ts tests/cli/cli-ready-subprocess.test.ts tests/cli/cli-resolve-subprocess.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 1 300/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-json-input.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 49/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-log-follow.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 36/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-log-history.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 6/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-logout-runtime.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 37/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-management-auth.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 4/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-models-free-only.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 4/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-models-price.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 15/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-models-reasoning.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 1 18/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-provider-lifecycle-runtime.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 61/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-provider-settings.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 61/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-ready-subprocess.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 3/0/0
bun test --isolate --timeout 60000 ./tests/cli/cli-resolve-subprocess.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 0 6/0/0
bun test --isolate --timeout 60000 ./tests/codex-integration/codex-shim-fnm.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 1 4/2/0
bun test --isolate --timeout 60000 ./tests/gui/gui-pair-client.test.ts [/home/lidgeai/ocx-linux-7700-zmrl5t8c/base-dev] 1 18/2/0

NOT RUN: GitHub Actions service steps (checkout/setup/upload-artifact) and job/platform legs outside the requested verification scope; checkout, pinned Bun and dependencies reproduced locally; npm-global/platform smoke legs outside the explicitly requested Linux check set.

Exact commands, ordered per-batch file manifests, exit/count logs, base failures and source-status evidence are retained on this host under /home/lidgeai/ocx-linux-7700-zmrl5t8c. Scratch head/base worktrees removed after verification; evidence logs retained.

# Conflicts:
#	scripts/test-layout/layout-clients.json
#	tests/fixtures/test-layout-expected.json
@lidge-jun

Copy link
Copy Markdown
Owner Author

Integration evidence (owner lane M2, maintainer integration): independent gpt-6.1-sol reviews R1-R4, final review and the delta review of d3718f7 PASS; later heads add only manager merges of origin/dev keeping every test-layout registration. Exact-head PR CI run 40174458270 and exact-head ci.yml lane=all run 40174460698 both succeeded at 71b9fb0. Linux real-machine verification at the earlier head 6d79ad1 also passed with full coverage.

Static merge simulation on current dev 50afcec (this Mac): dev=50afcec56514992944d890e6577f709eb7075cad base=50afcec56514992944d890e6577f709eb7075cad pr_files= 34 overlap=[]; merge clean; install exit=0; gui install exit=0; tsc exit=0; tsc doctor exit=0; gui tsc -b exit=0; gui lint exit=0; structure:check exit=0; privacy:scan exit=0; layout+ratchet guards exit=0 54 pass 0 fail ;

Merged by the triage manager as maintainer integration (MAINTAINERS.md, dev only) with green exact-head PR CI, an independent review PASS, and the owner's approval of this bundle.

@lidge-jun
lidge-jun merged commit 6fc3c88 into dev Oct 25, 2026
65 of 66 checks passed
@lidge-jun
lidge-jun deleted the lane/m2-hermes-profiles branch October 25, 2026 09:26
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-25T09:28:30.275752Z 71b9fb0 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant