Skip to content

chore(release): 0.56.0 — maintenance re-release (redo after #389 merge collision)#399

Merged
padak merged 1 commit into
mainfrom
chore/release-0.56.0-redo
Jun 4, 2026
Merged

chore(release): 0.56.0 — maintenance re-release (redo after #389 merge collision)#399
padak merged 1 commit into
mainfrom
chore/release-0.56.0-redo

Conversation

@padak

@padak padak commented Jun 4, 2026

Copy link
Copy Markdown
Member

Re-do of #389

#389 was marked MERGED but its content never landed on main — it collided with #391 (test e2e) merging at the same time, and #391's content won the merge commit. origin/main is still 0.55.0 with no 0.56.0 changelog entry. This re-applies the lost fc2efe6 (cherry-picked clean onto current main).

Why 0.56.0 (unchanged from #389)

0.55.0 lived in main across three builds under one version number, so users on an interim 0.55.0 build never get the reference-data commands via kbagent update (auto-update is version-only: 0.55.0 >= 0.55.0 → skips reinstall). Bump to 0.56.0 gives a strictly-greater /releases/latest target.

Scope

  • No code changes — version + changelog only (make version-sync propagated plugin.json/marketplace.json/uv.lock).
  • reference-data stays under 0.55.0; since v0.55.0 tags correct.
  • make check green (3843 passed).

⚠️ Please merge this one solo (no other PR merging simultaneously) to avoid repeating the squash collision.


Open in Devin Review

…livery

0.55.0 sat in main across three builds (#383, #379, #388) under one
version number, so users on an interim 0.55.0 build never received the
reference-data commands via `kbagent update` (the auto-update check is
version-only: 0.55.0 >= 0.55.0 reads as up-to-date). Bump to 0.56.0 gives
auto-update a strictly-greater target. No code changes; reference-data
stays recorded under 0.55.0 and its since-tags remain correct.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

@padak padak merged commit 0aa64f9 into main Jun 4, 2026
5 checks passed
@padak padak deleted the chore/release-0.56.0-redo branch June 4, 2026 20:28
padak added a commit that referenced this pull request Jun 4, 2026
main shipped v0.56.0 as a maintenance re-release (#399) — claiming the 0.56.0 version, git tag, and GitHub Latest release — to push the 0.55.0 reference-data commands through the auto-update version gate. The conditional-flows work therefore moves to 0.57.0.

Bumps pyproject + plugin.json + marketplace.json + uv.lock, and rewrites every (since v0.56.0) doc tag to v0.57.0 across CLAUDE.md, README, keboola-expert.md, gotchas.md, commands-reference.md, flow/schedule workflows, AGENT_CONTEXT, and code comments. The changelog 0.57.0 key carries the conditional-flows entry; the 0.56.0 maintenance entry is preserved.
padak added a commit that referenced this pull request Jun 4, 2026
* feat(flow)!: conditional flows support, drop orchestrator (0.56.0)

--component-id removed from all flow subcommands and the /flows REST
surface; orchestrator configs dropped from flow list (legacy count
warning). Payload validation runs against the live conditional-flow JSON
Schema fetched at runtime from the AI Service component registry (never
bundled), with semantic-only graceful degradation when the fetch fails.
New flow validate [--project] and flow schema --full. Detail rendering
rewritten for conditional flows. INVALID_FLOW_DAG renamed to
INVALID_FLOW_DEFINITION. Docs and plugin surfaces synced.

* fix(flow): address PR review findings

- add POST /flows/validate and GET /flows/{project}/schema REST routes
  to keep the 1:1 CLI-to-REST parity for the new flow commands; routes
  are declared before the path-param routes so literal segments win
- add router call tests for both endpoints (incl. route-ordering guards
  and the fetch-failure degrade/502 paths)
- document why the broad except in _fetch_flow_schema is intentional
  (httpx errors do not subclass OSError; any failure must degrade)
- use ErrorCode.NOT_FOUND enum instead of raw string in flow_service
- hoist deferred json/rich.syntax imports to module top in commands/flow.py
- schedule-workflow.md: switch example target to keboola.flow and note
  legacy orchestrator schedules still appear in schedule list

* refactor(flow): hoist flow_validation import to module top

Follow-up to the review-fix commit: the deferred import inside
flow_validate() was the last remaining one; flow_validation is pure
(stdlib + jsonschema), so module-level import is circular-import safe.

* fix(tests): make parallel list_jobs asserts thread-safe

TestPullJobsFallback asserted MagicMock.call_count on a path where
_fetch_jobs_per_config calls the mock from a ThreadPoolExecutor.
MagicMock.call_count is incremented without a lock (read-modify-write),
so concurrent calls lose updates -- reproducible locally with a lowered
sys.setswitchinterval (30/30 runs lose increments) and surfaced in CI
where coverage tracing widens the race window (observed 174 != 200).

call_args_list.append IS atomic under the GIL, so assert on
len(call_args_list) instead; the 200-config test additionally checks
the distinct (component_id, config_id) pairs to guarantee exactly-once
fetching. Production code is unaffected (results were already collected
under an explicit lock).

* fix(flow): use product names in legacy-flows warning

'3 legacy keboola.orchestrator flow(s) ... migrate to keboola.flow' read
like internal component IDs; reword to product terminology: 'Legacy
Flows were dropped in 0.56.0; migrate them to Conditional Flows'.

* chore(release): retarget conditional flows to 0.57.0

main shipped v0.56.0 as a maintenance re-release (#399) — claiming the 0.56.0 version, git tag, and GitHub Latest release — to push the 0.55.0 reference-data commands through the auto-update version gate. The conditional-flows work therefore moves to 0.57.0.

Bumps pyproject + plugin.json + marketplace.json + uv.lock, and rewrites every (since v0.56.0) doc tag to v0.57.0 across CLAUDE.md, README, keboola-expert.md, gotchas.md, commands-reference.md, flow/schedule workflows, AGENT_CONTEXT, and code comments. The changelog 0.57.0 key carries the conditional-flows entry; the 0.56.0 maintenance entry is preserved.

* refactor(flow): FlowSchemaFetch dataclass + close two test gaps

Addresses self-review findings on the conditional-flows work:

- Replace the (schema, reason) tuple from FlowService._fetch_flow_schema / fetch_flow_schema with a frozen FlowSchemaFetch dataclass (CONTRIBUTING.md forbids new semantically-distinct tuple returns). Updates all six src call sites (flow_service, flows router, flow command) and the tuple mocks in test_flow_service / test_flow_cli / test_server_router_calls.

- Add a structural integer-id rejection test (test_flow_validation): an integer id is rejected only when the live schema is supplied; without a schema the semantic checks coerce it and stay silent.

- Add router-level tests that POST/PATCH /flows/{project} call create_flow / update_flow WITHOUT component_id, proving the orchestrator-drop is enforced at the REST layer (FlowCreate/FlowUpdate silently drop a legacy component_id).

* fix(flow): address fresh review findings (stale doc code, dead helper)

- docs/build-your-own-client.md: INVALID_FLOW_DAG -> INVALID_FLOW_DEFINITION. The error code was renamed in this PR; the client-docs example still referenced the removed name (docs/ was outside the original rename sweep, which only grepped src/ + tests/).

- Remove the dead _count_phases_tasks helper from flow_service.py: the conditional-flows rewrite orphaned it (zero src callers, exercised only by an isolated test) and it carried a banned tuple[int, int] return. Drops its two tests too.

---------

Co-authored-by: Petr <petr@keboola.com>
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