Harness Intelligence Wiki
SpecsCLIIssue 68 Effect Oxlint Rule Typing

Spec: Issue 68 Effect Oxlint Rule Typing

Spec: Issue 68 Effect Oxlint Rule Typing

User Input

fix issue https://github.com/wearedevpunks/harness-intelligence/issues/68 with delivery-phase full parallel. dont give up on using oxlint nested configs. update to latests if needed. i think this is due to typescript7

Issue #68 reports that hi scaffold setup --yes generated an Effect package oxlint.config.ts whose effect-js/no-import-from-barrel-package rule value is rejected by tsc in a consumer workspace.

Context

Harness CLI developers and follow-up agents rely on hi scaffold setup to generate runnable, typecheckable lint config for detected package/app workspaces. Effect + quality scaffold output currently can produce a nested oxlint.config.ts that is syntactically valid JavaScript but invalid TypeScript under workspace checks, blocking consumer repos such as wearedevpunks/secrets.

The fix must preserve the accepted nested Oxlint-config strategy: selected pack rules belong in the nearest owning package/app config, not only in the repo root.

Non-Goals

  • Remove nested oxlint.config.ts support.
  • Replace Oxlint or Ultracite with another lint stack.
  • Broaden scaffold pack selection semantics beyond the reported Effect + quality lint output.
  • Clean unrelated existing lint/style debt in Harness or consumer repos.

Acceptance Criteria

  • Generated Effect package/app oxlint.config.ts files typecheck under workspace tsc checks when effect-js/no-import-from-barrel-package is included.
  • The generated rule value for effect-js/no-import-from-barrel-package uses an Oxlint-compatible typed shape, not an ESLint-style or string-widened tuple that fails defineConfig.
  • hi scaffold setup --yes still writes or patches nearest package/app Oxlint configs for selected lint assets.
  • Missing lint dependencies needed by the generated nested config remain declared on the owning package.json.
  • A focused regression test fails on the pre-fix generated config shape and passes after the fix.
  • If current Oxlint, Ultracite, or TypeScript package versions are part of the failure, the owning package versions are updated without weakening nested-config behavior.

Constraints

  • Primary owner is apps/cli; packages/scaffold changes only if a shared scaffold model contract must move.
  • Keep the fix compatible with generated consumer repositories, not only this monorepo.
  • Preserve existing user-authored rules/settings when scaffold patches existing configs.
  • Use current Oxlint/Ultracite typing as source of truth for the valid config shape.

Decision Log

DecisionRationale
Preserve nested package/app Oxlint configsPrior scaffold-lint baseline requires closest-owner config placement, and the user explicitly asked not to give up on nested configs.
Treat issue #68 as reviewed scopeThe user supplied the issue and requested full delivery rather than a requirements checkpoint.

On this page