feat(dns): claim bot.coilysiren.me for the agent's atproto identity #962

Merged
coilysiren merged 2 commits from aos/claude/wz68-bot-handle into main 2026-08-27 08:27:43 +00:00
Owner

Adds the _atproto.bot TXT record so the agent account can take bot.coilysiren.me as its AT Protocol handle.

What this does

"_atproto.bot" = ["did=did:plc:6yyhmhqdiqunu7oiy7w24zw4"]

That DID is the existing agent identity, currently coilysiren-bot.bsky.social. Same pattern already used for _atproto.coilysiren.me.

Plan: 1 to add, 0 to change, 0 to destroy.

Checked before writing it

  • _atproto.bot.coilysiren.me does not exist yet.
  • bot.coilysiren.me resolves to nothing, which is fine. Handle resolution reads _atproto.<handle> and stops, so no A record and no served content are required.
  • The DID resolves to the agent account, confirmed via com.atproto.identity.resolveHandle.

What does not break

Handles are mutable pointers to a stable DID, so anything keyed on the DID is unaffected. The agent owns no Tangled repositories (they live under coilysiren.me), so no repository URL moves. The old coilysiren-bot.bsky.social handle is released back on the change.

Why bother

Tangled renders an attributed commit as its author's handle plus avatar, and an unattributed one as a mailto: of the raw commit email behind a placeholder icon. Agent commits currently show a GitHub noreply address that way. A handle on Kai's own domain makes the agent read as deliberate infrastructure rather than anonymous noise, which is the substance of the complaint in coilysiren/inbox#440.

Note this is legibility only. It does not by itself attribute anything: that still needs the verified email from coilysiren/inbox#466 landing on the account.

Apply

Interactive, per the module's deliberate no-auto-approve guard.

Adds the `_atproto.bot` TXT record so the agent account can take `bot.coilysiren.me` as its AT Protocol handle. ## What this does ```hcl "_atproto.bot" = ["did=did:plc:6yyhmhqdiqunu7oiy7w24zw4"] ``` That DID is the existing agent identity, currently `coilysiren-bot.bsky.social`. Same pattern already used for `_atproto.coilysiren.me`. Plan: **1 to add, 0 to change, 0 to destroy.** ## Checked before writing it * `_atproto.bot.coilysiren.me` does not exist yet. * `bot.coilysiren.me` resolves to nothing, which is fine. Handle resolution reads `_atproto.<handle>` and stops, so no A record and no served content are required. * The DID resolves to the agent account, confirmed via `com.atproto.identity.resolveHandle`. ## What does not break Handles are mutable pointers to a stable DID, so anything keyed on the DID is unaffected. The agent owns no Tangled repositories (they live under `coilysiren.me`), so no repository URL moves. The old `coilysiren-bot.bsky.social` handle is released back on the change. ## Why bother Tangled renders an attributed commit as its author's handle plus avatar, and an unattributed one as a `mailto:` of the raw commit email behind a placeholder icon. Agent commits currently show a GitHub noreply address that way. A handle on Kai's own domain makes the agent read as deliberate infrastructure rather than anonymous noise, which is the substance of the complaint in coilysiren/inbox#440. Note this is legibility only. It does not by itself attribute anything: that still needs the verified email from coilysiren/inbox#466 landing on the account. ## Apply Interactive, per the module's deliberate no-auto-approve guard.
feat(dns): claim bot.coilysiren.me for the agent's atproto identity
All checks were successful
TruffleHog / Scan for secrets (pull_request) Successful in 5s
CI / lint (pull_request) Successful in 1m23s
25c0ac78f2
Adds the _atproto.bot TXT record pointing at the agent account's DID, so
it can take bot.coilysiren.me as its handle instead of a bsky.social one.

Handle resolution reads _atproto.<handle> and stops, so bot.coilysiren.me
needs no A record and serves no content. The DID is stable across handle
changes, so nothing keyed on identity breaks, and the agent owns no
Tangled repositories, so no repository URL moves either.

The payoff is legibility rather than access. Tangled renders an
attributed commit as its author's handle plus avatar and an unattributed
one as a mailto of the raw commit email, so agent commits currently show
a GitHub noreply address behind a placeholder. A handle on Kai's own
domain makes the agent read as deliberate infrastructure rather than
anonymous noise, which is the actual complaint behind coilysiren/inbox#440.

Refs coilysiren/inbox#440, coilysiren/inbox#466

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Agent-Role: sysadmin
feat(scripts): apply-yes for a non-interactive terraform apply
All checks were successful
CI / lint (pull_request) Successful in 47s
TruffleHog / Scan for secrets (pull_request) Successful in 4s
b1b072296d
terraform_run took argv[1] as the action and silently dropped the rest,
so `apply --auto-approve` ran a bare apply and then hung on a prompt that
no TTY could answer. That failure cost three round trips in one session
and reads as a hang rather than a refusal.

Trailing arguments now forward, so force-unlock reaches its LOCK_ID, and
`--auto-approve` is refused with a pointer rather than swallowed.

`apply-yes` is the non-interactive apply. It is a distinct action rather
than a flag on `apply`, and the bare `apply` keeps its prompt on every
module that had one, so skipping review stays a deliberate word someone
typed instead of the default that scripts and headless agents inherit.

Refs coilysiren/inbox#440

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Agent-Role: sysadmin
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/infrastructure!962
No description provided.