You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Parent: #333
Execution mode: implementation
Depends on: #343, #191
Final migration rule: one workflow, one writer/authority at a time
Problem Statement
Hermes/HearthBot currently carries useful orchestration behaviors learned before VNext, but retaining Hermes as a fallback, sub-orchestrator, state bridge or compatibility layer would leave Forge without a single source of authority and make duplicate external side effects possible.
The migration must preserve useful requirements while explicitly rejecting Hermes code/config/state/runtime compatibility.
Desired Outcome
Forge becomes the sole durable orchestrator for retained agentic workflows. HearthBot may remain as a thin presentation/request/approval/notification interface, but Mission/Execution/Trigger/Resource/Grant/Budget/Artifact/Gate state is owned only by Forge/PostgreSQL. Hermes services, cron jobs, routing/state stores and Hermes-only credentials are removed after each workflow has a proven Forge-native replacement.
User Story
As the Forge operator,
I want one orchestration system with HearthBot as a convenient interface rather than a second brain,
So that scheduled work, notifications, provider routing and side effects remain deterministic, inspectable and safe after Hermes is retired.
Requirements
A. Live responsibility inventory
At implementation time, inspect the actual running environment rather than relying on old docs/memory. Produce a cutover ledger with one row per active Hermes/HearthBot responsibility:
Migration data may be human-reviewed requirements documentation only.
C. HearthBot thin interface
HearthBot/Telegram may provide:
authenticated/allowlisted request submission;
Mission/task status and concise evidence links;
explicit approval/revocation actions exposed by Forge policy;
actionable notifications;
operator commands that map to typed Forge APIs/Operations.
It must not maintain a second orchestration database, independently choose provider authority, keep hidden Mission state, or write directly to external Resources when Forge owns that workflow.
Telegram identity/message text is input evidence, not hidden authority. Forge maps it to an authenticated Principal and current policy before consequential actions.
D. Native replacements
Only reimplement retained responsibilities using proven VNext components:
implement/test Forge replacement using fixtures/read-only mode;
run shadow observation only where it produces no competing external write;
establish Forge Resource/Grant/Trigger/Mission and acceptance evidence;
stop/disable Hermes writer for that workflow;
atomically/operationally designate Forge sole writer;
exercise the real workflow;
verify output/side-effect/recovery;
remove Hermes-specific schedule/config/credential for that workflow when safe;
record cutover receipt and rollback boundary.
Rollback before final retirement may restore Hermes only after Forge writer is disabled/fenced. Never permit both simultaneously.
F. Provider/routing migration
Do not port Hermes routing implementation. Recreate only desired policies as #335 deterministic provider-neutral configuration. Compare representative provider outage/quota scenarios and ensure Forge receipts explain selection/fallback/holds.
G. Scheduled responsibility migration
Translate active cron/monitoring intent into Mission + Trigger + deterministic prefilter contracts. Prove unchanged idle windows consume zero model tokens. Do not copy cron prompts as permanent parent-agent context.
H. Notifications
Migrate only actionable notification behavior. Deduplicate/coalesce through Forge occurrence/Operation identity; do not notify on every healthy poll. Notification failure is an adapter outcome/retry/reconciliation problem, not a reason to rerun a Mission blindly.
I. Secrets/service cleanup
After each verified cutover and again at final retirement:
Secrets/cleanup: old services/config/credentials/startup refs; no accidental deletion before verified replacement.
Final reboot: cold-start state reconstruction and representative end-to-end workflows.
Acceptance Criteria
Every active Hermes-owned user-visible responsibility is explicitly retained with a Forge-native implementation/test or dropped as unnecessary.
HearthBot submits/reads/approves through Forge without a second orchestration database or direct independent writer path.
No production workflow has simultaneous Hermes and Forge write authority.
Repository/runtime searches show no Forge dependency on Hermes code/config/state/API/fallback.
Retained scheduled/monitoring workflows demonstrate zero-token idle when unchanged.
Provider failover/budget behavior is explained entirely by Forge routing/budget/readiness evidence.
Notifications are typed/deduped/actionable and recover independently of Mission rerun.
Hermes services/timers/cron/startup paths are removed/disabled after verified cutover.
Hermes-only credentials are revoked/removed where safe and recorded without leaking secret values.
A clean reboot starts the complete required Forge/HearthBot path with Hermes absent.
A representative Telegram request, scheduled responsibility, provider failure, approval/revocation, notification and bounded side effect all pass after reboot.
Pre-final rollback cannot create two concurrent writers; final state has no Hermes fallback.
Out of Scope
Bit-for-bit Hermes feature parity.
Importing Hermes source/config/state to accelerate migration.
Keeping Hermes as an emergency fallback after final retirement.
Very Large / operational migration - execute as many small cutover PRs/operations as there are retained responsibilities, with explicit one-writer receipts and rollback fences.
Technical Notes
This phase necessarily combines repository work with live-environment operator actions. Code can be agent-implemented; disabling services/revoking credentials must remain explicit, evidence-backed consequential operations under the operator's authority.
Parent: #333
Execution mode: implementation
Depends on: #343, #191
Final migration rule: one workflow, one writer/authority at a time
Problem Statement
Hermes/HearthBot currently carries useful orchestration behaviors learned before VNext, but retaining Hermes as a fallback, sub-orchestrator, state bridge or compatibility layer would leave Forge without a single source of authority and make duplicate external side effects possible.
The migration must preserve useful requirements while explicitly rejecting Hermes code/config/state/runtime compatibility.
Desired Outcome
Forge becomes the sole durable orchestrator for retained agentic workflows. HearthBot may remain as a thin presentation/request/approval/notification interface, but Mission/Execution/Trigger/Resource/Grant/Budget/Artifact/Gate state is owned only by Forge/PostgreSQL. Hermes services, cron jobs, routing/state stores and Hermes-only credentials are removed after each workflow has a proven Forge-native replacement.
User Story
As the Forge operator,
I want one orchestration system with HearthBot as a convenient interface rather than a second brain,
So that scheduled work, notifications, provider routing and side effects remain deterministic, inspectable and safe after Hermes is retired.
Requirements
A. Live responsibility inventory
At implementation time, inspect the actual running environment rather than relying on old docs/memory. Produce a cutover ledger with one row per active Hermes/HearthBot responsibility:
Drop unused/obsolete behavior deliberately; do not preserve features for parity.
B. Forbidden compatibility
Repository/runtime tests must reject or prove absence of:
state.dbor other DB reads/writes;Migration data may be human-reviewed requirements documentation only.
C. HearthBot thin interface
HearthBot/Telegram may provide:
It must not maintain a second orchestration database, independently choose provider authority, keep hidden Mission state, or write directly to external Resources when Forge owns that workflow.
Telegram identity/message text is input evidence, not hidden authority. Forge maps it to an authenticated Principal and current policy before consequential actions.
D. Native replacements
Only reimplement retained responsibilities using proven VNext components:
E. Cutover protocol
For each retained workflow:
Rollback before final retirement may restore Hermes only after Forge writer is disabled/fenced. Never permit both simultaneously.
F. Provider/routing migration
Do not port Hermes routing implementation. Recreate only desired policies as #335 deterministic provider-neutral configuration. Compare representative provider outage/quota scenarios and ensure Forge receipts explain selection/fallback/holds.
G. Scheduled responsibility migration
Translate active cron/monitoring intent into Mission + Trigger + deterministic prefilter contracts. Prove unchanged idle windows consume zero model tokens. Do not copy cron prompts as permanent parent-agent context.
H. Notifications
Migrate only actionable notification behavior. Deduplicate/coalesce through Forge occurrence/Operation identity; do not notify on every healthy poll. Notification failure is an adapter outcome/retry/reconciliation problem, not a reason to rerun a Mission blindly.
I. Secrets/service cleanup
After each verified cutover and again at final retirement:
J. Final reboot proof
From a clean reboot/startup:
Implementation Sequence
Primary Surfaces To Inspect First
Orthogonal Checkpoints
Acceptance Criteria
Out of Scope
Implementation Scope
Very Large / operational migration - execute as many small cutover PRs/operations as there are retained responsibilities, with explicit one-writer receipts and rollback fences.
Technical Notes
This phase necessarily combines repository work with live-environment operator actions. Code can be agent-implemented; disabling services/revoking credentials must remain explicit, evidence-backed consequential operations under the operator's authority.