overengineeringstudio / overengineeringstudio/effect-utils
genie --check crosses composed repo boundaries into nested repo-local generators
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 82
- Forks
- 2
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 121
Description
Context
In a composed megarepo consumer (overeng), root genie:check / genie --check can fail fatally by reaching into a nested repo-local dev generator under a megarepo refs/commits/... path.
This showed up immediately after merging the pnpm 11 migration in overeng. CI is green there only because lint:check:genie is temporarily excluded; the underlying shared genie boundary problem remains.
Current behavior
From the overeng root:
DT_PASSTHROUGH=1 devenv tasks run genie:check --mode before --no-tui
fails with:
GenieGenerationFailedError: Fatal check error in ../../../../../../livestorejs/livestore/refs/commits/c74689bd6fc65e32e6391fb5d762ab4169cfd2de/tsconfig.dev.json.genie.ts; interrupted 250 sibling file(s)
Important signals:
findGenieFilesalready skipsrepos/, so this is not just raw directory traversal into nested repos- the fatal path is a nested LiveStore repo-local dev generator (
tsconfig.dev.json.genie.ts), not an overeng-owned file - once this happens,
genieaborts the whole root check
Why this is a bug in shared behavior
A composed downstream root should not have its genie --check invalidated by foreign nested repo-local dev generators that are outside the downstream repo's intended ownership boundary.
Either:
genieimport/check behavior is following transitive imports too aggressively across composed repo boundaries, or- the workspace/validation context is treating nested repo-local generator state as part of the downstream root check surface
In either case, the boundary semantics are wrong for composed megarepo consumers.
Desired behavior
When running genie --check from a composed downstream repo root:
- only downstream-owned generator files should participate in the authoritative check surface, or
- foreign nested repo-local generators should be isolated so they cannot fatally break the downstream root check
In particular, nested repo-local files like repos/livestore/tsconfig.dev.json.genie.ts should not appear as fatal check targets for the overeng root.
Workaround
Downstream repos currently have to weaken their lint/task graph to stay green.
Concrete example in overeng:
- aggregate
lint:checktemporarily excludeslint:check:genie - local attempts to simplify other task overrides are also blocked because
genie:checkfails before TypeScript even runs
Related
- overengineeringstudio/effect-utils#244
- related workspace/composition ergonomics, but this bug is specifically about
genie --checkcrossing composed repo boundaries into nested repo-local generators
- related workspace/composition ergonomics, but this bug is specifically about
- overengineeringstudio/effect-utils#129
- also a
genie+ megarepo/symlink issue, but different failure mode
- also a
- overengineeringstudio/overeng#170
- downstream cleanup tracker currently blocked on this behavior
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the failure with DT_PASSTHROUGH=1 devenv tasks run genie:check --mode before --no-tui from a composed repository root. Trace findGenieFiles and the check/import path that reaches repos/livestore/tsconfig.dev.json.genie.ts. Done means foreign nested repo-local generators no longer become fatal targets for the downstream root check, with relevant validation passing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100