Repository navigation
Papercuts: agent friction journal + Kaizen tab - #689
Merged
Merged
Conversation
Papercuts are small, concrete friction observations agents log mid-task (ADR 0089 tool protocol will feed them). Table stamps session/task/ profile/user context plus lifecycle (fix_task_id, archived_at). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…structions Registers a handled/sync 'papercut' builtin (no capability gate, so compileToolManifest ships it to every profile) whose handler persists the observation stamped with ToolContext. Every session's ENGRAM_APPEND_SYSTEM_PROMPT now carries short papercut guidance, merged AFTER extraHarnessEnv so Slack's append survives alongside it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New engram.app.v1 PapercutService + Papercut message (reuses ProfileSnapshot for display). TS bindings regenerated via buf for cli, orchestrator, and web. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…x-task Native ConnectRPC service over the papercuts store. StartFixTask composes a canned fix prompt from the papercut, boots a task in the papercut's profile via createTaskWithSession (owned by the caller), and links fix_task_id — the papercut stays open until archived by a human. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New top-rail Kaizen hat with a Papercuts subnav: card rows with category/severity/tags, profile chip, origin-session link, and a fix-task badge; archive/unarchive with confirm, show-archived toggle, and one-click 'Start fix task' that boots a session in the papercut's profile and navigates to it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…etails Review follow-ups: tool handlers run under at-least-once DBOS steps, so the papercut insert now keys on (session_id, tool_call_id) with a unique index + conflict-tolerant insert returning the existing id on replay (migration 0022). StartFixTask is removed end to end (proto, service, store, web) in favor of a 'Copy papercut details' row action — starting fix work is the human's call from the composer. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest Buf updates on your PR. Results from workflow CI / buf (pull_request).
|
nikhilunni
approved these changes
Jul 16, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Jul 16, 2026
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.
What
A first-class papercuts concept (inspired by papercuts.claxx.gg): agents log the small frictions they hit mid-task, and humans triage them in a new Kaizen tab.
papercuttool — registered as an ADR 0089 builtin with no capability gate, so every session's manifest carries it. Handler persists summary/description/category/severity/tags stamped with session/task/profile/user from ToolContext.ENGRAM_APPEND_SYSTEM_PROMPTnow includes short papercut instructions (log-and-continue, no duplicates, no secrets), merged afterextraHarnessEnvso Slack's append coexists.PapercutService(orchestrator-native ConnectRPC): ListPapercuts / ArchivePapercut / UnarchivePapercut.(session_id, tool_call_id)(DBOS steps are at-least-once); replays return the original row's id.Deliberate scope cuts
Validation
papercut.protois app-contract-only, not inengram-protocol's build list).🤖 Generated with Claude Code