Skip to content

Releases: memorysaver/agentic-engineering-patterns

v2.1.0 — /aep-model object-first design stage (OOUX/ORCA)

16 Jun 10:23

Choose a tag to compare

Add an object-first design stage/aep-model — that turns the verb-first
story map into a noun-first Object Map (OOUX/ORCA) before UI is built, so build
agents stop inventing one-step-one-screen task-wizard UIs. The structural UI plan
(objects, attributes, relationships, CTAs, screens) is auto-drafted from artifacts
AEP already produces, human-approved at a short gate, then governs build — leaving
only taste (look/voice/journey) to /aep-calibrate. Background and the verb-first
vs noun-first analysis: docs/research/ooux-object-modeling.md.

Added

  • /aep-model skill (product-context): runs ORCA (Objects → Relationships →
    Calls-to-action → Attributes → screens) to draft an Object Map, takes a short
    human review gate (object boundaries, primary anchor, task-flow exceptions), and
    writes the approved noun-first blueprint. Sits between /aep-map and
    /aep-dispatch for UI-facing products. Registered in
    marketplace.json product-context plugin.
  • Object Map artifacts + schemas: product/object-model.yaml (cross-capability
    object ontology) and product/maps/<capability>/object-map.yaml (capability-scoped
    ORCA/IA projection), via _shared/templates/object-model-schema.yaml and
    object-map-schema.yaml. Object-first is the default; task-oriented flows are an
    opt-in escape hatch recorded with a reason.
  • ORCA reference (product-context/model/references/orca-process.md):
    round-by-round derivation from AEP inputs + the object-first/task-oriented decision
    framework and the completeness checks.
  • Glossary terms: Object Model, Object Map, ORCA, Call-to-Action (CTA), Nested
    Object Matrix, Object-First vs Task-Oriented.
  • Research note docs/research/ooux-object-modeling.md and a Research category
    in docs/README.md.

Changed

  • Schema (product-context-schema.yaml): adds stories[].object_model_refs,
    stories[].capability, architecture.modules[].kind, and the object-model
    quality dimension. Object-map approvals are tracked as thin calibration.history
    references — the artifact bodies stay under product/, not inlined into
    product-context.yaml.
  • /aep-envision: declares the object-model structural gate by default for
    UI-facing products.
  • /aep-map: auto-drafts Object Maps after decomposition; sets module.kind +
    story.capability; flips an approved map to stale on re-decompose; routes Next
    Step to /aep-model.
  • /aep-dispatch: injects the minimal Object Map slice into a story's context
    package and refuses UI-facing stories without an approved (non-stale) map.
  • /aep-launch: aborts a UI-facing story when no approved Object Map covers it.
  • /aep-build: UI implementation obeys the injected Object Map slice (object structure and CTA grammar; taste still from calibration).
  • /aep-validate: Mode A gains Object Map completeness checks (coverage, object
    homes, anchors, task-flow justification, ref resolution).

All additions are backward-compatible — the object-model path only engages for
UI-facing products that opt in.

v2.0.1 — operationalize dogfood → reflect → story

16 Jun 04:45

Choose a tag to compare

[2.0.1] - 2026-06-16

Operationalize the dogfood → reflect classifier → story link so the G6
self-feeding loop fires for every dogfood trigger — not just the autopilot
post-merge guard. Previously "feed the report to the /aep-reflect classifier"
was prose-only: no adapter parsed the unified markdown report into the classifier's
normalized record, so a standalone / ad-hoc dogfood (and even the guard path) left
findings on disk with no auto-filing. A dogfood that surfaced real bugs would stop
and wait for a human to hand-author stories.

Added

  • dogfood_report source adapter (product-context/_shared/references/telemetry-ingestion.md):
    parses each ## finding in .dev-workflow/dogfood-*.md (unified
    severity/category/repro format) into the normalized observation record the
    /aep-reflect Step 2 classifier consumes. Maps Severity → priority, Category →
    suggested_class hint, and assigns a deterministic
    external_id = dogfood:<report>:<hash> so re-running the same dogfood never
    duplicates stories. Self-describing file glob — not gated by coverage_check.
  • dogfood_report watch source (/aep-watch): a standalone, local, or
    post-deploy dogfood report is now ingested headlessly — classified, deduped, and
    (under full_auto / watch.auto_create) auto-filed as a bug/refinement story
    that autopilot dispatches on its next tick. Calibration / discovery /
    opportunity-shift / process findings still surface to a human.

