Files
ironclaw/crates
Henry Park d33fecb17c engine-v2: centralize action vs capability surface policy (#2827)
* Add canonical engine capability status enum

* Add bridge tool surface assignment policy

* fix(engine): tighten scoped surface assignment

* fix(bridge): remove premature approval_gated field, surface ReadyScoped in capabilities

- Remove approval_gated from SurfacePolicyInput (YAGNI until policy uses it)
- Change ReadyScoped fallback from neither() to capabilities_only() so
  scoped subjects remain visible in background context
- Update tests to match new behavior

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(ci): unblock section 2 policy PR

* engine-v2: add capability projection and two-surface prompt baseline (#2826)

* Add capability projection and two-surface prompt baseline

* Reduce step-context args for clippy-clean two-surface stack

* fix(engine): address two-surface review follow-ups

* fix(engine): normalize alias-aware capability projection

* fix(bridge): share extension fetch between projectors, preserve NeedsAuth in actions

- Fetch list_capability_extensions once in EffectBridgeAdapter and pass
  to both ActionProjector and CapabilityProjector via prefetched_extensions
- Keep NeedsAuth provider tools in available_actions so the LLM can
  trigger auth gates by attempting to call them
- Add unit tests for NeedsAuth preservation and latent tool omission
  at the ActionProjector level where extension maps can be controlled

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: serrrfirat <f@nuff.tech>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: serrrfirat <f@nuff.tech>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-22 11:36:25 -07:00
..