Commit Graph
288 Commits
Author SHA1 Message Date
Paul BakausandClaude Fable 5 68b1129634 Release bumps: skill 4.0.3, CLI 3.4.0, extension 1.3.0, with synced output
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 19:17:09 -07:00
github-actions[bot] d3c7b05a3e Sync generated provider output 2026-07-28 01:56:22 +00:00
github-actions[bot] 806a48aef2 Sync generated provider output 2026-07-28 01:52:13 +00:00
github-actions[bot] 270f177d1d Sync generated provider output 2026-07-28 01:19:54 +00:00
github-actions[bot] f59c5223a4 Sync generated provider output 2026-07-28 01:13:37 +00:00
github-actions[bot] 69bf1e9523 Sync generated provider output 2026-07-28 01:11:27 +00:00
github-actions[bot] c3fe6d8064 Sync generated provider output 2026-07-28 01:06:14 +00:00
github-actions[bot] aef8cbac34 Sync generated provider output 2026-07-28 00:49:56 +00:00
github-actions[bot] 149d71a772 Sync generated provider output 2026-07-28 00:15:34 +00:00
github-actions[bot] f5827256d0 Sync generated provider output 2026-07-28 00:11:12 +00:00
github-actions[bot] a07e4ed787 Sync generated provider output 2026-07-28 00:03:34 +00:00
github-actions[bot] 5bec5408e5 Sync generated provider output 2026-07-27 22:52:08 +00:00
github-actions[bot] d7d07cb0d6 Sync generated provider output 2026-07-27 22:14:03 +00:00
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
Paul BakausandGitHub 46e759b4db Merge pull request #420 from pbakaus/sync-output-push-retry
Sync workflow: retry the generated-output push when main advances mid-sync
2026-07-26 18:10:00 -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 0c19098754 Guard the remaining harness manifests against a dead node runtime
Bugbot caught the Codex plugin builder still invoking node directly, and the
same reasoning covers GitHub Copilot and Grok Build: all three shipped the
exact failure this branch exists to stop, and sat visibly inconsistent with
their guarded siblings.

Route them through guardedNode with no notice, matching Codex and Cursor.
GitHub gains a second property from it: outside a git repository
`$(git rev-parse --show-toplevel)` expands to nothing, so the old command
handed node a path that could not exist and failed the turn. The file test
now short-circuits that to exit 0.

Every builder carries the probe; only the two Claude manifests carry the
notice, which is the only harness whose response shape is confirmed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 20:58:49 +05:00
Paul BakausandClaude Code 166ec9a51e Make the job summary reflect whether a sync commit actually pushed
Both bots caught the same false report: the summarize step ran off the
initial drift flag, so the no-drift-after-rebuild exit still claimed a
commit landed on main. The commit step now records pushed=true/false in
its step output and the summary reads it.

Prepared with AI assistance (Claude Code), directed by @pbakaus.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-07-25 19:53:39 -07:00
Paul BakausandClaude Code bea601ac76 Skip the pointless final-attempt rebuild; stop misattributing push failures
Copilot's two review points: the fifth attempt performed a full
reset + install + rebuild + 25s backoff that nothing would ever consume
before the job failed, and the retry message blamed "main advanced"
when the combined condition also fails on push errors (network, auth).
The loop now breaks before recovery on the final attempt, and both the
retry and terminal messages name the two possible causes.

Prepared with AI assistance (Claude Code), directed by @pbakaus.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-07-25 19:43:03 -07:00
Paul BakausandClaude Code dfd7f9636d Retry the generated-output push when main advances mid-sync
The sync workflow built once from the checked-out main and aborted when
a human commit landed during the ~30s build window (about 10% of runs
per the evidence in issue #388), leaving generated provider output
stale until the next unrelated push re-triggered it.

The commit step now loops up to five times: on a lost race it resets
hard to the fresh origin/main (source included), re-installs and
rebuilds, and pushes again with linear backoff. Every attempt therefore
builds from the main it will land on, which is the invariant the old
abort guard protected; the merge-base check stays inside the loop as
the pre-push verification. When the rebuilt output shows no drift (the
racing commit was another sync, or the new source produces identical
output) the step exits cleanly instead of committing an empty sync.

Validated by yaml-lint, bash -n, and a local three-repo simulation
(bare origin + worker + racer) confirming the lost race rebuilds
against the racer's source and lands matching output on attempt two.

Retry design proposed by @mktdgtbrz in #388; implemented from the
description with the no-drift early exit added.

Prepared with AI assistance (Claude Code), directed by @pbakaus.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-07-25 19:37:01 -07: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 Bakaus 06d21dea7d Add first-class Grok Build harness support
Emit .grok skills, agents, and PostToolUse/Stop hooks; wire the CLI
installer and downloads; fix the plugin install path to #plugin; and
document Grok in HARNESSES.md and README.

AI assistance: written with Grok Build.
2026-07-21 18:02:58 -07:00