[PATCH 00/26] lucid: complete the dynamic-output callback plugin

Daniel Gomez <[email protected]> Tue, 19 May 2026 15:27:57 +0200
Newsgroups dev.linux.lists.kdevops
Message-ID <[email protected]>
This series brings the lucid Ansible callback plugin from a minimal
prototype to a feature-complete callback. It adds coverage of hooks
lucid did not implement (include/import, vars_prompt, async progress,
file diffs, per-item command logging for loops, exception tracebacks),
honors standard Ansible display options (display_*,
show_task_path_on_failure, result_format), and addresses concurrency
hazards in the dynamic display via task_lock snapshots and output_lock
serialization.

Lucid should now be ready to replace the default callback for any
kdevops invocation without losing information the default would have
surfaced. The series closes with unit tests for the callback plugin.

Signed-off-by: Daniel Gomez <[email protected]>
---
Daniel Gomez (26):
      lucid: drop task.args raw-template fallback
      lucid: skip command logging for skipped/unreachable
      lucid: show exception tracebacks on task failures
      lucid: freeze dynamic display on unreachable tasks
      lucid: show current play name in dynamic display
      lucid: defer play header until first task runs
      lucid: filter empty argspec validation tasks
      lucid: log per-item command and output for loops
      lucid: show failed loop items on screen
      lucid: use typing.List for Python 3.8 compat
      lucid: serialize display output with output_lock
      lucid: snapshot shared state under task_lock in display
      lucid: replace daemon thread with atexit cleanup
      lucid: add author metadata and doc fragments
      lucid: honor standard display_* options
      lucid: honor show_task_path_on_failure option
      lucid: strip internal keys from logged results
      lucid: render on-screen results via _dump_results
      lucid: render task diffs on --diff
      lucid: handle include/import task events
      lucid: handle notify and empty host sets
      lucid: report async task progress
      lucid: handle vars_prompt
      lucid: use Display.columns for terminal width
      lucid: emit section banners via Display.banner
      lucid: add unit tests for callback plugin

 callback_plugins/lucid.py            | 746 +++++++++++++++++++++++++++++------
 tests/__init__.py                    |   0
 tests/callback_plugins/__init__.py   |   0
 tests/callback_plugins/test_lucid.py | 386 ++++++++++++++++++
 4 files changed, 1004 insertions(+), 128 deletions(-)
---
base-commit: 1a61f43dc2bc2e019fc4a35d9673cfa31909272d
change-id: 20260518-b4-lucid-82556c126ac6

Best regards,
--  
Daniel Gomez <[email protected]>