Skip to content
Open
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
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ shuvbro's skills live in two separate places with different audiences:
- [docs/wedge-alarm.md](docs/wedge-alarm.md) - configure the active alert for an away-mode escalation delivery that gets stuck.
- [docs/tmux-backend.md](docs/tmux-backend.md) - current setup and limits for the tmux reference backend.
- [docs/herdr-backend.md](docs/herdr-backend.md) - current setup, CI coverage, safety boundaries, and limits for the Herdr backend.
- [docs/native-supervisor.md](docs/native-supervisor.md) - explicit new-home native Shuvcode supervisor and independent Herdr presentation.
- [docs/zellij-backend.md](docs/zellij-backend.md) - current setup and limits for the experimental Zellij backend.
- [docs/orca-backend.md](docs/orca-backend.md) - current setup and limits for the experimental Orca backend.
- [docs/cmux-backend.md](docs/cmux-backend.md) - current setup, socket security, and limits for the experimental cmux backend.
Expand Down
374 changes: 374 additions & 0 deletions bin/fm-native.mjs

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions docs/documentation-audiences.json
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,10 @@
"path": "docs/live-board.md",
"audience": "operator-current"
},
{
"path": "docs/native-supervisor.md",
"audience": "operator-current"
},
{
"path": "docs/orca-backend.md",
"audience": "operator-current"
Expand Down
42 changes: 42 additions & 0 deletions docs/native-supervisor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Native Shuvcode supervisor

The explicit native path uses Shuvcode's supervisor for durable work, delivery, decisions and execution.
ShuvBro supplies the tracked orchestration profile and optional Herdr presentation.
Use it only with a new home; existing legacy homes are neither migrated nor taken over.
Do not run a legacy fleet watcher or controller against a native home.

The executable [`fm-native.mjs`](../bin/fm-native.mjs) header and `--help` own exact arguments and operations.
It requires Node.js, a managed Shuvcode supervisor with native profile and presentation support, and a named non-default Herdr instance advertising all four runtime attachment methods.
Initialize a new home with an explicit project, socket, session and parent workspace, then explicitly run `up` to start the supervisor and lead.
Initialization records the ShuvBro profile into the native home.
External supervisor endpoints are unsupported for this profile.

**Keep `watch` running to maintain display status.**
`up` and `sync` each reconcile once; `watch` reconciles every two seconds with a five-second status lease.
Stopping or losing the adapter changes expired display observations to unknown and leaves native execution running.
Restarting the adapter reads its exact home-local journal and current bindings.
`watch` holds the home lock only during each pass, so explicit `cleanup` and `reopen` run while it continues.
One entry's failure does not stop other entries from being created or reported; the pass still exits nonzero.
Use `control` with typed native supervisor arguments for work operations; it prints the native command's result.
The adapter never admits durable prompts through pane input.

Herdr creates views without changing focus and records exact home, Session, attachment, pane, tab and workspace identities in `native-display.json`.
Lead and secondmate views remain persistent; each worker gets a disposable workspace.
Labels are presentation only and never authorize cleanup.
A closed view remains closed until explicit `reopen`, which creates a new binding generation for the same available Session.
Unavailable or retired entries are not automatically recreated.

Use explicit `cleanup` only after the runtime positively reports settlement for the exact recorded attachment.
A done label alone does not establish settlement.
Cleanup closes the exact owned pane and never issues a workspace close or runtime cancellation.
Other panes and ambiguous bindings are retained.

An uncertain creation remains pending rather than allocating a duplicate.
Inspect the journal and Herdr topology to resolve such a lost reply; this initial path does not automatically adopt an unbound orphan by its label.
Lost binding and report replies reconcile through exact readback and retained sequence numbers.
Lost attach launch replies are adopted only when the exact foreground argv is observable; otherwise they remain uncertain.
Initial attach input requires a positively idle shell, and restored views are never submitted a second attach command.

Presentation is owned on the destination host.
Run a separate native entrypoint there with its local socket and home; this path does not provision remote hosts or replace unreachable remote work locally.
The regression entrypoint is [`fm-native-supervisor.test.sh`](../tests/fm-native-supervisor.test.sh).
5 changes: 5 additions & 0 deletions profiles/native-shuvbro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"version": 1,
"id": "shuvbro",
"leadInstructions": "You are the ShuvBro lead. The user owns the work. Delegate project changes to native supervisor ships or scouts; do not edit project worktrees yourself. Keep briefs concrete, include ownership and verification, and tell workers they are not alone and must preserve others' edits. Use the native supervisor protocol for task admission, steering, cancellation, dependencies, decisions, reports and cleanup. The native supervisor database is the only workflow authority. Never run legacy fm-spawn, fm-watch, fm-send, fleet controllers or legacy home initialization in this native home. Herdr panes are optional views: closing, focusing or restoring a pane must never admit, resume, cancel or complete work. Report failures and unresolved decisions faithfully. Do not merge, push, publish, discard unlanded work or contact others without the user's authorization. A secondmate follows its assigned charter and reports through its parent lead. Preserve exact Session and home identities across restart; do not replace missing or unreachable remote work with a local task. Complete work only with concrete verification and a report; display status is not evidence of delivery or settlement."
}
Loading
Loading