Changed

  • dogfood-validation.md "On issue" — replaced the prose assertion with the
    concrete adapter + watch ingestion path, and made the report-file path an
    explicit contract: findings left only in chat are a dead end.
  • /aep-reflect Step 1 — adds .dev-workflow/dogfood-*.md to the gathered
    feedback sources (was omitted), normalized via the same adapter /aep-watch uses.
  • /aep-build Phase 6 — write the dogfood report file even when findings are
    clean, since that path is the ingestion contract.

v2.0.0 — Autonomy Loop

15 Jun 23:43
071f98c

Choose a tag to compare

The autonomy loop release. Closes the loop-engineering gaps identified in
docs/research/loop-engineering-autonomy-gap.md (G2–G7) and adds a full_auto
master switch. Every new capability defaults to human-in-the-loop — autonomy
is opt-in via topology.routing flags.

Added

  • /aep-watch skill (G6) — continuously ingests telemetry / error streams /
    bug trackers, classifies findings with the /aep-reflect classifier, and
    auto-files bug/refinement stories so reflect→dispatch becomes self-feeding.
  • Change-strategy recovery ladder (G2) — gen-eval/references/recovery-ladder.md;
    on repeated eval FAIL the build climbs same-fix → re-ground → fresh
    native-bg-subagent generator → decompose before the eval_not_converging
    human gate.
  • Host-aware post-deploy dogfood (G4b) — executor/references/dogfood-validation.md:
    dogfood_method() (Claude → agent-browser; Codex → native in-app browser /
    computer-use, or Playwright headless) + target_url() (config-first, CI fallback).
  • Post-merge guard (G4a) — autopilot/references/post-merge-guard.md + tick
    Step ③.5: monitors merged stories' deploy health; dogfood issues → reflect story;
    hard regression → conservative auto_revert (default off, warn + escalate).
  • Telemetry-driven reflect (G5) — reflect/references/telemetry-ingestion.md:
    automated source ingestion + quantitative outcome-contract auto-evaluation.
  • Telemetry source determination — projects decide sources via a hybrid
    metric-driven rule: /aep-scaffold//aep-onboard detect the observability stack
    (candidate sources); /aep-map binds each quantitative success_metric +
    health_signal to a source (metric_map); a shared coverage_check() lets
    /aep-watch, /aep-reflect, and the post-merge guard block auto when the
    binding is incomplete
    instead of silently no-op'ing.
  • Visual Design evaluator dimension (G3) — vision-model scoring of screenshots
    against the design system, for both Claude and Codex (multimodal).
  • full_auto master switch (A1) — topology.routing.full_auto (default false)
    gates the strategic human pauses (design escalation, qualitative outcome eval);
    implies auto_design + auto_outcome_eval + watch.auto_create. New config keys
    added to the product-context schema.

Changed

  • /aep-build Phase 5 climbs the recovery ladder; Phase 6 dogfood is host-aware
    (degrades instead of skipping when agent-browser is absent).
  • /aep-reflect Step 1 supports automated ingestion; Step 2.75 auto-evaluates
    quantitative outcome contracts (qualitative still pauses unless full_auto).
  • /aep-autopilot gains the post-merge guard step and full_auto-aware routing;
    loop hygiene unified on --max-turns (G7).

Fixed

  • Carries forward the v1.8.0 executor fix (claude-team removed; native-bg-subagent
    default + post-spawn liveness probe). Every new spawn path uses it.

v1.8.0 — native-bg-subagent default; remove claude-team

16 Jun 04:45

Choose a tag to compare

[1.8.0] - 2026-06-15

