Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .agents/pm/history/pm-github-reference-identity.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -266,3 +266,4 @@
{"hash_algorithm":"sha256","ts":"2026-11-13T10:41:58.806Z","author":"orchestrator","author_source":"asserted","agent_harness":"claude-code","agent_model":"claude-opus-5-5","agent_model_source":"probe","agent_instance":"31217a101ccd67a43c135f1c","agent_provenance":{"model":{"value":"claude-opus-5-5","source":"probe"},"effort":{"value":"xhigh","source":"environment"},"role":null,"topic":null,"version":{"value":"2.1.322","source":"probe"}},"op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/133","value":{"created_at":"2026-11-13T10:41:58.789Z","author":"orchestrator","text":"Orchestrator, CodeRabbit PRRT_kwDOTbN4pM63DOtP on 6658b2f. The pull-plan board-consistency guard (projects.ts:659) used only ownership.states.get(pm), so a separately allocated copy of a selected item skipped the owner check, and a board issue o/r#8 could pull its status onto an item that owns o/r#7. It now derives claims with the same githubOwnershipClaims fallback as line 617. The regression in test/projects.test.ts refuses the copy-with-mismatch case (0/1 with the fix reverted) and still pulls when the copy is on its own issue. Inventory anchors were regenerated with scripts/identity-inventory.ts --write. Gates: projects, round-eighteen and import-projection pass 78/78; identity-inventory 5/5; lint and typecheck pass."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-11-13T10:41:58.806Z"}],"before_hash":"343716378d03e96b16747309682f8f33a55502889284536ccef21ec9795bec28","after_hash":"e34bd349252626ec25ea4d5700ef2a9d3d9db021239457f01ea822de1a7e0ba1","item_hash_version":3,"context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"claude_session_file","rule_version":"v1"},"version":{"status":"resolved","resolver":"claude_session_file","rule_version":"v1"}}},"event_class":"substantive","record_hash_version":1,"record_hash":"4e0c99f5b7c12eb04b4784b66864144cfef5479e710592b5738cdfbf7b115d67"}
{"hash_algorithm":"sha256","ts":"2026-11-13T11:49:25.058Z","author":"orchestrator","author_source":"asserted","agent_harness":"claude-code","agent_model":"claude-opus-5-5","agent_model_source":"probe","agent_instance":"31217a101ccd67a43c135f1c","agent_provenance":{"model":{"value":"claude-opus-5-5","source":"probe"},"effort":{"value":"xhigh","source":"environment"},"role":null,"topic":null,"version":{"value":"2.1.322","source":"probe"}},"op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/134","value":{"created_at":"2026-11-13T11:49:25.047Z","author":"orchestrator","text":"Orchestrator, CodeRabbit PRRT_kwDOTbN4pM63ENyF on 9635d75: the push planner had the same identity-keyed lookup as the pull planner. Fixed as a class. The new ownershipStateOf(index, item) in import-ownership.ts reads states by identity and derives claims for a separately allocated copy. Every planner and selector that read ownership.states directly now uses it: projects push, pull and import, refresh selection, import-fidelity targets, index sync/import selection and the scope warning. The two sites with their own fallback parameters stay (assertGithubImportOwner with initialLink, closeout with the delivery repo). New push-planner regression for the copied item (refuses a mismatched board issue, plans set-status on its own issue); the inventory classifies the helper. Gates: 764 tests across the affected files, with only the five inventory tests failing before the classification and 5/5 after; projects 46/46 with the inventory; lint and typecheck pass."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-11-13T11:49:25.058Z"}],"before_hash":"e34bd349252626ec25ea4d5700ef2a9d3d9db021239457f01ea822de1a7e0ba1","after_hash":"26da8ec498559aa659238496a38b22f7e7ff0edf7969f96d6f533af11ed93787","item_hash_version":3,"context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"claude_session_file","rule_version":"v1"},"version":{"status":"resolved","resolver":"claude_session_file","rule_version":"v1"}}},"event_class":"substantive","record_hash_version":1,"record_hash":"45130cc75e06f38caa10c33cc06e99b0c389cdecd01aa7b14624e74d9ae0cc97"}
{"hash_algorithm":"sha256","ts":"2026-11-13T14:17:53.658Z","author":"orchestrator","author_source":"asserted","agent_harness":"claude-code","agent_model":"claude-opus-5-5","agent_model_source":"probe","agent_instance":"31217a101ccd67a43c135f1c","agent_provenance":{"model":{"value":"claude-opus-5-5","source":"probe"},"effort":{"value":"xhigh","source":"environment"},"role":null,"topic":null,"version":{"value":"2.1.322","source":"probe"}},"op":"comment_add","patch":[{"op":"add","path":"/metadata/comments/135","value":{"created_at":"2026-11-13T14:17:53.647Z","author":"orchestrator","text":"Orchestrator, round on 72d2131. (1) CodeRabbit Major PRRT_kwDOTbN4pM63IEZp: hasStructuredOwnership only needs to know whether owners exist, so it now uses the non-throwing githubOwnershipClaims(item).owners. An eligible citation candidate whose importer id (#41) and github_url (#42) disagree no longer aborts matching. The new cited-issue-adoption regression fails with 'Got unwanted exception' when the change is reverted. (2) Greptile P2 PRRT_kwDOTbN4pM63HwYp: the inventory scanner's helper set includes ownershipStateOf, and the regenerated inventory lists its call sites. (3) CodeRabbit Minor PRRT_kwDOTbN4pM63IEZc: docs/identity-collisions.md lists the marker-free legacy description declaration as a claim source. Gates: cited-issue-adoption, identity-inventory, import-fidelity, owner-field-values and projects pass; lint and typecheck pass."}},{"op":"replace","path":"/metadata/updated_at","value":"2026-11-13T14:17:53.658Z"}],"before_hash":"26da8ec498559aa659238496a38b22f7e7ff0edf7969f96d6f533af11ed93787","after_hash":"8b30fa38be34152f1d5e0f038523918399af68c980583a2a8fbda1735deb23c3","item_hash_version":3,"context":{"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"claude_session_file","rule_version":"v1"},"version":{"status":"resolved","resolver":"claude_session_file","rule_version":"v1"}}},"event_class":"substantive","record_hash_version":1,"record_hash":"14ee5d1027d0a2c8f3814e0c0ce3ca9fe3b73fa95dd75f2260eb1a16e9634e69"}
{"hash_algorithm":"sha256","ts":"2026-11-13T23:51:40.127Z","author":"claude-hub","author_source":"asserted","agent_harness":"claude-code","agent_model":"claude-opus-5-5","agent_model_source":"probe","agent_instance":"31217a101ccd67a43c135f1c","agent_provenance":{"model":{"value":"claude-opus-5-5","source":"probe"},"effort":{"value":"xhigh","source":"environment"},"role":{"value":"implementer","source":"argv"},"topic":null,"version":{"value":"2.1.322","source":"probe"}},"op":"close","patch":[{"op":"replace","path":"/metadata/updated_at","value":"2026-11-13T23:51:40.127Z"},{"op":"replace","path":"/metadata/status","value":"closed"},{"op":"add","path":"/metadata/closed_at","value":"2026-11-13T23:51:40.059Z"},{"op":"add","path":"/metadata/completed_at","value":"2026-11-13T23:51:40.059Z"},{"op":"add","path":"/metadata/resolution","value":"Implemented and merged in #233 (5766ef0)."},{"op":"add","path":"/metadata/expected_result","value":"The change described by this item is on main."},{"op":"add","path":"/metadata/actual_result","value":"Merged in #233 as 5766ef0; checks successful at head a5f1cc1: CodeQL, bun-release (22), bun-release (26), codeql, semgrep-cloud-platform/scan, test (22), test (26)."},{"op":"add","path":"/metadata/close_reason","value":"Delivered by #233 \"Keep GitHub reference tags out of import identity\" (merged as 5766ef0). Checks successful at the PR head a5f1cc1: CodeQL, bun-release (22), bun-release (26), codeql, semgrep-cloud-platform/scan, test (22), test (26)."}],"before_hash":"8b30fa38be34152f1d5e0f038523918399af68c980583a2a8fbda1735deb23c3","after_hash":"f536c572e638e2a8e9c8ae115e333ab24d045071b61e1fd8f6c4503d1818d9bc","item_hash_version":3,"context":{"completion":{"timestamp":"2026-11-13T23:51:40.059Z","source":"close_time"},"agent_provenance_outcomes":{"model":{"status":"resolved","resolver":"claude_session_file","rule_version":"v1"},"version":{"status":"resolved","resolver":"claude_session_file","rule_version":"v1"}}},"event_class":"substantive","record_hash_version":1,"record_hash":"86d46316820728137c61307322c1ad3fa70b5f026fad74ecd9c4cdf71ff63ea1"}
10 changes: 8 additions & 2 deletions .agents/pm/issues/pm-github-reference-identity.toon
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,17 @@ title: "Keep GitHub reference tags separate from import identity (BREAKING: PM C
description: "Preserve curated local fields, allow shared reference tags, and retain migration-free matching of existing importer provenance."
type: Issue
pm_format_version: 2
status: in_progress
status: closed
priority: 2
tags[2]: changelog-unreleased,"gh:unbraind/pm-github#230"
created_at: "2026-11-11T10:19:25.073Z"
updated_at: "2026-11-13T14:17:53.658Z"
updated_at: "2026-11-13T23:51:40.127Z"
closed_at: "2026-11-13T23:51:40.059Z"
completed_at: "2026-11-13T23:51:40.059Z"
author: codex-github230-1111
resolution: Implemented and merged in #233 (5766ef0).
expected_result: The change described by this item is on main.
actual_result: "Merged in #233 as 5766ef0; checks successful at head a5f1cc1: CodeQL, bun-release (22), bun-release (26), codeql, semgrep-cloud-platform/scan, test (22), test (26)."
comments[136]{created_at,author,text}:
"2026-11-11T10:19:28.756Z",codex-github230-1111,"Read issue 230 and all comments. Branch starts from main; PR229 changes workflows and docs separately. Plan: distinguish explicit importer identity from references, preserve curated linked content, retain legacy persisted provenance, and prove behavior with real SDK trackers and behavioral reverts. Task-specific gate budget applies: focused importer/sync/dependent tests, lint and typecheck; full suite only within 45 minutes."
"2026-11-11T10:24:30.654Z",codex-github230-1111,"Implemented separate durable import identity lookup; shared gh references no longer select owners or collide. Curated links merge provenance/lifecycle while deterministic importer records mirror content. New real SDK regressions pass 9/9, including no-git curated links and byte-identical legacy resync beside shared references. Reviewing existing tests that assumed tag-only ownership; updating mirror fixtures to explicit importer identities."
Expand Down Expand Up @@ -1011,6 +1016,7 @@ docs[7]:
- path: README.md
scope: project
note: All owner claims must agree and remain unique; journal-aware cleanup
close_reason: "Delivered by #233 \"Keep GitHub reference tags out of import identity\" (merged as 5766ef0). Checks successful at the PR head a5f1cc1: CodeQL, bun-release (22), bun-release (26), codeql, semgrep-cloud-platform/scan, test (22), test (26)."
github_number: 230
github_url: "https://github.com/unbraind/pm-github/issues/230"
body: ""
Loading