CI artifact: exact reviewed #358/#380 runtime stack on e444d165 - #7
Conversation
…stream Squash the accepted NousResearch#358/NousResearch#380 runtime and profile-auth candidate onto current upstream without importing its second-parent history. Repair the Flux profile-root credential assertion and invoke the installed ascii-guard console entry before pinned uv fallbacks. Co-authored-by: Hermes Agent <hermes-agent@local>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: eefada8bdf
ℹ️ 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".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if ( | ||
| getattr(cli, "result_meta_file", None) | ||
| or getattr(cli, "result_meta_fd", None) is not None | ||
| ): | ||
| cli._publish_result_metadata(result) |
There was a problem hiding this comment.
Publish result metadata for non-quiet queries
When --result-meta-file or --result-meta-fd is used without -Q/--quiet, the accepted query runs through the later cli.chat(...) branch, while this is the only call to _publish_result_metadata and it is nested inside if quiet. The file therefore remains absent, and a pipe consumer receives EOF without the promised frame, despite the option being documented as query-only rather than quiet-only. Publish from both single-query paths or reject non-quiet use before starting the model.
AGENTS.md reference: AGENTS.md:L84-L87
Useful? React with 👍 / 👎.
| _merge_section(merged, source, "providers", conflict_policy) | ||
| _merge_section(merged, source, "credential_pool", conflict_policy) |
There was a problem hiding this comment.
Preserve suppression markers during shared migration
When a profile has logged out an env- or singleton-seeded credential, its suppressed_sources entries are the state preventing that credential from being re-imported. Migration copies only providers and credential_pool, so selecting that profile and switching it to shared authority silently drops the suppression markers; the next load_pool() can resurrect credentials the user explicitly removed. Merge suppressed_sources with an explicit conflict policy before changing the profile authority.
AGENTS.md reference: AGENTS.md:L84-L87
Useful? React with 👍 / 👎.
| for rel in meta.get("files", {}): | ||
| if rel.startswith(("_auth_authority/", "_auth/")): | ||
| continue |
There was a problem hiding this comment.
Skip legacy plaintext auth files during quick restore
Quick snapshots created before this commit list auth.json directly in manifest["files"], but this restore filter skips only the new _auth/ envelope paths. Restoring one of those existing snapshots with the default include_auth=False therefore copies the old plaintext auth.json through the ordinary-file loop, overwriting current credentials without an auth action or passphrase. Explicitly reject/skip legacy auth.json manifest entries unless they are handled through an authenticated migration path.
AGENTS.md reference: AGENTS.md:L84-L87
Useful? React with 👍 / 👎.
| if auth_restore_raw is not None and rel == "config.yaml": | ||
| restored_config_raw = src.read_bytes() | ||
| continue |
There was a problem hiding this comment.
Preserve auth authority when restoring without auth
For a new snapshot restored with the default include_auth=False, auth_restore_raw is None, so config.yaml falls through to the ordinary copy path. If the snapshot's auth.authority differs from the current setting, a restore advertised as skipping authentication silently switches the active credential store without restoring the matching credentials, potentially logging the profile into a different shared or local account. Preserve the current auth section during non-auth restores, or exclude config.yaml from ordinary restoration and merge its non-auth settings.
AGENTS.md reference: AGENTS.md:L84-L87
Useful? React with 👍 / 👎.
Evidence-preserving supersession closurePre-close readback for #7: state=OPEN; updatedAt=2026-08-01T00:18:08Z; headRefOid=eefada8bdf35baff35bf795c3f0b0f3faacc83d6; baseRefOid=e444d165807f489b5c1ab8e4a612c8d09c2e67a2; mergeable=MERGEABLE; mergeStateStatus=UNSTABLE. This stale PR is superseded by merged PR #10 (#10), which preserves the reviewed producer-bound NousResearch#358 evidence, and merged PR #17 (#17), which delivered the NousResearch#380 shared-auth repair. Merged PR #16/current main is e0c3e1b. Closure does not prove NousResearch#358 integration. NousResearch#358 remains OPEN and not close-ready; current repair/review continues on t_9be14185 / the result-metadata FD path, followed by required protected canary evidence. This PR is closed as superseded without merge, force-push, branch deletion, or ref alteration. No issue closure, install, rollout, or live Hermes/SOUL/profile mutation is authorized. |
CI artifact only — do not merge
This non-draft fork-side PR exists solely to run truthful CI for the exact independently reviewed stack. It is not an upstream publication and must not be merged. Direct PR creation in
NousResearch/hermes-agentwas attempted but the available token returnedResource not accessible by personal access token (createPullRequest).Exact identity
ci/358-380-e444d165-base-20260801-001110-t-ebf62164e444d165807f489b5c1ab8e4a612c8d09c2e67a2ci/358-380-eefada8b-head-20260801-001110-t-ebf62164eefada8bdf35baff35bf795c3f0b0f3faacc83d66b9a5be68c9f81956450191e296e6bb23d86d55bc8d6fce852a79f010b0fd0ff92c005cbf698044c894e576ee6a2243dfd0c0e906bdfddb63f3dfb17,b08ff2787d231f78ee2547d66f8bf50039d158fcIndependent review and local validation
Independent reviewer task
t_2ca08ecdreturned PASS. Focused auth 75/75, broad auth/profile/backup/metadata 822/822, TUI gateway/Flux 571/571, TUI memory 7/7, desktop accessor 5/5, and desktop auth isolation 3/3 passed. Root npm check, desktop build, website bilingual build, and static compile/diff/secret/dependency checks passed. E2E reached the repaired paths without the accessor TypeError and then reproduced unchanged baseline sidebar-locator debt.Tracking issues
cermm/wc-infrastructure#358and#380remain open; fork CI alone does not satisfy their live acceptance dependencies.