Payload
{
"action": "edited",
"changes": {
"body": {
"from": "\n<!--\n 0 failure: \n 0 warning: \n 1 messages\n 2 markdown notices\n DangerID: danger-id-Danger;\n-->\n\n\n\n<table>\n <thead>\n <tr>\n <th width=\"50\"></th>\n <th width=\"100%\" data-danger-table=\"true\">Messages</th>\n </tr>\n </thead>\n <tbody><tr>\n <td>:book:</td>\n <td>No docs update needed — acknowledged.</td>\n </tr>\n </tbody>\n</table>\n\n## :clipboard: PR Overview\n\n| | |\n| --- | --- |\n| Lines changed | **380** (+331 / -49) |\n| Files | 0 added, 7 modified, 0 deleted |\n| Draft / WIP | no |\n| Has Test Plan | yes |\n| No Test Plan Needed | no |\n| New UI components | no |\n| New Storybook stories | no |\n| New Rust modules | no |\n| New TS source files | no |\n| New tests | no |\n| package.json touched | no |\n| Cargo.toml touched | no |\n| Infra / CI touched | no |\n\n\n## :microscope: Coverage\n\n| Report | Lines | Statements | Functions | Branches |\n| --- | --- | --- | --- | --- |\n| `apps/native/coverage/coverage-summary.json` | 24.9% | 25.1% | 23.6% | 16.8% |\n\n<p align=\"right\">\n Generated by :no_entry_sign: <a href=\"https://danger.systems/js\">dangerJS</a> against 10e672133e864bf7a8c57f20e3e7acb9d610446e\n</p>\n"
}
},
"issue": {
"url": "https://api.github.com/repos/darkmatter/nixmac/issues/335",
"repository_url": "https://api.github.com/repos/darkmatter/nixmac",
"labels_url": "https://api.github.com/repos/darkmatter/nixmac/issues/335/labels{/name}",
"comments_url": "https://api.github.com/repos/darkmatter/nixmac/issues/335/comments",
"events_url": "https://api.github.com/repos/darkmatter/nixmac/issues/335/events",
"html_url": "https://github.com/darkmatter/nixmac/pull/335",
"id": 4609663767,
"node_id": "PR_kwDOSB6EzM7jvHos",
"number": 335,
"title": "refactor: use the new `whole_diff` summarization at the end of the evolution lifecycle",
"user": {
"login": "scottmcmaster",
"id": 3137688,
"node_id": "MDQ6VXNlcjMxMzc2ODg=",
"avatar_url": "https://avatars.githubusercontent.com/u/3137688?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/scottmcmaster",
"html_url": "https://github.com/scottmcmaster",
"followers_url": "https://api.github.com/users/scottmcmaster/followers",
"following_url": "https://api.github.com/users/scottmcmaster/following{/other_user}",
"gists_url": "https://api.github.com/users/scottmcmaster/gists{/gist_id}",
"starred_url": "https://api.github.com/users/scottmcmaster/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/scottmcmaster/subscriptions",
"organizations_url": "https://api.github.com/users/scottmcmaster/orgs",
"repos_url": "https://api.github.com/users/scottmcmaster/repos",
"events_url": "https://api.github.com/users/scottmcmaster/events{/privacy}",
"received_events_url": "https://api.github.com/users/scottmcmaster/received_events",
"type": "User",
"user_view_type": "public",
"site_admin": false
},
"labels": [],
"state": "open",
"locked": false,
"assignees": [],
"milestone": null,
"comments": 2,
"created_at": "2026-06-08T02:50:19Z",
"updated_at": "2026-06-08T19:54:21Z",
"closed_at": null,
"assignee": null,
"author_association": "COLLABORATOR",
"issue_field_values": [],
"type": null,
"active_lock_reason": null,
"draft": false,
"pull_request": {
"url": "https://api.github.com/repos/darkmatter/nixmac/pulls/335",
"html_url": "https://github.com/darkmatter/nixmac/pull/335",
"diff_url": "https://github.com/darkmatter/nixmac/pull/335.diff",
"patch_url": "https://github.com/darkmatter/nixmac/pull/335.patch",
"merged_at": null
},
"body": "## Summary\n\nLeverage `whole_diff` pipeline at the end of the evolution lifecycle.\n\nWe already have (due to very recent changs) a correct lower-level behavior for this: `whole_diff::analyze` makes one LLM call for a list of changes, and `store_whole_diff_changeset` stores that as one generated message / changeset. But for evolution in particular, the problem was the caller boundary. Evolution “analyzing” (that really slow thing that happens after a successful build check) was still mostly driven from the HEAD -> worktree / semantic-map (complex) code path, so in a multi-step evolution we would show an overall cumulative diff on the review page while the generated summary was not explicitly scoped to that same cumulative evolution. **NOTE** I would argue that this results in a pretty confusing UI, but FYI the result is behavior change in multi-step evolutions.\n\nAlso adds `summarize_since(base_ref)` and uses the active evolution marker as the base ref: rollback_branch, then backup_branch, then HEAD. **_That means final analyzing now summarizes the same thing the user is reviewing: all changes since the nixmac evolution started._**\n\nFinally, I cleaned up the event path so whole_diff::emit_update can emit the base-aware change map instead of falling back to the old HEAD read path.\n\nIn terms of performance and token consumption, this effectively means \"Analyzing changes\" has guaranteed O(1) performance instead of O(n) in the number of evolution modifications and scales as the size of the overall full-repo diff. **_I believe this is what we actually want and need._**\n\nThere are a number of follow-ups and cleanups that should be possible after this if we can gradually deprecate/eliminate \"own\" summaries but I will wait and see on that.\n\n<!-- What does this PR do? Why? -->\n\n## Test Plan\n\nOne way you can test this is with a series of iterative prompts like:\n\n1. Add wget to packages and set my dock size to 17.\n2. I also want to install ripgrip.\n3. Actually I changed my mind and I don't want wget after all.\n\n- [ ] No test plan needed\n\n## Docs\n\n- [ ] Docs updated (companion PR in darkmatter/nixmac-web: #\\___)\n- [x] No docs update needed",
"reactions": {
"url": "https://api.github.com/repos/darkmatter/nixmac/issues/335/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"timeline_url": "https://api.github.com/repos/darkmatter/nixmac/issues/335/timeline",
"performed_via_github_app": {
"id": 158384,
"client_id": "Iv1.922be7c1ac51d2aa",
"slug": "graphite-app",
"node_id": "A_kwHOA7ErVM4AAmqw",
"owner": {
"login": "withgraphite",
"id": 61942612,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjYxOTQyNjEy",
"avatar_url": "https://avatars.githubusercontent.com/u/61942612?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/withgraphite",
"html_url": "https://github.com/withgraphite",
"followers_url": "https://api.github.com/users/withgraphite/followers",
"following_url": "https://api.github.com/users/withgraphite/following{/other_user}",
"gists_url": "https://api.github.com/users/withgraphite/gists{/gist_id}",
"starred_url": "https://api.github.com/users/withgraphite/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/withgraphite/subscriptions",
"organizations_url": "https://api.github.com/users/withgraphite/orgs",
"repos_url": "https://api.github.com/users/withgraphite/repos",
"events_url": "https://api.github.com/users/withgraphite/events{/privacy}",
"received_events_url": "https://api.github.com/users/withgraphite/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"name": "Graphite App",
"description": "Graphite is a code review platform on top of GitHub that makes creating & code reviewing stacked diffs intuitive, fast, and delightful.",
"external_url": "https://graphite.dev",
"html_url": "https://github.com/apps/graphite-app",
"created_at": "2021-12-13T17:14:28Z",
"updated_at": "2026-02-02T18:37:14Z",
"permissions": {
"actions": "write",
"administration": "read",
"checks": "write",
"contents": "write",
"deployments": "read",
"emails": "read",
"issues": "write",
"members": "read",
"metadata": "read",
"organization_custom_properties": "read",
"organization_custom_roles": "read",
"pull_requests": "write",
"statuses": "read",
"workflows": "write"
},
"events": [
"branch_protection_configuration",
"branch_protection_rule",
"check_run",
"check_suite",
"deployment",
"deployment_status",
"issue_comment",
"label",
"member",
"membership",
"merge_queue_entry",
"organization",
"pull_request",
"pull_request_review",
"pull_request_review_comment",
"pull_request_review_thread",
"push",
"repository",
"repository_ruleset",
"status",
"team",
"team_add",
"workflow_job",
"workflow_run"
]
},
"state_reason": null
},
"comment": {
"url": "https://api.github.com/repos/darkmatter/nixmac/issues/comments/4645050762",
"html_url": "https://github.com/darkmatter/nixmac/pull/335#issuecomment-4645050762",
"issue_url": "https://api.github.com/repos/darkmatter/nixmac/issues/335",
"id": 4645050762,
"node_id": "IC_kwDOSB6EzM8AAAABFN3Zig",
"user": {
"login": "github-actions[bot]",
"id": 41898282,
"node_id": "MDM6Qm90NDE4OTgyODI=",
"avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/github-actions%5Bbot%5D",
"html_url": "https://github.com/apps/github-actions",
"followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
"following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
"gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
"starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
"organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
"repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
"events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
"received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
"type": "Bot",
"user_view_type": "public",
"site_admin": false
},
"created_at": "2026-06-08T02:51:07Z",
"updated_at": "2026-06-08T19:56:04Z",
"body": "\n<!--\n 0 failure: \n 0 warning: \n 1 messages\n 2 markdown notices\n DangerID: danger-id-Danger;\n-->\n\n\n\n<table>\n <thead>\n <tr>\n <th width=\"50\"></th>\n <th width=\"100%\" data-danger-table=\"true\">Messages</th>\n </tr>\n </thead>\n <tbody><tr>\n <td>:book:</td>\n <td>No docs update needed — acknowledged.</td>\n </tr>\n </tbody>\n</table>\n\n## :clipboard: PR Overview\n\n| | |\n| --- | --- |\n| Lines changed | **380** (+331 / -49) |\n| Files | 0 added, 7 modified, 0 deleted |\n| Draft / WIP | no |\n| Has Test Plan | yes |\n| No Test Plan Needed | no |\n| New UI components | no |\n| New Storybook stories | no |\n| New Rust modules | no |\n| New TS source files | no |\n| New tests | no |\n| package.json touched | no |\n| Cargo.toml touched | no |\n| Infra / CI touched | no |\n\n\n## :microscope: Coverage\n\n| Report | Lines | Statements | Functions | Branches |\n| --- | --- | --- | --- | --- |\n| `apps/native/coverage/coverage-summary.json` | 24.9% | 25.1% | 23.5% | 16.8% |\n\n<p align=\"right\">\n Generated by :no_entry_sign: <a href=\"https://danger.systems/js\">dangerJS</a> against c90888d3c3e0d615636ec556e20333f2c6d5fab5\n</p>\n",
"author_association": "CONTRIBUTOR",
"reactions": {
"url": "https://api.github.com/repos/darkmatter/nixmac/issues/comments/4645050762/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": {
"id": 15368,
"client_id": "Iv1.05c79e9ad1f6bdfa",
"slug": "github-actions",
"node_id": "MDM6QXBwMTUzNjg=",
"owner": {
"login": "github",
"id": 9919,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjk5MTk=",
"avatar_url": "https://avatars.githubusercontent.com/u/9919?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/github",
"html_url": "https://github.com/github",
"followers_url": "https://api.github.com/users/github/followers",
"following_url": "https://api.github.com/users/github/following{/other_user}",
"gists_url": "https://api.github.com/users/github/gists{/gist_id}",
"starred_url": "https://api.github.com/users/github/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/github/subscriptions",
"organizations_url": "https://api.github.com/users/github/orgs",
"repos_url": "https://api.github.com/users/github/repos",
"events_url": "https://api.github.com/users/github/events{/privacy}",
"received_events_url": "https://api.github.com/users/github/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"name": "GitHub Actions",
"description": "Automate your workflow from idea to production",
"external_url": "https://help.github.com/en/actions",
"html_url": "https://github.com/apps/github-actions",
"created_at": "2018-07-30T09:30:17Z",
"updated_at": "2026-05-05T14:51:38Z",
"permissions": {
"actions": "write",
"administration": "read",
"artifact_metadata": "write",
"attestations": "write",
"checks": "write",
"code_quality": "write",
"contents": "write",
"copilot_requests": "write",
"deployments": "write",
"discussions": "write",
"issues": "write",
"merge_queues": "write",
"metadata": "read",
"models": "read",
"packages": "write",
"pages": "write",
"pull_requests": "write",
"repository_hooks": "write",
"repository_projects": "write",
"security_events": "write",
"statuses": "write",
"vulnerability_alerts": "read"
},
"events": [
"branch_protection_rule",
"check_run",
"check_suite",
"create",
"delete",
"deployment",
"deployment_status",
"discussion",
"discussion_comment",
"fork",
"gollum",
"issues",
"issue_comment",
"label",
"merge_group",
"milestone",
"page_build",
"public",
"pull_request",
"pull_request_review",
"pull_request_review_comment",
"push",
"registry_package",
"release",
"repository",
"repository_dispatch",
"status",
"watch",
"workflow_dispatch",
"workflow_run"
]
}
},
"repository": {
"id": 1209959628,
"node_id": "R_kgDOSB6EzA",
"name": "nixmac",
"full_name": "darkmatter/nixmac",
"private": false,
"owner": {
"login": "darkmatter",
"id": 17834193,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
"avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/darkmatter",
"html_url": "https://github.com/darkmatter",
"followers_url": "https://api.github.com/users/darkmatter/followers",
"following_url": "https://api.github.com/users/darkmatter/following{/other_user}",
"gists_url": "https://api.github.com/users/darkmatter/gists{/gist_id}",
"starred_url": "https://api.github.com/users/darkmatter/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/darkmatter/subscriptions",
"organizations_url": "https://api.github.com/users/darkmatter/orgs",
"repos_url": "https://api.github.com/users/darkmatter/repos",
"events_url": "https://api.github.com/users/darkmatter/events{/privacy}",
"received_events_url": "https://api.github.com/users/darkmatter/received_events",
"type": "Organization",
"user_view_type": "public",
"site_admin": false
},
"html_url": "https://github.com/darkmatter/nixmac",
"description": "Home manager and nix-darwin that understands plain English",
"fork": false,
"url": "https://api.github.com/repos/darkmatter/nixmac",
"forks_url": "https://api.github.com/repos/darkmatter/nixmac/forks",
"keys_url": "https://api.github.com/repos/darkmatter/nixmac/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/darkmatter/nixmac/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/darkmatter/nixmac/teams",
"hooks_url": "https://api.github.com/repos/darkmatter/nixmac/hooks",
"issue_events_url": "https://api.github.com/repos/darkmatter/nixmac/issues/events{/number}",
"events_url": "https://api.github.com/repos/darkmatter/nixmac/events",
"assignees_url": "https://api.github.com/repos/darkmatter/nixmac/assignees{/user}",
"branches_url": "https://api.github.com/repos/darkmatter/nixmac/branches{/branch}",
"tags_url": "https://api.github.com/repos/darkmatter/nixmac/tags",
"blobs_url": "https://api.github.com/repos/darkmatter/nixmac/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/darkmatter/nixmac/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/darkmatter/nixmac/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/darkmatter/nixmac/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/darkmatter/nixmac/statuses/{sha}",
"languages_url": "https://api.github.com/repos/darkmatter/nixmac/languages",
"stargazers_url": "https://api.github.com/repos/darkmatter/nixmac/stargazers",
"contributors_url": "https://api.github.com/repos/darkmatter/nixmac/contributors",
"subscribers_url": "https://api.github.com/repos/darkmatter/nixmac/subscribers",
"subscription_url": "https://api.github.com/repos/darkmatter/nixmac/subscription",
"commits_url": "https://api.github.com/repos/darkmatter/nixmac/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/darkmatter/nixmac/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/darkmatter/nixmac/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/darkmatter/nixmac/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/darkmatter/nixmac/contents/{+path}",
"compare_url": "https://api.github.com/repos/darkmatter/nixmac/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/darkmatter/nixmac/merges",
"archive_url": "https://api.github.com/repos/darkmatter/nixmac/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/darkmatter/nixmac/downloads",
"issues_url": "https://api.github.com/repos/darkmatter/nixmac/issues{/number}",
"pulls_url": "https://api.github.com/repos/darkmatter/nixmac/pulls{/number}",
"milestones_url": "https://api.github.com/repos/darkmatter/nixmac/milestones{/number}",
"notifications_url": "https://api.github.com/repos/darkmatter/nixmac/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/darkmatter/nixmac/labels{/name}",
"releases_url": "https://api.github.com/repos/darkmatter/nixmac/releases{/id}",
"deployments_url": "https://api.github.com/repos/darkmatter/nixmac/deployments",
"created_at": "2026-04-14T00:37:13Z",
"updated_at": "2026-06-08T19:54:18Z",
"pushed_at": "2026-06-08T19:54:18Z",
"git_url": "git://github.com/darkmatter/nixmac.git",
"ssh_url": "git@github.com:darkmatter/nixmac.git",
"clone_url": "https://github.com/darkmatter/nixmac.git",
"svn_url": "https://github.com/darkmatter/nixmac",
"homepage": "https://nixmac.com",
"size": 680760,
"stargazers_count": 5,
"watchers_count": 5,
"language": "Rust",
"has_issues": true,
"has_projects": false,
"has_downloads": true,
"has_wiki": false,
"has_pages": false,
"has_discussions": false,
"forks_count": 1,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 78,
"license": {
"key": "mit",
"name": "MIT License",
"spdx_id": "MIT",
"url": "https://api.github.com/licenses/mit",
"node_id": "MDc6TGljZW5zZTEz"
},
"allow_forking": true,
"is_template": false,
"web_commit_signoff_required": false,
"has_pull_requests": true,
"pull_request_creation_policy": "all",
"topics": [
"home-manager",
"nix",
"nix-darwin",
"nix-flake",
"opencode"
],
"visibility": "public",
"forks": 1,
"open_issues": 78,
"watchers": 5,
"default_branch": "develop",
"custom_properties": {}
},
"organization": {
"login": "darkmatter",
"id": 17834193,
"node_id": "MDEyOk9yZ2FuaXphdGlvbjE3ODM0MTkz",
"url": "https://api.github.com/orgs/darkmatter",
"repos_url": "https://api.github.com/orgs/darkmatter/repos",
"events_url": "https://api.github.com/orgs/darkmatter/events",
"hooks_url": "https://api.github.com/orgs/darkmatter/hooks",
"issues_url": "https://api.github.com/orgs/darkmatter/issues",
"members_url": "https://api.github.com/orgs/darkmatter/members{/member}",
"public_members_url": "https://api.github.com/orgs/darkmatter/public_members{/member}",
"avatar_url": "https://avatars.githubusercontent.com/u/17834193?v=4",
"description": ""
},
"enterprise": {
"id": 469843,
"slug": "darkmatter",
"name": "darkmatter",
"node_id": "E_kgDOAAcrUw",
"avatar_url": "https://avatars.githubusercontent.com/b/469843?v=4",
"description": "",
"website_url": "darkmatter.io",
"html_url": "https://github.com/enterprises/darkmatter",
"created_at": "2025-09-07T16:01:00Z",
"updated_at": "2026-06-07T16:53:26Z"
},
"sender": {
"login": "github-actions[bot]",
"id": 41898282,
"node_id": "MDM6Qm90NDE4OTgyODI=",
"avatar_url": "https://avatars.githubusercontent.com/in/15368?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/github-actions%5Bbot%5D",
"html_url": "https://github.com/apps/github-actions",
"followers_url": "https://api.github.com/users/github-actions%5Bbot%5D/followers",
"following_url": "https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}",
"gists_url": "https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}",
"starred_url": "https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/github-actions%5Bbot%5D/subscriptions",
"organizations_url": "https://api.github.com/users/github-actions%5Bbot%5D/orgs",
"repos_url": "https://api.github.com/users/github-actions%5Bbot%5D/repos",
"events_url": "https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}",
"received_events_url": "https://api.github.com/users/github-actions%5Bbot%5D/received_events",
"type": "Bot",
"user_view_type": "public",
"site_admin": false
},
"installation": {
"id": 131074261,
"node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTMxMDc0MjYx"
}
}