Skip to content

Admit only handed-off work in the summary's Unfinished section - #1272

Merged
realtonyyoung merged 1 commit into
mainfrom
tonyyoung/ai-3433-loose-ends-handed-off-only
Oct 1, 2026
Merged

realtonyyoung merged 1 commit into
mainfrom
tonyyoung/ai-3433-loose-ends-handed-off-only

Conversation

@realtonyyoung

@realtonyyoung realtonyyoung commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #1273 AI-3433

What & why

The summary prompt's Unfinished section let in the session's own next steps, risks and accepted non-goals, and other people's tasks, which then surfaced as loose ends. It now admits only work handed off beyond the session that its owner still has to do, each item naming its subject, and gains the "do not invent work" rule the server's copy already had.

Where to look

The server keeps a hand-synced copy of this prompt; kurrent-io/kcap-server#2205 changes it identically.

🤖 Generated with Claude Code

@linear-code

linear-code Bot commented Oct 1, 2026

Copy link
Copy Markdown

AI-3433

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Restrict summary loose ends to evidenced, owner-held handoffs

🐞 Bug fix 🕐 Less than 10 minutes

Grey Divider

AI Description

• Limits Unfinished items to work handed off beyond the session that its owner still owes.
• Requires each item to name its subject and excludes session steps, risks, others’ work, and
 completed work.
• Prohibits inventing work absent from the transcript.
Diagram

graph TD
  Recap["Session recap"] --> Prompt["Summary prompt"] --> Gate{"Owned handoff evidenced?"} -->|Yes| Unfinished["Unfinished item"]
  Gate -->|No| Omit["Omit item"]
  Gate -->|Risk| Risks["Risks section"]
Loading
High-Level Assessment

Refining the existing prompt is appropriate: the issue is which transcript facts the summarizer includes, and the CLI already loads this resource for summary generation. No additional processing component is warranted.

Files changed (1) +10 / -2

Bug fix (1) +10 / -2
prompt-whats-done.txtConstrain Unfinished to evidenced, owner-held handoffs +10/-2

Constrain Unfinished to evidenced, owner-held handoffs

• The prompt now requires standalone Unfinished actions for work handed off beyond the session and still owed by its owner. It excludes imminent session steps, risks, others’ assignments, and completed work, and forbids inventing work not evidenced in the transcript.

src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt

@qodo-code-review

qodo-code-review Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)

Grey Divider


Action required

1. Server summaries admit stray work ⊘ Outdated
Description
The CLI changes the Unfinished prompt to accept only handed-off work owned by the session owner,
while kcap-server still embeds the previous broad rule that admits any remaining work. When
summaries are generated through kcap-server, its WhatsDoneContextBuilder loads that stale embedded
prompt, so server consumers continue receiving loose ends that the CLI now excludes.
Code

src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[R22-29]

+**Unfinished:** Work handed off beyond this session that the session's owner still has to do —
+one bullet per item, phrased as the action left (what to do, not what happened). Each bullet
+must stand on its own: name its subject (the issue, PR, file or feature) so it reads correctly
+to someone who never saw this session. Leave out:
+- steps the session itself was about to take (running tests, committing, pushing, opening the PR)
+- risks, caveats and accepted non-goals — those belong under Risks
+- work owned by or assigned to someone else
+- anything already done
Relevance

●●● Strong

The PR explicitly claims a hand-synchronized server copy, making the stale cross-repository prompt a
concrete correctness gap.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The PR replaces the CLI's broad unfinished-work instruction with restrictions to handed-off,
owner-owned work and adds a no-invention rule. The related server repository explicitly says this
prompt is kept in sync with the CLI and loads the embedded copy for summary generation, but its copy
still contains the old broad instruction and lacks the new restrictions.

kcap-cli -> kcap-server
src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-29]
External repo: kurrent-io/kcap-server, src/Capacitor.Server.Services/Resources/WhatsDone/prompt-whats-done.txt [1-31]
External repo: kurrent-io/kcap-server, src/Capacitor.Server.Services/Sessions/WhatsDone/WhatsDoneContextBuilder.cs [11]
External repo: kurrent-io/kcap-server, src/Capacitor.Server.Services/Capacitor.Server.Services.csproj [56]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

Issue description
The CLI prompt and kcap-server's hand-synchronized embedded prompt now diverge. Server-generated summaries continue applying the old Unfinished-section rules and can include session-only next steps, risks, accepted non-goals, other people's work, or completed work.

Fix Focus Areas
- src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-29]
- src/Capacitor.Server.Services/Resources/WhatsDone/prompt-whats-done.txt[9-31]

