chore(olympus): align .olympus.json — current model + Greek-deity agent names#173
Conversation
claude-3-5-sonnet-20241022 was retired 2025-10-28; the LiteLLM gateway would 404 on it. Move wiwi/vivi to claude-sonnet-4-6, the documented drop-in for that retired ID — same Sonnet tier, current generation. Validates against the v0.4.0 olympus schema.
Olympus's design names its roles after Greek deities (its own dogfood config uses themis/hephaestus/argus). heron carried over off-theme early names through the #167 migration. Align them: - review_bot_login: vivi -> themis (justice/order — the reviewer) - dev_agent_name: wiwi -> hephaestus (the forge — the implementer) - observer label: mara -> argus (the all-seeing watchman) review_bot_login is a body-footer marker (reviews post as github-actions), so auto-merge/revise key off the config value consistently — self-contained rename. dev_agent_name is the commit-author display name. The observer label is dormant (heron wires no observe.yml). Validates against the v0.4.0 olympus schema.
There was a problem hiding this comment.
I now have a complete picture. The README.md:21 "observer" reference is generic English usage (the product concept), not a reference to the mara/argus agent label — so it's unaffected.
Let me do one final verification: confirm the first commit's claim that claude-3-5-sonnet-20241022 was "retired 2025-10-28" and that claude-sonnet-4-6 is valid. The repo's own system context (in the system prompt) confirms: "The most recent Claude model family is Claude 4.X. Model IDs — Opus 4.7: 'claude-opus-4-7', Sonnet 4.6: 'claude-sonnet-4-6'..." So claude-sonnet-4-6 is a current, valid model ID. The first commit's rationale is sound.
I have enough to write the review. Let me compile my findings:
Summary of findings:
- Functionally self-contained — confirmed via grep: no shell script, workflow, or code does a string comparison against the literal names
vivi/wiwi/mara. All references are in comments and docs. - Documentation drift (Suggestion-level) — the rename leaves
docs/filing-issues.mdanddocs/pr-review-agent.mdusing the old names throughout, now contradicting the config. The commit message's "self-contained" claim is technically true for functional code but misleading for the doc surface. - Pre-existing stale comment —
scripts/staging/longevity-soak.sh:176references "mara.sh's scrub()" but the script was removed (renamed totara.sh) in commit9238cce. Not introduced by this PR, but the rename makes the drift more confusing. - First commit (model bump) is clean —
claude-sonnet-4-6is a valid current model ID per the repo's own model guidance; the retired-model rationale is correct. - No sensitive-info leakage, no SQL/schema/capture-pipeline concerns (config-only PR).
Summary
PR #173 is a two-commit chore on .olympus.json: (1) bump the agent model from the retired claude-3-5-sonnet-20241022 to claude-sonnet-4-6, and (2) rename the three agent role labels (vivi→themis, wiwi→hephaestus, mara→argus) to match olympus's Greek-deity convention. Both commits are config-only — no Rust, SQL, console, or workflow-logic changes. The model bump is correct (claude-sonnet-4-6 is a current valid ID per the repo's own model guidance). The rename is functionally self-contained: I grepped the whole repo and no shell script, workflow, or code does a string comparison against the literal names — every reference is in comments or docs. Recommendation: COMMENT — safe to merge, but the doc surface is now inconsistent with the config and a reviewer should decide whether to fix that in this PR or a follow-up.
Suggestions
- docs/filing-issues.md:4,23,26,38,39,42 — The rename leaves this doc using
wiwiandvivithroughout the flow description (e.g. line 23 "wiwi (dev agent)", line 26 "vivi (review agent)", line 42 "vivi reviews every PR"). With.olympus.jsonnow sayinghephaestus/themis, a reader can't map the doc's agent names back to the config. The commit message calls the rename "self-contained" — true for functional code, but misleading for the doc surface that describes the agent flow. Either update the doc in this PR, or add a one-line mapping note (wiwi=hephaestus, vivi=themis, mara=argus) so the old names in prose stay decipherable. - docs/pr-review-agent.md:118–152 — Same drift: the auto-revise section references
wiwiandvivirepeatedly (lines 118, 120, 121, 124, 131, 134, 145, 148, 152). Since this doc is the reference for how PR review works, the names should either be updated or cross-referenced to the config values. - docs/filing-issues.md:148 — Says "observer mara files incidents automatically" — now contradicts the config's
arguslabel. Minor, but it's the one place a doc explicitly names the observer agent, and it's now stale. - scripts/staging/longevity-soak.sh:176 — Pre-existing (not introduced by this PR): the comment says "IN SYNC with mara.sh's scrub() (the canonical copy)" but
mara.shwas removed in commit9238cce(the in-tree agent-bot fallbacks were deleted when work was delegated to olympus). The canonical scrub now lives inlongevity-soak.shitself (or olympus-side). Themara→argusrename in this PR makes the drift more confusing — a reader chasing the referenced "canonical copy" will find neithermara.shnorargus.sh. Worth a drive-by fix or a note that the canonical copy is now this function. - scripts/lint/secrets.allowlist:25,27 — Comment references "wiwi-spawned (issue-linked) PRs" and "See auto_merge.sh / run_wiwi.sh" — both the name and the referenced script paths are stale (
scripts/agent-bot/was removed). Again pre-existing, but the rename widens the gap. Non-blocking; the secret itself (AUTO_MERGE_TEAM) is unaffected.
Questions
- The commit message for the second commit says "review_bot_login is a body-footer marker (reviews post as github-actions), so auto-merge/revise key off the config value consistently — self-contained rename." I confirmed no in-repo code keys off the literal
vivi/themisstring. But does the olympus reusable workflow (Netis/olympus/.github/workflows/review.yml@v0.4.0) readreview_bot_loginfrom.olympus.jsonat runtime and match it against the review-comment footer / PR-author login? If olympus does that string match, the rename is only safe if olympus reads the value dynamically (not a hardcodedvivion its side). The commit message asserts this but I can't verify olympus's side from this repo. Can the author confirm olympus v0.4.0 consumesreview_bot_loginfrom the config rather than hardcoding the old name? - Why keep
docs/filing-issues.mdanddocs/pr-review-agent.mdon the old names? Is there an intent to retire those docs, or was the doc update just deferred? If deferred, a tracking issue would keep the drift visible.
Verified
- No functional string-match on old names: grepped
*.sh,.github/workflows/*, and the whole repo forvivi|wiwi|mara— every hit is in a comment or markdown prose; no==/grep/casecomparison in shell or YAML keys off the literal. - Model ID validity:
claude-sonnet-4-6matches the repo's own documented current-model ID (system context listsSonnet 4.6: 'claude-sonnet-4-6'). The retired-model rationale in commit 1 is correct. - Observer-label dormancy claim: confirmed no
observe.ymlexists in.github/workflows/; theobserver.labelsfield is consumed only by an olympus-side workflow heron doesn't wire, so themara→arguslabel change has no in-repo effect. - No sensitive-info leakage: the diff is config-only with no IPs, credentials, hostnames, or paths.
- Schema/validation gate:
scripts/lint/check-olympus-migration.shonly enforces olympus_ref version consistency across the 5 wrapper workflows — it does NOT validate themodeloragents.*values against the olympus JSON schema. So schema-conformance for the new values is only enforced at olympus-runtime, not by this repo's CI.
🤖 Reviewed by the review bot • workflow run
There was a problem hiding this comment.
_agentops/ is a separate git repo (not a submodule — heron has no .gitmodules). It's a standalone clone, presumably of Netis/olympus, vendored locally for development. Its .olympus.json is olympus's own dogfood config, not heron's. The staleness of _agentops/.olympus.json's model field is an upstream olympus concern — it's not part of this PR's diff, and this PR shouldn't be expected to fix it. I'll note it as a non-blocking observation but not block on it.
I now have everything I need. Let me also quickly confirm the check-leakage.sh lint wouldn't flag any of the renamed values (none are IPs/keys, so it won't) and verify the schema validation one more way — the local lint already passed (CI is green per the prompt).
Final assessment: This is a clean, minimal config rename. The functional consumers are all in the external olympus repo (which already uses the Greek names in its own dogfood config, per _agentops/.olympus.json). The lingering vivi/wiwi/mara strings in heron are stale comments/docs describing removed in-tree scripts — they're pre-existing drift, not introduced by this PR, and don't break anything. The one operational concern (in-flight PRs with old vivi body-footers) is worth raising as a question but isn't a code defect.
Summary
PR #173 makes two chore-level edits to .olympus.json: (1) bump model from the retired claude-3-5-sonnet-20241022 to claude-sonnet-4-6, and (2) rename review_bot_login/dev_agent_name/observer.labels from vivi/wiwi/mara to themis/hephaestus/argus to match olympus's Greek-deity convention. The change is correct and safe: all functional consumers of these fields live in the external Netis/olympus reusable workflows (pinned at v0.4.0), and olympus's own dogfood config (_agentops/.olympus.json) already uses the Greek names — so this aligns heron with the upstream convention. The lingering vivi/wiwi/mara strings in heron's workflow comments and docs are stale references to already-removed in-tree scripts, not runtime consumers. Recommendation: APPROVE.
Blocking
None.
Suggestions
_agentops/.olympus.json:35— This vendored olympus dogfood config still pins"model": "claude-3-5-sonnet-20241022"(the retired model that commit 1 of this PR migrates off). It's outside this PR's scope (it's a separate git repo, not heron's config), but worth flagging to the author so it gets fixed upstream — otherwise the local_agentopsworking tree can't actually drive the agent through LiteLLM. Pre-existing, not introduced here..github/workflows/pr-review.yml:3— Comment still says "Headless code-review agent (vivi)". Same pattern atissue-implement.yml:3-4,12,16,24-25,pr-revise.yml:3,5-6,11,ci.yml:7,178, andissue-triage.yml:14. These are stale narrative references to a renamed bot. Not functional, but if the goal of this PR is name alignment, a follow-up to refresh these comments (or an explicit decision to leave them as historical context) would close the loop. Pre-existing drift.docs/pr-review-agent.md:118-152— The doc still describesvivi/wiwiand referencesscripts/agent-bot/revise_dispatch.sh,run_revise.sh,run_wiwi.shas in-tree scripts, butpr-review.yml:11-14states those scripts were removed when the logic moved to olympus. This doc is out of date with the delegation that happened before this PR; the rename makes the doc drift louder but didn't cause it. Pre-existing.
Questions
.olympus.json:8— The commit message saysreview_bot_loginis "a body-footer marker (reviews post as github-actions), so auto-merge/revise key off the config value consistently." If olympus identifies its own past reviews by grepping the review body for this marker, then reviews already posted on currently-open PRs carry the oldvivimarker and won't match the newthemislookup after this merges. Is there a transition concern for in-flight auto-agent PRs (e.g. ones awaiting revise rounds), or does olympus match reviews by author login / a stable identifier instead of the footer string?.olympus.json:33—observer.labelsis changed frommara,incidenttoargus,incident. The commit says "the observer label is dormant (heron wires no observe.yml)." Confirmed: I found noobserve.ymlworkflow in.github/workflows/. Is thearguslabel expected to exist on the GitHub repo's label set (for when olympus's observe workflow is eventually wired), and has it been created? If the label doesn't exist, GitHub will silently drop it on issue creation — but since it's dormant, this is purely forward-looking.
Verified
- No in-tree functional consumers of the renamed fields. Grep for
review_bot_login/dev_agent_name/themis/hephaestus/argusreturns only.olympus.jsonitself — no Rust, TS, shell, or workflow YAML reads these values. All consumers are in the externalNetis/olympusreusable workflows invoked viauses: Netis/olympus/.github/workflows/*.yml@v0.4.0inpr-review.yml:42,issue-implement.yml(uses line),issue-triage.yml,pr-revise.yml:33, andguard.yml. - Olympus's own dogfood config already uses the Greek names.
_agentops/.olympus.json:8-9,33hasthemis/hephaestus/argus— confirming the commit message's claim that the convention originates upstream and heron is aligning to it. - Local lint passes structurally.
scripts/lint/check-olympus-migration.shvalidates.olympus.jsonexistence,$schemaURL, and wrapper version agreement — it does not constrain the value ofreview_bot_login/dev_agent_name/observer.labels/model, so the rename can't trip it. - No sensitive-information leakage. The diff contains only agent-name strings, a label name, and a public model ID. No IPs, credentials, hostnames, paths, or key material.
vivi/wiwi/mararemnants are comments/docs only. Verified via grep: all remaining occurrences are in#-comments in.github/workflows/*.yml,scripts/lint/secrets.allowlist, and prose indocs/*.md. None are parsed by code. They describe the pre-migration in-tree scripts thatpr-review.yml:11-14confirms were removed.
🤖 Reviewed by the review bot • workflow run
Summary
Two corrections to the Olympus agent config (
.olympus.json), both pure config — no workflow or code changes.1. Model off a retired ID
modelpinnedclaude-3-5-sonnet-20241022, retired 2025-10-28 — requests carrying it would 404 once they reach the upstream provider through the LiteLLM-style gateway. Moved the dev/review agents toclaude-sonnet-4-6, the documented drop-in for that retired ID (same Sonnet tier, current generation). Opus 4.8 is a one-line follow-up if we want higher implement/review quality.2. Agent names → Greek-deity convention
Olympus names its roles after Greek deities (its own dogfood config uses
themis/hephaestus/argus). heron carried over off-theme early names through the #167 migration (which only renamed + version-bumped). Aligned:agents.review_bot_loginvivithemisagents.dev_agent_namewiwihephaestusobserver.labelsmara,incidentargus,incidentWhy this is safe:
review_bot_loginis a body-footer marker (reviews post asgithub-actionsand are signed with this value; auto-merge/revise grep for it) — renaming the one config value keeps signing and matching consistent.dev_agent_nameis the commit-author display name. The observer label is currently dormant (heron wires noobserve.yml). Past PRs/issues keep their historicalwiwi/vivitext; no functional impact going forward.Validation
.olympus.jsonis valid JSONscripts/lint/check-olympus-migration.sh— 0 failures