fix: refresh delegation doctor proof surface on current base

This commit is contained in:
Hermes Agent 2026-04-23 13:50:07 -05:00
parent f5af6520d0
commit f513117f84
17 changed files with 815 additions and 15 deletions

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.

View file

@ -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.