Commit Graph
176 Commits
Author SHA1 Message Date
github-actions[bot] 839dd10079 Sync generated provider output 2026-07-27 17:07:25 +00:00
Paul BakausandGitHub 5e572c8b8a Merge pull request #423 from pbakaus/hook-guard-unsupported-node
Stop the design hook erroring on a node too old for ESM
2026-07-26 18:12:52 -07:00
github-actions[bot] 7380ecb153 Sync generated provider output 2026-07-27 01:09:00 +00:00
fd9076f4f0 Enforce the engines floor in the probe instead of a capability check
The probe asked whether node could load ESM, while the notice promised a
Node 22 floor and package.json engines declares >=22.12.0. Reviewers kept
flagging the gap, and they were right to: a 14.18-to-21 runtime passed the
probe on the strength of one import while the hook and its detector bundle
are only ever exercised on the engines floor, so "can load our code" was a
weaker claim than the one being made for it.

Check the floor directly: parseInt(process.versions.node) >= 22, in
ES5-only syntax that parses on any node old enough to fail it. Probe and
notice now derive from one NODE_MAJOR_FLOOR constant, so they cannot
disagree, and the archaeology about node: scheme support and pre-15
unhandled-rejection semantics goes with the import it explained.

Add the missing contract test: every generated hook command carries the
probe, the notice appears exactly where a harness can render it (Claude
and Codex, project and plugin), and the expected floor is read from
package.json engines rather than repeated by hand.

Verified against a fake pre-22 node, no node, and a real node: one notice
then the marker holds it silent, exit 0 in every failure shape, and the
hook's own exit code still passes through on a supported runtime.

Co-Authored-By: Claude Fable 5 (via Cursor) <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-26 22:17:19 +05:00
Abdul WahabandClaude Opus 5 86cdf528c5 Probe the import the hook actually uses, and fail closed on rejection
Greptile flagged that the probe does not enforce the Node 22 engines floor.
Two parts to that, and they land differently.

The real defect is narrower and worse than stated: the hook closure imports
`node:fs`, `node:os`, `node:path` and `node:url`, and the `node:` scheme needs
14.18, so a bare `import('fs')` probe passed on 12 and 13 and those runtimes
then died on the real import, which is the banner this branch exists to remove.
Probing `node:fs` closes that. The added `.catch(()=>process.exit(1))` is load
bearing rather than tidiness: before Node 15 an unhandled rejection is only a
warning and the process still exits 0, so a rejected probe would have read as a
pass on exactly the versions in question.

Not enforcing 22 is deliberate and stays. The probe asks whether this runtime
can load our code, not whether it is a supported one, so a 14.18-to-21 runtime
that works today keeps working rather than being silently switched off. The
notice names 22 because that is the version worth installing, and it only ever
reaches someone whose runtime already failed the probe, so no user is shown a
threshold that contradicts what ran.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 21:20:26 +05:00
Abdul WahabandClaude Opus 5 0db59088ff Stop the design hook erroring on a node too old for ESM
The hook command invokes bare `node`. When that node predates ESM,
`hook.mjs` dies while it is still being parsed, before the script's own
always-exit-0 contract can run, so node exits 1 and the harness reports a
hook error on every Stop and every edit.

Probe the runtime in the command string before invoking the hook, and
route the Claude plugin manifest through the guard that already covered
the project-local manifests. On probe failure the command exits 0 and
emits a one-time `systemMessage` naming the two fixes available to the
user, since nothing written in ESM can report this condition.