Recommended Fix
Apply the same Unfinished-section restrictions and no-invention rule to kcap-server's prompt-whats-done.txt, preserving its server-specific preamble and separately appended classification tail. Coordinate release or deployment of both repositories so CLI- and server-generated summaries use the same contract.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. The PR title exposes an issue identifier ⊘ Outdated
Description
The PR title starts with [AI-3433], which is an explicit Linear-style issue reference. This
violates the title format requirement even though the remaining wording is imperative and concise.
Code

src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[R22-24]

+**Unfinished:** Work handed off beyond this session that the session's owner still has to do —
+one bullet per item, phrased as the action left (what to do, not what happened). Each bullet
+must stand on its own: name its subject (the issue, PR, file or feature) so it reads correctly
Relevance

●●● Strong

Recent repository precedents accept removal of Linear identifiers from repository-facing content.

PR-#344
PR-#526

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The supplied PR title contains [AI-3433], while the changed prompt establishes the PR's
substantive scope but does not alter the title metadata.

Rule 2897978: Format PR titles as imperative commit subjects without explicit issue references
src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-24]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The PR title contains the Linear issue identifier `[AI-3433]`, but PR titles must be imperative subjects without explicit issue references.

## Fix Focus Areas
- src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-24]

## Recommended Fix
Rename the PR title to the imperative subject without the `[AI-3433]` prefix.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. The PR lacks the required issue references ⊘ Outdated
Description
The PR description contains AI-3433 only in prose and has no single reference line containing a
GitHub closing keyword plus issue number. Reviewers and automation cannot verify the required
GitHub-to-Linear linkage from the description.
Code

src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[R25-29]

+to someone who never saw this session. Leave out:
+- steps the session itself was about to take (running tests, committing, pushing, opening the PR)
+- risks, caveats and accepted non-goals — those belong under Risks
+- work owned by or assigned to someone else
+- anything already done
Relevance

●●● Strong

The repository consistently accepts compliance findings requiring removal of Linear-only references
and durable issue linkage.

PR-#344
PR-#526

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The provided PR metadata shows the title `[AI-3433] Admit only handed-off work in the summary's
Unfinished section and a description without any Closes, Fixes, or Resolves #<number>`
reference line.

Rule 2897991: PR description must contain both GitHub and Linear issue references; PR title must not contain issue IDs
src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[25-29]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The PR description does not contain one line with both a GitHub closing reference and the Linear issue key, and the title also contains the Linear key.

## Fix Focus Areas
- src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[25-29]

## Recommended Fix
Remove issue identifiers from the title and add a dedicated description line such as `Closes #123 AI-3433`, using the actual GitHub issue number.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


4. The merge subject lacks a GitHub issue reference ⊘ Outdated
Description
The commit subject is [AI-3433] Admit only handed-off work in the summary's Unfinished section,
which uses a bracketed Linear key instead of ending with (#<digits>). The subject therefore fails
the required single-clause merge format despite being under the length limit.
Code

src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[R22-23]

+**Unfinished:** Work handed off beyond this session that the session's owner still has to do —
+one bullet per item, phrased as the action left (what to do, not what happened). Each bullet
Relevance

●●● Strong

Title and subject formatting rules are explicitly enforced; recent identifier-format findings were
accepted.

PR-#344
PR-#526

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The supplied commit subject begins with [AI-3433] and has no trailing (#digits) reference.

Rule 2897961: Enforce single-clause imperative commit subject with GitHub issue reference and 80-char limit
src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-23]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The merge subject does not end with a GitHub issue reference in the required `(#digits)` form and includes an extra bracketed Linear identifier.

## Fix Focus Areas
- src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-23]

## Recommended Fix
Use one imperative clause followed by exactly one GitHub reference, for example `Admit only handed-off work in summaries (#1234)`, with the actual issue number.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View medium (1)
5. The commit body adds no durable implementation context ⊘ Outdated
Description
The commit body only says the change mirrors the server prompt and identifies the co-author, without
documenting a non-obvious constraint or subtle behavioral consequence. The body should be omitted or
replaced with concise context that future maintainers cannot infer from the diff and description.
Code

src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[R22-29]

+**Unfinished:** Work handed off beyond this session that the session's owner still has to do —
+one bullet per item, phrased as the action left (what to do, not what happened). Each bullet
+must stand on its own: name its subject (the issue, PR, file or feature) so it reads correctly
+to someone who never saw this session. Leave out:
+- steps the session itself was about to take (running tests, committing, pushing, opening the PR)
+- risks, caveats and accepted non-goals — those belong under Risks
+- work owned by or assigned to someone else
+- anything already done
Relevance

●● Moderate

Commit-body guidance is subjective, with no closely matching precedent for rejecting this concise
explanatory body.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The supplied commit body is `Mirrors the server's prompt, which the server copy is kept in sync with
by hand.` followed by co-author metadata; it does not describe a constraint or subtle consequence.

Rule 2897971: Limit and focus commit message bodies on non-obvious constraints or consequences
src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-29]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The commit body contains process/context narration but no non-obvious implementation constraint or consequence.