Changed

  • Executor: removed the claude-team backend. Its agent-teams spawn path
    fails silently on Claude Code ≥ 2.1.x — the launch command is truncated in a
    detached claude-swarm tmux pane and never submitted, so no worker starts,
    yet the team roster still reports the member "active". native-bg-subagent
    replaces it as the Claude Code default. The agent-teams env flag is no longer
    consulted and there is no "…with agent team" opt-in. See
    docs/decisions/remove-claude-team.md.
  • Orphan/stuck detection now decides liveness by the real-liveness probe
    (process/agent exists AND worktree shows activity), never by roster/state
    membership.

Added

  • native-bg-subagent executor backend (Claude Code default): Agent tool
    with run_in_background: true, no team. Success signature is a bare-hex
    agentId + JSONL output_file; steered via SendMessage(to: agentId) +
    feedback.md; human gate is gate-and-park.
  • Mandatory post-spawn liveness probe with auto-fall-back to
    native-bg-subagent on failure
    (skills/patterns/executor/scripts/spawn-liveness-probe.sh).
  • Explicit one launch = one worktree = one subagent = one story invariant in
    /aep-launch (the compile_mode: grouped_change story group is the one
    documented exception).

Fixed

  • claude-bg is now gated on BG_AVAILABLE; documented that the claude --bg
    one-shot spawn flag was removed on Claude Code ≥ 2.1.x (so claude-bg is skipped
    there and native-bg-subagent is used).

v1.7.0 — goal-driven autopilot driver

15 Jun 05:35
0a35505

Choose a tag to compare

Goal-driven autopilot driver: /aep-autopilot now keeps itself ticking with
a goal driver by default — the host-native /goal primitive (Claude Code
v2.1.139+ and Codex's experimental goals feature) — which re-fires a tick when
there is work and self-terminates when the current layer is complete or a
human-judgment gate is hit. The fixed-interval /loop driver is retained as a
fallback (--loop). Only the driver changes; the 7-step CHECK→ACT tick, the
delegated cheap CHECK, the signals protocol, and the orchestrator boundary are
unchanged. Decision record:
docs/decisions/goal-driven-autopilot.md.

Added

  • Goal driver (default)/aep-autopilot with no --loop flag builds a
    one-layer goal condition and drives it via /goal: "layer N complete (all
    stories merged + wrapped) OR autopilot paused". Scoped to one layer per run
    — it stops at the layer boundary so the human runs the layer gate / /aep-reflect
    and re-invokes for the next layer. Native and near-symmetric on both hosts
    (Claude Code Haiku-evaluator Stop hook; Codex persisted thread goal with
    token_budget).
  • Per-tick surface + wait tail (step ⑦, goal driver only) — each tick
    surfaces a signals-only AUTOPILOT … status line for the goal evaluator to
    judge (boundary-safe: never workspace code), then waits a bounded floor
    (default 5m, --floor) before ending the turn. The floor is the anti-hot-loop
    mechanism — CC uses Monitor with a hard timeout (a raw foreground sleep is
    blocked in a turn); Codex uses shell sleep.
  • Goal-driver flags--floor <dur> (per-tick wait floor) and
    --max-turns <n> (runaway backstop, default 200); on Codex a token_budget
    is set as the hard wall (soft-stops to budget_limited).

Changed

  • /aep-autopilot default behavior — the default driver is now goal-driven
    and self-terminating per layer. The command surface is unchanged; --loop <interval> selects the prior fixed-interval behavior exactly.
  • /aep-autopilot stop — cancels whichever driver is active (/goal clear
    for the goal driver; /loop cancel or cron/launchd removal for the loop
    driver).
  • Driver × backend compatibility (executor backends.md) — the long-lived
    session class now names two in-session variants, /goal (default) and /loop;
    the goal driver is in-session-only, so the cron/launchd row stays the
    /loop / codex exec path.

v1.6.0 — native-first executor backends + hub-and-spoke human gates

10 Jun 07:55
108d4c1

Choose a tag to compare

Native-first executor backends: launch/dispatch/build/autopilot/wrap now
target each host's native parallel-agent machinery instead of tmux+cmux. The
B1–B4 ladder is replaced by named launch modes; every mode still runs its
worker in the AEP-created worktree at .feature-workspaces/<ws> with the
file-based signals protocol as the source of truth. Decision record:
docs/decisions/native-first-executor.md.