Fixes #410.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 12:46:11 +05:00
github-actions[bot] d272b9bd5d Sync generated provider output 2026-07-26 02:16:50 +00:00
github-actions[bot] 108b13f346 Sync generated provider output 2026-07-26 01:42:20 +00:00
github-actions[bot] 5d77ba75fe Sync generated provider output 2026-07-26 01:39:58 +00:00
github-actions[bot] 43751330a6 Sync generated provider output 2026-07-26 01:39:10 +00:00
github-actions[bot] 5a39675d3a Sync generated provider output 2026-07-26 01:38:30 +00:00
github-actions[bot] 7783f2a622 Sync generated provider output 2026-07-26 01:36:41 +00:00
github-actions[bot] af78b1e512 Sync generated provider output 2026-07-25 01:43:39 +00:00
github-actions[bot] af2a14c12c Sync generated provider output 2026-07-25 00:19:34 +00:00
github-actions[bot] e3f732e99c Sync generated provider output 2026-07-25 00:10:01 +00:00
github-actions[bot] 94dc732d30 Sync generated provider output 2026-07-24 23:17:52 +00:00
github-actions[bot] 450d5659c7 Sync generated provider output 2026-07-24 22:34:20 +00:00
github-actions[bot] 08676d5757 Sync generated provider output 2026-07-23 18:11:31 +00:00
Paul BakausandClaude Fable 5 fc2e694afc Release prep: skill v4.0.2
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 10:35:22 -07:00
github-actions[bot] bdaa5a4eb9 Sync generated provider output 2026-07-23 05:50:13 +00:00
github-actions[bot] fc3dc501a6 Sync generated provider output 2026-07-23 04:59:57 +00:00
github-actions[bot] 762ffd08b2 Sync generated provider output 2026-07-23 04:50:46 +00:00
github-actions[bot] 698a743958 Sync generated provider output 2026-07-23 00:34:48 +00:00
github-actions[bot] 9b7f7ffbba Sync generated provider output 2026-07-22 20:14:42 +00:00
Paul BakausandClaude Fable 5 eda81f0937 Release prep: skill v4.0.1
Bump plugin + marketplace to 4.0.1 and sync the regenerated provider
output: the guarded hook commands from issue #399 (a missing hook file
exits 0 instead of crashing every turn of a user-level install), the
canon standing exit, the visualize flow, the two shipped subagents, and
the interactive-spine fixes from today's live testing. Detector count
validates at 59 with undersized-ui-text.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 12:23:07 -07:00
github-actions[bot] 386f9883cf Sync generated provider output 2026-07-22 07:44:15 +00:00
github-actions[bot] 3f72e761db Sync generated provider output 2026-07-22 07:39:46 +00:00
github-actions[bot] c2fbc66bdd Sync generated provider output 2026-07-22 07:38:39 +00:00
github-actions[bot] 043a157349 Sync generated provider output 2026-07-22 07:29:05 +00:00
github-actions[bot] 396c18bdf9 Sync generated provider output 2026-07-22 07:07:34 +00:00
github-actions[bot] a96445b973 Sync generated provider output 2026-07-22 07:00:38 +00:00
Paul BakausandClaude Fable 5 311c30f11f Release prep: skill v4.0.0, CLI v3.3.0
Bump skill to 4.0.0 (plugin.json + marketplace.json) and the CLI to
3.3.0 (package.json), then run build:release to regenerate the plugin
subtree and all provider harness output to the new versions.

Skill 4.0.0 ships external-dice direction assignment, the reviewed
world catalog dealt through the roll API with rendered quality-bar
cards, the in-browser serve-question decision page, visualize-before-
build, the rebuilt new-work flow, and the 58-rule detector under hook
enforcement. CLI 3.3.0 grows the deterministic detector to 58 rules
and adds config-declared context roots, per-file rule scoping, and
--target resolution for nested products.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 18:53:45 -07:00
Paul BakausandClaude d7d10277d1 Merge main into oneshot-v4, keeping the service layer split out
main still carries the site, so every `site/` path resolves to deleted.
`tests/docs-integrity.test.js` goes with it (it imports the site's demo
renderer), and `package.json` keeps main's `@anthropic-ai/sdk` bump while
dropping `@google/genai` and `@paper-design/shaders`, which nothing in the
product layer imports.

Real code merges:

- hook-lib: main's #391 cache fix (sync the remembered set to the live
  scan so fixed findings stop being named and a reintroduced one fires
  again) now runs on the immediate tier rather than the whole filtered
  set. Remembering a deferred finding the per-edit pass never reported
  would let the Stop deep pass dedupe it away. main's `maxFileBytes`
  ceiling, `cleanAcked` once-per-file ack, and template-extensions
  re-export all land alongside the tiering work.
- live-browser: main's `hasParams` gate on the Tune badge, keeping this
  branch's `C.ink` badge text so it stays legible on kinpaku gold.
- detect-text: both the block-level codex-grid-background scan and main's
  inset-stripe CSS check.
- test-suites: union of both trigger sets and file lists, minus the
  site-only entries (`shiki-theme`, `docs-integrity`).
- Two hook tests moved off deferred-tier rules (`overused-font`,
  `side-tab`) onto immediate-tier ones. They assert cache bookkeeping,
  which the per-edit pass only reaches for the immediate tier.

