Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/memory/runtime/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ description: "Agent & process runtime — fab pane primitives + the `@rk_pane_ag
|------|-------------|
| [agent-primitives](agent-primitives.md) | Agent CLI interaction: profile-resolved spawning, receiver-aware skill prompts, shell quoting, pane readiness and delivery, process inspection, waiting, and provider invocation recipes. |
| [dispatch](dispatch.md) | `fab dispatch {start,open,ready,deliver,restart,status,wait,logs,kill,reap,clean}` manages headless and pane stage workers: pane open/ready/deliver (including resume), headless start, preference-bounded pane → native → headless descent, valid user providers that omit interactive grammar, identity-checked pane liveness (the `pane_pid` restart-alias discriminator), state layout, observation, recovery, placement (the column invariant and its `min_cols`/`min_rows` geometry floor), and reaping. |
| [operator](operator.md) | Operator coordination across repositories and tmux sessions: monitoring, gated command routing, receiver-aware skill prompts, targeted worker spawning, dependencies, autopilot, watches, the rk-cron operator-tick cadence (with the Claude-only /loop fallback), and the delegated or built-in operator launcher. |
| [operator](operator.md) | Operator coordination across repositories and tmux sessions: monitoring, gated command routing, receiver-aware skill prompts, targeted worker spawning, dependencies, autopilot, watches, the rk-cron operator-tick cadence with tracked-set-verb mute/lease quiescence (and the Claude-only /loop fallback), and the delegated or built-in operator launcher. |
| [pane-commands](pane-commands.md) | `fab pane {map,capture,process,window-name,open,ready,deliver,kill,questions}` reference: map delegates enumeration to `rk mux panes`, enriches with change/stage, and declares the identity-key contract (`pane`+`server`/`window_id` identity; `session`/`window_index` display-only); `open` spawn + `ready`/`deliver` primitives, `--server`/`-L`, exit codes 2/3. capture/process/kill are dispatch-internal (skill-facing rides `rk mux` twins); questions: the skill-facing exception (policy-bearing sweep). |
| [providers-and-profiles](providers-and-profiles.md) | Provider mechanics and role policy — session/workers depth knobs, environment and launch overrides, four pane-capable built-ins with independent interactive/native/headless grammar and per-role fills, six roles, precedence, stage mapping, `fab agent` YAML resolution, deprecated `fab resolve-agent` compatibility, dispatch-mode descent, and consumers. |
| [runtime-agents](runtime-agents.md) | Agent-state divestment: fab reads the `@rk_pane_agent_state` tmux pane option (`state:epoch_seconds[:pid]`; active/waiting/idle, absent = unknown; legacy `@rk_agent_state` read as a fallback during run-kit's deprecation window) via plain tmux — a data convention, NOT a run-kit software dependency; run-kit's `rk agent setup` is the writer. The former `.fab-runtime.yaml` `_agents` producer pipeline is deleted; fab is a pure consumer via the pure `parseAgentState` parser + `FormatIdleDuration`. |
48 changes: 33 additions & 15 deletions docs/memory/runtime/operator.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/specs/skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -1111,13 +1111,13 @@ Explicit skill sends and spawn prompts follow `_cli-agents.md` § Skill Prompts,
**Flow**:

```text
Started via `fab operator`; cadence is run-kit's seeded operator-tick cron entry delivering bare `operator tick` firings (payload: never a slash command; Claude-only /loop fallback when the entry cannot exist)
Started via `fab operator`; cadence is run-kit's seeded, guard-free operator-tick cron entry delivering bare `operator tick` firings — muted/unmuted by the tracked-set verbs (`rk cron mute <id>` / `--off`); lease (`--for`) = bounded snooze (payload: never a slash command; Claude-only /loop fallback when the entry cannot exist)
├─ Tick: Bash: fab operator tick-start --diff --quiet (snapshot + deltas + fleet or fleet_summary; re-derive before every action: Bash: fab pane map --all-sessions — never trust cached values)
├─ Auto-answer routine agent questions (rk mux send --answer); nudge stalled agents; route commands via rk mux send (raw tmux send-keys fallback)
└─ Drive autopilot queues (/fab-new → /fab-fff); spawn each task in a fresh worktree
```

**Tools**: Bash (`fab operator tick-start`, `fab pane questions`, `fab pane map`, `rk mux send` (`command -v rk`-gated; raw `tmux send-keys` when rk is absent), `wt create`); cadence delivered by run-kit's `rk cron` operator-tick entry (`Skill (/loop)` only as the Claude fallback clock); helpers `_cli-agents`, `_cli-fab`, `_cli-external`.
**Tools**: Bash (`fab operator tick-start`, `fab pane questions`, `fab pane map`, `rk mux send` (`command -v rk`-gated; raw `tmux send-keys` when rk is absent), `wt create`); cadence delivered by run-kit's guard-free `rk cron` operator-tick entry, muted/unmuted by the tracked-set verbs; the skill's own rk uses are `rk cron list --json` (clock verification) and `rk cron mute --for` (a user-requested bounded quiet window) (`Skill (/loop)` only as the Claude fallback clock); helpers `_cli-agents`, `_cli-fab`, `_cli-external`.

**Sub-agents**: None (spawns agent sessions, not sub-agents).

Expand Down
12 changes: 12 additions & 0 deletions fab/changes/260909-qvek-operator-cron-mute-lease/.history.jsonl
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
{"action":"enter","driver":"fab-new","event":"stage-transition","stage":"intake","ts":"2026-09-09T08:16:56Z"}
{"args":"Operator drives the rk cron clock explicitly — mute/unmute on tracked-set transitions, lease as bounded snooze, docs realigned to the guard-free entry","cmd":"fab-new","event":"command","ts":"2026-09-09T08:16:56Z"}
{"delta":"+1.7","event":"confidence","score":1.7,"trigger":"calc-score","ts":"2026-09-09T08:22:02Z"}
{"cmd":"fab-clarify","event":"command","ts":"2026-09-09T12:26:25Z"}
{"delta":"+2.6","event":"confidence","score":4.3,"trigger":"calc-score","ts":"2026-09-09T12:31:19Z"}
{"delta":"+0.3","event":"confidence","score":4.6,"trigger":"calc-score","ts":"2026-09-09T12:47:34Z"}
{"cmd":"fab-switch","event":"command","ts":"2026-09-09T12:48:39Z"}
{"cmd":"fab-fff","event":"command","ts":"2026-09-09T12:50:25Z"}
{"action":"enter","driver":"fab-fff","event":"stage-transition","stage":"apply","ts":"2026-09-09T12:54:46Z"}
{"action":"enter","driver":"fab-fff","event":"stage-transition","stage":"review","ts":"2026-09-09T13:09:57Z"}
{"action":"enter","driver":"fab-fff","event":"stage-transition","stage":"hydrate","ts":"2026-09-09T13:12:56Z"}
{"event":"review","result":"passed","ts":"2026-09-09T13:12:56Z"}
{"action":"enter","driver":"fab-fff","event":"stage-transition","stage":"ship","ts":"2026-09-09T13:16:22Z"}
{"action":"enter","driver":"git-pr","event":"stage-transition","stage":"review-pr","ts":"2026-09-09T13:18:37Z"}
{"event":"review","result":"passed","ts":"2026-09-09T13:25:38Z"}
61 changes: 41 additions & 20 deletions fab/changes/260909-qvek-operator-cron-mute-lease/.status.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,52 @@ created_by: sahil-noon
change_type: fix
issues: []
progress:
intake: ready
apply: pending
review: pending
hydrate: pending
ship: pending
review-pr: pending
intake: done
apply: done
review: done
hydrate: done
ship: done
review-pr: done
plan:
generated: false
task_count: 0
acceptance_count: 0
acceptance_completed: 0
generated: true
task_count: 13
acceptance_count: 34
acceptance_completed: 34
confidence:
certain: 11
confident: 7
certain: 14
confident: 5
tentative: 0
unresolved: 1
score: 1.7
unresolved: 0
score: 4.6
fuzzy: true
dimensions:
signal: 75.0
signal: 90.5
reversibility: 82.4
competence: 76.6
disambiguation: 73.7
competence: 83.2
disambiguation: 80.8
stage_metrics:
intake: {started_at: "2026-09-09T08:16:56Z", driver: fab-new, iterations: 1}
prs: []
intake: {started_at: "2026-09-09T08:16:56Z", driver: fab-new, iterations: 1, completed_at: "2026-09-09T12:54:46Z"}
apply: {started_at: "2026-09-09T12:54:46Z", driver: fab-fff, iterations: 1, completed_at: "2026-09-09T13:09:57Z"}
review: {started_at: "2026-09-09T13:09:57Z", driver: fab-fff, iterations: 1, completed_at: "2026-09-09T13:12:56Z"}
hydrate: {started_at: "2026-09-09T13:12:56Z", driver: fab-fff, iterations: 1, completed_at: "2026-09-09T13:16:22Z"}
ship: {started_at: "2026-09-09T13:16:22Z", driver: fab-fff, iterations: 1, completed_at: "2026-09-09T13:18:37Z"}
review-pr: {started_at: "2026-09-09T13:18:37Z", driver: git-pr, iterations: 1, completed_at: "2026-09-09T13:25:38Z"}
prs:
- https://github.com/sahil87/fab-kit/pull/660
true_impact:
added: 1064
deleted: 78
net: 986
excluding:
added: 657
deleted: 22
net: 635
tests:
added: 395
deleted: 1
net: 394
computed_at: "2026-09-09T13:18:37Z"
computed_at_stage: ship
summary: 'Realigned runtime/operator memory to the guard-free clock: tracked-set verbs mute/unmute the cron entry, lease as bounded snooze, cross-repo state-file contract, 4 new Design Decisions'
# true_impact: lazily created on first stage-finish that computes it (no placeholder here).
last_updated: 2026-09-09T08:22:20Z
last_updated: 2026-09-09T13:25:38Z
Loading
Loading