fix(repos): refuse managed path identity mismatches - #68
Conversation
|
Independent adversarial review: GO at exact head Reviewer evidence:
Candidate remains unchanged and the worktree is clean. This executor will not merge, release, publish, or install. |
Validate canonical internalapp checkout paths against their indexed GitHub remote before resolving them. Preserve ambiguity across valid candidates and fail closed for both name and explicit-path CLI lookup. Add two-sided CLI regressions covering the mismatch and valid managed-checkout paths. Refs #67 Agent: vitruvius
9a0802e to
afe13ba
Compare
|
Independent adversarial review: GO Candidate: Evidence on the exact current candidate:
Blocking findings: none. I found no concrete, currently reachable, in-scope P0/P1 defect material to issue #67, secrets/security, data integrity, unsafe mutation/rollback, or required compatibility gates. |
|
[REVIEW] NO_GO — #68 @ 9a0802e — lens: correctness+security+gates, reviewer unresolved-account004 (1 of 1) Scope read:
Commands and gates actually run, unpiped with stdout/stderr separated:
Blocking P0/P1 findings:
Non-blocking follow-ups: none. The GitHub PR head had already advanced beyond this reviewed SHA during the run. This verdict is intentionally scoped only to |
|
[REVIEW] GO — #68 @ f7d4113 — lens: correctness+security+gates, reviewer unresolved-account004 (1 of 1) Focused re-review of the one named blocker and its direct regressions only:
Current-candidate validation, unpiped with stdout/stderr separated:
Blocking P0/P1 findings: none remain on the named defect, implemented fix, or direct regressions. |
|
Correction to the disposition record: PR #68 was merged at afe13ba9ccd9881b9b6d8530730fc68c142d3db8 before the reproduced P1 and initial NO_GO were posted. The managed-identity remedy therefore is not part of PR #68. The same branch now carries the rebased, patch-equivalent fix as PR #70 at c124509. Do not treat the earlier GO at f7d4113 as evidence that PR #68 merged the remedy. |
Closes #67
Root cause
getRepo()trusted a single exact-name row even when a canonical managed path (<owner>/internalapp/<repo>) encoded an owner/repository identity that disagreed with the indexed remote. Explicit path lookup could bypass name-resolution checks entirely.Fix
internalapppathsrepo/show/inspectCLI boundary for explicit pathsiapp-todosspecial caseEvidence
Regression first:
Current gates:
bun test src/cli/checkout-guard.test.ts: 19 pass, 0 fail, 131 assertionsbun test: 794 pass, 0 fail, 3533 assertions across 51 filesbun run typecheck: exit 0bun run build: exit 0git diff --check: exit 0Live installed-registry retry through the built candidate:
repos repo iapp-todos --json: rc=1, empty stdout, explicit expectedgithub.com/hasnaxyz/iapp-todosvs indexedgithub.com/hasna/todosmismatchrepos repo iapp-sites --json: rc=0Population probe: 731 indexed rows examined; 20 canonical
internalapppath/remote mismatches classified. Only issue #67siapp-todosidentity was independently verified against GitHub; the broader count is blast-radius evidence, not a claim that every row has been externally adjudicated.Candidate:
9a0802ef1b993232ae07b539978fc602b489cdd9Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.