Follow-up from Codex review on PR #56 (P1, lib/clauck:1739).
Problem
The solo-revive path launches `run-job.sh` with only `CLAUDE_JOB_TRIGGER` injected into env:
```python
subprocess.Popen(
["zsh", str(run_job), name],
env={**os.environ, "CLAUDE_JOB_TRIGGER": "revive"},
...
)
```
This drops every manifest-resolved setting that normal scheduler dispatch provides (`CLAUDE_JOB_PATH`, `CLAUDE_JOB_CWD`, `CLAUDE_JOB_MAX_TURNS`, `CLAUDE_JOB_MAX_BUDGET_USD`, `CLAUDE_JOB_EFFORT`, `CLAUDE_JOB_MODEL`, `CLAUDE_JOB_SETTING_SOURCES`, etc.). Two consequences:
- Revived jobs run with defaults, not the job's actual frontmatter config.
- Jobs whose frontmatter `name:` differs from filename fail immediately because `run-job.sh` falls back to `~/.clauck/.md` and may not find the real file.
Revive is therefore unreliable for any non-default job configuration — which is most real-world configured jobs.
Fix
Resolve the job config from the manifest (same way scheduler's `fire()` does) and inject the full `CLAUDE_JOB_*` env set before spawning. Pattern to mirror: the env block in `lib/dag-runner.py:execute_job` (lines ~358–384) already builds this map cleanly.
Applies to the solo-revive path only. The DAG-resume path delegates to `dag-runner.py` which already builds the full env per node.
Acceptance
- `clauck revive` on a job with a custom `cwd`, `model`, `effort`, or name≠filename runs correctly and honors the job's real config.
- Integration test: install a job with custom `cwd` + `model`, trip it artificially, revive, confirm the revived run sees the right env.
Follow-up from Codex review on PR #56 (P1, lib/clauck:1739).
Problem
The solo-revive path launches `run-job.sh` with only `CLAUDE_JOB_TRIGGER` injected into env:
```python
subprocess.Popen(
["zsh", str(run_job), name],
env={**os.environ, "CLAUDE_JOB_TRIGGER": "revive"},
...
)
```
This drops every manifest-resolved setting that normal scheduler dispatch provides (`CLAUDE_JOB_PATH`, `CLAUDE_JOB_CWD`, `CLAUDE_JOB_MAX_TURNS`, `CLAUDE_JOB_MAX_BUDGET_USD`, `CLAUDE_JOB_EFFORT`, `CLAUDE_JOB_MODEL`, `CLAUDE_JOB_SETTING_SOURCES`, etc.). Two consequences:
Revive is therefore unreliable for any non-default job configuration — which is most real-world configured jobs.
Fix
Resolve the job config from the manifest (same way scheduler's `fire()` does) and inject the full `CLAUDE_JOB_*` env set before spawning. Pattern to mirror: the env block in `lib/dag-runner.py:execute_job` (lines ~358–384) already builds this map cleanly.
Applies to the solo-revive path only. The DAG-resume path delegates to `dag-runner.py` which already builds the full env per node.
Acceptance