Repository navigation
Description
Problem
The agentcontext and agentstore binaries were scaffolds that #174 replaced: repository transactions, checks, signing and delegation belong to agentrepo, and mail to agentmail. Both still exist on origin/main (591fd70) as 46-line version-only commands in cmd/agentcontext and cmd/agentstore, and both are in the tagged release v0.23.0. Both names are still referenced in .cspell-words.txt, .vale/config/vocabularies/project/accept.txt, .gitignore, .devtools/shell-allowlist.toml, README.md (lines 59 and 60 advertise them as standalone binaries), cmd/shell-allowlist/run_test.go and docs/script-inventory.md line 31. Part of #588.
Consumer impact: .github/workflows/release.yml has no asset or upload step and gh release list returns no GitHub Release, so no binary of either command was ever published; consumers could only reach them by go install of the tagged cmd/ path. A search of the tbhb-dev organisation finds the names outside this repository only in tbhb-dev/agent-tools, which has its own commands of those names and no dependency on these. Removal therefore changes that source-install surface, so docs/compatibility.md applies: consumers get a warning for at least two releases before removal.
Open #333 (release assets) lists both names in its AC1 binary inventory. If it ships them, a published asset would exist and the window would restart.
The inventory work is not part of this issue. Open PR #785 (closing #754) replaces docs/script-inventory.md, and its added lines contain neither removed name.
Port rule (operator, 2026-10-20): behavior with real logic moves to tested Go. A script of a few lines that only calls a binary or sequences external tools stays as a thin shim. No new shell logic is added.
No deprecation notice exists yet. A search of open and closed issues for the two names and for deprecat in titles finds no issue that is the notice. Nothing here is delivered: git ls-tree origin/main still lists both cmd/ directories.
Acceptance criteria
- AC1:
cmd/agentcontextandcmd/agentstoreno longer exist. - AC2:
git grep -E 'agentcontext|agentstore'over the tree returns nothing. - AC3:
mise run lintandmise run testpass after the deletion. AC4: inventory G2/G7 rows re-keyed.Struck: PR docs(inventory): refresh the shell inventory and check it for drift #785 (closing docs(inventory): refresh the shell migration inventory and owners #754) replaces those tables and the decision key, and its added lines name neither binary.AC5: inventory rows for the library, merge policy and wrapper scripts.Struck: owned by docs(inventory): refresh the shell migration inventory and owners #754/docs(inventory): refresh the shell inventory and check it for drift #785.AC6: every added row links its port issue.Struck: owned by docs(inventory): refresh the shell migration inventory and owners #754/docs(inventory): refresh the shell inventory and check it for drift #785, whose review confirms each row's owner against that issue's scope.AC7: the inventory states the port rule.Struck: owned by docs(inventory): refresh the shell migration inventory and owners #754/docs(inventory): refresh the shell inventory and check it for drift #785.- AC8: Non-functional: the release that first lacks the two commands is at least the second release after the first release whose tagged
README.mdmarks both commands deprecated (notice release W1, next release W2, earliest removal W3), and bothcmd/paths exist in every tag from W1 through W2. - AC9: The change adds no new shell logic.
- AC10: The removal pull request's
## Risksection contains the lineCompatibility: none(the only formsdocs/compatibility.mdaccepts arenoneanddeprecates <key> since <version>, and this change starts no deprecation), followed by a sentence naming W1 and the removal of both commands. - AC11: Before merge, the pull request description records the notice commit, W1, W2, the earliest allowed removal release W3, and that the W1 and W2
README.mdnames both commands as deprecated. - AC12: At merge no GitHub Release exists and no release asset or
release.ymlstep carries either command, and the Ship the Go binaries as release assets installed through mise's github backend #333 inventory lists neither name.
Scope and non-goals
Scope: delete the two scaffold directories and their remaining name references, including the README lines and the inventory mention once #785 has landed. Retitle this issue to "Retire the agentcontext and agentstore placeholder commands".
Non-goal: any edit to docs/script-inventory.md beyond what #785 leaves, a full inventory audit, a drift check, a counting convention or any port. #754/#785 own those.
Non-goal: the deprecation notice itself and the amendment of #333's inventory, each owned by its own issue (see Dependencies).
Approach
Delete the two directories and the name references listed in the Problem after the notice has shipped for the window in AC8.
The prerequisite is a new issue, not yet filed and not an existing one: title "docs(readme): deprecate the agentstore and agentcontext commands", type docs, scope README.md lines 59 and 60 only, no code change. Its ACs: the README notice names both commands and the earliest removal release; its pull request declares Compatibility: deprecates agentstore,agentcontext since <W1> (the validator's pattern takes one space-free key, so the two names are comma-joined); a tag containing the notice commit exists. The two-release wait is a release condition on that issue, tracked by AC8 and AC11 here, not a separate issue.
Dependencies
- Blocked by the deprecation-notice issue "docs(readme): deprecate the agentstore and agentcontext commands" (to be filed; add it as a native blocked-by on Retire the agentcontext and agentstore placeholders and update the script inventory #320 when filed). Condition for merge: tags W1 and W2 exist after its merge.
- Blocked by docs(inventory): refresh the shell migration inventory and owners #754 (implemented by PR docs(inventory): refresh the shell inventory and check it for drift #785): the grep in AC2 covers
docs/script-inventory.md, which names both commands today. - Blocked by Ship the Go binaries as release assets installed through mise's github backend #333 amending its AC1 inventory to drop
agentcontextandagentstore(verified by AC12); or, if Ship the Go binaries as release assets installed through mise's github backend #333 ships them first, the window restarts from that release.
Size
S. One pull request: two directory deletions and about nine one-line reference edits, well under 800 code lines.
Verify plan
- AC1:
test ! -e cmd/agentcontext && test ! -e cmd/agentstore. - AC2:
git grep -E 'agentcontext|agentstore'exits 1. - AC3:
mise run lintandmise run testexit 0. - AC4 to AC7: struck; verified at docs(inventory): refresh the shell inventory and check it for drift #785's merge instead.
- AC8:
git tag --contains <notice commit> --sort=v:refnamelists W1 and W2 in order, with W3 or a later tag as the one carrying the removal; for each of W1 and W2,git ls-tree W -- cmd/agentstore cmd/agentcontextlists both paths. - AC9: the diff contains no
.shfile additions or edits. - AC10: the pull request description contains
Compatibility: noneunder## Riskfollowed by the removal sentence, andmise run lint-pr-descriptionpasses. - AC11: the description's evidence block matches
git log --format=%H -1 -- README.mdat the notice, thegit tag --containsoutput, andgit show W1:README.mdandgit show W2:README.mdeach matching both command names with the worddeprecated. - AC12:
gh query repos/tbhb-dev/devtools/releasesreturns an empty list (or none whose assets name either command);git grep -nE 'upload|asset' .github/workflows/release.ymlshows no asset step naming them; Ship the Go binaries as release assets installed through mise's github backend #333's AC1 text lists neither name.
Risks
A hidden reference to a removed name breaks build or lint, caught by AC2 and AC3. A consumer running go install on the removed paths breaks from the removal tag onward; the two-release warning is the mitigation, and earlier tags keep resolving. Undo: revert the single pull request, which restores both directories.
Operator authority
None.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Work type
Projects
- StatusShow more project fieldsBacklog
Activity
tbhb-dev-reviews commentedon Oct 31, 2026
Refinement: NOT READY — resolve inventory overlap, ownership and compatibility
Checked
origin/mainmatches GitHub main at591fd70b46a5cca7174521d72eace58039a95444.cmd/agentcontext/main.go:23andcmd/agentstore/main.go:23. References remain in the files the issue names. No linked closing PR delivers the deletion.Gaps
Inventory work overlaps an open implementation with a different contract. PR docs(inventory): refresh the shell inventory and check it for drift #785, closing docs(inventory): refresh the shell migration inventory and owners #754, already adds the missing library, helper and unattended-wrapper rows and removes the old decision key. It replaces the G2/G7 tables rather than re-keying them. AC4–AC7 and “Nothing here is delivered yet” overlook that open work. The counter at
tools/script_lines.py:19excludes comments/blanks, whereas docs(inventory): refresh the shell migration inventory and owners #754/docs(inventory): refresh the shell inventory and check it for drift #785 require newline counts. Assign one owner and counting convention. Move these inventory outcomes to docs(inventory): refresh the shell migration inventory and owners #754/docs(inventory): refresh the shell inventory and check it for drift #785, or define a distinct slice and landing order. If Retire the agentcontext and agentstore placeholders and update the script inventory #320 must wait for docs(inventory): refresh the shell migration inventory and owners #754, add native blocked-by; a shared file alone does not require that dependency.AC6 verifies link presence rather than correct ownership. The Approach assigns merge policy to feat(merge): port merge readiness composition to Go #845, but that issue ports readiness composition, not the policy helper at
packages/agents/source/skills/merge-pr/shared/scripts/merge-policy.py:8. Move the merge-pr, merge policy and agent-merge-pr scripts into agentrepo merge #324 and its children own policy migration. Port the gate runner and pass cache from Python to Go #713 owns gates, while Move the commit and agent-commit scripts into agentrepo commit #322/Move the pr, write-pr-description and agent-pr scripts into agentrepo pr #323/Move the merge-pr, merge policy and agent-merge-pr scripts into agentrepo merge #324 explicitly own the corresponding unattended entry points. Require links to issues whose scopes actually cover each row, and verify those scopes rather than using Replace complex shell with tested Go, starting with gates and merging #588 when a narrower owner exists.AC8 contradicts AC1 and lacks a sufficient compatibility check. Both command directories exist in released tag
v0.23.0.README.md:54describes eachcmd/tool as a standalone binary;README.md:59andREADME.md:60advertise these two. Deleting them changes the tagged Go source-install surface despite their version-only behavior and the absence of binary release assets. Reconcile “no published binary ... or consumer-facing command changes” with deletion and the two-release removal warning indocs/compatibility.md:5. State actual consumer impact and evidence permitting removal, or retain compatibility through the warning window. Clean generated skills and an unchanged package-output diff cannot prove the command surface is unchanged. Trace the decision and verification to AC8.Split
Keep #320 as one S deletion/reference-cleanup PR after settling compatibility. Consolidate inventory additions, ownership validation, the counting convention and the freeze-rule paragraph into existing #754/#785 work. Do not create a second inventory implementation or add shell logic. If an inventory slice remains here, define its boundary against #785 and update AC4–AC7 and Verify together.
Definition of done
Checked boxes mark coverage in the ACs and Verify plan, not completed implementation or merge evidence. Unchecked boxes remain completion obligations.
provenance:agent-assisted.Status:comment names the merge commit.Round: 1 of 3
tbhb-dev-reviews commentedon Oct 31, 2026
Refinement: NOT READY — file the prerequisite and make the removal window verifiable
Checked
origin/mainand GitHub main both resolve to591fd70b46a5cca7174521d72eace58039a95444. Both version-only scaffolds remain atcmd/agentcontext/main.go:23andcmd/agentstore/main.go:23, including in tagv0.23.0. References remain atREADME.md:59,README.md:60,docs/script-inventory.md:31, and the listed dictionaries, ignore file, allowlist and test.Nonefits removal after the ordinary compatibility window; it would not authorize an exception.Gaps
The mandatory prerequisite is still unfiled, and native blocked-by is empty. The body says the deprecation notice is “filed separately below,” but the Approach calls it “Proposed split, not filed here” and supplies no issue number. File that small notice issue, give it numbered ACs and verification, and add it as a native blocker of Retire the agentcontext and agentstore placeholders and update the script inventory #320. Also represent the stated inventory prerequisite with native blocked-by on docs(inventory): refresh the shell migration inventory and owners #754, whose implementation is docs(inventory): refresh the shell inventory and check it for drift #785, or explicitly remove that landing dependency and define another way to satisfy AC2. A prose mention of waiting for a PR does not establish the native dependency. Keep the two-release wait as an explicit release condition attached to the notice, rather than an unnamed issue dependency.
AC8's Verify entry does not establish its compatibility guarantees.
docs/compatibility.md:5requires warning consumers for at least two releases. Counting tags containing an unspecified notice commit does not by itself identify the first warning release, the ordered warning releases, or the earliest permissible removal release; the removal tag also does not exist when approving the deletion PR. Name the evidence to record before merge: the actual notice commit and tagged README, release versions/order, and the earliest allowed removal version. Verify that the warning names both commands and that both paths remain available throughout that window. The workflow grep checks only today's workflow; it does not verify AC8's assertion that no GitHub Release ever carried either command or that earlier tags still resolve unchanged. Add those checks or narrow the AC to the compatibility promise that matters. Current GitHub Releases are empty and.github/workflows/release.yml:11describes tag-based distribution, but source installation is still a consumer surface. AC10 should also specify the exact accepted compatibility declaration:docs/compatibility.md:13currently documents onlynoneanddeprecates, so “the compatibility line naming the removal” leaves its expected content undefined.Split
Keep #320 as one S deletion/reference-cleanup PR. File the already-proposed README deprecation as its own prerequisite; retain the inventory work solely in #754/#785. Update the issue title to match the reduced scope. No additional port or shell implementation belongs here.
Definition of done
Checked boxes mark coverage in the ACs and Verify plan, not completed implementation. Unchecked boxes remain completion obligations.
check-leaks.shwith the repository's private-strings list, and the leak review of each post.docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why. AC2 covers remaining name references, while docs(inventory): refresh the shell migration inventory and owners #754/docs(inventory): refresh the shell inventory and check it for drift #785 own the inventory replacement.provenance:agent-assistedlabel.Status:comment names the merge commit.Round: 2 of 3
tbhb-dev-reviews commentedon Oct 31, 2026
Refinement: NOT READY — prerequisite tracking and release evidence remain unresolved
Checked
Refinement:, so this is the last round. No tests or full suites were run, and no other agents or sessions were contacted.origin/mainmatches GitHub main at44be762a34eec4a832e1ed608c77ebf188357719.cmd/agentcontext/main.go:23andcmd/agentstore/main.go:23, including in tagv0.23.0. Named references remain, includingREADME.md:59,README.md:60,cmd/shell-allowlist/run_test.go:31anddocs/script-inventory.md:31. No open or merged PR found delivers the deletion. Open docs(inventory): refresh the shell inventory and check it for drift #785 replaces the inventory; its added lines contain neither command name.Nonefits removal after the normal warning window.docs/compatibility.md:5requires two warning releases. AC10 now supplies an accepted declaration consistent withdocs/compatibility.md:20andpackages/agents/source/skills/pr/shared/scripts/validate-description.sh:508. Current GitHub Releases are empty;.github/workflows/release.yml:11describes tag-based distribution.Gaps
The mandatory prerequisite is still unfiled and native blocked-by is empty. The body explicitly calls the notice issue “not yet filed.” Ship the Go binaries as release assets installed through mise's github backend #333 still lists both commands in AC1, and no separate amendment issue is identified. File the bounded README notice with numbered ACs and verification, identify the actual owner/issue for the Ship the Go binaries as release assets installed through mise's github backend #333 amendment, and establish the native blockers. At minimum, represent the stated docs(inventory): refresh the shell migration inventory and owners #754 prerequisite and notice issue natively. If the prerequisite is only an inventory amendment, link that issue rather than making deletion depend on unrelated asset-production implementation. Keep W1/W2 as release conditions. Proposed titles and prose “Blocked by” bullets do not establish dependencies.
Merge-time and release-time evidence disagree. AC8's Verify requires W3 or a later tag carrying removal, which cannot exist when approving the unmerged removal PR. AC11 improves pre-merge evidence but leaves that conflict. AC12 also requires no GitHub Release to exist, while its Verify accepts Releases whose assets omit the commands. Dependencies allow Ship the Go binaries as release assets installed through mise's github backend #333 to ship them and restart the window, but AC12 would then reject the historical Release indefinitely. Choose one coherent path: require the inventory amendment and absence of these commands from released payloads, rather than absence of every Release; record the notice commit, first warning tag W1, next warning tag W2, deprecated README text, retained paths throughout the window and earliest removal version before merge; check the actual removal tag after release as separate completion evidence. If retaining the restart alternative, define its new warning boundary and reconcile AC12 with the historical assets. Inspect archive inventories/metadata too: Ship the Go binaries as release assets installed through mise's github backend #333 AC2 bundles commands in platform archives, so asset filenames alone cannot prove absence.
The issue claims an inventory review still outstanding on the PR. Struck AC6 says docs(inventory): refresh the shell inventory and check it for drift #785's review confirms each row's owner against its issue scope. docs(inventory): refresh the shell inventory and check it for drift #785 explicitly says docs(inventory): refresh the shell migration inventory and owners #754 AC5's independent row review remains outstanding and the PR stays draft until it finishes. Say that confirmation is required there, rather than already established. Also retitle Retire the agentcontext and agentstore placeholders and update the script inventory #320 to its reduced retirement scope; its live title still advertises inventory work.
Split
Keep the eventual deletion/reference cleanup as one S PR, with inventory replacement solely in #754/#785. Give the notice and #333 amendment concrete tracked ownership. This is the third NOT READY round: the owner should rethink this as staged deprecation and retirement work, holding deletion for release evidence, rather than run a fourth round on the same unresolved prerequisites. No new shell implementation belongs here.
Definition of done
Checked boxes mark coverage by the ACs and Verify plan, not completed implementation. Unchecked items remain completion obligations.
check-leaks.shwith the repository's private-strings list, and the leak review of each post.docs/, CHANGELOG or help text), or the Verification section says "No doc impact" and why.provenance:agent-assistedlabel.Status:comment names the merge commit.D1 has an AC-to-Verify mapping, but release evidence timing needs correction. D6 is covered by reference cleanup and D8 by the bounded S scope. AC3 names lint/test but does not establish all of D3. The unfiled prerequisite leaves D9 uncovered.
Round: 3 of 3
tbhb-agent commentedon Oct 31, 2026
Superseded: refinement round 3 of 3 failed. The owner split the work into a README deprecation-notice issue and a reduced deletion Chore, to be filed next. This issue stays open until it can be closed, and is not to be refined further or built.