Skip to content

feat(receipts): project-aware verification hint and shared code-extension list - #106

Merged
fusengine merged 2 commits into
mainfrom
feat/receipt-hint-project-aware
Sep 8, 2026
Merged

feat(receipts): project-aware verification hint and shared code-extension list#106
fusengine merged 2 commits into
mainfrom
feat/receipt-hint-project-aware

Conversation

@fusengine

Copy link
Copy Markdown
Owner

Summary

  • The TaskCompleted refusal now names only the commands of the ecosystem detected for the project (root markers plus changed-file extensions), instead of listing every ecosystem's commands unconditionally.
  • A single shared code-extension list feeds session change tracking, the completion gate, and the hint; Dart files were gated but never tracked, so the Dart branch could not fire, now fixed.
  • Paths coming from session state are confined to the working directory before any disk read; search directories are deduplicated.

Changes

  • src/runtime/lifecycle/receipt-hint.ts (new): project-aware ecosystem detection and command hint
  • src/runtime/lifecycle/code-extensions.ts (new): shared code-extension list
  • src/runtime/lifecycle/agent-memory.ts, task-completed.ts, track-changes.ts: wired to the shared extension list and hint
  • test/receipt-hint.test.ts, test/track-changes.test.ts (new), test/task-completed.test.ts: coverage for the new detection and tracking behavior
  • README.md, MEMORY/LESSON.md

Test plan

  • bun test: 1857 pass, 1 skip, 0 fail
  • bunx tsc --noEmit: 0 errors
  • bun run build: 0 errors
  • Verified on 30 real fixture projects through the hook binary

Breaking changes

None

…sion list

The TaskCompleted refusal used to list every ecosystem's commands. It now names only the commands of the ecosystem detected for the project: root markers in the working directory and in the first two path segments of the files changed in the session (monorepos), plus the extensions of those files. bun test and bunx tsc on a Bun repo, npm or pnpm or yarn test per lockfile, pytest with mypy or pyright when configured, go test and go vet, cargo test and cargo check, php artisan test or phpunit or pest with phpstan when configured, swift test, flutter test or dart test; the generic list only when nothing is detected. The SubagentStop advisory uses the same hint.

A single shared code-extension list (code-extensions.ts) now feeds session change tracking, the completion gate and the hint; Dart files were gated but never tracked, so the Dart branch could not fire, fixed. Paths coming from session state are confined to the working directory before any disk read; search directories are deduplicated.

Verified on 30 real fixture projects through the hook binary; tests 1837 to 1857.
@fusengine
fusengine merged commit db97e7f into main Sep 8, 2026
1 check passed
@fusengine
fusengine deleted the feat/receipt-hint-project-aware branch September 8, 2026 01:26
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