Releases: tatargabor/set-core
Release list
v1.10.0 — IKP integration knowledge packs, knowledge injection pipeline
Integration Knowledge Packs (IKP) now flow end-to-end through
orchestration. A project declares its external integrations in
.ikp.yaml; the pipeline does the rest.
IKP
- Bridge module (lib/set_orch/ikp_bridge.py) wrapping the ikp package as
an optional dependency — every entry point degrades gracefully when it
is not installed. - Decomposer reads L1 (knowledge) + L2 (planning) layers and renders an
Integration Knowledge section into the planning prompt, so integration
changes get sized against real complexity ratings and pitfalls rather
than endpoint counts. Falls back to pack.yaml summaries past a 15K
token budget instead of dropping packs. - Planner assigns ikp_packs per change. Enrichment validates against
declared packs, drops undeclared ones, and matches scope text against
pack names when the planner omits the field. - Dispatcher injects L3 (implementation) layers as
.claude/rules/ikp-.md into the worktree and adds a compact
orientation section to input.md. Injection failures never fail dispatch. - Category resolver adds
integrationas a deterministic signal. - Verify gate appends L4 (testing) context — sandbox setup, mock
strategies, edge cases — to the review prompt. - Replan path carries IKP context too, so re-planned changes keep packs.
Knowledge injection
- Multi-source knowledge injection pipeline.
- Domain knowledge loading in /opsx:apply and /opsx:ff.
- Knowledge files auto-matched by scope.
Planner / dispatch
- File-based execution hints + REQ-ID coverage tracking.
- Execution hints injected into the domain-parallel merge prompt.
- Spec file read-first with rich REQ context for agents.
- config.yaml resolved from project root for spec_dir.
Gates
- spec_verify escalation skipped in soft/warn mode.
- missing-route demoted from blocking to informational.
- ISS issue ownership auto-resolves when change status is reset.
Process
- Pre-push sensitive content scan is now a required release step
(.claude/rules/release-safety.md).
v1.9.1 — Optional design pipeline, planner reuse, E2E infra evolution
25 commits since v1.9.0. Highlights:
Design pipeline now optional
has_design_pipelinedirective — projects without v0/design sources can opt out cleanly; design-fidelity gate auto-skips when no v0 source is present. (8d499a60,709011b9,ee661a8d)- Enriched design-fidelity output with per-violation breakdown. (
126df836)
Planner improvements
- Hash-based domain-plan reuse on replan — skips redundant LLM decomposition when domain content hasn't changed. (
2016eaf7) - Serial decompose as default — single-call serial decomposition with parallel as opt-in fallback; more deterministic plans. (
0b8622fa)
E2E infrastructure evolution
- Shared test infra discovery + dispatch injection + test layering — agents receive pre-built test infrastructure context (helpers, fixtures, shared setup) so they extend rather than reinvent. (
2e75a5b1) - E2E retry context enrichment — webServer log injected into retry context; no-commit retry guard prevents empty retries. (
d95eceee) - Integration-merge-conflict retries classified in DAG via
retry_context. (c45d3a71)
DAG & observability fixes
- Profile-registered gates journaled so dashboard sees them. (
32a10dc5) - DAG gate nodes synthesized from
gate_*_mswhen result unchanged. (def71a16) - Profile-registered gates surfaced in DAG attempt timeline. (
34a06deb)
Bug fixes
- REQ-ID regex now matches compound and alphanumeric identifiers (e.g.
REQ-AUTH-01). (d2c0bfc3) - Digest
--single-fileflag prevents parent directory scan. (a62e14f9) - Digest coerces
data_definitionsto str when LLM returns dict. (1dc2bb5a) - Loop requires impl files in diff before declaring openspec done (prevents premature completion). (
64da0188) - Next ESLint FlatCompat — uses
FlatCompatfor Next preset; dropscheck:i18nfrom pre-commit. (8c5c07bf) - Build-time quality gates + repositioned review learnings in web module. (
c0a3109f)
Test & docs
- set-design scaffold + runner + competitive analysis E2E test. (
3bcf12ef) - Regenerated craftbrew
design-manifest.yaml. (15729f26) - Research doc: Claude 4.7 vs 4.6 orchestration analysis. (
2bc0ddb3) - OpenSpec changes: web-i18n-single-locale-default, self-healing infra, design-fidelity-ui-primitive-sync. (
62533899,b1b0e9ec,03200def) - Added
uv.lock. (59a2688c)
v1.9.0 — Mobile project type, model-config unification, observability hardening
32 commits since v1.8.0. Highlights:
New project type
- Mobile (Capacitor) project type module —
MobileProjectTypejoins the existingWebProjectTypeplugin slot. Refined from consumer-project diagnostics post-launch. (3c74f8bf,761ebac8) - Template inheritance via
inherits:field in scaffold manifests. (a2456189)
Model configuration
- Unified
models:block in orchestration.yaml; opus-4-6 default; foundational changes routed to Opus. (8cdcbd9f) - Purged hardcoded model fallbacks across the codebase. (
db82ebb0,fd9583be) - Translates short pins to full Claude CLI ids. (
786fc27a) - Removed all hardcoded
--max-turnsbudgets — relies on the 5h Anthropic session window + per-call timeouts; the truncation budgets were silently capping legitimate multi-step work. (d0bcbf21) - Session-derived LLM rows return full model id, not family. (
e084d2ec)
Observability
/api/{project}/eventsresolver prefers the live event stream (orchestration-events.jsonl) over the narrow milestones file (orchestration-state-events.jsonl); rotation-aware fill from cycle siblings; same resolver applied toreconstruct_state_from_events. (ff859a9d)- VERIFY_GATE event schema unified — all 12 emit sites (4 verifier + 8 merger) write explicit
gateandresultkeys at the data dict top level; consumer parsing ofdata.get(\"gate\")no longer returns empty for verifier paths. (ff859a9d) - Project-level LLM calls inherit current lineage in
/llm-calls(was disappearing under__legacy__). (77da3602)
Activity timeline
- Server-side sub-phase breakdown for
implementingrows: 6-bucket operator-facing taxonomy (OpenSpec authoring, source edits, test runs, build runs, sub-agent dispatches, etc.) reconstructed from existing per-tool sub-spans. Works retroactively for all existing runs; expanded by default. (3a1e8c16,51968354)
Web dashboard
- LOG tab now wired to selected change — per-gate sub-tabs (Build/Test/E2E/Review/Smoke/Merge) actually appear; previously they were always coded but never reached because
selectedChangewas hardcoded to null. (7ed03ec9) - Full model version shown in admin UI (
opus-4-6notopus). (4a25325c)
Web gates — self-heal
- e2e testdir-drift self-heal + verifier canary lint anti-pattern checks. (
2326e055) - e2e-env-drift-guard — DATABASE_URL / schema-provider mismatch self-heals from
config.yaml. (628c7d9e,1dc25311) - Surfaces
prisma db pushstdout/stderr onintegration_pre_buildfailure. (89f65309) - e2e nav lint regex + 2 anti-pattern checks. (
0bd4fb6a) - Playwright
page.gotorequired + blank-screenshot anti-pattern lint. (b27a96b3) - design-fidelity form recognition re-export + non-blocking
/stop. (fa3bb957)
Engine reliability
- Re-gate explicitly on
stuck-with-progressinstead of falling through. (525a93dc) - Include
loop_status=stalledinnew-commitsre-gate path. (3fc7b215)
Planner
- Determinism via digest cache + force-strategy + test-bundling decompose. (
e452b785)
Architecture
- Layer-1 purity sweep + fail-loud test-bundling +
chat --model. (58c51380)
Hardening (post-run-1104)
Change.spec_coverage_resultdeclared on Layer-1 dataclass (was AttributeError on archive path). (eca8bbfd)- Supervisor short-circuits exit-127 on clean run-complete instead of misclassifying as
orchestrator_binary_missing. (eca8bbfd) - Web template Playwright
navigationTimeout15s → 30s for cold Next.js compile. (eca8bbfd) dotenvadded to nextjs scaffold devDependencies. (249c622c)
Install
- macOS:
brew install coreutilsforgtimeout. (5f8ddd17)
Documentation
- New
web-quality-gate-coverageopenspec change: audit of GUI gate coverage gaps + proposal with both full and slim scope alternatives parked for re-evaluation before implementation. (0e473b40)
v1.8.0 — v0.app design pipeline + sentinel autonomy hardening
v1.8.0 — v0.app design pipeline + sentinel autonomy hardening
186 commits since v1.7.1. The headline shift: SET now treats the design as an
external Next.js / shadcn TSX repository (v0.app-compatible) that agents integrate
rather than reconstruct, and the sentinel can now autonomously recover from most
failure classes without operator intervention.
Highlights
| Area | What changed | Why it matters |
|---|---|---|
| v0.app 100% fidelity gate | Skeleton check (routes + shared files) + JSX structural parity (component tree shape) + pixel diff at 3 viewports (1440×900 / 768×1024 / 375×667), default 1.5% threshold. Blocks merge on any drift from the v0 reference build. | The agent literally cannot ship a page that doesn't match the v0 reference. Design fidelity stops being aspirational and becomes a CI-enforced contract. |
| v0.app design pipeline | External design source (git or ZIP) → set-design-import materializes v0-export/ → manifest auto-generated → per-change design.md |
Agents mount real shadcn TSX components instead of reconstructing UI from prose. Replaces the deprecated Figma .make pipeline. |
| External spec author guide | New 2,350-line guide at docs/guide/external-spec-author-guide.md |
Lets external systems / LLM agents produce SET-ready spec packages (scaffold + design source) reproducibly. Covers contracts, GAP analysis, anti-patterns, templates. |
| Sentinel circuit breakers | Stuck-loop detection, token-runaway breaker (50M default), wall-time budget (90 min default), exponential back-off on retry exhaustion | Agents that would have burned an entire session on a deterministic bug now escalate to fix-iss after a bounded budget. |
| Lineage system | Per-lineage plan/digest retention + session boundaries; /lineages API; sidebar UI; lineage-scoped coverage |
Multi-cycle replan no longer collapses history into one stream — you can trace which REQ was originally proposed in which planning cycle. |
| fix-iss escalation pipeline | Auto-retry parent change after fix lands; recursive descendant purge on resolution; configurable max_turns; DIAGNOSED watchdog |
Issue investigations don't leave orphan worktrees behind, and the parent change automatically re-attempts once the fix-iss merges. |
| Forensics CLI | set-run-logs <run-id> + /set:forensics skill |
Post-mortem any orchestration run (event timeline, gate verdicts, retry chain, agent outputs) without spelunking through JSONL. |
| USD cost tracking | Real-money per-change cost in dashboard + state; cache_read correctly subtracted from input_tokens | Dashboards stop reporting 10× inflated cost; you can budget runs in dollars. |
v0.app 100% design fidelity gate
The headline change in v1.8: the agent's build is screenshot-diffed against
the v0.app reference at every merge, and the merge is blocked if the page
drifts. Design fidelity stops being a hope and becomes a CI gate.
Three layers, all blocking by default:
- Skeleton check — every route in
design-manifest.yamlexists in the
agent's worktree, every shared component (header/footer/layout/globals.css)
is mounted in the right place. Cheap, runs first, fails fast on missing pieces. - JSX structural parity — for each route, the agent's rendered component
tree shape is compared against the v0 reference's tree. Different node
names, different nesting, missingdata-slotattributes → fail. This catches
"looks similar" rebuilds where the agent re-wrote a<Button variant="outline">
as a plain<button className="border ...">. - Pixel diff at three viewports — Playwright screenshots both the v0
reference build and the agent build at 1440×900 / 768×1024 / 375×667
(desktop / tablet / mobile), thenpixelmatch-diffs them. Default threshold
is 1.5% of pixels with a 200-pixel floor. Anything past threshold fails.
The reference and agent builds use identical seed data from
docs/content-fixtures.yaml, so the diff measures design (not data churn).
If the gate fails:
- Diff images are written to
set/orchestration/design-fidelity/<change>/
showing exactly which pixels differ - Per-route fail summary lands in the change's retry context
- The agent re-iterates with the diff feedback in its prompt — usually
converges on the next pass without operator intervention
When the design intentionally needs to deviate (rare):
# set/orchestration/config.yaml
gates:
design-fidelity:
warn_only: true # downgrades fail → warn; logs the downgrade every runValidated on micro-web (4 routes, all passing on v1.8 reference run) and
minishop (11 routes, 0 drift).
v0.app design pipeline (the rest)
The fidelity gate is the enforcement; the pipeline below is the plumbing that makes it work. Production-validated on craftbrew, minishop, and micro-web scaffolds.
- Authoritative TSX, not prose. The design source is a real Next.js 16 / React 19 / shadcn / Tailwind v4 repo. The agent imports components from
v0-export/<scaffold>/components/rather than re-deriving layout from a markdown description. - Auto-generated route manifest.
set-design-importwalksapp/**/page.tsx, infers routes (handling(group)segments correctly), and writesdocs/design-manifest.yaml. Per-changedesign.mdfiles list the relevant TSX components for each scope. - Validator pass. The importer runs
pnpm install,pnpm build,tsc --noEmit, navigation-link integrity, shadcn primitive consistency, and JSX structural parity checks before letting orchestration start. Findings land indocs/v0-import-report.md. - Hygiene scanner.
--with-hygieneflags HU-canonical conventions, missing shell components (header/footer), duplicate globals.css, dead route components, etc. - Two delivery modes.
design_source: { type: v0-git, repo, ref }for live git references, or{ type: v0-zip, path }for offline / handoff scenarios.
The new authoring guide (docs/guide/external-spec-author-guide.md) covers everything an external system needs to produce a SET-ready package end-to-end.
Sentinel autonomy
The supervisor can now break out of failure modes that previously needed operator intervention:
- Stuck-loop circuit breaker — same iteration content N times → halt + escalate
- Token-runaway breaker — change burns >50M tokens (configurable) → halt + escalate
- Wall-time budget — change runs >90 min (configurable) → halt + escalate
- Retry-budget exponential back-off — repeat retries spaced increasingly (no thrashing)
- Auto-recovery for
failed:*states — operator raises limits → engine resumes from where it stopped, debiting old budget correctly - Integration-failed auto-recovery — merge conflict re-dispatches the agent with
done_criteria="merge"so it knows to resolve and ship - Poisoned-stall guard — bash sibling paths and stale resolutions no longer block recovery
- Halt-on-fail with prefix variants — catches
failed:e2e,failed:build,failed:integration_e2eetc. uniformly
Lineage + observability
/api/lineagesendpoint +?lineage=<id>filter on/api/data,/api/digest,/api/coverage— every per-cycle artefact is now lineage-scoped, including coverage denominators.- Per-iteration session attribution — the dashboard now shows which Claude Code session ran which iteration, with
AGENT_SESSION_DECISIONevents explaining session-resume vs fresh-start choices. - Per-gate span reconstruction — VERIFY_GATE events are now reconstructed into per-gate spans on the activity timeline (build / test / e2e / review / spec-verify / smoke each get their own bar, with retry counts).
- Implementing-span live extension — currently-running
implementingspans extend to ~now on the timeline so the UI doesn't read as "nothing tracked". - Drilldown sub-spans — clicking an implementing span pulls LLM-call / tool-call / sub-agent counts from the activity-detail JSONL.
- Web template — idempotent
tsconfig.jsonexclude patcher forv0-export*/*.bak.*(no more tsc poisoning on re-import); runtime journals gitignored.
Coverage gate hardening
(Design-fidelity is covered above in its own section — this is the test-coverage gate.)
- Stub-test detection — coverage gate now blocks vacuous-pass merges (tests with
expect(true).toBe(true)orexpect(component).toBeDefined()-only patterns) - Trivial-expect detection — flags
.toBeDefined() / .toBeTruthy()-only assertions as not-covered - Required-components mount gate — verifies the agent actually imported the shell components from
v0-export/(related to the fidelity gate's skeleton check, but runs earlier in the pipeline)
Issues + recovery
- Configurable
max_turnsfor fix-iss agents (default 8) - DIAGNOSED watchdog — fix-iss that report DIAGNOSED but don't proceed to resolve trigger a watchdog after wall-time threshold
- Corrupt-file prompt — fix-iss agents that detect a corrupt file are now prompted to resolve via overwrite + audit instead of patching
- Rollback preview warning — operators see what would be reverted before a recovery rollback
- Parent-change auto-retry — circuit-broken changes automatically re-dispatch after their fix-iss resolves
- Fix-iss descendants purge — recovery removes fix-iss children + their journals + issue records + e2e manifest entries
Documentation
The docs-rewrite-release is largely complete:
- New structure:
docs/guide/(how-to),docs/reference/(lookup),docs/learn/(deep dives),docs/examples/ - README rewritten for the post-v1.7.1 reality
- 4 learn pages + 8 guide pages + 4 reference pages
- 22 broken howitworks diagram links fixed (
diagrams/rendered/→../diagrams/rendered/) - New
docs/guide/external-spec-author-guide.md(2,351 lines) - Old prose docs archived under
docs/archive/ - CONTRIBUTING.md added
Notable bug fixes
- Cost calculation: `cache_...
v1.7.1 — Late-phase gate efficiency fixes
Validated on craftbrew-run-20260415-1225: 6/6 changes merged
6 fixes for late-phase E2E retry cycle
| Fix | What | Impact |
|---|---|---|
| FIX 1 | Ralph stopped/stuck → immediate re-gate if new commits | Eliminates 302s stall dead zone |
| FIX 2 | Resume preserves current_step=fixing context |
Agent knows it's in fix mode after recovery |
| FIX 3 | Playwright trace: retain-on-failure |
96% artifact reduction (169→6 files/attempt) |
| FIX 4 | max_verify_retries 4→8 |
Complex changes get enough retry budget |
| FIX 5 | Verify gate scoped E2E (own spec only) | 60%+ gate-time reduction (140→40 tests) |
| FIX 6 | Cross-change regression prompt in retry context | Agent knows which failures are own vs inherited |
Key metrics from validation run
- checkout-and-orders: Was stuck at retry 4/4. After fixes: passed on 1st retry (attempt 5)
- admin-reviews-subscriptions: Completed in 3 retry rounds (impl→e2e fix→security review fix)
- Scoped E2E: 40 tests in 2m37s (was 140 tests in 6m48s)
- Artifact size: ~5 MB/attempt (was ~200 MB)
Files changed
lib/set_orch/engine.py—_has_commits_since_gate()+ stopped/stuck handlinglib/set_orch/gate_runner.py—last_gate_committrackinglib/set_orch/dispatcher.py— fix context preservation on resumelib/set_orch/verifier.py— scoped E2E via_detect_own_spec_fileslib/set_orch/config.py— retry budget increasemodules/web/set_project_web/gates.py— scoped E2E + cross-change detectionmodules/web/set_project_web/templates/nextjs/— trace config + docstests/unit/test_engine_stopped_regate.py— 5 new tests
v1.6.1 — Python supervisor Phase 2 + gate verdict single source of truth
Highlights
Python Supervisor Daemon (Phase 1 + Phase 2)
- Python daemon replaces the Claude sentinel — zero LLM cost on routine polling
- 9 anomaly trigger detectors with retry budgets and global rate limit (20/hour)
- 15-min periodic canary check with structured diff and
CANARY_VERDICT: ok|note|warn|stop - Ephemeral Claude spawns per trigger (integration_failed, process_crash, terminal_state, etc.)
- Prior-attempts history summaries so each fresh Claude sees what already failed
- Hybrid path resolution (project + runtime) with lazy re-resolve for late-appearing files
supervisor_modedirective:python(default) |claude(legacy) |off
Gate Verdict — Single Source of Truth
<session_id>.verdict.jsonsidecar replaces the keyword-scan heuristic in the dashboardrun_claude_loggedauto-writes a default sidecar from the Claude exit code for every logged call- Review gate always runs the LLM classifier and takes the worse verdict (fast-path vs classifier)
- spec_verify fails closed when classifier is disabled and sentinel is missing
- Scope-aware review prompt prevents cross-change false positives ("missing middleware" on foundation)
- Scope context passed to the LLM verdict classifier for scope-boundary downgrade
Review Learnings Pipeline
- Gate injection: reviewer receives a learnings checklist filtered by change content categories
- Semantic dedup at merge time (LLM-based near-duplicate merging)
- Severity-weighted eviction (count × severity × recency) replaces naive timestamp LRU
- Few-shot classifier examples for template vs project pattern classification
Web Module Rules
- Edge Runtime rule:
bcryptjs/@prisma/clientforbidden inmiddleware.ts - No test/debug API endpoints rule (
/api/test-*,/api/seed-*) - merger
_test_script_missingreadspackage.jsondirectly instead of substring-scanning stderr
Timestamp Unification
- 23 backend files converted from UTC-only to local-with-offset (
astimezone().isoformat()) - Frontend TokenChart sort uses
Date.parseepoch comparison for mixed-format robustness
OpenSpec: add-state-archive-system change
Fully spec'd change with 9 capabilities, 76 acceptance criteria:
- change-journal, file-archive, worktree-harvest, gate-history-view (original)
- supervisor-transition-triggers, issue-merge-unblock, ralph-learnings-injection, review-severity-calibration, supervisor-permanent-errors (new from minishop validation)
Validated
- nano-run-20260411-2358: 2/2 merged, 0 retries, clean terminal_state shutdown
- minishop-run-20260412-0103: 6/6 merged, 33/33 requirements, 100% spec coverage
- Last 3 changes (admin-products, shopping-cart, checkout-orders) passed all 10 gates with 0 retries
- 191+ unit tests, no regressions
Stats
- 32 commits since v1.6.0
- ~4,800 new lines across
lib/set_orch/,modules/web/,web/,tests/,openspec/ - 111 new unit tests (gate_verdict, supervisor anomaly/history/triggers/canary/integration, final_solution)
v1.6.0 — Review gate robustness + minishop stabilization
Highlights
Review gate robustness
- Smart truncation utility — head+tail + error-pattern preservation, applied across 21 LLM prompt sites in 7 modules. No more silent file drops from review diffs.
- Review gate now runs in worktree cwd (not project root) so the agent can
Readthe changed files. - Correct Claude path mangling in
set-usagefallback (underscore → dash). _prioritize_diff_for_reviewalways includes implementation files full; deprioritized files get a stat summary if budget is tight.- Review gate timeout raised 300s → 900s.
Sentinel stability (5× token reduction)
- Explicit
DO NOT poll between background pollsinstruction in the sentinel skill. Validated on minishop0411: foundation-setup cache reads dropped from ~105M to ~24M. - Supervisor tracks
_manually_stoppedto prevent auto-restart after a user-initiated stop.
Branch detection
- Centralized
detect_default_branch()insubprocess_utils— triesorigin/HEAD→show-ref main→show-ref master. - Dispatcher, verifier, engine all use the central helper. No more hardcoded
mainreferences. - Root-commit merge-base fallback for new repos where no main branch exists yet.
Orchestration safety
monitor_looprefuses to start if state is alreadydone(prevents dispatching merged changes when sentinel restarts).- Stale process cleanup uses
dir + os.sepsuffix match to prevent prefix collision (e.g.foovsfoobar). - SIGTERM stale processes before worktree removal.
Web module templates
- Pre-scaffold
components.json,src/lib/utils.ts, shadcn deps (clsx,tailwind-merge,lucide-react, etc.) so consumer projects don't need shadcn init. - Auth middleware rule: use
getTokenfromnext-auth/jwt(edge-safe), notauth()wrapper. - Role field required on User model.
useSearchParams+ Suspense rule for Next.js 15.- Testing rule: use
waitForURLfor client-side nav assertions. - Prisma consent env var (
PRISMA_USER_CONSENT_FOR_DANGEROUS_AI_ACTION) set in E2E global setup + web profile gate env.
Web dashboard
- Auto-follow mode — checkbox in change detail log toolbar. Auto-selects the running change, switches to the latest session as new ones appear, jumps to failing gate sub-tab on
fixingstep. Persists in localStorage. - Sessions tab now aggregates from project + all change worktrees (no more filter-by-selected-change).
- Screenshots served from project/worktree paths (not hardcoded
e2e-runs). - Claude session path mangling fixed for underscored project names.
CLI + manager
set-project initnow POSTs to the manager API automatically so the project appears in the UI without a manual registration step.
Activity timeline
- Per-window drilldown aggregates for implementing spans.
- Live-extends spans for active changes.
- Hook-overhead category for spec-verify/build patterns.
Validation
End-to-end validated on minishop0411 — 6/6 changes merged via integration gates (no manual merges), 70M total cache reads across all changes (5× reduction from prior run where a single change consumed 100M+ due to sentinel polling).
Full changelog
95 commits since v1.5.0. See git log v1.5.0..v1.6.0 for the complete list.
v0.3.0 — Sessions Fix, Path Mangling, Manager Auto-Registration
v0.3.0
Fixes
- Sessions tab now shows all sessions — aggregates project-level + all change worktree sessions (previously only showed the selected change's sessions)
- Fix Claude path mangling —
_claude_manglenow replaces underscores with hyphens, matching Claude CLI behavior. Projects with_in their path were invisible to the dashboard. set-project initauto-registers with the manager API — no moresystemctl --user restart set-webneeded after registering a new project- "LLM Wait" → "LLM Work" — activity view label now correctly reflects that this is active LLM processing time
Harvest
- 3 rule adoptions from craftbrew-run-20260408 + 20260409
Full Changelog: v0.1.0-alpha...v0.3.0
v0.1.0-alpha — Early Alpha Release
v0.1.0-alpha — Early Alpha Release
Status: Early alpha. Functional for experimentation, not for production workloads.
The point of this release is to get set-core into other people's hands. It works end-to-end today — spec in, merged features out — but it has rough edges. The sentinel auto-recovers from most of them.
What works today
- Full orchestration loop: spec → digest → plan → parallel agents in git worktrees → quality gates → merge
- OpenSpec workflow: every change has a proposal, design, spec, and task list before any code is written
- Web project type (
--project-type web --template nextjs): Next.js 15 + Prisma + NextAuth v5 + Playwright + shadcn/ui - Web dashboard at
localhost:7400: real-time gate progress, activity timeline, per-change breakdown, logs, issue tracking, test screenshots - Sentinel supervisor: autonomous bug investigation, automatic change re-dispatch, orphan recovery
- Multi-change parallel execution with configurable
max_parallel - 7 integration gate types: build → test → e2e → review → rules → spec-verify, each with retry budgets
- Design pipeline:
design-brief.md+design-system.md→ per-changedesign.mdwith scope-matched visual tokens - Session resume across dispatcher retries — warm Claude cache, keeps token cost down
- Consumer project diagnostics via
set-harvest - Developer memory — hook-driven, shared across worktrees, survives sessions
Reference run: CraftBrew (12-change webshop)
| Metric | Value |
|---|---|
| Changes planned | 14 |
| Changes merged | 12/14 (86%) |
| Human interventions | 0 |
| Wall clock time | ~9h 25m |
| Gate retries (self-healed) | 30+ |
| Playwright E2E tests | 100+ across changes |
| Total tokens | 926M (921M cached) |
Quick start
git clone https://github.com/tatargabor/set-core.git
cd set-core && ./install.shSee docs/guide/quick-start.md for the full walkthrough.
Known issues
See docs/release/alpha-release.md for the full list of known issues, workarounds, and what's not yet implemented. Key items:
- ~15% change failure rate on large plans (12+ changes) — improving with each template harvest
- Parallel changes can miss cross-cutting integration points (e.g., navigation links between pages built by different agents)
systemctl --user restart set-webkills running agent loops (cgroup issue) — don't restart mid-run
License
MIT — See LICENSE for details.
Website: setcode.dev · FAQ: setcode.dev/faq.html
v1.5.1 — shadcn/ui Enforcement, AC Coverage Fixes, Updated Docs
v1.5.1 — shadcn/ui Enforcement, AC Coverage Fixes, Updated Docs
Patch release with shadcn/ui enforcement fixes, AC-ID coverage binding bug fixes from run38 analysis, fresh screenshots, and the Hungarian presentation.
Fixes
- shadcn/ui not enforced — 3 root causes fixed: planner now enforces shadcn when
components.jsonpresent, deploy-shadcn.sh path resolution usesSCRIPT_DIR, conventions added to craftbrew and minishop scaffolds - AC-ID coverage binding — 4 bugs fixed from run38 analysis (scenario tag matching, REQ-ID binding, test case classification)
- Context tab screenshot — moved to optional list (requires LLM call data)
Features
- shadcn overlay for all scaffolds — shared deploy helper, opt-in via flag
- Design bridge in profile system — extracted from core into
ProjectTypeABC
Docs
- Hungarian presentation (
docs/presentation/) — Marp-based, 6 pillars walkthrough, flow diagrams, MiniShop E2E demo, lessons learned, roadmap. PDF + PPTX exports included. - Refreshed screenshots — 15 dashboard tabs + 11 CLI commands recaptured from micro-web-run38 (TUI redesign, LLM call log, token Phase column visible)
- Presentation updates — 6 pillars framework (SPECIFY, DECOMPOSE, EXECUTE, SUPERVISE, VERIFY, LEARN), state machine diagram, gradual escalation flow, "works everywhere" section (greenfield/brownfield/isolated unit)
Stats
- 8 commits since v1.5.0
- All screenshots refreshed (no gitchen references)
- Presentation: ~30 slides, PDF + PPTX
Full Changelog: v1.5.0...v1.5.1