v1.0.3
v1.0.3: comprehensive response to two user-test reports.
Two independent users built systems on Active Graph v1.0.1 and
v1.0.2 and produced detailed friction reports. v1.0.3 addresses
four findings spanning API ergonomics, error UX, and a runtime
bug:
Finding 1: graph.objects() canonical form
The natural API form graph.objects(type="x") now exists. It
matches ctx.view.objects(type="x") for consistency. The previous
graph.query(object_type="x") is kept as a backward-compatible
alias. Documentation updated to recommend graph.objects().
Finding 2: output_schema strict validation
@llm_behavior(output_schema=...) now strict-validates at
decoration time. Passing a non-Pydantic-BaseModel (e.g., a JSON
schema dict) raises TypeError immediately with a code example
showing the correct form. Previously the validation failed
silently at LLM-call time via a behavior.failed event with an
unhelpful diagnostic. Dict-form schema support is filed as a v1.1
candidate.
Finding 3: behavior.failed user-facing signal
Behavior failures during a run now log at WARNING level with the
reason code and a More: URL pointing at the error reference page.
A new runtime.errors property exposes accumulated failures as
structured BehaviorFailure objects for programmatic inspection.
The underlying failures-as-events model from CONTRACT v0.6 #11
is unchanged; this adds user-facing surfaces to it.
Finding 4: tool-use multi-turn message construction (BUG)
The runtime's tool-use message history now includes tool_use
content blocks in assistant messages, matching Anthropic's API
specification. Previously, the framework appended only raw_text
to message history, omitting the tool_use blocks. The Vertex AI
proxy enforces the spec strictly and returned HTTP 400 on every
tool-using behavior. This fix is the precondition for any Anthropic
deployment that enforces strict message-shape validation. LLMMessage
gained a tool_calls field (non-breaking additive change).
CONTRACT v1.0.3 amendments document each decision. Five v1.1
candidates filed alongside the amendments (dict-form output_schema,
on_failure= callback, OpenAI tool-use translation, fire-once
aggregation triggers, pack-load cross-provider validation). A
contract-review work item after v1.0.3 will consolidate the v1.1
backlog.
See CHANGELOG.md for full notes.