Problem
While fixing #230, a separate workspace-boundary case reproduced: an npm workspace root with malformed package.json is skipped by workspace discovery. A nested app can then be treated as standalone, dropping the root's inherited restrictions.
Reproduction
Create a workspace root with workspaces: ["packages/*"] and intent.exclude: ["@tanstack/query"], and a nested app with an allowlist permitting that package. Corrupt the root JSON while keeping the app's manifest valid. Without a separate workspace marker such as pnpm-workspace.yaml, listIntentSkills({ cwd: appDir }) and the load path can miss the inherited restriction.
Verified against main 206e987 plus the strict resolved-policy reader proposed for #230. The corresponding pnpm fixture rejects the root manifest because its workspace boundary remains discoverable.
Design constraint
Workspace discovery also checks ancestor manifests outside the eventual project boundary. Rejecting every malformed ancestor could make an unrelated parent file block a standalone app. Decide how Intent establishes a trustworthy boundary before changing that behavior.
Acceptance criteria
Priority: High. Follow-up to #230; do not broaden selector grammar or change interactive installation.
Problem
While fixing #230, a separate workspace-boundary case reproduced: an npm workspace root with malformed
package.jsonis skipped by workspace discovery. A nested app can then be treated as standalone, dropping the root's inherited restrictions.Reproduction
Create a workspace root with
workspaces: ["packages/*"]andintent.exclude: ["@tanstack/query"], and a nested app with an allowlist permitting that package. Corrupt the root JSON while keeping the app's manifest valid. Without a separate workspace marker such aspnpm-workspace.yaml,listIntentSkills({ cwd: appDir })and the load path can miss the inherited restriction.Verified against main
206e987plus the strict resolved-policy reader proposed for #230. The corresponding pnpm fixture rejects the root manifest because its workspace boundary remains discoverable.Design constraint
Workspace discovery also checks ancestor manifests outside the eventual project boundary. Rejecting every malformed ancestor could make an unrelated parent file block a standalone app. Decide how Intent establishes a trustworthy boundary before changing that behavior.
Acceptance criteria
Priority: High. Follow-up to #230; do not broaden selector grammar or change interactive installation.