Skip to content

v3.0.0

Choose a tag to compare

@sprngr sprngr released this 18 Aug 15:14
· 1 commit to main since this release
9855334

v3.0.0 — Flattened Duck

Consolidates the rubber-duck agent architecture around a single self-contained rubber-duck agent and moves the enforcement policy out of a managed block in AGENTS.md into a portable duck-policy skill loaded at agent session start. Installers, sync wrappers, tests, and docs updated to match. Also folds in remediations from a full duck-review of the branch.

Highlights

  • Policy is now a skill. duck-policy (approval gates, safety carve-outs, Duck Ladder, style, deferred-debt markers) is portable and loadable by any agent. Rubber-duck agent body bootstraps it as its mandatory first action.
  • AGENTS.md managed block retired. Installers strip legacy blocks on upgrade with a prominent notice and a timestamped backup preserving any user content that lived inside the block. Fresh installs no longer write policy into your AGENTS.md.
  • Sync wrapper hardening. Version checks, scope-locked wrappers, portable substitution, and consistent bash/PowerShell parity.
  • Validation suite expanded with checkpoint-4 fixture, security-vuln fixture, and context-loading fixture.

Breaking changes

  • --claude-md / -ClaudeMd and --skip-agents-md / -SkipAgentsMd flags removed. CI or user aliases relying on these will fail hard. Deprecation stub deferred to a follow-up.
  • --policy host|self flag removed.
  • Legacy managed policy block in user AGENTS.md / CLAUDE.md is stripped on install. Backup written; migration is loud.
  • Sync wrapper scope is embedded at install time. User-supplied --project / --global on the wrapper now errors instead of being silently filtered (PS) or triggering installer parse errors (bash). Re-run the installer to change scope.

Migration guide

  1. Run the installer as usual.
  2. On first upgrade, watch for the Legacy managed policy block detected (3.x migration) notice. Your AGENTS.md will be backed up next to itself as AGENTS.md.bak.<timestamp> before the block is removed.
  3. If you had CI aliases using removed flags, drop them.
  4. Update any custom scripts that expected wrapper scope override to instead re-run the installer with the desired scope.

Architecture changes

  • Single self-contained rubber-duck agent (no more reliance on AGENTS.md for rules).
  • Agent body includes duck-policy snippet at build time.
  • Installer templates reorganized under src/install/scripts/ and src/install/templates/.
  • Build flow: src/agents/*dist/*; src/skills/*skills/*. Never edit generated outputs.

Installer + sync wrapper

  • New sync-latest.{sh,ps1} helper installed alongside agents. Checks for newer versions before syncing; prompts on upgrade with CHANGELOG link.
  • Bash + PowerShell installer parity tightened:
    • VERSION file format validated on both sides (^v\d+\.\d+\.\d+$)
    • Portable sync-wrapper token substitution (bash parameter expansion; no sed dependency; macOS-safe)
    • Get-SyncReplayArgs shape matches bash sync_replay_cmd (DRY dry-run + untrusted logic)
    • Doctor / doctor fail-fast when called before target resolve
    • Loud scope-collision reject in both wrappers
    • Version-check VERSION URL derives from installer URL (branch/custom raw-base aware)
  • Sync wrappers embed RUBBER_DUCK_VERSION for diagnostics.
  • Fallback wrapper templates removed; installer errors clearly if the template cannot be fetched.

Fixes bundled

  • Legacy managed-block migration UX: loud notice, backup preserves user content, no spurious backups on fresh install
  • Bash sync wrapper version comparison POSIX-compatible; incomparable pre-release strings no longer crash
  • PS host detection uses (Get-Process -Id $PID).Path (previous automatic-variable reference was inert)
  • running_piped() definition ordering fix
  • CI line-ending drift resolved for *.ps1

Full Changelog: v2.1.4...v3.0.0