Skip to content

ginee v0.18.0

Choose a tag to compare

@github-actions github-actions released this 25 May 08:25
· 36 commits to main since this release
f06c4f5

Highlights

  • Lighter install.agents/ginee/ drops the shipped migration directory (~228 KB / 36 files); pre-existing installs clean up on first update.
  • Per-item migration approval/ginee-update now surfaces each migration with a yes / skip / all-yes / all-skip prompt before applying anything.
  • Always up-to-date — migrations stream from upstream at update time; no stale local copies to chase, no version skew.
  • Cleaner framework rules — ginee files cite their own specs by location; the LLM no longer follows opaque decision-number breadcrumbs.
  • Offline-safe — migration fetch failure surfaces inline with the upstream URL; never blocks the update; framework files already landed.
  • Warm reuse now actually works on Claude — pre-D43 the 15–50 k token / task savings were silently never realised; the env-var prereq is documented and skill-runner owns the plumbing on Claude.
  • Set the env var once and restartCLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 in .claude/settings.json unlocks SendMessage; without it Claude falls back to fresh-spawn.
  • Lower bills on every Claude task — kernel + role-details + process + index reads survive across dispatches in one task; only first dispatch pays full reload.
  • Per-class doc-size caps — ADR ≤ 4 KB · CR ≤ 6 KB · UI ≤ 4 KB by default; raise / lower / opt out per class in local/framework.config.yaml.
  • ai-engineer dispatched automatically on bloat — breach the cap, dispatch the optimizer, ship with the trailer bypass — no more silent doc-class drift.
  • Forward-only — existing oversized docs surface on next touch; no retroactive sweep.

Adopter migration

Nothing to do. On your next /ginee-update, the installer drops <fw>/core/MIGRATIONS/ mechanically. Subsequent updates fetch migrations from upstream and prompt you to apply each one.

Want to browse migrations as files? They live at github.com/kostiantyn-matsebora/ginee/tree/main/migrations/ (or the equivalent under your github.framework-repo if you've set it).

Filename change. Migration files dropped their D<N>- prefix — they're now named by content slug (installer-fetch-on-update.md, model-tier.md, …). If you bookmarked old paths, the github redirect won't help; use the tree listing to find what you need.

Feature What you'll notice
Prune <fw>/core/MIGRATIONS/ removed on next install or update.
Per-item gate /ginee-update prompts before applying each migration. skip always honored.
Offline behaviour Migration fetch failure surfaces inline with the upstream URL; update doesn't block.
Runtime cleanup Framework files (core/, adapters/, extras/) no longer cite D<N> IDs internally. Adopter-facing docs + release notes keep design-history references.

Per-class doc-size caps — D44

Nothing to do if you don't track ADRs · CRs · UI docs. Defaults apply silently to absent class directories; no breach can fire.

To enable enforcement, set the directory keys + (optionally) override caps in local/framework.config.yaml:

adr-directory: docs/adr/
cr-directory: docs/cr/
ui-directory: docs/ui/          # new key

# Optional — override framework defaults (ADR 4096 / CR 6144 / UI 4096):
doc-size-caps:
  adr:
    cap-bytes: 6144              # raise
  # ui: disabled                 # or opt out for a class

The existing context-economy gate (Claude Code hook · git hooks · CI workflow) picks up the per-class check automatically. Breach without Optimized-By: ai-engineer trailer fails the gate — same bypass machinery as the existing whole-PR threshold check.

Existing oversized docs — forward-only. Breach surfaces on the next touch; no retroactive sweep.

Warm reuse on Claude — D43

One-time setup. Set CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 and restart Claude Code:

// .claude/settings.json (project) or ~/.claude/settings.json (global)
{
  "env": { "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" }
}

That unlocks the SendMessage tool. Without it warm reuse silently falls back to fresh-spawn on every dispatch — which is what was happening pre-D43, even with warm-reuse.enabled: true.

Don't want / can't set the env var? Add warm-reuse.enabled: false to local/framework.config.yaml and accept fresh-spawn cost.

What changed under the hood. Registry ownership on Claude moved from team-lead (impossible — team-lead is a subagent without SendMessage) to the skill-runner (main thread; durable across the task). Team-lead still decides every warm-vs-fresh on every dispatch; only the plumbing moved. Full architecture: adapters/claude/install.md § Warm specialist reuse.

Per-role context cost

Modest growth across cardinals from the D43 core/process/dispatch.md surface-boundary additions + the D44 cross-ref row in core/process.md § Documentation style. team-lead +2.3% bytes (62,232 → 63,694; ~30% headroom on the 90 KB ceiling); other cardinals +0.9–2.7%, all > 38% headroom. No ceiling breach; no rebudget. Full snapshot: reference/CONTEXT_COSTS.html.

Full specs:

Full Changelog: v0.17.0...v0.18.0