feat(task-bridge): shared data contract for external task schedulers #72

Closed
pyr0ball wants to merge 0 commits from feat/66-task-bridge into main
Owner

Summary

  • New circuitforge_core.task_bridge module: ExternalTask (frozen dataclass, schema v1, validated kind/status) plus push_tasks() httpx wrapper POSTing {"tasks": [...]} with a bearer token.
  • Pilot consumer: Kiwi, pushing pantry expiry alerts into Focus Flow (AGPL-3.0, external project by Ashley Venn). Contract lives in cf-core (MIT) so AGPL and BSL code never share a process or artifact - see design spec circuitforge-plans/shared/superpowers/specs/2026-07-05-focus-flow-task-bridge-design.md.
  • kind is always "flexible" in v1 so no CF product can inject urgency into another product's UX.
  • No transport server, no auth/token generation, no product-specific behavior (diffing, callbacks, inventory updates) - those live entirely in Kiwi's own repo.
  • New task-bridge extra (httpx>=0.27). Docs page + mkdocs nav entry.

Closes #66

Test plan

  • pytest tests/test_task_bridge -v - 19/19 passed (schema/validation/serialization, no network) plus a contract test against a real local http.server standing in for Focus Flow's importer, verifying the client emits a conformant payload.
## Summary - New circuitforge_core.task_bridge module: ExternalTask (frozen dataclass, schema v1, validated kind/status) plus push_tasks() httpx wrapper POSTing {"tasks": [...]} with a bearer token. - Pilot consumer: Kiwi, pushing pantry expiry alerts into Focus Flow (AGPL-3.0, external project by Ashley Venn). Contract lives in cf-core (MIT) so AGPL and BSL code never share a process or artifact - see design spec circuitforge-plans/shared/superpowers/specs/2026-07-05-focus-flow-task-bridge-design.md. - kind is always "flexible" in v1 so no CF product can inject urgency into another product's UX. - No transport server, no auth/token generation, no product-specific behavior (diffing, callbacks, inventory updates) - those live entirely in Kiwi's own repo. - New task-bridge extra (httpx>=0.27). Docs page + mkdocs nav entry. Closes #66 ## Test plan - [x] pytest tests/test_task_bridge -v - 19/19 passed (schema/validation/serialization, no network) plus a contract test against a real local http.server standing in for Focus Flow's importer, verifying the client emits a conformant payload.
pyr0ball added 1 commit 2026-07-10 18:02:41 -07:00
feat(task-bridge): add shared data contract for external task schedulers
Some checks failed
CI / test (pull_request) Has been cancelled
e0d6fb78b4
New circuitforge_core.task_bridge module: ExternalTask (frozen dataclass,
schema v1) plus push_tasks() httpx wrapper. Pilot consumer is Kiwi, pushing
pantry expiry alerts into Focus Flow (AGPL-3.0, external project). The
contract lives in cf-core (MIT) so AGPL and BSL code never share a process
or artifact — each product implements its own exporter/receiver.

No transport server, no auth/token generation, no product-specific
behavior — pure data contract + reusable push helper, same spirit as the
existing sync and tasks modules.

Bump to 0.22.0.

Closes: #66
Author
Owner

Merged into main via the freeze/0.22.0 integration branch (fast-forward) and released as v0.22.0: https://git.opensourcesolarpunk.com/Circuit-Forge/circuitforge-core/releases/tag/v0.22.0. Closing since the commits are already on main.

Merged into main via the freeze/0.22.0 integration branch (fast-forward) and released as v0.22.0: https://git.opensourcesolarpunk.com/Circuit-Forge/circuitforge-core/releases/tag/v0.22.0. Closing since the commits are already on main.
pyr0ball closed this pull request 2026-07-10 19:20:24 -07:00
Some checks failed
CI / test (pull_request) Has been cancelled

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/circuitforge-core#72
No description provided.