From ecbac05b1b2b0c0dd1ab67cecb29182156aa0eca Mon Sep 17 00:00:00 2001 From: sadlilas <11658960+sadlilas@users.noreply.github.com> Date: Tue, 25 Aug 2026 16:50:37 -0700 Subject: [PATCH 1/3] refactor(bundle): rename built-in bundle to amplifier-agent-anchors The built-in bundle was named amplifier-agent-behavioral-anchor. That name is a fossil: this repo vendored the manifest on 2026-06-17 from amplifier-foundation's experiments/behavioral-anchor, and foundation promoted that experiment to the published `anchors` bundle six days later (bundles/anchors/). Every reference here has pointed at the pre-promotion name since. PART 1 -- the rename. Six references move together, because the three @mentions resolve against the bundle's own name: - bundle.md: bundle.name - bundle.md: @...:skills (tool-skills.config.skills) - bundle.md: @...:modes (hooks-mode.config.search_paths) - bundle.md: @...:context/system.md - scripts/verify-wheel.py: the bundle-name assertion - docs/LAYERS_AND_RELEASES.md: the documented name @...:skills and @...:modes have a safety net -- _runtime.py prepends the absolute BUNDLE_DIR/skills and BUNDLE_DIR/modes paths. @...:context/system.md has none, so a mismatch there silently drops the entire system prompt. Hence one commit. PART 2 -- re-point the upstream comparison, and re-diff it. The manifest's "AAA-specific modifications from upstream" table diffed against a file frozen since June. Seven references now point at bundles/anchors/bundle.md, and the table is rewritten from an actual comparison: - NEW additions recorded: 9 provider install-stubs (upstream declares none) and hooks-routing (upstream has no routing matrix). - Context Intelligence reclassified from "addition" to "divergence": upstream has composed it by default since 2026-08-03 as two behavior includes (logging + navigation). We declare the hook module inline and take the logging half only -- no session-navigator agent. - NEW divergence recorded: skills sources. Upstream registers the amplifier-bundle-skills skills dir; we vendor a curated subset in the wheel, so council-here, mass-change, session-debug and ~30 other curated skills are deliberately absent. - Unchanged and still accurate: default_provider, tool-mcp added, and the four dropped hooks/behaviors. Deliberately untouched: CHANGELOG history (it records what shipped at v0.7.0), "## Behavioral Principles" in context/system.md (the concept, same upstream), and incidental uses of the word. Verified: ./scripts/verify-wheel.py PASS (6/6 against the built wheel); zero stale identity refs outside CHANGELOG; frontmatter parses with 9 providers / 11 tools / 7 hooks / 6 agents; all three self-referencing @mentions match bundle.name and resolve to files that exist. No wire-protocol or user-facing behavior change. The cache key is (aaa_version, sha256(bundle.md)), so installs re-resolve once on next run. Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> --- CHANGELOG.md | 10 +++ docs/LAYERS_AND_RELEASES.md | 2 +- docs/spec/bundle-and-cache.md | 2 +- scripts/verify-wheel.py | 4 +- src/amplifier_agent_lib/bundle/__init__.py | 2 +- src/amplifier_agent_lib/bundle/bundle.md | 82 ++++++++++++++++------ 6 files changed, 77 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59b072a1..f0eb9501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- **Built-in bundle renamed `amplifier-agent-behavioral-anchor` → `amplifier-agent-anchors`.** The upstream bundle this manifest was adapted from was named `behavioral-anchor` when it was vendored on 2026-06-17; amplifier-foundation promoted it to the published `anchors` bundle six days later (`bundles/anchors/`). This repo kept the pre-promotion name. The bundle name and its three self-referencing `@mentions` (`:skills`, `:modes`, `:context/system.md`) move together, along with the name assertion in `scripts/verify-wheel.py` and the reference in `docs/LAYERS_AND_RELEASES.md`. + + No user-facing behavior change and no wire-protocol change. The prepared-bundle cache key is `(aaa_version, sha256(bundle.md))`, so existing installs re-resolve the prepared bundle once on next run — self-healing, no user action required. + +- **Upstream comparison re-pointed at the live bundle.** The manifest's "AAA-specific modifications from upstream" table diffed against `experiments/behavioral-anchor/behavioral-anchor.md` — a file frozen since June. It now diffs against `bundles/anchors/bundle.md` and has been rewritten from an actual comparison. Newly recorded: the 9 provider install-stubs and `hooks-routing` as AAA additions (upstream has neither), Context Intelligence as a *divergence* rather than an addition (upstream composes it as two behavior includes as of 2026-08-03; we declare the hook module inline and take the logging half only, so no `session-navigator` agent), and the skills-source divergence (upstream registers the `amplifier-bundle-skills` skills directory; we vendor a curated subset in the wheel, so `council-here`, `mass-change`, `session-debug`, and ~30 other curated skills are deliberately absent). + + Six other stale references to `experiments/behavioral-anchor/` are re-pointed in `bundle.md`, `bundle/__init__.py`, and `docs/spec/bundle-and-cache.md`. + ## [0.15.1] — 2026-08-25 ### Fixed diff --git a/docs/LAYERS_AND_RELEASES.md b/docs/LAYERS_AND_RELEASES.md index 50caab55..305b315e 100644 --- a/docs/LAYERS_AND_RELEASES.md +++ b/docs/LAYERS_AND_RELEASES.md @@ -110,7 +110,7 @@ A single Python package containing three internal subpackages: The engine ships with `bundle.md` baked into the wheel. It declares which modules the engine loads at first run. -- **Bundle name:** `amplifier-agent-behavioral-anchor` +- **Bundle name:** `amplifier-agent-anchors` - **Path in repo:** `src/amplifier_agent_lib/bundle/bundle.md` **Pre-wired modules:** diff --git a/docs/spec/bundle-and-cache.md b/docs/spec/bundle-and-cache.md index 1dcac8bf..b1b664a0 100644 --- a/docs/spec/bundle-and-cache.md +++ b/docs/spec/bundle-and-cache.md @@ -55,7 +55,7 @@ Agents declare no `tools:` blocks; they inherit the parent tool roster through t `context_inheritance`. Modules referenced only by agent definitions are installed alongside the top-level ones, so a delegated session can always mount what its agent declares. -Four upstream modules are deliberately absent relative to the upstream behavioral-anchor bundle: +Four upstream modules are deliberately absent relative to the upstream anchors bundle: `hooks-streaming-ui` and `hooks-todo-display` would break the JSON-stdout contract, `behaviors/logging.yaml` is replaced by `hook-context-intelligence`, and `hooks-approval` is dropped because the wire protocol has no approval round-trip yet and policy-driven rules would deadlock. diff --git a/scripts/verify-wheel.py b/scripts/verify-wheel.py index b97794dd..97fe3228 100755 --- a/scripts/verify-wheel.py +++ b/scripts/verify-wheel.py @@ -213,8 +213,8 @@ def check_bundle_md_frontmatter(zf: zipfile.ZipFile) -> str: raise Failure(f"{path} must start with '---\\n' (YAML frontmatter opening delimiter)") if "\n---\n" not in content: raise Failure(f"{path} must contain '\\n---\\n' to close the YAML frontmatter") - if "amplifier-agent-behavioral-anchor" not in content: - raise Failure(f"{path} must declare the bundle name 'amplifier-agent-behavioral-anchor'") + if "amplifier-agent-anchors" not in content: + raise Failure(f"{path} must declare the bundle name 'amplifier-agent-anchors'") if "github.com/microsoft/amplifier-module-" not in content: raise Failure(f"{path} must reference at least one microsoft/amplifier-module by git URL") diff --git a/src/amplifier_agent_lib/bundle/__init__.py b/src/amplifier_agent_lib/bundle/__init__.py index 9d1f80ea..2a95be0e 100644 --- a/src/amplifier_agent_lib/bundle/__init__.py +++ b/src/amplifier_agent_lib/bundle/__init__.py @@ -24,6 +24,6 @@ BUNDLE_MD: Path = BUNDLE_DIR / "bundle.md" #: Directory containing vendored sub-session agent definitions. -#: Current set (behavioral-anchor): explorer, architect, builder, debugger, git-ops, researcher. +#: Current set (anchors): explorer, architect, builder, debugger, git-ops, researcher. #: Per D1 of docs/designs/2026-05-19-baked-in-bundle-decision.md. AGENTS_DIR: Path = BUNDLE_DIR / "agents" diff --git a/src/amplifier_agent_lib/bundle/bundle.md b/src/amplifier_agent_lib/bundle/bundle.md index 576d4576..b88d80bb 100644 --- a/src/amplifier_agent_lib/bundle/bundle.md +++ b/src/amplifier_agent_lib/bundle/bundle.md @@ -1,33 +1,75 @@ --- bundle: - name: amplifier-agent-behavioral-anchor + name: amplifier-agent-anchors version: 0.1.0 description: | - Vendored opinionated manifest for the amplifier-agent CLI. Adapted from - the experimental behavioral-anchor bundle - (amplifier-foundation@main:experiments/behavioral-anchor/behavioral-anchor.md). + Vendored opinionated manifest for the amplifier-agent CLI. Adapted from the + anchors bundle (amplifier-foundation@main:bundles/anchors/bundle.md). + + Originally vendored on 2026-06-17 from that bundle's predecessor, the + experimental behavioral-anchor bundle, which amplifier-foundation promoted + to the published `anchors` bundle six days later. This manifest is diffed + against `bundles/anchors/bundle.md` -- the live upstream -- not against the + frozen experiment. Behavior is shaped by a small set of named principles loaded once at the head of the system prompt, backed by thin purposeful agents and a standard tool roster inherited by sub-agents through tool-delegate. - AAA-specific modifications from upstream behavioral-anchor: - - default_provider: anthropic (engine reads this directly) - - hook-context-intelligence (preserves workspace JSONL alignment - with amplifier-app-cli, per - docs/designs/2026-06-09-workspace-resolution-and-migration.md - invariant I8) + AAA-specific modifications from upstream anchors: + ADDED + - default_provider: anthropic (engine reads this directly; upstream + has no equivalent) + - 9 provider install-stubs (upstream declares no providers at + all; the engine needs them present + so prepare(install_deps=True) clones + and installs each one) - tool-mcp (preserves MCP support for existing users) - - DROPPED hooks-streaming-ui (would break JSON-stdout contract; + - hooks-routing (model-role routing matrix, inlined + per Strategy 1 rather than included + from @routing-matrix) + - 8 vendored skills (code-review, council + 6 council + lenses, shipped in the wheel; see + DIVERGENT below) + + DROPPED + - hooks-streaming-ui (would break JSON-stdout contract; engine handles streaming via bundle/hook_streaming.py mounted programmatically by _runtime.py and spawn.py) - - DROPPED hooks-todo-display (would break JSON-stdout contract) - - DROPPED behaviors/logging.yaml (replaced by hook-context-intelligence) - - DROPPED hooks-approval (wire protocol has no approval + - hooks-todo-display (would break JSON-stdout contract) + - hooks-approval (wire protocol has no approval round-trip yet; would deadlock on policy-driven rules) + - behaviors/logging.yaml (hook-context-intelligence below + covers session JSONL capture) + + DIVERGENT + - Context Intelligence upstream composes it as two behavior + includes (logging + navigation) as + of 2026-08-03. We declare the + hook-context-intelligence module + inline (Strategy 1) and take the + logging half only -- no + session-navigator agent. Preserves + workspace JSONL alignment with + amplifier-app-cli per + docs/designs/2026-06-09-workspace-resolution-and-migration.md + invariant I8. + - skills sources upstream registers the + amplifier-bundle-skills skills dir + so its /command skills resolve. We + vendor a curated subset in the wheel + instead, injected by _runtime.py as + an absolute path. Consequence: no + council-here, mass-change, + session-debug, or the other ~30 + curated skills. Deliberate. + - agent names upstream namespaces its roster as + anchors:; ours are bare + because the definitions are vendored + locally. Same six agents. Per the Strategy 1 decision (docs/designs/2026-05-19-baked-in-bundle-decision.md), no `includes:` block. Everything declared inline. Manifest text + agent @@ -94,7 +136,7 @@ session: auto_compact: true provider: - # NOTE: intentional divergence from upstream behavioral-anchor.md (which + # NOTE: intentional divergence from upstream anchors (which # has no provider block). This entry is the RUNTIME default: when # host_config does not specify a provider, _read_bundle_default_provider() # returns "anthropic" from the top-level `default_provider:` field and @@ -144,7 +186,7 @@ tools: # specialist layer if they re-acquire tool-delegate themselves. exclude_tools: [tool-delegate] - # MCP (AAA-specific addition vs upstream behavioral-anchor) + # MCP (AAA-specific addition vs upstream anchors) - module: tool-mcp source: git+https://github.com/microsoft/amplifier-module-tool-mcp@main config: @@ -161,7 +203,7 @@ tools: # @mention resolution for a vendored skills dir in module config is # best-effort; the runtime injects the absolute BUNDLE_DIR/skills path, # which is the reliable one. - - "@amplifier-agent-behavioral-anchor:skills" + - "@amplifier-agent-anchors:skills" visibility: enabled: false @@ -184,7 +226,7 @@ tools: session_dir: ~/.amplifier-agent/state/projects/{project}/recipe-sessions auto_cleanup_days: 7 -# Hooks declared inline. AAA-specific modifications from upstream behavioral-anchor: +# Hooks declared inline. AAA-specific modifications from upstream anchors: # - DROPPED hooks-streaming-ui (stdout contract violation; engine uses bundle/hook_streaming.py) # - DROPPED hooks-todo-display (stdout contract violation) # - DROPPED behaviors/logging.yaml include (replaced by hook-context-intelligence below) @@ -227,7 +269,7 @@ hooks: # best-effort; the runtime injects the absolute BUNDLE_DIR/modes path, # which is the reliable one. search_paths: - - "@amplifier-agent-behavioral-anchor:modes" + - "@amplifier-agent-anchors:modes" # === Model routing === # Resolves each agent's model_role frontmatter against a curated provider/model @@ -276,4 +318,4 @@ agents: - researcher --- -@amplifier-agent-behavioral-anchor:context/system.md +@amplifier-agent-anchors:context/system.md From a7edc2a223329e2e5285713ca365db5c694837ee Mon Sep 17 00:00:00 2001 From: sadlilas <11658960+sadlilas@users.noreply.github.com> Date: Tue, 25 Aug 2026 17:09:41 -0700 Subject: [PATCH 2/3] chore(release): cut amplifier-agent 0.16.0; trim the bundle description Folds the release into this change per RELEASING.md ("the bump may be its own release PR or folded into the change PR being released"), so the rename reaches users via `amplifier-agent update` rather than waiting for a separate release PR. - pyproject.toml: 0.15.1 -> 0.16.0 - CHANGELOG.md: [Unreleased] promoted to [0.16.0] Also addresses review feedback on the previous commit: the bundle.md description had grown a 60-line narrative -- vendoring history, a full upstream-divergence table, and cache-path detail already stated in bundle/__init__.py. None of it affects how the bundle loads, and bundle.md is a manifest, not a document. Cut to 15 lines: what the bundle is, how behavior is shaped, the inline-declaration decision, the cache-key warning, and a pointer to the spec. The divergence detail moves to docs/spec/bundle-and-cache.md, under the section that already specifies the vendored manifest, as three tables (added / dropped / shaped differently) rather than prose. Same facts, right layer. Dropped the undefined "AAA-specific" shorthand from every line this change touches -- the abbreviation is used across the repo but defined nowhere. Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> --- CHANGELOG.md | 37 ++++++++--- docs/spec/bundle-and-cache.md | 45 ++++++++++++-- pyproject.toml | 2 +- src/amplifier_agent_lib/bundle/bundle.md | 79 +++--------------------- uv.lock | 2 +- 5 files changed, 81 insertions(+), 84 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0eb9501..d6ead3d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,15 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -### Changed - -- **Built-in bundle renamed `amplifier-agent-behavioral-anchor` → `amplifier-agent-anchors`.** The upstream bundle this manifest was adapted from was named `behavioral-anchor` when it was vendored on 2026-06-17; amplifier-foundation promoted it to the published `anchors` bundle six days later (`bundles/anchors/`). This repo kept the pre-promotion name. The bundle name and its three self-referencing `@mentions` (`:skills`, `:modes`, `:context/system.md`) move together, along with the name assertion in `scripts/verify-wheel.py` and the reference in `docs/LAYERS_AND_RELEASES.md`. +## [0.16.0] — 2026-08-25 - No user-facing behavior change and no wire-protocol change. The prepared-bundle cache key is `(aaa_version, sha256(bundle.md))`, so existing installs re-resolve the prepared bundle once on next run — self-healing, no user action required. - -- **Upstream comparison re-pointed at the live bundle.** The manifest's "AAA-specific modifications from upstream" table diffed against `experiments/behavioral-anchor/behavioral-anchor.md` — a file frozen since June. It now diffs against `bundles/anchors/bundle.md` and has been rewritten from an actual comparison. Newly recorded: the 9 provider install-stubs and `hooks-routing` as AAA additions (upstream has neither), Context Intelligence as a *divergence* rather than an addition (upstream composes it as two behavior includes as of 2026-08-03; we declare the hook module inline and take the logging half only, so no `session-navigator` agent), and the skills-source divergence (upstream registers the `amplifier-bundle-skills` skills directory; we vendor a curated subset in the wheel, so `council-here`, `mass-change`, `session-debug`, and ~30 other curated skills are deliberately absent). +### Changed - Six other stale references to `experiments/behavioral-anchor/` are re-pointed in `bundle.md`, `bundle/__init__.py`, and `docs/spec/bundle-and-cache.md`. +- **Built-in bundle renamed `amplifier-agent-behavioral-anchor` → `amplifier-agent-anchors`.** + This manifest was vendored on 2026-06-17 from amplifier-foundation's + `experiments/behavioral-anchor`; foundation promoted that experiment to the published + `anchors` bundle six days later. This repo kept the pre-promotion name until now. + + The bundle name and its three self-referencing `@mentions` (`:skills`, `:modes`, + `:context/system.md`) move together, along with the name assertion in + `scripts/verify-wheel.py` and the reference in `docs/LAYERS_AND_RELEASES.md`. + + No user-facing behavior change and no wire-protocol change. The prepared-bundle cache key + includes `sha256(bundle.md)`, so existing installs re-resolve the prepared bundle once on + next run — self-healing, no user action required. + +- **`bundle.md` description trimmed to what the manifest needs to declare itself.** It had + accumulated a 60-line narrative: vendoring history, a full upstream-divergence table, and + cache-path detail duplicated from `bundle/__init__.py`. None of it affects how the bundle + loads. The description is now 15 lines and points at the spec for detail. + +- **Upstream divergences documented in `docs/spec/bundle-and-cache.md`,** where the vendored + manifest is already specified, and corrected against the live upstream rather than the + frozen June experiment. Newly recorded: the 9 provider install-stubs and `hooks-routing` + as local additions (upstream has neither); Context Intelligence as a *divergence* rather + than an addition (upstream composes it as two behavior includes as of 2026-08-03 — this + manifest declares the hook module inline and takes the logging half only, so there is no + `session-navigator` agent); and the skills-source divergence (upstream registers the + `amplifier-bundle-skills` skills directory, this manifest vendors a curated subset in the + wheel, so `council-here`, `mass-change`, `session-debug` and roughly 30 other curated + skills are deliberately absent). ## [0.15.1] — 2026-08-25 diff --git a/docs/spec/bundle-and-cache.md b/docs/spec/bundle-and-cache.md index b1b664a0..10b71d53 100644 --- a/docs/spec/bundle-and-cache.md +++ b/docs/spec/bundle-and-cache.md @@ -55,10 +55,47 @@ Agents declare no `tools:` blocks; they inherit the parent tool roster through t `context_inheritance`. Modules referenced only by agent definitions are installed alongside the top-level ones, so a delegated session can always mount what its agent declares. -Four upstream modules are deliberately absent relative to the upstream anchors bundle: -`hooks-streaming-ui` and `hooks-todo-display` would break the JSON-stdout contract, -`behaviors/logging.yaml` is replaced by `hook-context-intelligence`, and `hooks-approval` is dropped -because the wire protocol has no approval round-trip yet and policy-driven rules would deadlock. +### Differences from upstream anchors + +This manifest is vendored from `amplifier-foundation@main:bundles/anchors/bundle.md`. Diff against +that file, not against `experiments/behavioral-anchor/` — that experiment was promoted to the +published `anchors` bundle in June 2026 and has not moved since. + +**Added here, absent upstream:** + +| Addition | Why | +|---|---| +| `default_provider: anthropic` | Required by the engine; upstream has no equivalent. See below. | +| 9 provider install-stubs | Upstream declares no providers at all. See the `providers:` note below. | +| `tool-mcp` | Preserves MCP support for existing users. | +| `hooks-routing` | Model-role routing matrix, declared inline rather than included from `@routing-matrix`. | +| 8 vendored skills | `code-review`, `council`, and 6 council lenses, shipped in the wheel. See the skills note below. | + +**Dropped from upstream:** + +| Dropped | Why | +|---|---| +| `hooks-streaming-ui` | Would break the JSON-stdout contract; the engine handles streaming via `bundle/hook_streaming.py`, mounted programmatically by `_runtime.py` and `spawn.py`. | +| `hooks-todo-display` | Same stdout-contract reason. | +| `hooks-approval` | The wire protocol has no approval round-trip yet; policy-driven rules would deadlock. | +| `behaviors/logging.yaml` | `hook-context-intelligence` covers session JSONL capture. | + +**Present in both, but shaped differently:** + +*Context Intelligence.* Upstream has composed it by default since 2026-08-03, as two behavior +includes — logging and navigation. This manifest declares the `hook-context-intelligence` module +inline and takes the logging half only, so there is no `session-navigator` agent here. This +preserves workspace JSONL alignment with amplifier-app-cli per +`docs/designs/2026-06-09-workspace-resolution-and-migration.md` invariant I8. + +*Skills sources.* Upstream registers the `amplifier-bundle-skills` skills directory so that +bundle's `/command` skills resolve. This manifest instead vendors a curated subset inside the wheel, +which `_runtime.py` injects as an absolute path so built-ins win first-match. The consequence is +deliberate: `council-here`, `mass-change`, `session-debug`, and roughly 30 other curated skills are +not available here. + +*Agent names.* Upstream namespaces its roster as `anchors:`; these are bare, because the +definitions are vendored locally. Same six agents. The `providers:` stubs carry NO config and NO credentials. They exist so that every provider module is installed during cold prepare, which matters for `amplifier-agent serve chat-completions`, where diff --git a/pyproject.toml b/pyproject.toml index 8cdf1e4d..5a385e42 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = 'amplifier-agent' -version = '0.15.1' +version = '0.16.0' requires-python = '>=3.12' license = 'MIT' dependencies = [ diff --git a/src/amplifier_agent_lib/bundle/bundle.md b/src/amplifier_agent_lib/bundle/bundle.md index b88d80bb..cea3c2af 100644 --- a/src/amplifier_agent_lib/bundle/bundle.md +++ b/src/amplifier_agent_lib/bundle/bundle.md @@ -3,81 +3,18 @@ bundle: name: amplifier-agent-anchors version: 0.1.0 description: | - Vendored opinionated manifest for the amplifier-agent CLI. Adapted from the - anchors bundle (amplifier-foundation@main:bundles/anchors/bundle.md). - - Originally vendored on 2026-06-17 from that bundle's predecessor, the - experimental behavioral-anchor bundle, which amplifier-foundation promoted - to the published `anchors` bundle six days later. This manifest is diffed - against `bundles/anchors/bundle.md` -- the live upstream -- not against the - frozen experiment. + Built-in manifest for the amplifier-agent CLI. Vendored from the anchors + bundle (amplifier-foundation@main:bundles/anchors/bundle.md) with + amplifier-agent-specific changes. Behavior is shaped by a small set of named principles loaded once at the head of the system prompt, backed by thin purposeful agents and a standard tool roster inherited by sub-agents through tool-delegate. - AAA-specific modifications from upstream anchors: - ADDED - - default_provider: anthropic (engine reads this directly; upstream - has no equivalent) - - 9 provider install-stubs (upstream declares no providers at - all; the engine needs them present - so prepare(install_deps=True) clones - and installs each one) - - tool-mcp (preserves MCP support for existing users) - - hooks-routing (model-role routing matrix, inlined - per Strategy 1 rather than included - from @routing-matrix) - - 8 vendored skills (code-review, council + 6 council - lenses, shipped in the wheel; see - DIVERGENT below) - - DROPPED - - hooks-streaming-ui (would break JSON-stdout contract; - engine handles streaming via - bundle/hook_streaming.py mounted - programmatically by _runtime.py - and spawn.py) - - hooks-todo-display (would break JSON-stdout contract) - - hooks-approval (wire protocol has no approval - round-trip yet; would deadlock on - policy-driven rules) - - behaviors/logging.yaml (hook-context-intelligence below - covers session JSONL capture) - - DIVERGENT - - Context Intelligence upstream composes it as two behavior - includes (logging + navigation) as - of 2026-08-03. We declare the - hook-context-intelligence module - inline (Strategy 1) and take the - logging half only -- no - session-navigator agent. Preserves - workspace JSONL alignment with - amplifier-app-cli per - docs/designs/2026-06-09-workspace-resolution-and-migration.md - invariant I8. - - skills sources upstream registers the - amplifier-bundle-skills skills dir - so its /command skills resolve. We - vendor a curated subset in the wheel - instead, injected by _runtime.py as - an absolute path. Consequence: no - council-here, mass-change, - session-debug, or the other ~30 - curated skills. Deliberate. - - agent names upstream namespaces its roster as - anchors:; ours are bare - because the definitions are vendored - locally. Same six agents. + Everything is declared inline -- no `includes:` block -- per + docs/designs/2026-05-19-baked-in-bundle-decision.md. - Per the Strategy 1 decision (docs/designs/2026-05-19-baked-in-bundle-decision.md), - no `includes:` block. Everything declared inline. Manifest text + agent - definitions + context/system.md are vendored inside the wheel; every other - module is git-cloned and pip-installed on first invocation. The prepared - result is cached to - ~/.amplifier-agent/cache/prepared/// - (override the root via $AMPLIFIER_AGENT_HOME). + What differs from upstream anchors, and why: docs/spec/bundle-and-cache.md. Editing this file changes the cache key (sha256) and self-invalidates the warm pickle. @@ -186,7 +123,7 @@ tools: # specialist layer if they re-acquire tool-delegate themselves. exclude_tools: [tool-delegate] - # MCP (AAA-specific addition vs upstream anchors) + # MCP (added here; not in upstream anchors) - module: tool-mcp source: git+https://github.com/microsoft/amplifier-module-tool-mcp@main config: @@ -226,7 +163,7 @@ tools: session_dir: ~/.amplifier-agent/state/projects/{project}/recipe-sessions auto_cleanup_days: 7 -# Hooks declared inline. AAA-specific modifications from upstream anchors: +# Hooks declared inline. Changes from upstream anchors: # - DROPPED hooks-streaming-ui (stdout contract violation; engine uses bundle/hook_streaming.py) # - DROPPED hooks-todo-display (stdout contract violation) # - DROPPED behaviors/logging.yaml include (replaced by hook-context-intelligence below) diff --git a/uv.lock b/uv.lock index 6e4b4bda..3edf6835 100644 --- a/uv.lock +++ b/uv.lock @@ -16,7 +16,7 @@ members = [ [[package]] name = "amplifier-agent" -version = "0.15.1" +version = "0.16.0" source = { editable = "." } dependencies = [ { name = "amplifier-foundation" }, From be1943eaa3196b879ba23378aad0f6389c858fc6 Mon Sep 17 00:00:00 2001 From: sadlilas <11658960+sadlilas@users.noreply.github.com> Date: Tue, 25 Aug 2026 17:34:39 -0700 Subject: [PATCH 3/3] docs(changelog): record the system-prompt prose removal in 0.16.0 The 0.16.0 entry covered the bundle rename and the description trim but not the change that started this work: removing the descriptive prose from the head of every session's system prompt. That shipped in this release range and is user-observable -- the model's first instruction changed -- so it needs an entry of its own rather than being folded into the rename. Generated with [Amplifier](https://github.com/microsoft/amplifier) Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com> --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6ead3d6..b4fc29d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- **Descriptive prose removed from the head of the system prompt.** Everything below the + frontmatter in `bundle.md` is loaded verbatim as the session's system instruction, and it is + placed first — ahead of every context file. The shipped manifest carried a title and a + paragraph describing itself there, so every session opened by telling the model a + third-person description of itself instead of an instruction. Only the `@mention` that loads + the principle set remains. Nothing is lost: the same text already lived in the frontmatter + `description` field, which is metadata and is never sent to the model. + - **Built-in bundle renamed `amplifier-agent-behavioral-anchor` → `amplifier-agent-anchors`.** This manifest was vendored on 2026-06-17 from amplifier-foundation's `experiments/behavioral-anchor`; foundation promoted that experiment to the published