Skip to content

Release: merge develop into main - #177

Merged
ytnobody merged 6 commits into
mainfrom
develop
Jul 24, 2026
Merged

Release: merge develop into main#177
ytnobody merged 6 commits into
mainfrom
develop

Conversation

@ytnobody

Copy link
Copy Markdown
Owner

Summary

Test plan

  • go build ./...
  • go test ./... (all packages pass)

🤖 Generated with Claude Code

ytnobody and others added 6 commits July 23, 2026 17:24
#167)

REQ-011's acceptance criteria has two halves: get_config returning
max_engineers, and the CLAUDE.md template referencing it as the
parallel-Engineer cap. TestREQ011_GetConfig_ReturnsMaxEngineers only
verified the first half; its doc comment merely asserted the template
half was "already" correct with no test backing that claim.

Add TestREQ011_ClaudeMdReferencesConfiguredMaxEngineersAsCap, which
runs `hermit init` with a distinctive max_engineers value and asserts
the generated CLAUDE.md's parallel-cap steps actually reflect it,
closing the gap. Update doc comments and REQUIREMENTS.md's 実装状況
note for REQ-011 accordingly.

Closes #165

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…163) (#168)

TestREQ002_RequiredMCPToolsRegistered only verified tool registration,
never the "each tool follows the HERMIT.md-documented input/output
schema" half of REQ-002's acceptance criteria. Add
TestREQ002_ToolSchemasMatchHERMITDoc, which checks each of the 12
required tools' registered MCP input schema against HERMIT.md and, for
most, calls the tool and checks the documented output keys are present.

Writing this test surfaced four tools whose HERMIT.md schema had
drifted from the implementation: list_prs (documented "state" input
doesn't exist; actual filter is "issue_number"), notify (undocumented
required "event" input; output is {sent, event}, not {success}),
review_pr (output is {pr_number, comment_posted}, not
{summary, risk_level, suggestions} - the structured review is posted
as a PR comment instead), and list_issues (output keys are
capitalized Number/Title/Body/Labels, not lowercase). HERMIT.md is
corrected to match the current implementation for all four,
consistent with how REQUIREMENTS.md already treats the design doc as
trailing (not gating) the implementation elsewhere. get_config's
known owner/repo gap is left as-is, tracked separately by REQ-011.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
) (#170)

Superintendent's background cycle needs an authoritative "now" to
track cadence for PR-comment checks, Issue-comment checks, and the
requirements sweep, instead of estimating the current time from
context. Add a read-only mcp__hermit__now tool that returns the
current wall-clock time as RFC3339, and register it in the
superintendent restricted agent's allowed tool list and the repo's
permissions.allow list.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
…d subagent per cron tick (#172)

Closes #171

Every /hermit invocation previously dispatched one background Superintendent
subagent per cron tick (default every 2-5 minutes), indefinitely, for as long
as the loop ran. Over long unattended runs this accumulated enough subagent
spawns to exhaust the session's 200/200 spawn cap, after which all Agent tool
calls silently failed and the loop stalled with no visible error.

This changes the Superintendent cycle to run synchronously inline in
whatever context receives /hermit (manual or cron-triggered), eliminating
the per-tick Superintendent spawn entirely. Engineer spawning is left as-is
(bounded to max_engineers per pass, via run_in_background: true) since that
is the loop's actual value-adding work and the dominant contributor to spawn
exhaustion was the recurring Superintendent pass itself, which fired every
tick regardless of whether there was work to do.
…ria (Closes #173) (#175)

REQUIREMENTS.md's REQ-002 block hash changed again after Issue #163's
fix, but the only edit was the 実装状況 narrative documenting that fix —
the acceptance-criteria text itself is unchanged. Reviewed
TestREQ002_RequiredMCPToolsRegistered and TestREQ002_ToolSchemasMatchHERMITDoc
against the current REQUIREMENTS.md/HERMIT.md and confirmed both still
verify the full acceptance criteria (tool registration + I/O schema
conformance). No behavioral test changes needed; added a comment
documenting the review for future sweep-triggered re-checks.
…ce criteria (#176)

Closes #174

Investigated after the requirements-reconcile sweep flagged REQ-011's
requirement text as changed. The actual acceptance-criteria wording
(get_config returns max_engineers; CLAUDE.md template references it as
the parallel-Engineer cap) hasn't changed since it was introduced; only
the 実装状況 note was updated in PR #167, in the same commit that added
TestREQ011_GetConfig_ReturnsMaxEngineers (internal/mcp/req_test.go) and
TestREQ011_ClaudeMdReferencesConfiguredMaxEngineersAsCap
(cmd/hermit/inprocess_test.go).

Re-checked both tests against the current template after PR #172
merged the Superintendent cycle's separate "Foreground dispatch" /
"Background cycle" sections into one "Superintendent cycle": the
substrings the tests assert on ("up to N at a time", "exceeds N",
"max_engineers = N") are still present verbatim, so both tests still
correctly verify the current acceptance criteria — no test logic
changes were needed. Added a doc-comment note and a REQUIREMENTS.md
implementation-note addendum recording this re-verification for future
sweeps.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
@ytnobody
ytnobody merged commit 29a7148 into main Jul 24, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant