Closed
Conversation
Highlights: - delete the existing store subscriber/notifier implementation from BaseStore - remove subscriber-related state and helper methods to create a clean slate for a new hook architecture - update store documentation to reflect the simplified store responsibilities
- add a greenfield Hooks API with typed lifecycle events and isolated callback dispatch - move runtime hook orchestration into an internal lifecycle layer instead of wiring public hooks directly in execution code - keep OpenTelemetry separate from hooks while emitting hook error spans and state-changed lifecycle events - update workflow, subflow, node, run-concurrent, and store execution paths to emit the new lifecycle events - remove the old telemetry hook_manager and hook_schema modules - restore richer public API docstrings and Sphinx-friendly parameter docs across the runtime surface - update docs and examples to demonstrate hook usage with separate hook wiring and logging examples - add regression coverage for hook ordering, unsubscribe behavior, state-changed payloads, terminal event timing, and hook failure isolation
- replace the old AGENTS.md with a repo-specific guide focused on authoring rules, separation of concerns, validation expectations, and core navigation links - add concise guidance for preserving public docstrings, keeping examples separated by concern, and treating telemetry as a first-class runtime concern - add a FUTURE RELEASE changelog entry summarizing the execution hardening, store hardening, run-concurrent cancellation behavior, ExecutionResult, and lifecycle hooks work - keep the changelog newest-first and focused on user-visible behavior and breaking changes rather than implementation detail
- derive lifecycle hook names directly from event class names - improve typed hook callback registration for state-carrying events - update base hook logging example to show hook names and direct state field access - keep hooks documentation on the dedicated hooks page instead of getting started - add hook-name assertions to the hook test suite - refresh the hardening plan to reflect completed and remaining work
- convert remaining mixed-style public docstrings to explicit reST/Sphinx formatting - preserve existing explanations, examples, and footgun guidance - fix the incorrect parameter documentation on Condition.evaluate() - remove ExecutionResult autodoc duplication warnings - normalize hook, graph, store, workflow, and telemetry docstring structure
- add a dedicated GRAPH_HARDENING.md for graph topology, validation, serialization, and rendering work - revise the root hardening plan to keep the graph section high-level and link to the dedicated plan - capture the agreed graph direction around source/sinks, ordered first-match traversal, and structural IDs
Deploying junjo-python-api with
|
| Latest commit: |
e33f21b
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://df823ba8.junjo-python-api.pages.dev |
| Branch Preview URL: | https://master.junjo-python-api.pages.dev |
Cache one subflow graph snapshot per serialization pass so subflow source and sink ids are internally consistent within a single payload. Add regression coverage for double subflow factory invocation, inconsistent subflow source/sink ids, and duplicate same-tail/head subflow edges being collapsed during serialization. Also make subflow edge ids collision-safe by including an ordinal, preserving multiple serialized edges between the same tail and head inside a subflow.
- replace Graph's singular sink API with explicit sinks=[...] terminal nodes - make workflow and subflow execution terminate on any declared sink and raise on non-sink dead ends - preserve ordered first-match edge traversal and cover it with dedicated runtime tests - update graph serialization to emit plural subflow sink ids and keep rendering/docs/examples aligned with the new API
- add typed graph exceptions for validation, serialization, compilation, and rendering failures - enforce Graph.validate() at workflow and subflow execution start, with validate_graph=False opt-out per run - add graph validation coverage for sink topology, reachable dead ends, unreachable sinks, and nested subflows - update graph docs and release notes to reflect runtime-enforced validation
- implement Mermaid rendering from CompiledGraph and keep DOT/Graphviz rendering fully compile-backed - make Graph definitions immutable after construction so compile caching cannot go stale after mutation - fix state-changed hook identity payloads so executable definition/name/span type/runtime/structural ids all describe the active executable consistently - strengthen structural/runtime identity propagation through workflow, node, run-concurrent, store, hooks, and lifecycle layers - align graph hardening docs, rendering docs, hook docs, and changelog with the completed graph hardening work - replace weak timing-based concurrency tests with explicit coordination where it materially improves reliability - rewrite concurrent workflow/subflow reuse tests to prove real per-run state isolation instead of merely asserting no exceptions - relax brittle compile-order assertions, remove redundant Mermaid exception coverage, and delete the stale legacy workflow test file
- mark graph hardening completed in the root hardening plan - remove the stale open graph phase from the main plan - delete the dedicated graph hardening plan document now that its work is done
- add library-health CI for ruff, pytest, ty, build, and twine check - gate PyPI publishing on validated distribution artifacts - remove dead graphviz helper code and simplify Graphviz docs around the real export path - move AI Studio migration notes out of public docs and keep _NestableWorkflow internal to imports while still linkable in generated API docs - align repo guidance, changelog, and hardening plan with the current greenfield runtime and tooling model
- replace standalone junjo.hook_error spans with junjo.hook_error events on the surrounding workflow, subflow, node, or run-concurrent span - dispatch terminal hooks before span close so terminal hook failures stay attached to the real execution span - update hook telemetry tests to prove the new timing and event model - keep public docs focused on user-facing hook behavior while tracking the telemetry change in the changelog
- replace core runtime stdout output with stdlib logging under the junjo logger hierarchy - keep library import silent by installing only a NullHandler at the package root - log propagated execution failures once at the owning workflow/subflow boundary instead of duplicating nested stack traces - add run-scoped correlation fields to runtime log records for workflow, node, and concurrent execution paths - enrich exporter flush/shutdown warnings with endpoint context for operational diagnosis - update the base example and OpenTelemetry docs to teach app-owned logging configuration - add regression tests for NullHandler setup, no direct runtime stdout, structured log correlation, and exporter warning logs
- restrict PyPI publishing to release publication from master and remove manual publish dispatch - add explicit RELEASE_POLICY.md and manual-only examples smoke workflow - retarget repo-owned GitHub links and CI branch filters to master - restructure FUTURE RELEASE changelog entries into library, telemetry, docs/examples, and tooling sections - mark the hardening plan complete now that phases A, B, and C are closed
- delete HARDENING_PLAN.md now that phases A, B, and C are complete - keep release policy and AI Studio migration notes as the remaining repo planning documents
Owner
Author
|
Closing this draft PR because master now contains the full workflow-hardening branch tip and is the default branch. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.