fix(forgejo): declare state/ambient so it stops reading as taxonomy drift #984

Merged
coilyco-ops merged 1 commit from aos/claude/uv47-state-ambient-taxonomy into main 2026-08-29 05:29:29 +00:00
Owner

What

Declares state/ambient in config/forgejo-label-taxonomy.yaml, and documents the state/* axis in the file header beside the others.

Why

I minted three state/ambient org labels earlier today through aosguard ops forgejo-admin org-label create, for the maintained-document surface decided in coilysiren/inbox#482. I did not know this file existed. Kai's question, "doesn't the infra repo use exactly that", is what surfaced it.

The converge saw them exactly as you would expect:

=== coilyco-gaming
  undeclared, left alone: role/exec, role/qa, state/ambient
=== coilyco-bridge
  undeclared, left alone: role/exec, role/qa, state/ambient
=== coilyco-flight-deck
  undeclared, left alone: role/exec, role/qa, state/ambient

It would have said that forever. Their colour and description had no declared owner, so nothing could ever drive them to a correct value, and the only way to change them was another imperative call from the same second writer that created the problem.

After this change, on all three orgs:

  undeclared, left alone: role/exec, role/qa

state/ambient is gone from the undeclared list and appears in no create or edit line, because it is declared at the value that is already live. The converge is a no-op for this label, which is the point: this PR closes a governance gap without touching the cluster.

The colour is the open question, and it belongs in this diff

0e8a16 is what I picked when I created them, arbitrarily. Portia raised that it sits close to role/*'s 70c24a, and two greens a few shades apart read as one family in a label list, which is wrong for what is meant to be a fourth distinct axis. 006b75 was proposed instead.

I have deliberately not changed it here. Declaring the live value keeps this PR a pure no-op, and turns the colour from an imperative call into a reviewed line. Changing it is a one-line follow-up plus a converge run, and it is free right now because no issue carries the label. That window closes the moment the #482 documents are minted.

Not addressed here

  • The pre-existing divergence. --check still fails on three pending renames (role/devrel, role/eval, role/tpm), two edits (role/frontend, role/platform), and role/exec / role/qa being retired-but-present. All of that predates this branch and is owned by agent-compose#342.
  • The governance defect that let this happen: aosguard ops forgejo-admin org-label create is a second writer, on a different principal, to a resource this file declares. Filed as agentic-os#1380, and it is platform's call whether that verb is removed, gated, or documented as break-glass.
  • Applying the converge. The script's docstring says it requires an org owner token and that coilyco-ops is a member rather than an owner. No apply is needed for this label anyway, since it is already at the declared value.

Verification

  • uv run python scripts/forgejo-label-taxonomy-sync.py --check before and after, output above. Read-only.
  • pre-commit run --files config/forgejo-label-taxonomy.yaml passes.
  • No cluster or label was modified by this branch.
## What Declares `state/ambient` in `config/forgejo-label-taxonomy.yaml`, and documents the `state/*` axis in the file header beside the others. ## Why I minted three `state/ambient` org labels earlier today through `aosguard ops forgejo-admin org-label create`, for the maintained-document surface decided in `coilysiren/inbox#482`. **I did not know this file existed.** Kai's question, "doesn't the infra repo use exactly that", is what surfaced it. The converge saw them exactly as you would expect: ``` === coilyco-gaming undeclared, left alone: role/exec, role/qa, state/ambient === coilyco-bridge undeclared, left alone: role/exec, role/qa, state/ambient === coilyco-flight-deck undeclared, left alone: role/exec, role/qa, state/ambient ``` **It would have said that forever.** Their colour and description had no declared owner, so nothing could ever drive them to a correct value, and the only way to change them was another imperative call from the same second writer that created the problem. After this change, on all three orgs: ``` undeclared, left alone: role/exec, role/qa ``` `state/ambient` is gone from the undeclared list and appears in **no** create or edit line, because it is declared at the value that is already live. **The converge is a no-op for this label**, which is the point: this PR closes a governance gap without touching the cluster. ## The colour is the open question, and it belongs in this diff `0e8a16` is what I picked when I created them, arbitrarily. Portia raised that it sits close to `role/*`'s `70c24a`, and two greens a few shades apart read as one family in a label list, which is wrong for what is meant to be a fourth distinct axis. **`006b75`** was proposed instead. I have deliberately **not** changed it here. Declaring the live value keeps this PR a pure no-op, and turns the colour from an imperative call into a reviewed line. Changing it is a one-line follow-up plus a converge run, and it is **free right now** because no issue carries the label. That window closes the moment the `#482` documents are minted. ## Not addressed here * The pre-existing divergence. `--check` still fails on three pending renames (`role/devrel`, `role/eval`, `role/tpm`), two edits (`role/frontend`, `role/platform`), and `role/exec` / `role/qa` being retired-but-present. **All of that predates this branch** and is owned by `agent-compose#342`. * The governance defect that let this happen: `aosguard ops forgejo-admin org-label create` is a second writer, on a different principal, to a resource this file declares. Filed as `agentic-os#1380`, and it is platform's call whether that verb is removed, gated, or documented as break-glass. * **Applying the converge.** The script's docstring says it requires an org owner token and that `coilyco-ops` is a member rather than an owner. No apply is needed for this label anyway, since it is already at the declared value. ## Verification * `uv run python scripts/forgejo-label-taxonomy-sync.py --check` before and after, output above. Read-only. * `pre-commit run --files config/forgejo-label-taxonomy.yaml` passes. * No cluster or label was modified by this branch.
fix(forgejo): declare state/ambient so it stops reading as taxonomy drift
All checks were successful
TruffleHog / Scan for secrets (pull_request) Successful in 4s
CI / lint (pull_request) Successful in 43s
66478680d8
Three state/ambient org labels were minted through
`aosguard ops forgejo-admin org-label create` on 2026-08-29 for the
maintained-document surface decided in coilysiren/inbox#482, without
knowing this file existed. The converge reported them as
"undeclared, left alone" on all three orgs, which it would have done
forever: their colour and description had no declared owner, so nothing
could ever drive them to a correct value.

Declared at the live value, so the converge is a no-op rather than a
change. `--check` no longer lists state/ambient as undeclared on any org.

The colour is the open question and belongs in review rather than in an
imperative call: 0e8a16 sits close to role/*'s 70c24a and two greens a
few shades apart read as one family in a label list. 006b75 was proposed
as a more distinct value for a new axis. Changing it here is a one-line
follow-up plus a converge run, and is free while no issue carries the
label.

Refs coilysiren/inbox#482, coilyco-flight-deck/agentic-os#1380

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
1 participant
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!984
No description provided.