Release 1.28.0
News ·
archied — Task detail and attempt attribution
- New per-run task detail page, showing each attempt’s own events, changes and configuration rather than a single merged view.
- Events, changes and config are attributed to the attempt that produced them;
EventcarriesattemptandReadTaskLogRequestcarriesstage. - The task detail page remounts when the task id changes, so switching tasks does not leave the previous one’s data on screen.
archied — Configuration
- Services are keyed by name through a registry, so the State Store and Gateway listen addresses are configurable rather than fixed.
- A partial overlay no longer clears the fields it omits — an overlay that set one key was wiping the rest.
- The Services map is cloned on publish, so an overlay can no longer mutate the snapshot other readers are holding.
- The service context is enforced at registration.
archied — Logging and park reasons
- A parked run’s reason is recorded in its own attempt log, in both the daemon and the workflow, so “why did this park?” is answerable from the task itself.
TaskRegistry.Writetakes the caller’s context.
archied — Worktrees and containers
- Retries recover from path-type conflicts instead of failing opaquely, and the underlying cause is no longer masked.
- The worktree is handed back on every sandbox exit.
- A container’s max-uptime reaper is cancelled on release, the cap stays active through the grace period, and teardown is claimed once rather than by cancelling a timer.
archied — Daemon and startup
- Every identity’s forge and repos are swept at startup, including the root forge.
- A cancelled startup is no longer reported as an exhausted sweep budget; an exhausted budget names itself as the cause.
archied — Other
grepcan use the workspace codesearch index.- Forge labels are matched when namespaced, so label-driven routing works for namespaced labels.
- Triage is given criteria for choosing between workflows, and a workflow is required when a code change is needed.
- The Telegram adapter restart callback is wired into the chat router.
- The
ARCHIE_REACTIONSfan-out stream is provisioned and bounded by age. archie-uiexits cleanly when graceful shutdown overruns its deadline.- The dashboard’s event pump retries priming until the State Store answers.
- The update writer emits the agent version sidecar with a real newline.
- The UI finishes its Preact port; the imperative DOM layer is deleted.
- Collection fields decoded over the State Store gRPC contract are never nil
slices, so an empty collection marshals as
[]rather thannull.
archie-agent
- The sandboxed runtime picks up the attempt-attribution contract, so the events and changes an agent produces are recorded against the attempt that produced them.
grepcan use the workspace codesearch index.- A worktree is handed back on every sandbox exit, and container teardown is claimed once — a released container’s reaper is cancelled rather than re-firing during the grace period.
- Retries recover from worktree path-type conflicts instead of failing opaquely.
- A parked workflow run records its park reason in its own log.
- Triage criteria distinguish the workflows, and a workflow is required when a code change is needed.
- Namespaced forge labels match when routing by kind.
- The
ARCHIE_REACTIONSfan-out stream is provisioned. - Collection fields decoded over the State Store gRPC contract are never nil
slices, so an empty collection marshals as
[]rather thannull.