Conversation
…ation in script header
…ate-20260919 feat: gate fresh CLAUDE.md pointer creation on Claude Code version >= 2.1.277
…tage 2) (#2) * feat(bin): complete stage 2 CLAUDE.md pointer removal * no-mistakes(review): Restore column-0 heredoc regression fixture with generic content * no-mistakes(review): Remove stale CLAUDE.md pointer claim from updatefirstmate skill --------- Co-authored-by: irene <irene@ireneui-MacBookPro.local>
Prior commits on this branch regressed past stage2, restoring the unconditional CLAUDE.md pointer-write logic stage2 removed. Reset to fork/main (stage2's merged head) and redo stage3 correctly: delete the now-dead fm_version_at_least/claude_supports_native_agents_md functions and their header-comment reference, and drop the now-vestigial with_mock_claude/with_no_claude test helpers (the script no longer reads claude --version at all). Co-authored-by: irene <irene@ireneui-MacBookPro.local>
…eering skills (#4) * feat: add lazy specialist tool routing Expose ECC, paperthin, and ultrawork as captain-approved specialist paths while keeping Firstmate intake and lifecycle authority. Load only the selected skill or mode and keep ECC hooks, MCP, and legacy sync opt-in. * docs(agents): recover firstmate-layout and task-steering skills These two skills existed only on an orphaned local branch, never pushed. firstmate-layout is re-extracted from AGENTS.md section 2's current (much larger) layout tree rather than reusing the stale 2026-09-14 snapshot. task-steering's underlying AGENTS.md paragraph was byte-identical to the 2026-09-14 extraction, so it is reused as-is. Both get a one-line trigger in section 13 and a documentation-audiences.json entry, matching how specialist-tools (recovered earlier on this branch) is registered. --------- Co-authored-by: irene <irene@ireneui-MacBookPro.local>
Co-authored-by: irene <irene@ireneui-MacBookPro.local>
.treehouse/ holds only runtime pool bookkeeping (treehouse-state.json, treehouse-state.lock), never captain work, but its absence from .gitignore makes it show up as an untracked dirty-tree blocker for bin/fm-update.sh's self-update fast-forward check. Co-authored-by: irene <irene@ireneui-MacBookPro.local>
Verified against no-mistakes v1.79.0's own e2e tests and upstream PR kunchenguid#1120: jev.review_assist is global-only and has no effect when set in a repo's tracked .no-mistakes.yaml. Revert that no-op change and document the real activation path, data sent, and data-boundary guidance instead.
Author
|
Opened by mistake against upstream; closing. Work continues against the maintainer's own fork only. |
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
Enable the documented opt-in jev.review_assist advisory pre-brief in this Firstmate repository's .no-mistakes.yaml. The installed no-mistakes is v1.79.0 or newer. The ordinary cold complete review remains authoritative; Jev is advisory only. Deliver this change to the Ivory2024/firstmate fork and never to kunchenguid/firstmate upstream.
What Changed
jev.review_assistadvisory pre-brief in.no-mistakes.yaml, while keeping the ordinary cold-complete review authoritative and documenting its configuration and data boundary.CLAUDE.md, and updated dispatch/quota behavior, CI, documentation, and focused shell tests.Risk Assessment
🚨 High: The branch does not satisfy the authoritative Jev opt-in criterion, and its new terminal cleanup path can exceed the bounded reconciliation poll and suppress timely delivery diagnostics.
Testing
Ran the targeted repository contract tests, verified no-mistakes v1.79.0, and captured a semantic configuration artifact. No Herdr lab was used because Jev review assist is owned by the external no-mistakes review daemon, not the Herdr runtime surface. No source changes or transient worktree artifacts were created.
Evidence: Jev config semantic assertion
Source: Jev config semantic assertion
$ no-mistakes --version no-mistakes version v1.79.0 (fc540ac) 2026-09-19T09:34:44Z $ ruby semantic config assertion parsed jev.review_assist=true parsed commands.test=absentPipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
.agents/skills/firstmate-layout/SKILL.md- branch carries 10 commit(s) that exist on your local main branch but were never pushed to origin/main; these may be unintended bundled work (proposed PR changes 39 file(s)):Confirm these commits belong in this PR before approving, or manually separate the intended work onto origin/main before gating.
🔧 No changes applied.
1 warning still open:
.agents/skills/firstmate-layout/SKILL.md- branch carries 10 commit(s) that exist on your local main branch but were never pushed to origin/main; these may be unintended bundled work (proposed PR changes 39 file(s)):Confirm these commits belong in this PR before approving, or manually separate the intended work onto origin/main before gating.
no changes applied: bundled local-default commits require manual separation or explicit approval; the rebase conflict resolver cannot safely select commits to discard.
docs/configuration.md:234- The authoritative intent requires: “Enable the documented opt-in jev.review_assist advisory pre-brief in this Firstmate repository's .no-mistakes.yaml.” The changed documentation instead states at docs/configuration.md:234 that the option is global-only and cannot be set from tracked .no-mistakes.yaml, and the final .no-mistakes.yaml contains no jev block. The required repository-level opt-in is therefore absent; confirm whether to revise the intent to the operator-local configuration or provide a supported repository configuration path.bin/fm-inactive-reconcile.sh:413- The new cleanup call at bin/fm-inactive-reconcile.sh:413 runs from ledger_pass at :471 before scan establishes its deadline at :658, so each poll can perform backend cleanup outside the reconciliation budget. Herdr lock acquisition alone can wait up to 5 seconds per child at bin/backends/herdr.sh:3349-3367; multiple terminal children can exceed the outer timeout at bin/fm-inactive-reconcile.sh:701-708, which treats timeout as success and may terminate while a child meta lock is held before an actionable notice is emitted. Bound or budget this cleanup path. The same invariant is contradicted by the file-only claims at bin/fm-inactive-reconcile.sh:18-19 and :454-456 and docs/secondmate-parent-channel.md:35.🔧 Fix applied.
2 issues (1 error, 1 warning) still open:
bin/fm-inactive-reconcile.sh:413- The new cleanup call at bin/fm-inactive-reconcile.sh:413 runs from ledger_pass at :471 before scan establishes its deadline at :658, so each poll can perform backend cleanup outside the reconciliation budget. Herdr lock acquisition alone can wait up to 5 seconds per child at bin/backends/herdr.sh:3349-3367; multiple terminal children can exceed the outer timeout at bin/fm-inactive-reconcile.sh:701-708, which treats timeout as success and may terminate while a child meta lock is held before an actionable notice is emitted. Bound or budget this cleanup path. The same invariant is contradicted by the file-only claims at bin/fm-inactive-reconcile.sh:18-19 and :454-456 and docs/secondmate-parent-channel.md:35.bin/fm-inactive-reconcile.sh:420- The bounded cleanup fix still performs an unbounded failure-notice publication after the timeout:report_child_ledger_lockedcallsnotice_parent_report_failedatbin/fm-inactive-reconcile.sh:420, which reachespublish_actionable/fm_wake_appendand can wait indefinitely for the wake-queue lock. The caller still holds the child meta lock frombin/fm-inactive-reconcile.sh:469until:481; if the outer scan watchdog kills this path during that wait, the lock and pending outcome can be stranded. The same invariant remains in the inactive path atbin/fm-inactive-reconcile.sh:579-587, including the main-homequeue_notice_oncebranch at:582-583. Bound or defer failure publication so the budgeted scan always releases its meta lock before any unbounded wake-queue operation.no-mistakes --versionruby -e 'require "yaml"; c=YAML.load_file(".no-mistakes.yaml"); abort unless c.dig("jev", "review_assist") == true; puts "config semantic check: jev.review_assist=true"'git status --short --branch🔧 No changes applied.
2 warnings still open:
docs/configuration.md:233- Live Jev review behavior was not demonstrable in this test phase. It requires the external no-mistakes review daemon, permitted TYPESAFE_API_KEY, and review audit logs; lifecycle execution is outside this assigned phase.no-mistakes --versionruby -ryamlsemantic assertion for.no-mistakes.yamlbash tests/fm-no-mistakes-required.test.shbash tests/fm-review-diff.test.sh✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.