## Fix Focus Areas
- src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-29]

## Recommended Fix
Remove the body if no durable context is needed, or rewrite it to explain a subtle behavioral constraint that is not evident from the prompt diff.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context sources
✅ Compliance rules (platform): 64 rules
✅ Cross-repo context — repo relationships
  Explored: repo: kurrent-io/kcap-server (branch: tonyyoung/ai-3433-loose-ends-admit-only-handed-off-work-not-the-sessions-next, sha: 95777aa7) — View relationship
Review mode: 🚀 Fast: This is a small, localized prompt-text behavior change with no security, API, schema, or broad runtime impact.

Grey Divider

Tip of the day
💡 Did you know, you can keep summaries lean with Findings visible per group, which tucks the rest behind a View link

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Previous reviews

Review updated until commit e29b11c

Results up to commit 31cb0ac 🚀 Fast


🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)


Action required
1. Server summaries admit stray work ⊘ Outdated
Description
The CLI changes the Unfinished prompt to accept only handed-off work owned by the session owner,
while kcap-server still embeds the previous broad rule that admits any remaining work. When
summaries are generated through kcap-server, its WhatsDoneContextBuilder loads that stale embedded
prompt, so server consumers continue receiving loose ends that the CLI now excludes.
Code

src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[R22-29]

+**Unfinished:** Work handed off beyond this session that the session's owner still has to do —
+one bullet per item, phrased as the action left (what to do, not what happened). Each bullet
+must stand on its own: name its subject (the issue, PR, file or feature) so it reads correctly
+to someone who never saw this session. Leave out:
+- steps the session itself was about to take (running tests, committing, pushing, opening the PR)
+- risks, caveats and accepted non-goals — those belong under Risks
+- work owned by or assigned to someone else
+- anything already done
Relevance

●●● Strong

The PR explicitly claims a hand-synchronized server copy, making the stale cross-repository prompt a
concrete correctness gap.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The PR replaces the CLI's broad unfinished-work instruction with restrictions to handed-off,
owner-owned work and adds a no-invention rule. The related server repository explicitly says this
prompt is kept in sync with the CLI and loads the embedded copy for summary generation, but its copy
still contains the old broad instruction and lacks the new restrictions.

kcap-cli -> kcap-server
src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-29]
External repo: kurrent-io/kcap-server, src/Capacitor.Server.Services/Resources/WhatsDone/prompt-whats-done.txt [1-31]
External repo: kurrent-io/kcap-server, src/Capacitor.Server.Services/Sessions/WhatsDone/WhatsDoneContextBuilder.cs [11]
External repo: kurrent-io/kcap-server, src/Capacitor.Server.Services/Capacitor.Server.Services.csproj [56]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

Issue description
The CLI prompt and kcap-server's hand-synchronized embedded prompt now diverge. Server-generated summaries continue applying the old Unfinished-section rules and can include session-only next steps, risks, accepted non-goals, other people's work, or completed work.

Fix Focus Areas
- src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-29]
- src/Capacitor.Server.Services/Resources/WhatsDone/prompt-whats-done.txt[9-31]

Recommended Fix
Apply the same Unfinished-section restrictions and no-invention rule to kcap-server's prompt-whats-done.txt, preserving its server-specific preamble and separately appended classification tail. Coordinate release or deployment of both repositories so CLI- and server-generated summaries use the same contract.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended
2. The PR title exposes an issue identifier ⊘ Outdated
Description
The PR title starts with [AI-3433], which is an explicit Linear-style issue reference. This
violates the title format requirement even though the remaining wording is imperative and concise.
Code

src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[R22-24]

+**Unfinished:** Work handed off beyond this session that the session's owner still has to do —
+one bullet per item, phrased as the action left (what to do, not what happened). Each bullet
+must stand on its own: name its subject (the issue, PR, file or feature) so it reads correctly
Relevance

●●● Strong

Recent repository precedents accept removal of Linear identifiers from repository-facing content.

PR-#344
PR-#526

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The supplied PR title contains [AI-3433], while the changed prompt establishes the PR's
substantive scope but does not alter the title metadata.

Rule 2897978: Format PR titles as imperative commit subjects without explicit issue references
src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-24]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The PR title contains the Linear issue identifier `[AI-3433]`, but PR titles must be imperative subjects without explicit issue references.

## Fix Focus Areas
- src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-24]

## Recommended Fix
Rename the PR title to the imperative subject without the `[AI-3433]` prefix.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. The PR lacks the required issue references ⊘ Outdated
Description
The PR description contains AI-3433 only in prose and has no single reference line containing a
GitHub closing keyword plus issue number. Reviewers and automation cannot verify the required
GitHub-to-Linear linkage from the description.
Code

src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[R25-29]

