overengineeringstudio / overengineeringstudio/effect-utils

genie #mr member resolution picks gutted worktrees by existsSync alone

Open
#1,277 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:typescript origin:agent type:bug
Dominant language
TypeScript
Stars
82
Forks
2
Avg merge
1d 8h
Merged PRs (30d)
121

Description

Context

genie's #mr/<member>/... import resolution (packages/@overeng/genie/src/core/import-map/sync-resolver.ts, deriveStoreWorktreePathFromLockMember) selects a member worktree with fs.existsSync(derivedPath) alone. A registered-but-gutted worktree (files deleted mid-repair, or a half-created registration) passes the check, so every generator import through that member fails with a bare Cannot find module — and the failure surfaces only later as GenieGenerationFailedError on an unrelated downstream file (e.g. a consumer repo's flakes/*/package.json), with the real path truncated in the reporter output.

Observed live: an in-progress store repair left refs/commits/<sha> registered and locked with most files deleted; every genie check in the consuming workspace went red until the repair finished.

Suggestion

Validate the candidate worktree beyond existence (e.g. the member's package.json / a marker file at the derived root), so a broken registration falls through to the next selector (ref worktree) instead of poisoning generation; and include the resolved path in the import-failure message.

Impact

Transient but total: any consumer workspace's lint:check:genie / genie:check fails while a store repair holds a gutted worktree, with no signal pointing at the store.

Posted on behalf of @schickling
field value
agent_identity dev3.direct.omp.fds258a8
session unknown
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.1.14
agent_runtime OMP 18.1.14
agent_model openai-codex/gpt-5.6-sol
worktree 2026-09-12-fix-checks/2026-09-12-fix-checks
tooling_profile dotfiles@44ddd8a

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in packages/@overeng/genie/src/core/import-map/sync-resolver.ts, especially deriveStoreWorktreePathFromLockMember, and trace the member worktree selection and import-failure reporting. Reproduce or inspect the gutted-worktree case, then verify lint:check:genie or genie:check uses a valid fallback and exposes the resolved path when resolution fails.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.