Skip to content

    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; Event carries attempt and ReadTaskLogRequest carries stage.
    • 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.Write takes 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

    • grep can 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_REACTIONS fan-out stream is provisioned and bounded by age.
    • archie-ui exits 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 than null.

    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.
    • grep can 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_REACTIONS fan-out stream is provisioned.
    • Collection fields decoded over the State Store gRPC contract are never nil slices, so an empty collection marshals as [] rather than null.