Skip to content

docs: enforce architecture boundaries with a linter, and say what that buys - #91

Merged
LDGerrits merged 2 commits into
refactorfrom
docs/enforced-boundaries
Oct 3, 2026
Merged

LDGerrits merged 2 commits into
refactorfrom
docs/enforced-boundaries

Conversation

@LDGerrits

Copy link
Copy Markdown
Owner

Summary

Feature folders put the layer, the feature and the side in every file's path, so import boundaries become path rules that a linter can check. Grouping by Controllers/ and Services/ can't express them at all. The docs now say so.

  • Architectures overview: "Import Rules Are Yours to Keep" becomes Enforcing the Rules:
    • an eslint.config.js for roblox-ts using import/no-restricted-paths: layers import only the layers below them (platform never imports features or app), features never import each other, and shared/server/client follow the side rules
    • a note for plain feature folders, whose helper features may be imported
    • Luau: no common linter yet, so a CI script, or AGENTS.md and review
    • Why It Pays Off: a smaller blast radius, safe feature deletes, parallel work in teams, agents that fix their own boundary crossings, an architecture that doesn't erode
  • Layered, feature folders, ECS: each "nothing enforces this" trade-off now links to the enforcement section. Layered's "scales with the team" point names the blast radius.
  • Working with agents: the "Why" list now says "A small blast radius" and "Boundaries a linter can check". The AGENTS.md snippet and skills/rogen/SKILL.md gain one line: keep the repo's stated import boundaries, and move the code rather than add an exception.
  • Home: the agents cards match those two points, and the architectures card mentions lint-enforced import rules.

Test plan

  • e2e/skill.test.ts (the skill matches the docs snippet)
  • npm run types:check and npm run build in docs/
  • import/no-restricted-paths options checked against eslint-plugin-import 2.32's rule docs

🤖 Generated with Claude Code

LDGerrits and others added 2 commits October 3, 2026 22:06
… buys

Feature folders put the layer, feature and side in every path, so import
boundaries become path rules a linter can check. Show an ESLint config for
roblox-ts, and name the payoff: a smaller blast radius, safe deletes,
parallel work and agents that fix their own boundary crossings.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…agents and architecture cards

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
rogen Ready Ready Preview Oct 3, 2026 8:07pm UTC

@LDGerrits
LDGerrits merged commit 133be55 into refactor Oct 3, 2026
3 checks passed
@LDGerrits
LDGerrits deleted the docs/enforced-boundaries branch October 3, 2026 20:16

This branch was successfully deployed

1 active deployment
Preview — f13cf848 Deployed Oct 3, 2026 by vercel[bot]
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