fix(kanban): persist summary-only completion results - #70978
Open
trac3r00 wants to merge 1 commit into
Open
Conversation
Update dashboard integration expectations for the durable result contract. [bob]
trac3r00
force-pushed
the
fix/kanban-completion-delivery-t_343e914f
branch
from
July 24, 2026 20:54
dacac30 to
d889027
Compare
teknium1
reviewed
Jul 30, 2026
teknium1
left a comment
Contributor
There was a problem hiding this comment.
Thanks for isolating the summary-only completion case and adding both claimed-run and synthesized-run coverage.
Problems
- Current main deliberately separates the worker handoff from the legacy task-row result:
summaryis the run-level handoff, whileresultis an explicit legacy task-row log line (tools/kanban_tools.py:1561-1585;website/docs/user-guide/features/kanban.md:913-919). The new fallback changes that contract. - The claimed display/delivery gap is already handled on current main: dashboard API attaches
latest_summary(plugins/kanban/dashboard/plugin_api.py:456-467,:543-552), CLI shows it whenresultis empty (hermes_cli/kanban.py:1750-1760), and notifier delivery prefers the event summary (gateway/kanban_watchers.py:407-424). Commit3f972974133659a366f5d63b01423a4709c507b3added this path intentionally.
Suggested changes
- Please identify a current consumer that cannot use the run/event summary and add an end-to-end regression for that path. If the intended change is to make the two fields aliases, re-scope it as a contract change including tool-schema and documentation updates.
Automated hermes-sweeper review.
| # passed summary (the common run-protocol shape). Without this the task | ||
| # closes with result=NULL and the summary is only reachable via the run | ||
| # row — dashboard/notifier paths that read tasks.result show nothing. | ||
| if result is None and summary is not None: |
Contributor
There was a problem hiding this comment.
summary and result are intentionally distinct on current main: the tool schema directs workers to use the run-level summary, while result is a legacy task-row field. Dashboard, CLI, and notifier consumers already surface the summary. Please retain that distinction unless this is explicitly re-scoped as a cross-surface contract change.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
[Bob]
Summary
summaryintotasks.resultwhen callers omitresultresultwhen both fields are suppliedRoot cause
complete_task()already copiedresultintotask_runs.summarywhen callers omittedsummary, but not the reverse. Dispatcher workers commonly complete through the run protocol with only a richsummary, so the run row closed successfully whiletasks.resultremainedNULL. Dashboards and delivery paths that read the task row then had no durable completion text.Duplicate search
The notification-inheritance half of the original local fix was removed because open PR #57365 already covers parent-to-child subscription inheritance more comprehensively across
create_task,link_tasks, and triage decomposition. This PR keeps only the distinct summary-to-result persistence bug. Merged PR #20195 addresses dashboard-entered summaries and recovery editing, not summary-only worker completions.RED → GREEN
On
origin/main, the regression cases produced:The failures were the claimed-run and synthesized-run paths leaving
task.resultasNone.After the fix:
Verification
Independent fail-closed review passed with no security concerns or logic errors.
[bob]