synthesisui 0.11.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -510,6 +510,23 @@ export async function doctor(opts) {
510
510
  for (const line of verdict(d, hasSystem, overrides.length, conflictsInUse.length))
511
511
  console.log(line);
512
512
  console.log("");
513
- if (opts.strict && (d.findings.length > 0 || overrides.length > 0))
514
- process.exitCode = 1;
513
+ if (opts.strict) {
514
+ const mine = d.findings.length > 0 || overrides.length > 0;
515
+ // The two system lenses are deliberately NOT in here by default. A team
516
+ // that installed someone else's system cannot fix its self-contradiction
517
+ // by editing this repo, and failing their build for it punishes the wrong
518
+ // person. It still prints, so a CI log carries it upstream. Anyone who
519
+ // authors their own system wants the opposite, and asks for it.
520
+ const theirs = conflictsInUse.length + frozen.length;
521
+ if (opts.strictSystem && theirs > 0) {
522
+ console.log(body(`--strict-system: ${theirs} problem(s) in the system itself. Failing.`));
523
+ process.exitCode = 1;
524
+ }
525
+ else if (theirs > 0) {
526
+ console.log(body(`${theirs} problem(s) above are in the system, not this repo - not failing.`));
527
+ console.log(body("Run with --strict-system if the system is yours."));
528
+ }
529
+ if (mine)
530
+ process.exitCode = 1;
531
+ }
515
532
  }
package/dist/index.js CHANGED
@@ -52,7 +52,8 @@ Options:
52
52
  --instruction <s> refit: extra guidance for the adaptation
53
53
  --dry refit: adapt and print, but save nothing
54
54
  --force clean: apply the changes (without it, dry run)
55
- --strict doctor: exit 1 when drift is found (for CI)
55
+ --strict doctor: exit 1 when drift is found in THIS repo (for CI)
56
+ --strict-system doctor: also exit 1 when the system itself is inconsistent
56
57
  --all doctor: list every finding, not just the loudest files
57
58
  --laws doctor: show every usage law, not just the busiest components
58
59
  --out <path> output path for the generated template (default: <pagesDir>/<file>)
@@ -126,7 +127,8 @@ async function main() {
126
127
  await doctor({
127
128
  dir,
128
129
  scopes: args,
129
- strict: flags.strict === true,
130
+ strict: flags.strict === true || flags["strict-system"] === true,
131
+ strictSystem: flags["strict-system"] === true,
130
132
  all: flags.all === true,
131
133
  laws: flags.laws === true,
132
134
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synthesisui",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "description": "Bring SynthesisUI design systems into any project - tokens, typed components, whole pages and an agent-ready CLAUDE.md manifest.",
5
5
  "type": "module",
6
6
  "bin": {