Proposal:
judge reads PHP (backend) and Vue/TS (frontend), but nothing reads .css. This project's hardest styling law -- CSS may only name a WIDGET, never a composition's class or a data- mark a composition writes -- is unenforceable as a detector because the engine cannot see the file the sin lives in. It had to go into a PHPUnit architecture test with a hand-rolled selector parser and a JSON ratchet instead, which means it is invisible to judge, has no info entry, no repent, and no skill attached. A css engine parsing selectors into a small AST (compound, combinator, attribute, pseudo) would let rules like 'no :has()', 'reach no deeper than one level' and 'name no composition' be ordinary detectors.
Filed via commandments feature-request from a consumer project.
Proposal:
judge reads PHP (backend) and Vue/TS (frontend), but nothing reads .css. This project's hardest styling law -- CSS may only name a WIDGET, never a composition's class or a data- mark a composition writes -- is unenforceable as a detector because the engine cannot see the file the sin lives in. It had to go into a PHPUnit architecture test with a hand-rolled selector parser and a JSON ratchet instead, which means it is invisible to judge, has no info entry, no repent, and no skill attached. A css engine parsing selectors into a small AST (compound, combinator, attribute, pseudo) would let rules like 'no :has()', 'reach no deeper than one level' and 'name no composition' be ordinary detectors.
Filed via
commandments feature-requestfrom a consumer project.