feat(aterm): tag every role bundle so one Spotlight word finds the set #1371
No reviewers
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agentic-os!1371
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/mt75-bundle-tag"
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?
Kai asked whether an app tag exists so typing
acomposesurfaces all seven role apps at once. It does, and this writes one on every bundle.Verified before building, not after
Finder tags live in the
com.apple.metadata:_kMDItemUserTagsxattr. The question that mattered was whether a plain query matches them, or onlytag:acompose, since Kai wants to type one word:Plain text matches. Finder writes a binary plist there; I checked that the XML form indexes identically, which is what lets this emit one without pulling in a plist encoder.
Shape
--tagdefaults toacompose, the shell verb that already means "the role apps".golang.org/x/sys/unixrather than stdlib, because darwin has nosyscall.Setxattr. It was already in the module graph as an indirect dependency, so this promotes it rather than adding surface. Linux gets a no-op behind a build tag: only macOS grows.appbundles, and aterm still shipslinux/amd64andlinux/arm64.The
.appsuffix, asked in the same breathIt cannot go, and there is nothing to build. macOS requires the extension for a bundle to be an app. The per-bundle extension-hidden flag is overridden by Finder's show-all-extensions preference, which is set to
1on this host.Measured rather than assumed — I set the flag on a stale bundle and re-read the display name:
Unchanged. That preference is one global Finder setting, so it is Kai's toggle rather than anything a launcher can decide per app. Reverted after testing.
Tests
TestABundleCarriesTheSharedFinderTag— an untagged bundle is a silently unfindable one, which is the whole failure mode.TestAnEmptyTagWritesNothing—--tag ""writes no xattr rather than an empty one.Five existing
writeBundlecall sites updated for the widened signature. Full aterm suite green,go vetclean, and aGOOS=linuxcross-build to prove the no-op compiles.Docs, and a cap that is now genuinely spent
docs/aterm.mdsits at exactly 8000 of its 8000-character cap after one clause about the tag. To fit it I had to drop the.appfinding from the doc entirely and compress five existing sentences.That is the third PR in a row to pay this tax, and it is the strongest evidence yet for #1341. The next aterm fact has nowhere at all to go.
Not included
Applying the tag to the installed bundles. That is a regeneration against the user's
~/Applicationsand belongs with the release, not the PR.