showcase · tier 2 · builders
Release radar
Reads your dependencies’ release feeds and diffs against last run, so only new ships reach you.
The whole file
6 tasks · 3 waves · the plan falls out of the bindings, nothing is scheduled by hand.
t2-release-radar.nika.yamlsource
nika: v1workflow: id: release-radar description: "dependency release feed → diff vs last run → only the NEW ships"model: ollama/qwen3.5:4b # local · zero key · swap for any provider in the catalogvars: releases_feed: "https://github.com/tokio-rs/tokio/releases.atom" state_path: "./state/release-radar.json"tasks: # First run has no state file · recover to an empty list. no_state: invoke: tool: "nika:jq" args: { input: [], expression: "." } previous: invoke: tool: "nika:read" args: { path: "${{ vars.state_path }}" } on_error: on_codes: [NIKA-BUILTIN-READ-001] # not-found ONLY · a permission error still fails loudly recover: ${{ tasks.no_state.output }} feed: invoke: tool: "nika:fetch" args: url: "${{ vars.releases_feed }}" mode: feed output: entries: "[.items[] | {title, url, published}]" fresh: with: previous: ${{ tasks.previous.output }} entries: ${{ tasks.feed.entries }} invoke: tool: "nika:json_diff" args: before: "${{ with.previous }}" after: "${{ with.entries }}" digest: with: fresh: ${{ tasks.fresh.output }} entries: ${{ tasks.feed.entries }} when: ${{ size(with.fresh) > 0 }} infer: prompt: | New releases appeared on our dependency radar (RFC 6902 patch against last run) · ${{ with.fresh }} Full current feed · ${{ with.entries }} Write 3 bullets · what shipped · whether it looks breaking · what to check in our code. save_state: with: entries: ${{ tasks.feed.entries }} invoke: tool: "nika:write" args: path: "${{ vars.state_path }}" content: "${{ with.entries }}" create_dirs: true overwrite: trueoutputs: new_entries: value: ${{ tasks.fresh.output }} description: "RFC 6902 ops · empty = nothing new since last run"nika inspect · engine 0.105.0 · vendored graph, never re-derived
6 declared edges · 3 waves · the plan falls out of the bindings