Added

  • claude-team mode — Claude Code agent teams: one teammate per story in a
    standing team (TeamCreate once; spawn/shutdown teammates per tick), push
    steering via SendMessage, native display via teammateMode. Requires the
    experimental CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS flag (project
    .claude/settings.json env block; /aep-onboard documents it).
  • claude-bg mode — Claude Code native background sessions
    (claude --bg / attach / logs / stop / respawn): the GA fallback;
    OS-bound, cron-driver compatible, worktree-enforced by process cwd.
  • codex-subagent mode — Codex multi_agent workers (desktop app + CLI)
    with shipped aep-builder / aep-evaluator roles (.codex/agents/*.toml),
    send_input steering, and the native approval overlay as a human gate.
  • codex-exec mode — headless codex exec --cd <worktree> workers,
    steerable across sessions via codex exec resume <id>; the Codex mode for
    cron-driven autopilot and hard cwd isolation.
  • Human-gate protocol (hub-and-spoke).dev-workflow/signals/needs-human.md
    • status.json blocked_on: "human": host-agnostic record of decisions only
      the human can make. The main agent is the canonical human console: the
      question flows back to the orchestrator, the human answers there, and the
      answer is relayed per mode — by push on steerable modes
      (block-in-place), or by resuming a parked worker into its worktree on
      batch/pull modes (gate-and-park: the worker commits WIP, records the
      gate, and ends its run cleanly). Direct worker surfaces (teammate pane,
      claude attach, Codex thread, tmux attach) are optional conveniences.
      Gated workspaces count as waiting, not stuck.
  • Workflow mode is now a complete backend — gate-and-park gives the
    dynamic-workflow fan-out a human-gate path: build agents return a structured
    gated result instead of guessing or stalling; the main agent collects
    gated stories after the run, asks the human, and resumes them into their
    existing worktrees (continuation via resumeFromRunId or re-launch). New
    "Mode: workflow" recipe in backends.md; the /aep-dispatch … with workflow path now creates the .feature-workspaces/<ws> worktrees and
    announces gate behavior instead of "no mid-flight feedback".
  • Orphan re-adoption — lead restarts no longer strand session-bound
    workers: autopilot re-spawns into the existing worktree with the recovery
    bootstrap instead of failing the story.
  • New executor references: claude-native.md, codex-native.md,
    tmux-session.md; new gate() operation; driver × backend compatibility
    matrix (session-bound vs OS-bound worker lifetimes).
  • Autopilot state: backend, agent_id, last_liveness_hash (generalizes
    last_tmux_hash), human_gate escalation type, readopted action.

Changed

  • Behavior change: Claude Code with tmux installed no longer auto-selects
    tmux — native modes win. Pin the old workflow with
    git config aep.executor-backend tmux (or "…with tmux"). tmux+cmux recipes
    are preserved verbatim as the legacy mode (generic-host fallback).
  • Autopilot accepts any steerable, driver-compatible mode (was: B1/B2 only);
    Codex autopilot is now supported (in-thread ticks → codex-subagent; scheduled
    codex exec ticks → codex-exec).
  • /aep-build Phase 5 evaluator spawn is mode-dispatched: foreground Task
    subagent (Claude native modes) or codex exec --cd with the aep-evaluator
    role (Codex modes); the evaluator prompt is delivered at spawn time — no
    sleep/poll/kill-pane on native modes.
  • /aep-wrap teardown is mode-dispatched (teammate shutdown / claude stop /
    close_agent / no-op / tmux kill-session).
  • Command naming normalized to /aep-* across all skills, README, and
    docs: every AEP skill is invoked by its canonical registered name
    (/aep-autopilot, /aep-dispatch, /aep-launch, …) — the unprefixed forms
    (/autopilot, /launch) no longer appear, eliminating the prefix confusion.
    Non-AEP commands (/loop, /opsx:*, Codex /agent, /workflows) are
    unchanged. (Changelog entries v1.5.0 and older keep their original wording
    as historical record.)

v1.4.0

05 Jun 15:24

Choose a tag to compare

Codex /launch now uses Codex-native, worktree-bound subagents for coding launches by default, while Claude/generic executors keep the tmux session path.

Changed

  • aep-executor backend selection now chooses B3 for Codex hosts before checking cmux/tmux, so Codex coding launches no longer create tmux sessions just because tmux is installed.
  • The B3 spawn recipe still creates the standard AEP worktree first (.feature-workspaces/<name> on feat/<name>), then starts the Codex worker/subagent with an explicit "operate only in this worktree" contract.
  • /launch, /dispatch, /build, and /autopilot docs now distinguish Codex subagent launches from steerable tmux sessions. Autopilot remains B1/B2-only because it requires live nudge()/liveness().
  • .claude-plugin/marketplace.json version 1.3.21.4.0.

v1.3.2 — cmux launch-surface fix

05 Jun 09:14
1f7d452

Choose a tag to compare

Fixes how /launch and aep-executor attach a cmux review surface (reported and verified from a downstream session).

Fixed

  • cmux detection no longer requires $CMUX_SOCKET — keys on "cmux CLI reachable + a target pane resolves" (cmux tree ◀ here / $CMUX_PANE_ID), so a cmux host where $CMUX_SOCKET is unset no longer falls back to headless B2.
  • The review tab opens as a sibling of the orchestrator's own tab — resolves the pane from cmux tree and uses new-surface --workspace <ws> --pane <pane> --focus true, instead of a bare new-surface (unset $CMUX_WORKSPACE_ID). cmux new-workspace is kept out of the launch path.
  • Bootstrap is sent before the cmux surface attaches — an attached surface focuses the tmux composer and blocks send-keys; reordered to spawn → ready → bootstrap (tmux send-keys) → attach tab.

Full changelog: v1.3.1...v1.3.2

v1.3.1 — OpenSpec required; memory layered over AEP lessons loop

05 Jun 04:22

Choose a tag to compare

Onboarding refinements: OpenSpec is now a required install step, and the optional memory supplement is wired as a thin layer over AEP's native lessons loop.

Changed

  • /onboard and the README "Agent prompt" now install the OpenSpec CLI as a REQUIRED step (npm install -g @fission-ai/openspec@latest, Node >= 20.19) — AEP's skills shell out to openspec, but the delegated install never ensured it.
  • The optional memory supplement (project-memory + memory-forge) now layers onto AEP's existing lessons loop instead of running a parallel one. AGENTS.md gets a concise ## Memory & Learning Loop section mapping recall → /dispatch, persist → /wrap, distill → /reflect / pre-PR. AEP still captures via /build.dev-workflow/lessons.md/wraplessons-learned/; the supplement adds qmd semantic recall plus distillation-to-skills on top.

Fixed

  • Corrected the OpenSpec install command in the /onboard and /scaffold tool tables (was bun add -g openspec, the wrong npm package; OpenSpec's CLI is @fission-ai/openspec).

Full changelog: v1.3.0...v1.3.1

v1.3.0 — memorysaver/skills supplement; modernized onboard install

04 Jun 06:06
bdeaad0

Choose a tag to compare

Adds an optional supplement and modernizes onboarding to the npx skills installer.

Added

  • Optional supplement pointer to memorysaver/skills
    in the README and /onboard: project-behavior (scaffold an AGENTS.md behavior pack),
    project-memory (git-committable memory system), and memory-forge (distill lessons into
    skills). The /onboard and README "Agent prompt" flows now always ask whether the user
    wants the AGENTS.md behavior config and the memory system before installing either.

Changed

  • /onboard (aep-onboard) Phase 1 install modernized from the legacy
    /plugin marketplace add and /plugin install commands to project-level
    npx skills add memorysaver/agentic-engineering-patterns@<latest-tag> (pin to the latest
    release, commit the installed files), matching the README install guide.
  • .claude-plugin/marketplace.json version 1.2.01.3.0.

Full changelog: https://github.com/memorysaver/agentic-engineering-patterns/blob/v1.3.0/CHANGELOG.md