feat(upstream): reconcile Hermes v0.21.1 with Ares runtime ownership - #35
Draft
RecursiveIntell wants to merge 6981 commits into
Draft
feat(upstream): reconcile Hermes v0.21.1 with Ares runtime ownership#35RecursiveIntell wants to merge 6981 commits into
RecursiveIntell wants to merge 6981 commits into
Conversation
Port the exact submitted-wire-text ownership boundary from NousResearch#93546 onto current topical runtime code. Do not add the candidate's mocked-result fallback or storage-level content deduplication. Preserve later distinct and identical user events, separate identical accepted turns, and keyless inputs. Add two regression invariants and offline subprocess-wire A/B. Local wire A/B: 4/8 control matrix passing on base, 8/8 after. Broader tests queued behind campaign lock; not ready for merge. Refs NousResearch#104653 Original diagnosis: @gitszabolcs (NousResearch#38254) Original implementation: NousResearch#43127, submitted by @vashkartik Focused salvage and wire-text correction: @fancyboi999 (NousResearch#93546) Current-main carry-forward considered: NousResearch#104698 Co-authored-by: Xinmin Zeng <135568692+fancyboi999@users.noreply.github.com> Co-authored-by: VECTOR <vector.hq@outlook.com>
…veClient fallback_providers entries using the "google" alias for the gemini profile were falling through to the generic OpenAI-SDK client because the native-client gate only matched the literal string "gemini". That client posts straight to the raw REST endpoint, sending thinking_config as an unnested top-level field, which Gemini rejects with: Invalid JSON payload received. Unknown name "thinking_config": Cannot find field. Broaden the check to the same alias set the gemini profile itself registers (mirrors _GEMINI_NATIVE_PROVIDER_NAMES already used for this in auxiliary_client.py). Fixes NousResearch#104583
`git diff --check origin/main..HEAD` reported `tests/honcho_plugin/test_recall_sync.py:130: new blank line at EOF.` Whitespace-only; no test logic changed.
Two tests still encoded the pre-PR behaviour that the PR removes:
- tests/test_tui_gateway_server.py: the mirrored fixture carries no
`context_estimated` flag, so under the PR's rule it is provider-reported
usage and must render without `~`. The old expectation asserted the
unconditional tilde main used to emit. Assert the flag-less case is
unmarked and, in the same test, flip `context_estimated` both ways to
pin that only the estimate carries `~` in the count and the percent.
- ui-tui appChromeStatusRule.test.tsx: `text.includes('~')` matched the
`~/repo` cwd label, so the "not estimated" arm was always true. Extract
the rendered context token and assert the tilde on that token only.
Recover legacy stringified lists with a warning. Reject malformed shapes and nonstring members without admitting approvals or rewriting user config on read. Fixes NousResearch#104779 Co-authored-by: liuhao1024 <sunsky.lau@gmail.com>
Use successful applied result records rather than requested operations, and keep staged writes silent. Include legacy delete/write messages. Fixes NousResearch#104506 Co-authored-by: Konstantin Khlopkov <konstantin.khlopkov93@gmail.com>
Normalize boolean required only at schema positions; lift true property flags into parent arrays. Preserve literal default/const/extension data. Fixes NousResearch#104796 Inspired by NousResearch#104831 and the lifting proposal by @AdJIa.
Emit the one-shot reason marker outside the CLI facade; parse whole codes before falling back to legacy prose. Explicit coordination and unknown codes cannot be labeled target_busy. Fixes NousResearch#104784 Co-authored-by: William Echo <2054936695@qq.com>
Slim redo of NousResearch#104546 and NousResearch#104551: scan newest-first, match suppression only before payload separators, and keep error context. Covers wake gates and empty outputs without reading every historical file twice. Co-authored-by: PRATHAMESH75 <prathamesh290504@gmail.com> Co-authored-by: Konstantin Khlopkov <konstantin.khlopkov93@gmail.com>
Persist a redacted chained traceback in the private run output and expose redacted last_error in tool and slash listings, including historical errors. Keep the run_job concise error return unchanged for delivery classification. Slim redo of liuhao1024's earliest NousResearch#104545; adds forced redaction and keeps formatting in a topical sibling. Local SDK/socket A/B verifies diagnosis visibility plus healthy-script, clearing, and private-file controls. Canonical tests queued under the campaign lock at commit time. Co-authored-by: liuhao1024 <sunsky.lau@gmail.com>
Salvage the unit-budget implementation from NousResearch#104745, replacing its test matrix with two invariant tests and covering the sibling graceful start. Keep unprivileged property reads, finite fallbacks, real manager errors, and post-restart health verification. Native disposable user unit: old client timed out after 15.03 seconds; new client completed the same 16-second stop transaction in 16.13 seconds. The unit stayed active with a new PID; missing-unit errors stayed errors. Co-authored-by: Teknium <127238744+teknium1@users.noreply.github.com>
Main now snapshots systemd unit listings before stopping old processes and passes them into _restart_systemd_gateway_units_best_effort; the catch-up budget test and eval call the new two-argument shape while still asserting the unit's stop+start budget reaches the client timeout.
Reconcile receipt-only restart obligations at the shared warning/catch-up predicate, requiring every historical runtime/profile identity to have a current live gateway successor. Preserve missing and unknown obligations, non-gateway identities, and independently authoritative pending markers. Keep failed receipts unchanged instead of recording an unverified success. Live isolated two-process A/B reproduces the warning on base and settles it after the fix; stale, unknown, and missing-profile controls still warn. Reported-by: duanzhiwei0315 Inspired-by: zengzheqing (NousResearch#104295), RootZ3n (NousResearch#100249)
…t env The startup update check resolved `git remote get-url origin` with the user's global config in scope while the subsequent fetch runs under noninteractive_git_env (GIT_CONFIG_GLOBAL=/dev/null). A global url.<https>.insteadOf rewrite therefore made an SSH origin masquerade as HTTPS, the SSH-avoiding fast path was skipped, and the fetch dialed the raw SSH origin — whose host-key prompt opens /dev/tty directly and steals the CLI's keystrokes (NousResearch#104591). Probe the origin URL under the same isolated env so both sides observe the URL the fetch will actually dial.
…git env ssh bypasses stdin=DEVNULL and GIT_TERMINAL_PROMPT: when a git child dials an SSH remote whose host key is unknown, ssh opens /dev/tty directly and its yes/no prompt steals the caller's terminal — exactly what noninteractive_git_env exists to prevent. Pin core.sshCommand to "ssh -o BatchMode=yes" at the config-injection layer so the ssh child fails instead of prompting; an agent-authenticated ssh still succeeds, and an explicit user GIT_SSH_COMMAND env var still takes precedence (NousResearch#104591).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
Full pinned Hermes v0.21.1 reconciliation into Ares with Ares-owned runtime, authority, provenance, context-governor, goal-lifecycle, effect-settlement and profile-isolation semantics preserved.
Source pins
2237be355906fbe6065ce1815711eee52b2d646eExecution policy
Work is committed and pushed incrementally on
hermes-ares-recon; no force-push/re-rooting. Every repair is fail-closed in CI. If safer, remaining work may be split into stacked/successive PRs, each with incremental commits/pushes and its own validation receipt. Broken intermediate states will not be merged tomain.Current verified state
The deterministic current-main reconciliation transform now applies cleanly against Ares main
0451a66cbb765a3ede359660e37b1b2fbe857525. Context Governor restore (59 passed, 3 deselected) and Ares managed calls (4 passed) are green. Goal lifecycle/regression witnesses are 64/65 green; the sole remaining failure is preserving the historical user-visibleunachievablewording on a correctly paused BLOCKED verdict.Desktop remains an ownership reconstruction, not a shim exercise. Ares retains weighted local-capacity semantics and
0 = unlimited; compatible Hermes spawn coordination/logging/live pool controls are adapted to that owner, including specialist dispatch.Required gates
git diff --checkmainNo completion claim is valid until the relevant stage has passing evidence.