Files
ironclaw/deny.toml
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

66 lines
2.2 KiB
TOML

[advisories]
unmaintained = "workspace"
yanked = "deny"
ignore = [
# Pre-existing advisories — tracked for upgrade in separate PRs
# serde_yml unsound/unmaintained — direct dep, upgrade tracked separately
"RUSTSEC-2025-0068",
# tokio-tar PAX header parsing — sandbox containers only
"RUSTSEC-2025-0111",
# rustls-webpki advisories — 0.102.8 remains pinned by a libsql 0.6.0 transitive dep
# (via rustls 0.22 → hyper-rustls 0.25); keep ignored until that pin is gone.
# RUSTSEC-2026-0104: panic on empty `onlySomeReasons` BIT STRING during CRL parsing.
# We do not use CRLs, and the advisory explicitly notes apps that don't parse CRLs
# are unaffected. Same transitive pin as 0049/0098/0099 — tracked with them.
"RUSTSEC-2026-0049",
"RUSTSEC-2026-0098",
"RUSTSEC-2026-0099",
"RUSTSEC-2026-0104",
# rand unsoundness with custom logger calling rand::rng() during reseed — we don't use this pattern;
# revisit/remove by 2026-06-30, or when transitive deps (tower, nanoid, phf_generator) release rand ≥0.9.3 compat
"RUSTSEC-2026-0097",
]
[licenses]
version = 2
allow = [
"MIT",
# MIT-0 (MIT No Attribution) is strictly more permissive than MIT —
# required by `jsonschema` (used for workspace document schema validation).
"MIT-0",
"Apache-2.0",
"Apache-2.0 WITH LLVM-exception",
"BSD-2-Clause",
"BSD-3-Clause",
"ISC",
"Unicode-3.0",
"Unicode-DFS-2016",
"OpenSSL",
"Zlib",
"MPL-2.0",
"0BSD",
"BSL-1.0",
"CC0-1.0",
"Unlicense",
"CDLA-Permissive-2.0",
]
unused-allowed-license = "allow"
[bans]
multiple-versions = "warn"
wildcards = "deny"
# monty (Pydantic's embedded Python) is git-only (not on crates.io),
# so it inherently lacks a version constraint. Allow path-dep wildcards.
allow-wildcard-paths = true
[sources]
unknown-registry = "deny"
unknown-git = "deny"
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
allow-git = [
# Monty (Pydantic's embedded Python interpreter) — not yet on crates.io.
# Pulls in ruff_* crates from astral-sh/ruff at a pinned revision.
"https://github.com/pydantic/monty.git",
"https://github.com/astral-sh/ruff.git",
]