jan-cli 0.27.0

YAML-defined CLI trees with progressive help, optional exec aliases, merged extra specs, and SQLite audit logging keyed by git branch
Documentation
# `jan systems`

Cross-flow observability for named agent systems declared with `system:` in YAML.

```bash
jan systems list
jan systems show gifts
jan systems status gifts
jan systems status jobs --json
```

## Declaring a system

Set `system: <name>` on a command group. Every descendant script leaf inherits the tag
(unless a nested node overrides it):

```yaml
# gifts.yaml (or the wrapper in scripts.spec.yaml)
about: Birthday gift planner…
system: gifts
commands:
  gift-sync: …
  gift-curator: …
```

Leaves are tagged in:

- `jan show <leaf>` (`system:` line)
- `jan cron wakeups` (`leaf|chain|system|cron|status`)
- cron status detail / recent spawns (`system=…`)
- outer `unifier log` spans (`-f system=…`) when `JAN_CRON_SPAN` applies
- child env `JAN_SYSTEM=<name>` on cron/event spawns

Opt a utility leaf out of an inherited system with `system: ""`.

## What `status` computes (no agent code required)

| Section | Source |
|---------|--------|
| Schedule | Next cron fire per leaf, or `mailbox/event wakeup` |
| Mailboxes | `unifier list mailbox/<leaf>` pending count for event-only leaves |
| Execution | Filtered running / deferred / recent from the jan cron daemon |
| Timeline / board / digest | Conventional keys `<name>/status/*`, `<name>/board/url`, `<name>/digest/url`, `<name>/sync/last` |

Optional agent instrumentation (`flow_obs` timeline appends) still enriches the timeline, but the schedule / mail / execution slices work from the YAML tag alone.