mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-21 02:26:31 +03:00
Carved out of #371, minus progressive publication. Everything here works against real project source the way main's Live already does: the agent writes variants into the file the browser loaded, HMR fires, Accept promotes and carbonizes. Nothing is staged anywhere. Poll lanes. Events now carry an explicit priority: accept/discard/exit ahead of manual_edit_apply/steer/carbonize_cleanup ahead of generate. A long generate can no longer sit in front of the Accept the user just clicked. leaseEvent claims its lease before awaiting, so a slow prepare cannot hand the same event to two pollers. Source locks. A per-file mutex around every accept and discard path, keyed on a digest of the absolute path. Staleness is decided by owner-pid liveness rather than mtime, so a wedged lock clears when its owner dies instead of after an arbitrary timeout, and a slow-but-live accept is never stolen from. Only the owning process can release a lock. Preflight scaffolding. The server runs live-wrap (or live-insert) before the poll returns and hands the result back as event.scaffold. That walk is measured at ~7.6s on a large repo; moving it off the agent's critical path removes a deterministic tool round trip without touching the generated design. Falls back cleanly to the agent running the helper itself. Vue previews. previewMode: "vue-component" for Nuxt/Vue targets, matching the existing Svelte component path: variants compile as real SFCs from a dev-only directory so the route is never rewritten during generation, and Vite mounts them without invalidating page state. Accept is the only route write. Includes a Vue attr tokenizer that normalizes shorthand bindings (@x, :x, #x) to their canonical forms. Accept hardening. Every thrown failure now returns mode: 'error' rather than an ambiguous unhandled result, so a real failure is never classified as a deliberate manual handoff and silently dropped. The marker search skips node_modules/.git/dist/build/.impeccable. Shared CLI arg parsing extracted to scripts/lib/cli-args.mjs. Assisted-by: Claude Code
85 lines
2.4 KiB
JSON
85 lines
2.4 KiB
JSON
{
|
|
"detector": {
|
|
"ignoreRules": [],
|
|
"ignoreFiles": [
|
|
"tests/fixtures/**",
|
|
"tests/detect-antipatterns.test.js",
|
|
"site/pages/slop/**",
|
|
"site/data/anti-patterns-catalog.js",
|
|
"site/pages/shader-lab/**",
|
|
"site/scripts/demos/commands/**",
|
|
"site/styles/skill-demos.css",
|
|
"site/styles/slop-kinpaku.css"
|
|
],
|
|
"ignoreValues": [
|
|
{
|
|
"rule": "bounce-easing",
|
|
"value": "bounce-ball",
|
|
"createdAt": "2026-06-15T04:15:03.164Z",
|
|
"reason": "User confirmed ball bounce animation is intentional"
|
|
},
|
|
{
|
|
"rule": "design-system-color",
|
|
"value": "*",
|
|
"files": [
|
|
"site/styles/home-rebuild.css"
|
|
],
|
|
"createdAt": "2026-06-15T23:37:38.170Z",
|
|
"reason": "AURELIA hotel picker is intentionally a foreign boutique-hotel palette inside the live picker demo"
|
|
},
|
|
{
|
|
"rule": "design-system-color",
|
|
"value": "*",
|
|
"files": [
|
|
"site/styles/main.css"
|
|
],
|
|
"createdAt": "2026-06-15T23:37:38.170Z",
|
|
"reason": "Generic AI slop card intentionally uses off-system colors for the before-state comparison"
|
|
},
|
|
{
|
|
"rule": "design-system-color",
|
|
"value": "*",
|
|
"files": [
|
|
"site/styles/home-kinpaku.css"
|
|
],
|
|
"createdAt": "2026-06-15T23:37:38.170Z",
|
|
"reason": "Homepage before-state slop demo intentionally uses off-system purple/magenta colors"
|
|
},
|
|
{
|
|
"rule": "design-system-color",
|
|
"value": "*",
|
|
"files": [
|
|
"site/styles/design-system.css"
|
|
],
|
|
"createdAt": "2026-06-15T23:37:38.170Z",
|
|
"reason": "Design-system comparison intentionally shows an off-system before-state"
|
|
},
|
|
{
|
|
"rule": "design-system-color",
|
|
"value": "*",
|
|
"files": [
|
|
"site/styles/workflow.css"
|
|
],
|
|
"createdAt": "2026-06-15T23:37:38.170Z",
|
|
"reason": "Generic slop card intentionally uses off-system purple colors for the before-state comparison"
|
|
},
|
|
{
|
|
"rule": "design-system-font",
|
|
"value": "*",
|
|
"files": [
|
|
"site/styles/workflow.css"
|
|
],
|
|
"createdAt": "2026-06-15T23:37:38.170Z",
|
|
"reason": "Generic slop card intentionally uses Inter for the before-state comparison"
|
|
}
|
|
]
|
|
},
|
|
"hook": {
|
|
"enabled": true,
|
|
"limits": {
|
|
"maxFindings": 5,
|
|
"maxChars": 8000
|
|
}
|
|
}
|
|
}
|