+to someone who never saw this session. Leave out:
+- steps the session itself was about to take (running tests, committing, pushing, opening the PR)
+- risks, caveats and accepted non-goals — those belong under Risks
+- work owned by or assigned to someone else
+- anything already done
Relevance

●●● Strong

The repository consistently accepts compliance findings requiring removal of Linear-only references
and durable issue linkage.

PR-#344
PR-#526

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The provided PR metadata shows the title `[AI-3433] Admit only handed-off work in the summary's
Unfinished section and a description without any Closes, Fixes, or Resolves #<number>`
reference line.

Rule 2897991: PR description must contain both GitHub and Linear issue references; PR title must not contain issue IDs
src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[25-29]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The PR description does not contain one line with both a GitHub closing reference and the Linear issue key, and the title also contains the Linear key.

## Fix Focus Areas
- src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[25-29]

## Recommended Fix
Remove issue identifiers from the title and add a dedicated description line such as `Closes #123 AI-3433`, using the actual GitHub issue number.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


4. The merge subject lacks a GitHub issue reference ⊘ Outdated
Description
The commit subject is [AI-3433] Admit only handed-off work in the summary's Unfinished section,
which uses a bracketed Linear key instead of ending with (#<digits>). The subject therefore fails
the required single-clause merge format despite being under the length limit.
Code

src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[R22-23]

+**Unfinished:** Work handed off beyond this session that the session's owner still has to do —
+one bullet per item, phrased as the action left (what to do, not what happened). Each bullet
Relevance

●●● Strong

Title and subject formatting rules are explicitly enforced; recent identifier-format findings were
accepted.

PR-#344
PR-#526

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The supplied commit subject begins with [AI-3433] and has no trailing (#digits) reference.

Rule 2897961: Enforce single-clause imperative commit subject with GitHub issue reference and 80-char limit
src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-23]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The merge subject does not end with a GitHub issue reference in the required `(#digits)` form and includes an extra bracketed Linear identifier.

## Fix Focus Areas
- src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-23]

## Recommended Fix
Use one imperative clause followed by exactly one GitHub reference, for example `Admit only handed-off work in summaries (#1234)`, with the actual issue number.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View medium (1)
5. The commit body adds no durable implementation context ⊘ Outdated
Description
The commit body only says the change mirrors the server prompt and identifies the co-author, without
documenting a non-obvious constraint or subtle behavioral consequence. The body should be omitted or
replaced with concise context that future maintainers cannot infer from the diff and description.
Code

src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[R22-29]

+**Unfinished:** Work handed off beyond this session that the session's owner still has to do —
+one bullet per item, phrased as the action left (what to do, not what happened). Each bullet
+must stand on its own: name its subject (the issue, PR, file or feature) so it reads correctly
+to someone who never saw this session. Leave out:
+- steps the session itself was about to take (running tests, committing, pushing, opening the PR)
+- risks, caveats and accepted non-goals — those belong under Risks
+- work owned by or assigned to someone else
+- anything already done
Relevance

●● Moderate

Commit-body guidance is subjective, with no closely matching precedent for rejecting this concise
explanatory body.

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The supplied commit body is `Mirrors the server's prompt, which the server copy is kept in sync with
by hand.` followed by co-author metadata; it does not describe a constraint or subtle consequence.

Rule 2897971: Limit and focus commit message bodies on non-obvious constraints or consequences
src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-29]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The commit body contains process/context narration but no non-obvious implementation constraint or consequence.

## Fix Focus Areas
- src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt[22-29]

## Recommended Fix
Remove the body if no durable context is needed, or rewrite it to explain a subtle behavioral constraint that is not evident from the prompt diff.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt
Comment thread src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt
Comment thread src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt
Comment thread src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt
Comment thread src/Capacitor.Cli.Core/Resources/prompt-whats-done.txt
The server keeps a hand-synced copy of this prompt; change both together.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@realtonyyoung
realtonyyoung force-pushed the tonyyoung/ai-3433-loose-ends-handed-off-only branch from 31cb0ac to e29b11c Compare October 1, 2026 20:11
@realtonyyoung realtonyyoung changed the title [AI-3433] Admit only handed-off work in the summary's Unfinished section Admit only handed-off work in the summary's Unfinished section Oct 1, 2026
@realtonyyoung

Copy link
Copy Markdown
Collaborator Author

/agentic_review

@qodo-code-review

Copy link
Copy Markdown

Code review by qodo was updated up to the latest commit e29b11c

@realtonyyoung
realtonyyoung merged commit 1a05c46 into main Oct 1, 2026
14 of 15 checks passed
@realtonyyoung
realtonyyoung deleted the tonyyoung/ai-3433-loose-ends-handed-off-only branch October 1, 2026 21:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Admit only handed-off work in the what's-done summary's Unfinished section

1 participant