forked from kunchenguid/firstmate
-
Notifications
You must be signed in to change notification settings - Fork 0
feat: sync upstream firstmate main into the fork #11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
33 commits
Select commit
Hold shift + click to select a range
c33b3f6
fix(bin): retire check-row receipts on branch acknowledgement so away…
kunchenguid 1fe1a67
fix(bin): deliver Claude-bound operational input as a record-backed d…
kunchenguid ef595d8
test: isolate lint fixture from tracked suite (#5727)
kunchenguid e789e52
fix(bin): republish parent metadata after a remote secondmate relaunc…
tiago-peixoto 9a4cfbb
fix(bin): give slow watcher suites headroom under the changed-suite b…
karotkriss df4ae5d
fix(bin): stop nested steal-lock recursion and mid-steal watcher TERM…
kunchenguid 873c923
test: make supervision-host park-boundary tests deterministic (#5710)
kunchenguid ea7c7f7
fix: stage remote home clones before publication (#5733)
kunchenguid 920a7d9
fix: preserve Herdr status on Pi relaunch (#5161)
sdivanl 65c53fb
Seed the relaunch-ordering PR poll fixture without fm-pr-check.sh (#5…
kunchenguid 9b52cf5
feat: add attended supervision for Claude and Cursor hosts (#5748)
kunchenguid 72b63ee
fix(bin): dedup directed source expansions in fm-pending-reply-lib (#…
kunchenguid d1a332c
fix(bin): avoid bash 5.2 sibling $() in recovery mint and delivery lo…
Lakescape 3948170
fix(bin): name the recovery for a declined Claude imports dialog and …
karotkriss 062d7a8
fix(bin): report the newest status event in the voice status reader (…
karotkriss e9a6675
fix(bin): gate a self-announcing tool's update-available report on a …
karotkriss cf20836
fix(bin): pass the dispatch profile effort to OpenCode workers throug…
karotkriss 9d56cf6
fix: stop cancelled validation runs from reporting false failures (#5…
mremond bb69be6
fix: require declared waits for workers awaiting their own work (#5812)
mremond 503ba82
fix: bound ShellCheck to one canonical root per process (#5770)
kunchenguid 5700baa
fix: bound watcher cleanup wait on the downtime-marker lock (#5732)
kunchenguid 62d643c
test: stop the remote secondmate e2e watcher before temp-root cleanup…
aminry 30ef650
fix(bin): stop reporting untouched shared-captain copies as drift (#4…
tiago-peixoto f62a7d9
docs: restructure calm.md for readability (#5604)
tmchow 3b68997
docs: restructure turnend-guard.md for readability (#5611)
tmchow 49a218b
docs: move situational AGENTS.md sections into on-demand skills (#5872)
kunchenguid 5a9880b
fix: route second-mate signal wakes by presented status span (#5879)
kunchenguid fd88ea0
fix(bin): take the source lock before the lifecycle lock in register-…
FocalFactotum b4561ad
fix: chain repository hooks under git -c overrides (#5877)
FocalFactotum fba81cb
fix(bin): withhold never-send values from dispatch resolver requests …
zachlandes 1d85c04
Merge upstream/main (kunchenguid/firstmate) into fork main
zakna 8e947d2
no-mistakes(review): Point scope allowance at validation-supervision …
zakna 5b9bae9
Merge origin/main into upstream sync branch
zakna File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| --- | ||
| name: agent-skill-trigger-index | ||
| description: Load only when auditing or maintaining the complete agent-only skill trigger index. | ||
| user-invocable: false | ||
| metadata: | ||
| internal: true | ||
| --- | ||
|
|
||
| # Agent-only reference skills | ||
|
|
||
| These skills are not captain-invocable; load them only at their precise triggers. | ||
|
|
||
| - `bootstrap-diagnostics` - load whenever the session-start digest's bootstrap or network-checks section prints an actionable diagnostic line (`MISSING:`, `MISSING_MANUAL:`, `PRESENTATION_UNAVAILABLE:`, `BACKEND_INVALID:`, `NEEDS_GH_AUTH`, `TANGLE:`, `STARTUP_MEMORY_BUDGET:`, `CREW_DISPATCH: invalid`, `FLEET_SYNC:`, `NETWORK_CHECKS:`, `HOME_SUMMARY:`, `BACKLOG_RECONCILE:`, `SECONDMATE_SYNC:`, `SECONDMATE_LIVENESS:`, `SECONDMATE_HANDOFF:`, `NUDGE_SECONDMATES:`, or `FMX:`), or when `BOOTSTRAP_INFO:` says an interrupted backlog cleanup may have left an endpoint or local copy; silence and other `BOOTSTRAP_INFO:` facts need no load. | ||
| - `diagnostic-reasoning` - load before scoping a reported bug and before acting on a diagnostic report. | ||
| - `ask-user-authority` - load before deciding any ask-user finding. | ||
| - `quota-array-dispatch` - load before choosing among a matched crew-dispatch profile array from current quota-axi default TOON. | ||
| - `harness-adapters` - load before spawning or recovering a crewmate or secondmate, handling a trust dialog, sending a harness-specific skill invocation, interrupting or exiting an agent, resuming an exited agent, or verifying a new harness adapter. | ||
| - `firstmate-orca` - load before switching to Orca, spawning or supervising Orca-backed work, smoke-testing Orca backend behavior, debugging Orca task state, or reconciling Orca-backed task metadata. | ||
| - `project-management` - load before adding, creating, removing, or initializing a project. | ||
| Cloning or registering a project is add intake and uses the same trigger. | ||
| - `stuck-crewmate-recovery` - load when the session-start digest reports an ordinary direct report's endpoint dead or its metadata has no window, after a stale wake, looping pane, repeated confusion, an answered-by-brief question, an unresponsive crewmate, or a failed steer, and whenever a live worker reports its no-mistakes pipeline dead, unreachable, or timed out. | ||
| - `secondmate-provisioning` - load before creating, seeding, validating, launching, handing backlog to, recovering, pushing inherited local material into, or retiring a secondmate home, and before editing `data/secondmates.md`. | ||
| - `captain-hold-lifecycle` - load before treating an investigation or visual review as complete, before ending a visual review that exposed a captain decision, when recording or routing the captain's answer, and on any `RECORD DIVERGENCE` line from the wake drain. | ||
| - `process-event-sources` - load before arming a long-polling source, before registering a deterministic condition->action watch (do X as soon as Y is true), on any `procevent <adapter> <source-id> <sequence>` check wake, and on any `process-event source stranded` or `process-event source failed to start` check wake. | ||
| Never run a registered source's blocking command yourself in a conversational turn. | ||
| - `fmx-respond` - load on an `x-mention <request_id>` `check:` wake to handle the mention, on an `x-mode-error ...` `check:` wake to report the Relay configuration blocker, on a `public-followup ...` `check:` wake or a startup-surfaced public commitment, and on any milestone or terminal wake for a Relay-linked task before posting its completion follow-up; relevant only when Relay is on. | ||
| - `firstmate-codexapp` - load before coordinating a visible Codex Desktop thread, evaluating a Codex App backend request, or reconciling Codex Desktop host-tool smoke evidence for Firstmate work. | ||
| - `firstmate-coding-guidelines` - load before changing firstmate's shared, tracked material, as defined by section 1's list, whether editing directly or briefing a crewmate for a firstmate-repo task. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| --- | ||
| name: away-quiet-supervision | ||
| description: Load whenever /afk or /quiet is invoked, an away or quiet record exists, or a marked away-supervisor message arrives. | ||
| user-invocable: false | ||
| metadata: | ||
| internal: true | ||
| --- | ||
|
|
||
| # Away and quiet supervision safety | ||
|
|
||
| The `/afk` and `/quiet` skills each own their daemon procedure, which is otherwise identical; these safety facts apply to both: | ||
|
|
||
| - Every current daemon injection uses the `away-supervisor` kind from `bin/fm-operational-input.sh` after `FM_OPERATIONAL_PREFIX` (U+2063 INVISIBLE SEPARATOR followed by `FIRSTMATE_OP: `), except that a Claude Code primary, which strips U+2063, receives that owner's record-backed doorbell and it counts as marked only when `bin/fm-operational-input.sh open <path>` verifies its record; the `/afk` skill owns legacy bare-marker compatibility. | ||
| - `state/.afk-contract` is the away posture, written in the same turn as `/afk` before any other work, because `/afk` is itself the go: no read-back gates entry or waits for a go; entry announces hold-for-return only, and the away session acts on those words by its own judgment through the guarded scripts under standing authority, holding for the return on doubt. | ||
| - While `state/.afk` exists, the daemon owns supervision; do not arm a separate watcher. | ||
| The daemon is never launched on Pi, where the ordinary supervision session continues under the record with main parked: the branch takes every safe actionable wake it can, and only a declined wake (including a broken branch or unsafe scan) or a watcher failure wakes main. | ||
| Away mode on a non-Pi home with `config/supervision-host` works the same way with the supervision host as the branch; a wake it hands back arrives through that harness's own wake path and is never the captain's return. | ||
| - A marked message while away or quiet mode is active is internal escalation and does not exit that mode. | ||
| - A message beginning `/afk` refreshes away mode; a message beginning `/quiet` refreshes quiet mode. | ||
| - Any other unmarked message means the captain returned in away mode (load `/afk`, run the return owner, and do not process that message as ordinary work until its durable catch-up gate clears), or, in quiet mode, is simply answered as ordinary work with the flag and daemon left untouched until an explicit `/quiet off`. | ||
| - Away and quiet mode never expand approval authority for merges, ask-user findings, destructive actions, irreversible actions, or security-sensitive choices. | ||
| - Bias ambiguous input toward exit because a present captain takes precedence. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When this skill is loaded for the advertised complete trigger audit, its list omits the newly added
user-invocable: falseskillsoperational-home-layout,session-start-recovery,away-quiet-supervision,validation-supervision,ship-landing, andscout-completion. Those skills contain required triggers for startup recovery, away supervision, validation decisions, landing, and cleanup, so an audit driven by this new index can incorrectly conclude that those runtime contracts are covered and allow their triggers to drift. Include all agent-only skills or stop calling this the complete index.AGENTS.md reference: AGENTS.md:L405-L406
Useful? React with 👍 / 👎.