Add GitHub noreply email alias to coilyco-ops bot #482
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/infrastructure#482
Loading…
Add table
Add a link
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?
Goal
Add the GitHub noreply identity as an email alias for the
coilyco-opsbot:Context
This came up while cutting ward release/build plumbing across Forgejo + GitHub. The bot needs the GitHub noreply address associated with its account so commits, releases, or mirrored activity attributed with GitHub's bot noreply address can still resolve to the coilyco-ops bot identity where the forge supports email alias matching.
The durable home appears to be
scripts/provision-coilyco-ops-bot.shin infrastructure. It currently owns bot user creation/update, password reset, token minting, and SSM storage. It sets the primary email viaBOT_EMAIL=coilyco-ops@coilysiren.me, but it does not manage secondary email aliases.Do
scripts/provision-coilyco-ops-bot.shto add the GitHub noreply address above as an email alias forcoilyco-ops, idempotently.coilyco-ops@coilysiren.meas the primary bot email unless the Forgejo API requires a different representation.Validate
301460342+coilyco-ops[bot]@users.noreply.github.comlisted as an email alias, or document the blocker precisely.Filed from the read-only director surface.
🔒 Reserved by
ward agent --harness claude— containerengineer-claude-infrastructure-482on hostkais-macbook-pro-2.localis carrying this issue (reserved 2026-07-08T19:22:39Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (1h TTL);--forceoverrides.Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh — that is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).
run seed context — what this run is carrying (ward#609)
coilyco-flight-deck/infrastructure#482· branchissue-482· harnessclaude· workflowdirect-mainengineer-claude-infrastructure-482· wardv0.463.0· dispatched2026-07-08T19:22:39ZStatic container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.463.0).
— Claude (she/her), via
ward agentCorrection from Kai after filing: this should not hardcode the full GitHub noreply alias. The GitHub bot identity is now represented by SSM config under
/github/, including/github/coilyco-ops-user-id; consumers should derive<user-id>+coilyco-ops[bot]@users.noreply.github.comwhere needed.The SSM inventory update is now tracked separately as coilyco-bridge/agentic-os-kai#720. This comment is for human readers only because this issue is already reserved and the running engineer does not re-read comments.
WARD-RESERVATION: held 🔒
reservation details
Holder: container
engineer-codex-infrastructure-482on hostkais-macbook-pro-2.local.Reserved by
ward agent --harness codex(reserved 2026-07-10T12:12:48Z). Concurrentward agentruns are blocked until it finishes or the reservation goes stale (1h TTL).--forceoverrides.Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh. That is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).
run seed context — what this run is carrying (ward#609)
coilyco-flight-deck/infrastructure#482· branchissue-482· harnesscodex· workflowdirect-mainengineer-codex-infrastructure-482· wardv0.580.0· dispatched2026-07-10T12:12:48ZStatic container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.580.0).
— Codex, via
ward agentWARD-OUTCOME: done
details
workflow: direct-main; review summary: review gate skipped by ~/.ward/config.yaml default felt: straightforward. the merge only needed one upstream token-family conflict. confidence: medium-high surprises: the live Forgejo token in this container can read `coilyco-ops` but lacks `write:user`, so the alias add itself is still blocked here. follow-ups: run the alias add once a `write:user` credential or the bot password is available, then rerun `scripts/provision-coilyco-ops-bot.sh` to confirm `/api/v1/user/emails`.Live reconciliation was retried on 2026-07-15 from the infrastructure repo without using the site-admin token path. The existing bot password from SSM can read /api/v1/user/emails, so auth is not the current blocker.\n\nThe add call fails with HTTP 422 because Forgejo rejects the derived GitHub App noreply address as an invalid email. The rejected address was the SSM-derived coilyco-ops GitHub App bot noreply form, redacted in local output as .\n\nThat means the remaining blocker is Forgejo email validation for the GitHub App bot local part containing [bot], not just missing write:user scope. The script still has the right derivation logic, but the live alias cannot be reconciled through /api/v1/user/emails as written.