mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-08 03:01:47 +00:00
fix: refresh delegation doctor proof surface on current base
This commit is contained in:
parent
f5af6520d0
commit
f513117f84
17 changed files with 815 additions and 15 deletions
|
|
@ -0,0 +1,42 @@
|
|||
# Delegation Readiness Doctor — Broken-State Roundtrip
|
||||
|
||||
Generated: 2026-04-22 19:31 CDT
|
||||
|
||||
## Result
|
||||
BROKEN_STATE_ROUNDTRIP_PROVED
|
||||
|
||||
## Broken state induced
|
||||
- Temporary isolated `HERMES_HOME` was created under `mktemp`.
|
||||
- `config.yaml` inside that isolated home was set to:
|
||||
- `delegation.provider: minimax`
|
||||
- `delegation.model: MiniMax-M2.7`
|
||||
- `MINIMAX_API_KEY` and `MINIMAX_CN_API_KEY` were explicitly removed from the doctor subprocess environment so the readiness path had to fail on missing credentials instead of inheriting the real machine state.
|
||||
|
||||
## Before repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
⚠ Delegation blocked (Delegation provider 'minimax' resolved but has no API key. Set the appropriate environment variable or run 'hermes auth'.)
|
||||
→ Set a working delegation.provider or delegation.base_url/api_key, or clear the override to inherit the parent runtime.
|
||||
◆ Skills Hub
|
||||
```
|
||||
|
||||
## Canonical repair path
|
||||
1. Clear the delegation override so subagents inherit the parent runtime.
|
||||
2. Re-run `python -m hermes_cli.main doctor`.
|
||||
3. Confirm `◆ Delegation Readiness` flips from blocked to ready before trusting delegated work.
|
||||
|
||||
## After repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
✓ Delegation ready (no delegation override configured; subagents inherit the parent runtime when invoked from an active Hermes session)
|
||||
◆ Skills Hub
|
||||
⚠ Skills Hub directory not initialized (run: hermes skills list)
|
||||
```
|
||||
|
||||
## Proof notes
|
||||
- The broken state was isolated to a temporary `HERMES_HOME`; the real `~/.hermes/config.yaml` was not modified.
|
||||
- The ready state after repair was proved by replacing the isolated config with an empty config (`{}`), which removes the delegation override entirely.
|
||||
- Script used: `starter-kits/delegation-readiness-doctor/scripts/prove-broken-state-roundtrip.sh`
|
||||
|
||||
## Honest next move
|
||||
Run one real delegated task from the live ready environment and append that proof to the canonical packet.
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# Delegation Readiness Doctor — Broken-State Roundtrip
|
||||
|
||||
Generated: 2026-04-22 19:32 CDT
|
||||
|
||||
## Result
|
||||
BROKEN_STATE_ROUNDTRIP_PROVED
|
||||
|
||||
## Broken state induced
|
||||
- Temporary isolated `HERMES_HOME` was created under `mktemp`.
|
||||
- `config.yaml` inside that isolated home was set to:
|
||||
- `delegation.provider: minimax`
|
||||
- `delegation.model: MiniMax-M2.7`
|
||||
- `MINIMAX_API_KEY` and `MINIMAX_CN_API_KEY` were explicitly removed from the doctor subprocess environment so the readiness path had to fail on missing credentials instead of inheriting the real machine state.
|
||||
|
||||
## Before repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
⚠ Delegation blocked (Delegation provider 'minimax' resolved but has no API key. Set the appropriate environment variable or run 'hermes auth'.)
|
||||
→ Set a working delegation.provider or delegation.base_url/api_key, or clear the override to inherit the parent runtime.
|
||||
```
|
||||
|
||||
## Canonical repair path
|
||||
1. Clear the delegation override so subagents inherit the parent runtime.
|
||||
2. Re-run `python -m hermes_cli.main doctor`.
|
||||
3. Confirm `◆ Delegation Readiness` flips from blocked to ready before trusting delegated work.
|
||||
|
||||
## After repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
✓ Delegation ready (no delegation override configured; subagents inherit the parent runtime when invoked from an active Hermes session)
|
||||
```
|
||||
|
||||
## Proof notes
|
||||
- The broken state was isolated to a temporary `HERMES_HOME`; the real `~/.hermes/config.yaml` was not modified.
|
||||
- The ready state after repair was proved by replacing the isolated config with an empty config (`{}`), which removes the delegation override entirely.
|
||||
- Script used: `starter-kits/delegation-readiness-doctor/scripts/prove-broken-state-roundtrip.sh`
|
||||
|
||||
## Live delegated run after repair
|
||||
- `delegate_task` completed successfully from the live ready environment after the broken-state roundtrip proof was generated.
|
||||
- Summary: `Live delegation verified post-blocked-state roundtrip. Working directory: /Users/hermesmasteragent/.hermes/hermes-agent | Newest broken-state artifact: broken-state-roundtrip-2026-04-22T19-31-03-0500.md`
|
||||
|
||||
## Honest next move
|
||||
Sync the work stream and CEO notes to point at this canonical roundtrip packet, then decide whether the MVP is ready to call shipped or needs one more packaging/launch artifact.
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# Delegation Readiness Doctor — Broken-State Roundtrip
|
||||
|
||||
Generated: 2026-04-22 20:07 CDT
|
||||
|
||||
## Result
|
||||
BROKEN_STATE_ROUNDTRIP_PROVED
|
||||
|
||||
## Broken state induced
|
||||
- Temporary isolated `HERMES_HOME` was created under `mktemp`.
|
||||
- `config.yaml` inside that isolated home was set to:
|
||||
- `delegation.provider: minimax`
|
||||
- `delegation.model: MiniMax-M2.7`
|
||||
- `MINIMAX_API_KEY` and `MINIMAX_CN_API_KEY` were explicitly removed from the doctor subprocess environment so the readiness path had to fail on missing credentials instead of inheriting the real machine state.
|
||||
|
||||
## Before repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
⚠ Delegation blocked (Delegation provider 'minimax' resolved but has no API key. Set the appropriate environment variable or run 'hermes auth'.)
|
||||
→ Set a working delegation.provider or delegation.base_url/api_key, or clear the override to inherit the parent runtime.
|
||||
```
|
||||
|
||||
## Canonical repair path
|
||||
1. Clear the delegation override so subagents inherit the parent runtime.
|
||||
2. Re-run `python -m hermes_cli.main doctor`.
|
||||
3. Confirm `◆ Delegation Readiness` flips from blocked to ready before trusting delegated work.
|
||||
|
||||
## After repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
✓ Delegation ready (no delegation override configured; subagents inherit the parent runtime when invoked from an active Hermes session)
|
||||
```
|
||||
|
||||
## Proof notes
|
||||
- The broken state was isolated to a temporary `HERMES_HOME`; the real `~/.hermes/config.yaml` was not modified.
|
||||
- The ready state after repair was proved by replacing the isolated config with an empty config (`{}`), which removes the delegation override entirely.
|
||||
- Script used: `starter-kits/delegation-readiness-doctor/scripts/prove-broken-state-roundtrip.sh`
|
||||
|
||||
## Honest next move
|
||||
Run one real delegated task from the live ready environment and append that proof to the canonical packet.
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# Delegation Readiness Doctor — Broken-State Roundtrip
|
||||
|
||||
Generated: 2026-04-22 20:08 CDT
|
||||
|
||||
## Result
|
||||
BROKEN_STATE_ROUNDTRIP_PROVED
|
||||
|
||||
## Broken state induced
|
||||
- Temporary isolated `HERMES_HOME` was created under `mktemp`.
|
||||
- `config.yaml` inside that isolated home was set to:
|
||||
- `delegation.provider: minimax`
|
||||
- `delegation.model: MiniMax-M2.7`
|
||||
- `MINIMAX_API_KEY` and `MINIMAX_CN_API_KEY` were explicitly removed from the doctor subprocess environment so the readiness path had to fail on missing credentials instead of inheriting the real machine state.
|
||||
|
||||
## Before repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
⚠ Delegation blocked (Delegation provider 'minimax' resolved but has no API key. Set the appropriate environment variable or run 'hermes auth'.)
|
||||
→ Set a working delegation.provider or delegation.base_url/api_key, or clear the override to inherit the parent runtime.
|
||||
```
|
||||
|
||||
## Canonical repair path
|
||||
1. Clear the delegation override so subagents inherit the parent runtime.
|
||||
2. Re-run `python -m hermes_cli.main doctor`.
|
||||
3. Confirm `◆ Delegation Readiness` flips from blocked to ready before trusting delegated work.
|
||||
|
||||
## After repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
✓ Delegation ready (no delegation override configured; subagents inherit the parent runtime when invoked from an active Hermes session)
|
||||
```
|
||||
|
||||
## Proof notes
|
||||
- The broken state was isolated to a temporary `HERMES_HOME`; the real `~/.hermes/config.yaml` was not modified.
|
||||
- The ready state after repair was proved by replacing the isolated config with an empty config (`{}`), which removes the delegation override entirely.
|
||||
- Script used: `starter-kits/delegation-readiness-doctor/scripts/prove-broken-state-roundtrip.sh`
|
||||
|
||||
## Honest next move
|
||||
Run one real delegated task from the live ready environment and append that proof to the canonical packet.
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# Delegation Readiness Doctor — Broken-State Roundtrip
|
||||
|
||||
Generated: 2026-04-22 20:09 CDT
|
||||
|
||||
## Result
|
||||
BROKEN_STATE_ROUNDTRIP_PROVED
|
||||
|
||||
## Broken state induced
|
||||
- Temporary isolated `HERMES_HOME` was created under `mktemp`.
|
||||
- `config.yaml` inside that isolated home was set to:
|
||||
- `delegation.provider: minimax`
|
||||
- `delegation.model: MiniMax-M2.7`
|
||||
- `MINIMAX_API_KEY` and `MINIMAX_CN_API_KEY` were explicitly removed from the doctor subprocess environment so the readiness path had to fail on missing credentials instead of inheriting the real machine state.
|
||||
|
||||
## Before repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
⚠ Delegation blocked (Delegation provider 'minimax' resolved but has no API key. Set the appropriate environment variable or run 'hermes auth'.)
|
||||
→ Set a working delegation.provider or delegation.base_url/api_key, or clear the override to inherit the parent runtime.
|
||||
```
|
||||
|
||||
## Canonical repair path
|
||||
1. Clear the delegation override so subagents inherit the parent runtime.
|
||||
2. Re-run `python -m hermes_cli.main doctor`.
|
||||
3. Confirm `◆ Delegation Readiness` flips from blocked to ready before trusting delegated work.
|
||||
|
||||
## After repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
✓ Delegation ready (no delegation override configured; subagents inherit the parent runtime when invoked from an active Hermes session)
|
||||
```
|
||||
|
||||
## Proof notes
|
||||
- The broken state was isolated to a temporary `HERMES_HOME`; the real `~/.hermes/config.yaml` was not modified.
|
||||
- The ready state after repair was proved by replacing the isolated config with an empty config (`{}`), which removes the delegation override entirely.
|
||||
- Script used: `starter-kits/delegation-readiness-doctor/scripts/prove-broken-state-roundtrip.sh`
|
||||
|
||||
## Honest next move
|
||||
Run one real delegated task from the live ready environment and append that proof to the canonical packet.
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# Delegation Readiness Doctor — Current Gap Report
|
||||
|
||||
Generated: 2026-04-22 18:06 CDT
|
||||
|
||||
## Result
|
||||
CURRENT_GAP_CONFIRMED
|
||||
|
||||
## What was checked
|
||||
- Parsed `tools/delegate_tool.py` with Python AST
|
||||
- Located `check_delegate_requirements()` at line 85
|
||||
- Confirmed the function still consists of only a docstring plus `return True`
|
||||
- Confirmed the delegation tool registration still wires `check_fn=check_delegate_requirements` at line 1215
|
||||
- Confirmed reusable doctor surfaces already exist in `hermes_cli/doctor.py` at lines 102 and 1023
|
||||
|
||||
## Why this matters
|
||||
Hermes still advertises delegation readiness as always available even though the weekly MVP factory now depends on delegation as a real execution layer.
|
||||
|
||||
## Evidence
|
||||
### Current function docstring
|
||||
> Delegation has no external requirements -- always available.
|
||||
|
||||
### Current function body
|
||||
```python
|
||||
def check_delegate_requirements() -> bool:
|
||||
"""Delegation has no external requirements -- always available."""
|
||||
return True
|
||||
```
|
||||
|
||||
## Honest next move
|
||||
Replace the stubbed readiness check with one real config-aware check, surface that state through a canonical doctor/readiness command, then prove one passing delegated run.
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
# Delegation Readiness Doctor — Broken-State Roundtrip
|
||||
|
||||
Generated: 2026-04-22 20:09 CDT
|
||||
|
||||
## Result
|
||||
BROKEN_STATE_ROUNDTRIP_PROVED
|
||||
|
||||
## Broken state induced
|
||||
- Temporary isolated `HERMES_HOME` was created under `mktemp`.
|
||||
- `config.yaml` inside that isolated home was set to:
|
||||
- `delegation.provider: minimax`
|
||||
- `delegation.model: MiniMax-M2.7`
|
||||
- `MINIMAX_API_KEY` and `MINIMAX_CN_API_KEY` were explicitly removed from the doctor subprocess environment so the readiness path had to fail on missing credentials instead of inheriting the real machine state.
|
||||
|
||||
## Before repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
⚠ Delegation blocked (Delegation provider 'minimax' resolved but has no API key. Set the appropriate environment variable or run 'hermes auth'.)
|
||||
→ Set a working delegation.provider or delegation.base_url/api_key, or clear the override to inherit the parent runtime.
|
||||
```
|
||||
|
||||
## Canonical repair path
|
||||
1. Clear the delegation override so subagents inherit the parent runtime.
|
||||
2. Re-run `python -m hermes_cli.main doctor`.
|
||||
3. Confirm `◆ Delegation Readiness` flips from blocked to ready before trusting delegated work.
|
||||
|
||||
## After repair — doctor output
|
||||
```text
|
||||
◆ Delegation Readiness
|
||||
✓ Delegation ready (no delegation override configured; subagents inherit the parent runtime when invoked from an active Hermes session)
|
||||
```
|
||||
|
||||
## Proof notes
|
||||
- The broken state was isolated to a temporary `HERMES_HOME`; the real `~/.hermes/config.yaml` was not modified.
|
||||
- The ready state after repair was proved by replacing the isolated config with an empty config (`{}`), which removes the delegation override entirely.
|
||||
- Script used: `starter-kits/delegation-readiness-doctor/scripts/prove-broken-state-roundtrip.sh`
|
||||
|
||||
## Honest next move
|
||||
Run one real delegated task from the live ready environment and append that proof to the canonical packet.
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
# Delegation Readiness Doctor — Historical Kickoff Gap Report
|
||||
|
||||
Updated: 2026-04-22 20:13 CDT
|
||||
|
||||
## Status
|
||||
HISTORICAL_BASELINE_ONLY
|
||||
|
||||
## Why this file changed
|
||||
`tools/delegate_tool.py` no longer contains the original unconditional `return True` stub in `check_delegate_requirements()`.
|
||||
The kickoff gap that this report originally documented has been fixed in live code, so the prior `CURRENT_GAP_CONFIRMED` result is no longer an honest description of the current repo state.
|
||||
|
||||
## What is true now
|
||||
- `check_delegate_requirements()` is config-aware
|
||||
- `python -m hermes_cli.main doctor` exposes `◆ Delegation Readiness`
|
||||
- the canonical live proof has moved to:
|
||||
- `starter-kits/delegation-readiness-doctor/artifacts/latest-readiness-proof.md`
|
||||
- `starter-kits/delegation-readiness-doctor/artifacts/latest-broken-state-roundtrip.md`
|
||||
- the live delegated-run proof captured in the ship review artifact
|
||||
|
||||
## Historical role of this file
|
||||
This path is retained to preserve the original Monday kickoff evidence: the MVP began with a real stubbed readiness check and a real need for an honest doctor surface.
|
||||
|
||||
## Honest next move
|
||||
Judge the MVP on the readiness + broken-state roundtrip + delegated-run proof line, not on the now-closed kickoff stub.
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
# Delegation Readiness Doctor — Readiness Proof
|
||||
|
||||
Generated: 2026-04-22 18:50 CDT
|
||||
|
||||
## Result
|
||||
READINESS_SURFACE_SHIPPED
|
||||
|
||||
## What changed this block
|
||||
- Added `get_delegate_readiness_status()` to `tools/delegate_tool.py` so delegation readiness is no longer an unconditional stub.
|
||||
- Replaced `check_delegate_requirements()` with a config-aware readiness gate.
|
||||
- Added a canonical `◆ Delegation Readiness` section to `hermes doctor` via `hermes_cli/doctor.py`.
|
||||
- Added focused tests for both the delegate readiness helper and the doctor output path.
|
||||
|
||||
## Verification
|
||||
### Focused tests
|
||||
- `pytest tests/tools/test_delegate.py -q -k 'available_when_no_override_is_configured or available_when_override_resolves or unavailable_when_override_resolution_fails or readiness_status_exposes_fix_path'`
|
||||
- `pytest tests/hermes_cli/test_doctor.py -q -k 'delegation_readiness or reports_ready_status or reports_blocked_status_with_fix'`
|
||||
- Result: 4 passed + 2 passed
|
||||
|
||||
### Live readiness diagnosis
|
||||
```python
|
||||
{'available': True, 'reason': 'override resolves successfully via minimax', 'fix': '', 'details': {'model': 'MiniMax-M2.7', 'provider': 'minimax', 'base_url': 'https://api.minimax.io/v1', 'api_key': 'sk-cp-...4le8', 'api_mode': 'chat_completions'}}
|
||||
```
|
||||
|
||||
### Doctor surface
|
||||
`python -m hermes_cli.main doctor` now includes:
|
||||
- `◆ Delegation Readiness`
|
||||
- `✓ Delegation ready (override resolves successfully via minimax)`
|
||||
|
||||
### Passing delegated run
|
||||
A real `delegate_task` proof run completed successfully after the patch and returned a summary confirming the new readiness surfaces in:
|
||||
- `tools/delegate_tool.py`
|
||||
- `hermes_cli/doctor.py`
|
||||
- `tests/tools/test_delegate.py`
|
||||
- `tests/hermes_cli/test_doctor.py`
|
||||
|
||||
## Honest next move
|
||||
Use the new doctor/readiness surface to identify one intentionally broken delegation state, then prove the fix path flips the doctor call from blocked to ready and still ends in a passing delegated run.
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# Delegation Readiness Doctor — Ship Review
|
||||
|
||||
Generated: 2026-04-22 20:13 CDT
|
||||
|
||||
## Ship decision
|
||||
SHIPPABLE_ON_PROVED_LINE
|
||||
|
||||
## Honest shipped claim
|
||||
From a live Hermes repo state, the delegation readiness surface can:
|
||||
1. report live readiness through `python -m hermes_cli.main doctor`
|
||||
2. fail closed on an intentionally broken delegation override from an isolated temporary `HERMES_HOME`
|
||||
3. show the canonical repair path back to ready
|
||||
4. complete a real delegated run from the live ready environment
|
||||
|
||||
## Proof / evidence checked this block
|
||||
### Live doctor call
|
||||
- Command: `python -m hermes_cli.main doctor`
|
||||
- Verified output included:
|
||||
- `◆ Delegation Readiness`
|
||||
- `✓ Delegation ready (override resolves successfully via minimax)`
|
||||
|
||||
### Broken-state roundtrip
|
||||
- Command: `bash starter-kits/delegation-readiness-doctor/scripts/prove-broken-state-roundtrip.sh`
|
||||
- Result: `BROKEN_STATE_ROUNDTRIP_PROVED`
|
||||
- Fresh artifact emitted at:
|
||||
- `starter-kits/delegation-readiness-doctor/artifacts/broken-state-roundtrip-2026-04-22T20-07-18-0500.md`
|
||||
- `starter-kits/delegation-readiness-doctor/artifacts/latest-broken-state-roundtrip.md`
|
||||
|
||||
### Live delegated run
|
||||
- Tool: `delegate_task`
|
||||
- Goal used: `Return a one-line confirmation that delegation executed successfully.`
|
||||
- Result: `READY: delegation executed successfully`
|
||||
|
||||
## Packaging corrections made in the same block
|
||||
- Updated `starter-kits/delegation-readiness-doctor/README.md` so it no longer claims the original unconditional-stub gap still exists.
|
||||
- Replaced `artifacts/latest-current-gap-report.md` with a historical-baseline note so the starter kit stops presenting stale kickoff proof as live truth.
|
||||
- Froze this ship review as the canonical package decision artifact.
|
||||
|
||||
## Remaining blocker
|
||||
The product claim is proved, but repo durability is not yet frozen into an isolated clean commit surface. `git status --short` still shows broad unrelated working-tree changes outside this starter kit.
|
||||
|
||||
## Exact next move
|
||||
Isolate the Delegation Readiness Doctor changes into a clean commit/PR surface, then package launch/distribution from that durable repo state instead of from a mixed working tree.
|
||||
Loading…
Add table
Add a link
Reference in a new issue