whiteducksoftware / whiteducksoftware/flock

🧭 [SPEC] [DAPR] Dapr blackboard atomicity and concurrency hardening

Open
#415 0 comments 0 reactions 1 assignee View on GitHub

@tilman-sattler is already working on this.

Since Jul 17, 2026.

enhancement
Dominant language
Python
Stars
120
Forks
14
Avg merge
19h 32m
Merged PRs (30d)
8

Description

Why

PR #414 can ship an initial Dapr-backed blackboard store after the public API blockers are fixed, but the deeper distributed-write semantics need a separate hardening pass. Artifact/index atomicity, TTL exceptions, encrypted backend fallbacks, and ETag conflict retries should be explicit before users rely on Dapr as a shared blackboard backend.

Scope

  • Define a Dapr blackboard guarantee matrix for transactional, TTL, encrypted, and non-transactional modes.
  • Decide when artifact data and index updates can be committed in one execute_state_transaction.
  • Document and test the weaker TTL path where artifact metadata forces a separate save_state.
  • Implement ETag conflict retries by re-reading current state before retrying.
  • Add failure-injection tests for partial writes, transaction failures, ETag conflict success/exhaustion, and reconciliation behavior.
  • Update docs and examples so durability claims match implementation.

OpenSpec

  • Change: openspec/changes/harden-dapr-blackboard-atomicity/
  • Related initial PR: #414

Out of Scope

  • DaprStateSessionStore
  • Dapr Pub/Sub, workflows, actors, bindings, or service invocation
  • Broad replacement of the BlackboardStore contract

Acceptance Criteria

  • Dapr docs include a clear guarantee matrix.
  • Transactional no-TTL publish can commit artifact and indexes atomically, or the design documents why not.
  • TTL/encrypted/non-transactional paths have tested and documented reconciliation semantics.
  • ETag retry behavior is wired into real read-modify-write paths and tested for success and exhaustion.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.