docs: no-mistakes(document): Clarify project path documentation - #1889
Open
verbagem wants to merge 15 commits into
Open
docs: no-mistakes(document): Clarify project path documentation#1889verbagem wants to merge 15 commits into
verbagem wants to merge 15 commits into
Conversation
…roject delivery posture resolve by canonical project path instead of basename guessing.
…use noise to per-window paused recheck wake exits, added a regression, and fixed the paused-stale path to batch due rechecks from one scan into one watcher interruption.
…se stale path so idle paused workers stay on the bounded pause cadence instead of producing bare repeated stale notifications.
…tale-noise boundary and validated it with focused watcher, continuity, daemon, lint, and whitespace checks.
…ore registry description prose/backticks and resolve external projects only through structured `path=/absolute/project` annotations or canonical in-home `projects/<name>` paths.
5 tasks
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Intent
Run a GNHF Companion-mode Capacity Night against Firstmate itself, with the host only orchestrating and reviewing GNHF output. Fix exactly two proven Firstmate control-plane defects: registered external absolute-path projects such as pai-agent must resolve their declared delivery posture without basename guessing or free-form prose parsing, and unchanged non-actionable paused/parked/terminal workers must not produce repetitive captain-facing stale interruptions while real actionable state changes, credentials, decisions, failed checks, PR-ready outcomes, X-mode obligations, dead or missing active workers, and genuine wedges still wake. The implemented branch uses structured data/projects.md path=/absolute/project annotations plus canonical in-home projects/ path matching, preserves unknown-path no-mistakes/off default diagnostics, refuses ambiguous or malformed structured path identities, and updates spawn/fleet-sync callers so brief mode, task metadata, and guarded landing posture agree. The watcher changes coalesce due declared-pause rechecks into one interruption per scan and absorb already-surfaced parked/terminal stale panes while preserving active-run and new-actionable wakes. A detached origin/main comparison worktree at /Users/temp/.treehouse/firstmate-7bab20/2/firstmate-origin-main-baseline-2864 proved the six broad local validation failures reproduce equivalently under the same environment; the receipt and full logs are in .no-mistakes/baseline-receipts/firstmate-capacity-night-2864/. Let the pipeline judge those baseline-aware failures rather than treating them as branch regressions. Do not merge.
What Changed
1fb6685 no-mistakes(document): Clarify project path documentation
536a858 no-mistakes(review): Escalate AFK paused validation outcomes
c32fd09 no-mistakes(review): Surface AFK paused validation outcomes
0a62443 no-mistakes(review): Surface paused validation outcomes once
9b320c7 no-mistakes(document): Update capacity-night docs
50ca7ab no-mistakes(review): Track same-hash terminal run wedges
eb8dae6 no-mistakes(review): Surface same-hash run outcomes
c7dac1d no-mistakes(review): Version run outcome stale markers
e8f8bcb no-mistakes(review): Fix watcher and project path regressions
bbe1891 no-mistakes(review): Fix watcher stale dedupe and path normalization
75637e1 gnhf 1: Captain, Defect 1 is corrected narrowly: path lookups now ignore registry description prose/backticks and resolve external projects only through structured
path=/absolute/projectannotations or canonical in-homeprojects/<name>paths.bb32456 gnhf 3: Captain, this iteration fixed the remaining parked/terminal stale-noise boundary and validated it with focused watcher, continuity, daemon, lint, and whitespace checks.
2c0d125 gnhf 2: Captain, this iteration fixed the remaining live declared-pause stale path so idle paused workers stay on the bounded pause cadence instead of producing bare repeated stale notifications.
c077dd0 gnhf 1: Captain, this iteration root-caused the duplicate declared-pause noise to per-window paused recheck wake exits, added a regression, and fixed the paused-stale path to batch due rechecks from one scan into one watcher interruption.
462a5e5 gnhf 1: Captain, this iteration fixed Defect 1 by making registered project delivery posture resolve by canonical project path instead of basename guessing.
Risk Assessment
✅ Low: The changes are narrowly scoped to path-based project posture resolution and watcher/away-mode stale dedupe behavior, with the latest AFK validation-outcome path now emitting a daemon-distinguishable wake reason while preserving ordinary paused stale self-handling.
Testing
Verified and attached the existing origin/main comparison receipt instead of rerunning the broad baseline suite, ran the targeted task-delivery, fleet-sync, crew-state, daemon, and watcher-triage suites successfully, captured manual end-to-end CLI evidence for the external-path and stale-wake behavior, and confirmed the worktree remained clean.
Evidence: Manual end-to-end CLI evidence
External path lookup resolvedpai-agent, free-form prose path defaulted safely,fm-spawn.shreported the standing posture forpai-agent, paused stale rechecks batched into one wake, and already-surfaced parked/terminal panes stayed quiet until a new decision status was appended.Evidence: Baseline receipt verification
diff -qrbetween the driver receipt and the worktree receipt produced 0 bytes; 19 receipt files were hashed and copied into evidence.Evidence: Attached baseline receipt README
Receipt states the same six broad local validation failures reproduced equivalently on detached origin/main and the task branch under the same environment.Evidence: fm-task-delivery targeted test log
Evidence: fm-watch-triage targeted test log
Evidence: fm-fleet-sync targeted test log
Evidence: fm-crew-state targeted test log
Evidence: fm-daemon targeted test log
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 1 issue found → auto-fixed (3) ✅
bin/fm-watch.sh:409- Intent requires that "failed checks" and "PR-ready outcomes" still wake, but the new paused-status branch reduces every non-working crew state topaused.crew_absorb_classreturnsnonefor run-stepparked,done, andfailed, so a worker that resumes validation while its last status is stillpaused:can later reach PR-ready/failed/parked and this path will still record a paused stale instead of surfacing the run outcome.🔧 Fix: Surface paused validation outcomes once
1 error still open:
bin/fm-watch.sh:1064- Intent requires that "failed checks" and "PR-ready outcomes" still wake, but the paused run-outcome surfacer is disabled in away mode by! afk_present. If a paused pane already has the same stale hash and its no-mistakes run later reaches PR-ready or failed whilestate/.afkexists, the AFK branch never readsfm-crew-stateand the outcome is not surfaced.🔧 Fix: Surface AFK paused validation outcomes
1 error still open:
bin/fm-watch.sh:1064- Intent requires that "failed checks" and "PR-ready outcomes" still wake, but the AFK path now calls the paused run-outcome surfacer and that surfacer still emits only a genericstale: <window>reason. The away daemon consumes that stdout, classifies it from the unchangedpaused:status line as an ordinary pause, and self-handles it; because the run-state marker was already written, the same PR-ready/failed generation will not retry.🔧 Fix: Escalate AFK paused validation outcomes
✅ Re-checked - no issues remain.
🔧 **Test** - 1 issue found → auto-fixed ✅
.no-mistakes/baseline-receipts/firstmate-capacity-night-2864- The intent says the origin/main comparison receipt and full logs are in.no-mistakes/baseline-receipts/firstmate-capacity-night-2864/, but that directory is absent from this checked-out worktree. I could not independently verify the baseline-aware broad-failure evidence and did not rerun the broad validation suite.bash tests/fm-task-delivery.test.sh > /var/folders/85/0xf5ctz126717j1k2wfdc_4w0000gn/T/no-mistakes-evidence/01KZDY0N5G1RCWNRNX87K8225N/fm-task-delivery.test.log 2>&1bash tests/fm-fleet-sync.test.sh > /var/folders/85/0xf5ctz126717j1k2wfdc_4w0000gn/T/no-mistakes-evidence/01KZDY0N5G1RCWNRNX87K8225N/fm-fleet-sync.test.log 2>&1bash tests/fm-crew-state.test.sh > /var/folders/85/0xf5ctz126717j1k2wfdc_4w0000gn/T/no-mistakes-evidence/01KZDY0N5G1RCWNRNX87K8225N/fm-crew-state.test.log 2>&1bash tests/fm-watch-triage.test.sh > /var/folders/85/0xf5ctz126717j1k2wfdc_4w0000gn/T/no-mistakes-evidence/01KZDY0N5G1RCWNRNX87K8225N/fm-watch-triage.test.log 2>&1bash tests/fm-daemon.test.sh > /var/folders/85/0xf5ctz126717j1k2wfdc_4w0000gn/T/no-mistakes-evidence/01KZDY0N5G1RCWNRNX87K8225N/fm-daemon.test.log 2>&1Manual project registry fixture exercisingbin/fm-project-mode.sh --with-name --path <external>, in-home path matching, unknown-path default, free-form prose non-parsing, ambiguous path refusal, and malformed path refusal.Manual external git fixture exercisingFM_HOME=<fixture> FM_ROOT_OVERRIDE=<repo> bin/fm-fleet-sync.sh <external/agent>to confirmpai-agent: skipped: local-only project.Manual watcher fixture exercising due paused stale recheck batching, already-surfaced terminal stale absorption, and newneeds-decision:signal wake throughbin/fm-watch.sh.find .no-mistakes/baseline-receipts/firstmate-capacity-night-2864 -maxdepth 2 -type f -printgit status --short --branch🔧 Fix: Attach baseline receipt evidence
✅ Re-checked - no issues remain.
diff -qr /Users/temp/.treehouse/firstmate-7bab20/2/firstmate/.no-mistakes/baseline-receipts/firstmate-capacity-night-2864 .no-mistakes/baseline-receipts/firstmate-capacity-night-2864bash tests/fm-task-delivery.test.shbash tests/fm-fleet-sync.test.shbash tests/fm-crew-state.test.shbash tests/fm-daemon.test.shbash tests/fm-watch-triage.test.shManual CLI evidence in/var/folders/85/0xf5ctz126717j1k2wfdc_4w0000gn/T/no-mistakes-evidence/01KZDY0N5G1RCWNRNX87K8225N/manual-e2e-corrected-20260807054639/manual-e2e-transcript.logusingfm-project-mode.sh,fm-spawn.sh,fm-watch.sh, and wake queue records.git status --short --untracked-files=normal✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.