Also drops the site waivers from `.impeccable/config.json` and stops
`build:browser` recreating a stray `site/` tree just to write a bundle
the other repo builds itself.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-21 01:45:42 -07:00
github-actions[bot] 4d849eb75f Sync generated provider output 2026-07-21 01:45:13 +00:00
github-actions[bot] b906b41462 Sync generated provider output 2026-07-20 17:50:07 +00:00
github-actions[bot] 0a1e1f5ee3 Sync generated provider output 2026-07-20 03:41:00 +00:00
github-actions[bot] 1d68486915 Sync generated provider output 2026-07-20 03:40:22 +00:00
github-actions[bot] 381e159040 Sync generated provider output 2026-07-20 01:43:18 +00:00
github-actions[bot] e4ab5e24bd Sync generated provider output 2026-07-18 23:06:33 +00:00
Paul Bakaus 2b1f36c43e Add concept world catalog and review workflow
AI-assisted: prepared by Codex at Paul's request.
2026-07-18 14:12:05 -07:00
github-actions[bot] 8967edc988 Sync generated provider output 2026-07-17 19:13:44 +00:00
Paul Bakaus bbed6eef08 Refresh the Impeccable product experience
Rework the landing page proof, steering demo, feature grid, slop catalog, detector coverage, theming, Live workflow, and responsive behavior.\n\nAI-assisted implementation by OpenAI Codex.
2026-07-15 23:29:47 -07:00
Paul Bakaus 8682c85c57 Fix Live side-tab validation gaps
Scan Astro style blocks for inset-shadow stripes, recognize semantically chromatic external tokens without flagging neutral unknowns, and make the polling generator run advisory detector checks before publication. Sync the affected detector bundles and add a paired regression fixture.\n\nAI-assisted: Codex analyzed the failed Live task, implemented the detector and generator changes, and ran the validation suites under maintainer direction.
2026-07-15 16:23:49 -07:00
Paul Bakaus 0ac1ca6867 Restore polling as the primary Live architecture
Default Codex back to one-shot foreground polling, delegate generation to the existing low-effort agent, and keep the app-server worker available only through an explicit experimental opt-in. Preserve progressive publication and the shared safety and framework optimizations.

Prepared with Codex assistance under maintainer direction.
2026-07-15 16:16:08 -07:00
Paul Bakaus ead6ddabe5 Preserve experimental Live app-server workstream
Snapshot the current app-server implementation, shared Live optimizations, generated harness output, and in-progress site work before restoring polling as the primary runtime path.

Prepared with Codex assistance under maintainer direction.
2026-07-15 16:07:34 -07:00
Paul BakausandClaude Fable 5 5635b1d484 the direction becomes a visible contract in the artifact
Transcript evidence (a12 01-observability): plans commit and deliver on
the axes with contract-strength language (palette, type, even theme
inversion) and stay default on the axis without one (layout gets a
single conventional breath). And plans living in invisible reasoning
means nothing can hold a build to its intent. The direction is now
written as a comment block at the top of the artifact answering: the
concept, the hour-later memory, why not the modal competitor page, the
signature, the first viewport's move. Critics and evals can score
delivery-against-contract; a mood is not an answer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 18:38:16 -07:00
Paul BakausandClaude Fable 5 ff67ad359e layout gets the source-exclusivity construction that fixed palettes
Paul's a10 review: palettes are refreshed (the palette-exclusivity
line's fingerprint) while layouts stay boring in every version. Same
cure, same shape: the layout has exactly two legitimate sources, the
concept or the content's own structure; the category's habitual
skeleton is neither.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 17:40:54 -07:00
Paul BakausandClaude Fable 5 073e17e180 three-directions sketch + the scene decides the theme
Paul's a11 review: heroes are safe SaaS viewports, everything
predictable; mobile Operate ships dark despite a brief that specifies
outdoors-in-motion use. Decide-then-build now opens with three
one-line directions differing in concept (the instinctive pick that
any studio would reach for is the default wearing your name); the
Operate mode adds: the usage scene is part of the spec, the theme
follows the scene, not the category's habit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 17:36:45 -07:00
Paul BakausandClaude Fable 5 cfbac54440 deprecate craft: the build flow lives in new-work.md, checkpoints are a mode
Per Paul: rather than gating a second file, fold what made the craft
path superior into the file both models already read 21/21 through the
gate. new-work.md gains 'Decide, then build' (direction as one
confirmable paragraph; attended pauses, unattended records-and-goes;
codex.md mock flow when image generation exists) and 'Finish like a
studio' (inspect, honest critique, patch, detector). craft becomes a
deprecated alias like teach: invoking it forces attended checkpoints,
nothing else differs; the reference is a redirect stub. codex.md
retargeted. Existing-world feature builds remain governed by the core
floor (unmeasured path, noted in the plan doc).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 17:08:02 -07:00
Paul BakausandClaude Fable 5 139d69f2b7 bare build requests follow the craft orchestration; brief-coverage joins the floor
Invocation A/B on Fable (a9 craft-path vs a9-direct plain): the plain
path scored 38% vs the competitor against the craft path's 50%, and
brief fidelity collapsed to 14% vs bare — the direct path drops asked-
for features that craft's direction step and engineering bar preserve.
Routing now sends any build request through the craft orchestration
unprompted (its gates pause only when a user can respond), and the
craft floor gains a brief-coverage recheck: every requirement the brief
names must exist on the page.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 21:49:05 -07:00