Migrate the ticket-takedown eval harness git calls to OsGit #1593
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
rule-proposal
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#1593
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The ticket-takedown eval harness builds scratch repositories and reads the git common dir with its own git calls (
adapter/scratch_repo.rb,adapter/case_preparer.rb,adapter/principle_files.rb,adapter/repro_sandbox.rb,command/judge_pairs.rb).Design:
docs/os-git/use-cases-and-domain.md(design) anddocs/os-git/call-site-checklist.md(call sites). Settled decisions are in design section 1 (docs/os-git/use-cases-and-domain.md): the gem lives inplugins/os-gitwith apath:source;git-contextandos:worktreemerge intoos-git; old wrappers go only after all references are updated; design order is use-cases, objects, interfaces;os-contextandos-vaultbecome Ruby; ticket tracking stays out ofos-git.Reproduce
n/a: migration of existing call sites; behavior stays the same unless a criterion says otherwise.
Approach
Group A-05. Scratch repositories use
OsGit::Testing::ScratchRepo(it may stage everything because it is a fixture). The git common dir comes fromRepository#primary_root(G-040, G-041).rev-parse HEADisRepository#resolve("HEAD")(G-042).git archive HEAD | tar(G-038, G-039) has no use-case: decide whether to addRepository#export(ref, into:)to the design or leave the call out of scope with a reason.Eval discipline applies (
docs/eval-discipline.md): change adapter code only. Do not read or run scenarioTaskblocks, reserve sets, or cases and results files.Mark every row in the checklist from the
Donecolumn as it is replaced. Mark the matching test rows in the same change. Runbin/refresh-pluginsafter changes toSKILL.md, hooks, or CLIs.Required work: none beyond the acceptance criteria.
Acceptance criteria
- [x]withReplaced byfilled in, or marked out of scope with a reason, indocs/os-git/call-site-checklist.md.Open3,system(,%x, backticks, andgitargv, then no git call remains outsideOsGitadapters, except sites marked out of scope with a reason.Blocking edges
Blocked by the core ticket (#1588). Run after the os-sdlc migration (#1592).
Origin
Resolution
Done: Harness git calls moved to OsGit. Added Repository#export and #file_log. Scratch checkouts use ScratchRepo. Takedown::GitGuard keeps the Failure contract.
Evidence: main
ea19631d. takedown 623 runs, 0 failures. Old and new builds give the same tree sha on this repository, one commit, branch main. primary_root equals the old value from a linked worktree. Rows G-038 to G-042, G-172 to G-174 marked.Follow-ups: none