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
37 changes: 37 additions & 0 deletions .agents/pm/features/pm-github-identity-collisions.toon
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
id: pm-github-identity-collisions
title: Explore provider identity collisions and approve scoped provenance repairs
description: "Add a read-only graph of conflicting external_ref, GitHub provenance tags and native ownership, with narrowly scoped repair plans."
type: Feature
status: in_progress
priority: 2
tags[3]: changelog-unreleased,github,identity
created_at: "2026-10-22T19:22:17.645Z"
updated_at: "2026-10-22T21:00:37.645Z"
author: codex-agent
acceptance_criteria: Synthetic copied examples and genuinely multi-provider items remain distinguishable; ambiguous identities refuse apply; approved repairs are audited and idempotent.
comments[13]{created_at,author,text}:
"2026-10-22T19:23:58.055Z",codex-agent,"Overlap recheck: core SDK complete-list certification, metadata validation, similarity duplicates, semantic previews, item mutations and durable writer transactions remain authoritative. pm-github import-fidelity and refresh already reuse rightful owners or refuse multiple owners; they expose no offline collision graph or approved detach surface. pm-jira provenance/export matching and pm-linear provenance indexing retain provider semantics. New scope: bounded offline graph of exact external_ref and GitHub tag/URL claims versus copied prose; one explicitly approved tag/reference detach from an independently declared owner, refusing ambiguous source metadata. Acceptance: copied examples and genuine multi-provider ownership remain distinct; ambiguous identities refuse apply; approved repairs are audited and idempotent. Use real non-git trackers and a read-only public tracker copy; full npm/Bun release gates in CI due host load."
"2026-10-22T19:37:45.190Z",codex-agent,"Implementation reuses refresh scratch reads because complete SDK list calls produce derived runtime caches. Scratch copies now normalize only copied file permissions, supporting read-only input trackers. Production repair scope is exact GitHub tag detach only: the pinned SDK has no audited core external_ref clear operation (unset refuses it), so reference repair returns unsupported_repair with a provider-workflow remedy instead of bypassing core mutation rules. Added native source ownership evidence and single-item contradictory identity diagnosis. Plans use real SDK previews, approval digests and locked rechecks; native comment/history audit binds the exact scope and SDK replay handles interrupted mutation recovery."
"2026-10-22T19:38:38.240Z",codex-agent,"Read-only public corpus validation at main 394129e3a8a607bfc13dd8acc8adfe4704165da2: 296 archived files, 145 all-status items, 9 exact identities, 0 conflicting groups, 3 prose mentions, 3 returned nodes/edges, no continuation. Compact JSON 642 bytes; TOON 551 bytes. All file bytes and inventory unchanged; source files 0444, directories 0555, non-git scratch tracker, PATH without git. Fingerprint and limits recorded in docs/identity-collisions-validation.md. Zero real-corpus collisions is zero-case evidence; synthetic real trackers provide nonempty collision and repair cases."
"2026-10-22T19:46:20.850Z",codex-agent,"Behavioural-revert proof: temporarily removed only plan() ownership refusal guard, then ran node --test --test-reporter=tap --test-name-pattern='source-owned duplicates require manual review \\(github_url\\)' test/identity.test.ts. Exactly 1 test failed (Missing expected rejection); restoring the guard restores the tested refusal. The PM-linked suite passed 14/14 with zero skips; focused V8 coverage measured identity.ts at exact 100/100/100/100. Added final symlink-isolation regression and rerunning the linked suite before commit. Typecheck, lint and docstrings are targeted local checks; unchanged full npm/Bun release gates will run in CI."
"2026-10-22T19:47:02.010Z",codex-agent,"Self-review added SDK updated_at optimistic matching and durable recovery from the exact encoded approved plan in native audit comments. Verified interrupted step_applied recovery, replay scope mismatches, malformed audit hints, reintroduced claims, locked stale-plan refusal, native source_owner protection, copied examples, structured multi-provider links and contradictory identities. Scratch-copy permission normalization now rejects symbolic roots/entries before following them, preventing writes through links. No core SDK pins or gate thresholds changed."
"2026-10-22T19:50:43.577Z",codex-agent,"Final targeted acceptance passed 15/15, zero failed/skipped/canceled/TODO, through pm test --run --progress --timeout 600. Focused coverage: identity.ts exact 100/100/100/100; the shared reader changes are covered by the identity suite while full refresh coverage remains the CI gate responsibility. Local typecheck, test typecheck, lint, docstring and zero-duplication gates passed. Privacy audited 6336 objects with approved identities and no secret/host-path matches. Local strict health reports a host SDK version-skew warning (pinned 2026.10.17 versus another active 2026.10.22 host); tracker integrity and history checks pass. CI runs in a clean environment and remains the required full-gate evidence."
"2026-10-22T19:53:54.063Z",codex-agent,"PR opened ready for review: https://github.com/unbraind/pm-github/pull/167 at 5831e84e3ee24d4691221cb2e613c33bfb61875e. Full unchanged npm and Bun release matrices are running at https://github.com/unbraind/pm-github/actions/runs/39843801687 (Node 22 and 26). Isolated strict health passed with clean HOME and git identity configuration; the local host version-skew warning is environmental. Final public read-only validation reproduced the recorded measurements byte-for-byte after all reader changes. No merge, release or publication is authorized or performed."
"2026-10-22T20:00:52.992Z",codex-agent,"Current CLI 2026.10.22 overlap verification used its complete unbounded contracts --full catalog: 176 commands and no omission receipt findings; related core surfaces are duplicates/item duplicates, with no provider identity explorer or approved detach command. Follow-up focused coverage inspection found three CLI default-option branches absent from the harness receipt. Added one default graph invocation; its targeted registered-command regression passed 1/1 and now covers every new handler statement/branch. Production source is unchanged. Full npm/Bun CI remains the release-gate authority; the corrected test is included in the next head."
"2026-10-22T20:02:14.116Z",codex-agent,"Implementation and targeted validation are complete: production source commit 5831e84 and default-handler regression/evidence commit 4e83f3a. PM-linked acceptance passed 15/15; the additional default-handler check passed 1/1, all new handler statements/branches are covered, and identity.ts remains exact 100/100/100/100. Typecheck, test typecheck, lint, docstrings, zero duplication, privacy, changelog and isolated strict health passed. The superseded CI run 39843801687 was canceled after the test correction; it is not counted as release-gate evidence. The final head must pass the unchanged npm/Bun matrix. Its exact run URL and measured counts will be recorded on the linked PR https://github.com/unbraind/pm-github/pull/167. Releasing this implementation claim for orchestrator verification; keep this item in progress and do not close it. Remaining limitation: external_ref mutation refuses unsupported_repair through the pinned SDK, with an owning-provider remedy."
"2026-10-22T20:50:23.324Z",codex-agent,"Review follow-up on PR 167: remote head is current and contains origin/main. Fixing three blocking defects: forged recovery approval, retained comma tag corruption, and conflicting owner issue numbers. Each receives a focused regression and behavioral revert proof; rerun npm and Bun release gates on the pushed head."
"2026-10-22T20:55:23.954Z",codex-agent,"Implemented review fixes using SDK removeTags, approval-digest reconstruction with exact retained-tag checks, a required SDK recovery journal, and owner github_number consistency. Behavioral revert proofs: reverting only applyGithubIdentityRepair makes the nonexistent-owner forged-audit regression fail (0 pass, 1 fail, Missing expected rejection); reverting only transaction makes the comma-tag regression fail (0 pass, 1 fail, keep,me becomes keep plus me); reverting only plan makes the conflicting-owner-number regression fail (0 pass, 1 fail, Missing expected rejection). All functions restored. Added no-write assertions, malformed before/after validation, altered-plan/retained-tag recovery checks, and missing-journal refusal coverage."
"2026-10-22T20:59:44.669Z",codex-agent,"Exact revert-proof commands (each exited 1 with 0 pass and 1 fail, only named production function reverted): node --test --test-reporter=tap --test-name-pattern='forged audit plans with nonexistent owners' test/identity.test.ts [applyGithubIdentityRepair]; node --test --test-reporter=tap --test-name-pattern='approved tag detach preserves a stored comma tag' test/identity.test.ts [transaction]; node --test --test-reporter=tap --test-name-pattern='an owner with a conflicting github_number' test/identity.test.ts [plan]. Real-data validation rerun unchanged: 296 read-only files, 145 items, 9 identities, 0 collisions, 3 mentions, JSON 642 bytes, TOON 551 bytes, no source writes, non-git tracker and no git executable. Current npm CLI is 2026.10.22; the package SDK pin remains unchanged."
"2026-10-22T21:00:30.880Z",codex-agent,"Review fixes validated: node --test test/identity.test.ts through pm test pm-github-identity-collisions --run --progress --timeout 600 passed 20/20 with zero failed/skipped/canceled/TODO. Focused identity.ts coverage is exact 100/100/100/100. Local build, typecheck, test typecheck, lint, docstring, zero-duplication, privacy and isolated strict tracker health passed. The three function-only revert proofs are recorded above and all fixes are restored. Full unchanged npm and Bun release gates on Node 22 and 26 will run in CI on the final pushed head because the shared host is saturated. Final exact-head run URL and measured counts will be recorded on PR 167: https://github.com/unbraind/pm-github/pull/167. Releasing the implementation claim for orchestrator verification; leave the item in progress. Remaining supported-scope limit: core external_ref clearing refuses unsupported_repair through the pinned SDK."
files[4]{path,scope}:
identity.ts,project
index.ts,project
refresh.ts,project
test/identity.test.ts,project
tests[1]{command,scope,provenance{author,created_at,source_kind,source_ref}}:
node --test test/identity.test.ts,project,codex-agent,"2026-10-22T19:32:07.401Z",local_mutation,feat/identity-collisions
docs[3]{path,scope}:
docs/identity-collisions-validation.md,project
docs/identity-collisions.md,project
README.md,project
body: ""
Loading
Loading