{"repo":"NousResearch/hermes-agent","public_id":"123308","display_label":"Desktop build freshness and stamp pipeline fixes","summary":"These items address bugs in the desktop build system related to hashing, identity vs. clock-based stamping, input change detection, and race conditions that disrupt the freshness pipeline. The fixes target how build inputs are named, hashed, and checked for staleness.","subsystem":"other","counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":127237,"merged_at":"2026-10-01T05:15:06+00:00"},"resolution":{"state":"resolved","by":"pr-127237"},"freshness":{"state":"verified","last_verified_at":"2026-10-01T05:15:06+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":122632,"pr_number":127237,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-10-01T05:15:06+00:00"},{"issue_number":122803,"pr_number":127237,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-10-01T05:15:06+00:00"},{"issue_number":123308,"pr_number":127237,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-10-01T05:15:06+00:00"},{"issue_number":123376,"pr_number":127237,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-10-01T05:15:06+00:00"}],"members":[{"kind":"issue","number":123308,"title":"fix(build): desktop build rewrites a hashed prepared input, so freshness.mjs trips on the build's own change and the caller never retries","url":null,"state":"closed"},{"kind":"pr","number":123377,"title":"fix(build): hash the desktop stamp's identity, not its build clock (#123308)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"f17856db0a","number":0},{"kind":"commit","value":"e8cf816c39","number":0},{"kind":"pr","value":"#1","number":1},{"kind":"pr","value":"#2","number":2},{"kind":"pr","value":"#96581","number":96581},{"kind":"pr","value":"#123376","number":123376}],"category":"partial_fix","implication":"needs_llm"},"merged":false},{"kind":"pr","number":127192,"title":"fix(build): name the inputs that changed when a product build is refused","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#127237","number":127237},{"kind":"pr","value":"#122632","number":122632}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":127237,"title":"fix(build,update): OS metadata, stamp-clock races and stacked completions break the desktop freshness pipeline","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/scripts/bundle-electron-main.mjs","hermes_cli/source_completion.py","scripts/build/README.md","scripts/build/desktop.mjs","scripts/build/freshness.mjs","scripts/build/frontend-common.mjs","tests-js/desktop-builder.test.mjs","tests-js/freshness-metadata.test.mjs","tests-js/frontend-common.test.mjs","tests-js/product-builders.test.mjs","tests/hermes_cli/test_source_completion_stamp.py","tests/hermes_cli/test_update_completion_process.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}