Skip to main content

Core Catch-Up

/core-catchup brings your entire local era-core monorepo up to date in one pass, so you start work on current code instead of stale branches. It is a slash command available in both harnesses (era-code start and era-code claude).

What it does

  1. Locates era-core. If your working directory is the era-core monorepo, it uses it. Otherwise it looks at the parent directory and ~/era-core (the default created by era-code core-install), and asks you to confirm before using a directory it discovered. era-core is detected dynamically — any directory whose immediate children include two or more git repos with Era-Laboratories origins qualifies — so the command never goes stale as repos are added or removed.
  2. Summarizes the last 24 hours. It fetches every repo (read-only — fetch never touches your working tree), then digests commits from the last 24 hours across all branches into a compact, per-repo summary of what changed and who changed it.
  3. Surfaces at-risk local work. Before changing anything, it reports each repo's state: uncommitted changes, existing stashes, unpushed local commits, and detached/PR checkouts that may hide your own work.
  4. Updates everything. After a single explicit confirmation, it rebases every clean and dirty repo onto its upstream, auto-stashing and re-applying dirty trees. Repos with unpushed commits, no upstream, or a detached/PR checkout are skipped and left for you. Any rebase conflict is aborted and the repo restored to its prior state — nothing is ever left half-rebased, and no stash is ever dropped.

Usage

/core-catchup
/core-catchup ~/work/era-core # explicit path, skips auto-discovery

Safety model

This command runs real git mutations (fetch, stash, rebase) and follows Era governance. It is intentionally conservative where it matters:

  • One confirmation gate. Nothing is mutated before you approve the plan, which is shown as a per-repo table of intended actions.
  • Never destructive. It does not force-push, delete branches, reset hard, or drop stashes.
  • Unpushed work is never rebased automatically. Repos ahead of their remote are skipped and called out so you decide how to integrate them.
  • Conflicts restore, not break. A conflicting rebase is aborted and the working tree returned to where it started; the repo is listed as needing manual attention with the exact command to retry.

When to use it

Run it at the start of a work session, or any time you suspect your local era-core checkout has drifted behind the remotes. For tracking session readiness of individual repos over time, see the era-code catch-up command, which records per-repo last-checked state.