Skip to content

fix: enforce AgentKit result and lifecycle invariants - #41

Merged
ebarti merged 1 commit into
mainfrom
agent/stack-01-core-correctness
Jul 10, 2026
Merged

ebarti merged 1 commit into
mainfrom
agent/stack-01-core-correctness

Conversation

@ebarti

@ebarti ebarti commented Jul 10, 2026

Copy link
Copy Markdown
Owner

What

  • distinguish omitted task fields from explicitly supplied default values
  • reject all task-shaping kwargs when a prebuilt task is supplied
  • prevent failed ParsedResult values from exposing unvalidated raw payloads
  • attempt shutdown of every hub-owned runtime before reraising the first error

Why

The previous value-based merge logic silently ignored explicit inputs such as sdk_executions=1, failed typed results could retain an unchecked dict, and one close failure leaked later cached runtimes.

Root cause

AgentKit used ordinary default values as both API values and presence markers, copied failed result fields verbatim, and closed cached runtimes fail-fast.

Checks

  • 267 passed, 12 skipped
  • ruff check src tests
  • mypy

Stack

  1. This PR
  2. required vendor SDK option verification
  3. strict structured output
  4. domain invariants
  5. runtime support and readiness
  6. deadlines and cancellation
  7. events v1
  8. conformance and platform coverage
  9. SDK-evolution tooling extraction

@ebarti
ebarti marked this pull request as ready for review July 10, 2026 22:38
@ebarti
ebarti merged commit ee88c9a into main Jul 10, 2026
11 checks passed
@ebarti
ebarti deleted the agent/stack-01-core-correctness branch July 10, 2026 22:39
ebarti added a commit that referenced this pull request Jul 10, 2026
## What

- require permission, sandbox, tool-filter, and spend-cap options to be
explicit keyword parameters
- fail closed when SDK callables are uninspectable, positional-only, or
accept required options only through opaque **kwargs
- preserve best-effort forwarding for non-required compatibility options
- report failures against the correct public task field
- align adapter fakes with the locked SDK signatures

## Why

A callable that accepts **kwargs can silently discard an option while
appearing compatible. That is unsafe for permission posture and budget
caps.

## Root cause

The shared option filter treated variadic and uninspectable signatures
as proof that every required option would be honored.

## Checks

- 275 passed, 12 skipped
- 9 installed-SDK signature contract tests passed
- ruff check src tests
- mypy

## Stack

- Base: #41
- Next: #43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant