What’s New
v2.3.0 introduces the first substantial Symfony integration baseline for InstructorPHP. The monorepo now includes a first-partyCognesy\Instructor\Symfony\ bundle surface with
framework-owned configuration, service wiring, delivery seams, observability, and testing support.
This release also broadens Symfony 8 compatibility in the root package, tightens the Symfony-facing
logging path, and expands the framework documentation significantly.
Symfony Integration
First-party bundle surface in the monorepo
The main package now autoloadsCognesy\Instructor\Symfony\ and includes the initial Symfony
bundle/configuration baseline directly in the monorepo. The package now owns:
- one
instructorconfig root with explicit subtrees - container bindings for core runtime services
- framework-native wiring for inference, embeddings, and structured output
- AgentCtrl runtime seams for HTTP, CLI, and Messenger flows
- native-agent registry, schema, tool, capability, and session wiring
Delivery, progress, telemetry, and sessions
packages/symfony now includes explicit delivery seams for queued AgentCtrl prompts, queued
native-agent prompts, runtime observation forwarding, CLI observation formatting, progress updates,
and package-owned telemetry/exporter lifecycle wiring.
Session persistence is also now explicit under instructor.sessions, with built-in in-memory and
file-backed paths for native agents.
Testing and migration guidance
Symfony now ships a much broader test harness and documentation set, including quickstart, configuration, runtime surfaces, sessions, telemetry, logging, delivery, operations, testing, and migration guides. That gives Symfony users a clearer path for both greenfield adoption and migration from custom bundle glue.Logging And Observability
Symfony-facing logging ownership moved further toward the framework package in this release.packages/symfony now includes package-owned logging factory/wiring, while packages/logging
adds correlation enrichment that merges telemetry and runtime identifiers more consistently.
The legacy standalone Symfony logging bundle path remains present, but it is now documented as a
deprecated compatibility path in favor of instructor.logging and the first-party Symfony package.
Compatibility
Symfony 8 and DocBlock 6
The root package now allowsphpdocumentor/reflection-docblock:^5.6 || ^6.0.
This removes the Composer conflict that blocked Symfony 8 applications already pinned to
phpdocumentor/reflection-docblock:^6, which was the main compatibility issue reported after the
v2.2.0 release.
Documentation And QA
This release adds a large amount of framework documentation and also restores docs QA coverage that had regressed in several packages. That work is mostly invisible in runtime behavior, but it matters for release quality: the docs snippets now lint cleanly again across the release-notes/docs QA sweep.Upgrade Notes
- If you are integrating with Symfony, start from the new
packages/symfony/docs/guides and theinstructorconfig root instead of building custom container glue around lower-level packages. - If you depend on the legacy Symfony logging bundle wiring from
packages/logging, treat it as a compatibility path. The forward-looking integration surface is the Symfony package plusinstructor.logging. - If your Symfony 8 application already requires
phpdocumentor/reflection-docblock:^6, this release removes the root-package conflict and should install cleanly. - The Symfony integration now ships in the monorepo package. Dedicated split-package publication for
cognesy/instructor-symfonyfollows the normal split/bootstrap flow and may lag behind the monorepo release momentarily.