Skip to content

chore: release v0.7.0 (develop → main)#231

Merged
amcheste merged 56 commits into
mainfrom
develop
May 12, 2026
Merged

chore: release v0.7.0 (develop → main)#231
amcheste merged 56 commits into
mainfrom
develop

Conversation

@amcheste-ai-agent
Copy link
Copy Markdown
Contributor

Promotes developmain for the v0.7.0 release.

Merging this PR with gh pr merge --merge --admin (per the documented release flow in this repo) creates a merge commit on main so ancestry is preserved. After merge: tag v0.7.0 on main to trigger the release pipeline.

What v0.7.0 ships

🤖 Generated with Claude Code

amcheste-ai-agent and others added 30 commits May 2, 2026 00:50
Adds a `linear-ref` job to validate.yml that fails PRs to develop unless
the PR body or one of its commit messages contains an `AMC-N` Linear
identifier — or an explicit `No-Linear-Issue: <reason>` trailer for
genuinely untracked work.

Why: the Linear ↔ GitHub integration auto-closes Linear issues only when
a PR references the right ID. The dashboard work in v0.6.0 missed this
— AMC-71/72/73/74 sat in Backlog through the release because the PRs
referenced freshly-created GitHub issue numbers instead of the existing
AMC IDs the integration knew about.

Skipped for:
  - PRs to main (release promotion rolls up commits already checked at
    the develop merge — matches the existing commit-lint pattern)
  - dependabot bumps (no Linear tracking by convention)

PR template grows a `## Linear` section with a `Fixes AMC-XXX` placeholder
so the prompt is unmissable when opening a new PR.

Fixes AMC-98

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
## Summary
Adds a `linear-ref` job to [validate.yml](.github/workflows/validate.yml) that fails PRs to `develop` unless the PR body or one of its commit messages contains an `AMC-N` Linear identifier — or an explicit `No-Linear-Issue: <reason>` trailer.

## Linear

Fixes AMC-98

## Why
The Linear ↔ GitHub integration auto-closes Linear issues only when a PR references the right ID. v0.6.0 missed this — [AMC-71/72/73/74](https://linear.app/amcheste/project/claude-teams-operator-32aab082f36b) sat in Backlog through the release because PRs referenced freshly-created GitHub issue numbers instead of the existing AMC IDs the integration already knew about.

## Changes
- **`.github/workflows/validate.yml`**: new `linear-ref` job. Greps the combined PR body + commit-range bodies for `AMC-\d+` or a `No-Linear-Issue:` trailer; fails with a helpful message + the Linear project URL otherwise.
- **`.github/PULL_REQUEST_TEMPLATE.md`**: new `## Linear` section with a `Fixes AMC-XXX` placeholder.

Skipped for:
- PRs to `main` (release-promotion rolls up commits already checked at the develop merge — matches the existing `commit-lint` pattern)
- dependabot bumps (no Linear tracking by convention)

## Test plan
- [x] This PR's body contains `Fixes AMC-98` — the new check should pass on its own PR
- [ ] Try opening a PR without an AMC reference (post-merge) — verify the check fails with the helpful message
- [ ] Try a PR with `No-Linear-Issue: trivial doc fix` — verify it passes
- [ ] Verify the existing `commit-lint` job still runs unchanged
First v0.7.0 milestone landing — stands up the documentation site
infrastructure so subsequent content issues just write Markdown into
a working site.

Includes:
- mkdocs.yml configured for mkdocs-material with dark-mode toggle,
  search, code highlighting tuned for YAML/Go, indigo palette,
  Inter/JetBrains Mono fonts, GitHub repo + edit links
- docs/index.md — placeholder homepage with hero, quickstart install
  one-liner, and the four "why kagents" differentiators
- docs/README.md — contributor dev-loop instructions (excluded from
  the built site to avoid the README/index collision)
- docs/requirements.txt — pinned mkdocs-material 9.5.50 +
  git-revision-date-localized 1.2.7
- .github/workflows/docs.yml — builds with mkdocs gh-deploy on every
  push to main that touches docs/, mkdocs.yml, or the workflow itself
- .gitignore — adds the mkdocs site/ build output

Excludes pre-existing docs/helm-values.md and docs/cfp/ from the site
build via exclude_docs — they have repo-relative links that break in
the site context. Both will be migrated into proper site pages
(helm-values into /reference/, cfp/ stays internal repo-only) in
follow-up v0.7.0 issues.

The first deploy after merge will create the gh-pages branch and
serve the site at amcheste.github.io/claude-teams-operator until DNS
for kagents.dev (AMC-82) lands, at which point the same site
auto-resolves at https://kagents.dev with no further code change.

Verified locally: `mkdocs build --strict` clean (after commit) and
`mkdocs serve` renders cleanly in light + dark mode.

Fixes AMC-56

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
The mkdocs build writes to site/ in the repo root. Without this,
local `mkdocs build` or `mkdocs gh-deploy` runs leave it as untracked
clutter every time a contributor previews the docs site.

Fixes AMC-56

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
## Summary
First v0.7.0 milestone landing — stands up the mkdocs-material site infrastructure so subsequent content issues just write Markdown into a working site.

## Linear

Fixes AMC-56

## Changes
- **`mkdocs.yml`** — mkdocs-material configured with dark-mode toggle, search, code highlighting, indigo palette, Inter/JetBrains Mono fonts, GitHub repo + edit links
- **`docs/index.md`** — placeholder homepage with hero, 5-line quickstart, and the four "why kagents" differentiators
- **`docs/README.md`** — contributor dev-loop instructions (excluded from the built site to avoid the README/index collision)
- **`docs/requirements.txt`** — pinned `mkdocs-material==9.5.50` + `mkdocs-git-revision-date-localized-plugin==1.2.7`
- **`.github/workflows/docs.yml`** — builds with `mkdocs gh-deploy` on every push to `main` that touches `docs/`, `mkdocs.yml`, or the workflow itself
- **`.gitignore`** — adds `site/` build output

`exclude_docs` in mkdocs.yml skips the pre-existing `docs/helm-values.md` and `docs/cfp/` from the site build — both have repo-relative links that break in the site context. They'll be migrated into proper site pages in follow-up v0.7.0 issues (helm-values → `/reference/`, cfp/ stays repo-internal).

## What happens after merge
The first deploy creates the `gh-pages` branch and serves the site at `amcheste.github.io/claude-teams-operator` until DNS for kagents.dev (AMC-82) lands. Once DNS resolves, the same site auto-serves at https://kagents.dev with no further code change.

## Test plan
- [x] `mkdocs build --strict` clean locally (zero warnings)
- [x] `mkdocs serve` renders cleanly in light + dark mode
- [ ] After merge: verify the workflow run succeeds and the gh-pages branch is created
- [ ] After merge: verify the site is reachable at amcheste.github.io/claude-teams-operator
Three v0.7.0 issues bundled — they're tightly coupled:

- AMC-84: Diátaxis nav with four top-level sections (Tutorials,
  How-to guides, Reference, Explanation) + section index pages so
  the structure renders correctly even when sections are sparse
- AMC-85: Polished homepage replacing the placeholder — Material
  card grid for "Why kagents" and the four section pointers, hero
  with primary/secondary CTAs, 5-line quickstart, footer with
  source + KubeCon talk pointer
- AMC-86: Getting Started tutorial — end-to-end Kind walkthrough
  from `make kind-create` through running a Cowork-mode hello team
  and inspecting its output. ~15 minutes start to finish, no cloud
  accounts needed. Common-errors collapsibles cover the three
  failure modes a fresh user hits most often (PVC pending,
  CrashLoopBackOff from missing API key, init-Job permission).

Section index pages for sparse sections (How-to, Reference,
Explanation) explicitly point at the existing in-repo docs
(helm-values.md, ARCHITECTURE.md) as the interim source while the
v0.7.0 content issues fill them in. No broken links, no dead-end
pages.

Verified locally: `mkdocs build --strict` clean (post-commit, the
git-revision-date-localized warnings only fire for uncommitted
files), `mkdocs serve` renders cleanly in light + dark mode.

Fixes AMC-84
Fixes AMC-85
Fixes AMC-86

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
…#195)

## Summary
Three v0.7.0 issues bundled — they're tightly coupled (nav defines the four sections, homepage links into them, the Getting Started tutorial is the first real content page).

## Linear

Fixes AMC-84
Fixes AMC-85
Fixes AMC-86

## Changes
- **`mkdocs.yml`** — `nav` block with the four Diátaxis sections (Tutorials, How-to, Reference, Explanation)
- **`docs/index.md`** — polished homepage replacing the placeholder. Material card grid for "Why kagents" and the four section pointers, hero with primary/secondary CTAs, 5-line quickstart, footer with source + KubeCon talk
- **`docs/tutorials/index.md`**, **`docs/how-to/index.md`**, **`docs/reference/index.md`**, **`docs/explanation/index.md`** — section landing pages. Sparse sections explicitly point at existing in-repo docs (helm-values.md, ARCHITECTURE.md) as the interim source until the v0.7.0 content issues fill them in
- **`docs/tutorials/getting-started.md`** — full end-to-end Kind walkthrough from `make kind-create` through running a Cowork-mode hello team and inspecting its output. ~15 minutes start to finish, no cloud accounts needed. Three common-errors collapsibles for the most likely first-timer failures

## Test plan
- [x] `mkdocs build --strict` clean locally
- [x] `mkdocs serve` renders cleanly in light + dark mode
- [ ] After merge: verify the deployed site renders the nav + cards correctly (will deploy at next push to main)
- [ ] Future-self should walk through the Getting Started tutorial top-to-bottom on a fresh laptop to verify accuracy
Three v0.7.0 issues bundled — they're the Explanation section's content
trio and they cross-link to each other heavily.

- AMC-87: Resource model — covers AgentTeam / AgentTeamTemplate /
  AgentTeamRun. Mermaid diagram of the Template→Run→Team relationship,
  per-CRD field anatomy, the "which one do I use" decision tree, a
  worked example that defines a 3-agent security review template
  once and instantiates it against three repos. Phase state machine
  inline.

- AMC-88: Coordination protocol — the load-bearing design choice.
  Why file-based instead of custom RPC (no protocol versioning,
  inspectable with kubectl exec, no extra infrastructure), mailbox
  layout under ~/.claude/teams/, Mermaid diagram of pod/PVC topology
  showing why ReadWriteMany is non-negotiable on multi-node, the
  per-teammate worktree model with the actual `teammate-{name}`
  branch convention, push-branch consolidation, single-node fallback
  with a danger callout for the multi-node footgun.

- AMC-89: Operations — budget, RBAC, observability. Budget section
  uses the actual rates from internal/budget/tracker.go (per-million
  Anthropic list price × 50K input + 5K output tokens-per-minute
  heuristic) instead of the stale per-minute numbers in
  ARCHITECTURE.md. RBAC section walks through the per-agent SA/Role/
  RoleBinding generation, what each agent can and cannot do, and
  what threats this defends against (vs. what's still inherent to
  the file-based protocol). Observability lists all eight Prometheus
  metric series, the Grafana dashboard wiring, and the four webhook
  event types.

Wires Mermaid into mkdocs.yml via pymdownx.superfences custom_fences
so the diagrams render on the site. Updates the Explanation section
index to point at the three new pages instead of the interim
ARCHITECTURE.md pointer.

Verified locally: `mkdocs build --strict` clean (post-commit).
Mermaid renders correctly in `mkdocs serve`.

Heads-up worth following up on: ARCHITECTURE.md's budget rate table
(opus $0.0225/min, sonnet $0.0090/min) doesn't match the code in
internal/budget/tracker.go. The new operations.md page documents the
code reality. Worth a small follow-up PR to either reconcile
ARCHITECTURE.md or note that the doc is approximate.

Fixes AMC-87
Fixes AMC-88
Fixes AMC-89

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
…#196)

## Summary
The Explanation section's content trio. Three v0.7.0 issues bundled — they're tightly coupled and cross-link heavily.

## Linear

Fixes AMC-87
Fixes AMC-88
Fixes AMC-89

## Changes
- **`docs/explanation/resources.md`** (AMC-87) — AgentTeam / AgentTeamTemplate / AgentTeamRun. Mermaid diagram of the relationship, per-CRD field anatomy, "which one do I use" decision tree, worked example, phase state machine
- **`docs/explanation/coordination.md`** (AMC-88) — file-based protocol vs custom RPC, mailbox layout, Mermaid topology diagram, ReadWriteMany requirement and supported backends, per-teammate worktree model with the actual `teammate-{name}` branch convention, push-branch consolidation, single-node fallback with safety callout
- **`docs/explanation/operations.md`** (AMC-89) — budget (using actual rates from `internal/budget/tracker.go`), per-agent RBAC with threat model, eight Prometheus metric series, Grafana dashboard wiring, four webhook event types, approval gates
- **`mkdocs.yml`** — wires Mermaid into `pymdownx.superfences custom_fences` so diagrams render; nav updated with the three new pages
- **`docs/explanation/index.md`** — replaces the interim ARCHITECTURE.md pointer with links to the three real pages

## Heads-up worth flagging
`ARCHITECTURE.md`'s budget rate table (opus $0.0225/min, sonnet $0.0090/min) does **not** match the code in `internal/budget/tracker.go` (which uses per-million Anthropic list price × ~50K input + 5K output tokens/min/agent → $0.375/min for opus, $0.225/min for sonnet). The new `operations.md` page documents the code reality. Worth a small follow-up PR to reconcile ARCHITECTURE.md or note that the doc is approximate.

## Test plan
- [x] `mkdocs build --strict` clean locally
- [x] `mkdocs serve` renders all three pages correctly in light + dark mode
- [x] Mermaid diagrams render correctly
- [ ] After merge: verify diagrams render on the live site (will deploy at next push to main)
Two v0.7.0 issues bundled — they're the entire How-to section, all
six pages.

- AMC-90: Three cloud install guides under /how-to/install/. Each
  walks from a working cluster through CSI-driver setup, the
  cloud-native RWX backend (EFS / Filestore / Azure Files Premium
  NFS), the StorageClass YAML, helm install, and ends with the
  same `make mailbox-smoke-test` verification. Honest cost
  ranges per backend, plus collapsible "common gotchas" boxes
  for each cloud's specific failure modes (EFS security-group
  rules, Filestore 1 TiB minimum, Azure subnet service endpoints
  + the NFS-vs-SMB choice).

- AMC-91: Three operational how-tos under /how-to/operate/.
  - expose-dashboard.md: port-forward (dev), Ingress with
    htpasswd basic auth (small prod), oauth2-proxy pattern
    (corporate SSO). Covers namespace-scoping via
    dashboard.namespace too.
  - shared-storage.md: per-volume sizing recommendations,
    backup recipes per cloud (AWS Backup / Filestore Backups /
    Azure Backup), perf-tuning recipes (EFS throughput modes,
    Filestore tier choice, Azure Files nconnect=4).
  - budget-alerts.md: per-team budgetLimit, chart-wide
    defaultBudgetLimit, the budget.warning webhook payload shape
    with a Slack-relay sketch in Python, two PrometheusRule
    examples (per-team threshold + aggregate cross-team cost),
    and a callout to reconcile against actual Anthropic Console
    spend weekly.

how-to/index.md replaces the v0.7.0-coming-soon placeholder with
real links to all six pages, organized into Install and Operate
buckets that mirror the directory structure.

mkdocs.yml gets nested nav entries for both buckets so the section
sidebar reads cleanly.

Each page links back to the relevant Explanation page for the why,
so readers landing on a how-to via search can jump back to the
concept material if they need it.

Verified locally: `mkdocs build --strict` clean (post-commit).
Internal cross-links all resolve.

Fixes AMC-90
Fixes AMC-91

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
## Summary
The entire How-to section in one PR — six pages, ~887 lines.

## Linear

Fixes AMC-90
Fixes AMC-91

## Changes
**Cloud install guides** (AMC-90) — `/how-to/install/`:
- **`eks.md`** — EFS CSI driver, EFS file system + Access Points, StorageClass YAML, helm install, smoke test. Cost ballpark $5–$30/month
- **`gke.md`** — Filestore CSI add-on enable, StorageClass with dynamic provisioning, smoke test. Cost ballpark $200–$300/month (1 TiB minimum)
- **`aks.md`** — Azure Files CSI driver, Premium NFS share with `nconnect=4`, smoke test. Cost ballpark $15–$50/month

**Operational guides** (AMC-91) — `/how-to/operate/`:
- **`expose-dashboard.md`** — port-forward (dev), Ingress + htpasswd basic auth (prod), oauth2-proxy (corporate), `dashboard.namespace` scoping
- **`shared-storage.md`** — sizing the team-state / repo / output PVCs, backup recipes per cloud, perf-tuning recipes per backend
- **`budget-alerts.md`** — per-team `budgetLimit`, chart-wide `defaultBudgetLimit`, `budget.warning` webhook payload + Slack relay sketch, two `PrometheusRule` examples, weekly reconcile against Anthropic Console

**Plumbing**:
- `how-to/index.md` replaces the placeholder with real links organized into Install / Operate buckets
- `mkdocs.yml` nav grows nested entries for both buckets
- Each page links back to the relevant Explanation page for the *why*

## Test plan
- [x] `mkdocs build --strict` clean locally
- [x] `mkdocs serve` renders all six pages correctly in light + dark mode
- [x] All internal cross-links resolve
- [ ] After merge: verify on the live site (will deploy at next push to main)
Replaces the 200px mascot logo at the top of the README with the
new 2560x640 kagents banner (assets/banner.png) at width=800.
The previous logo file is preserved in assets/ for use in social
previews, favicons, etc.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
Fixes AMC-99

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
docs(readme): swap mascot logo for kagents banner
Wires crd-ref-docs into the build so docs/reference/api/index.md
stays in lockstep with api/v1alpha1/*.go. Closes the v0.7.0
documentation milestone's reference section.

Tooling:
- New `make docs-api` target installs crd-ref-docs v0.3.0 (pinned)
  and regenerates the markdown into docs/reference/api/index.md
- hack/crd-ref-docs-config.yaml configures the renderer — Markdown
  output, single-file mode, kubernetesVersion 1.31 for the
  ObjectMeta link target. Filters out the kubebuilder-generated
  `*List` types since they're client-go pagination wrappers, not
  user-facing API surface.

CI guardrail:
- New "Check API reference docs are up to date" step in validate.yml's
  lint job runs `make docs-api` and fails on any diff under
  docs/reference/api/. Mirrors the existing manifests-up-to-date
  check pattern. Catches a contributor adding/changing a kubebuilder
  marker without regenerating the docs.

Site wiring:
- mkdocs.yml nav grows an "API reference" entry under Reference
- docs/reference/index.md replaces the v0.7.0-coming-soon
  placeholder with a real link to the auto-generated page

Generated output:
- docs/reference/api/index.md is 665 lines — every type, every
  field, every kubebuilder validation rule rendered as a markdown
  table. AgentTeam / AgentTeamTemplate / AgentTeamRun all present.
  Embedded types (AgentTeamSpec, LifecycleSpec, etc.) get their
  own sections with cross-link "Appears in" backrefs.

Verified locally:
- `make docs-api` is reproducible (re-running produces no diff)
- `mkdocs build --strict` clean post-commit

Fixes AMC-54

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
Drops the `test -f $(CRD_REF_DOCS) || ...` cache check on the
crd-ref-docs install target so `make crd-ref-docs` (and therefore
`make docs-api`) always invokes `go install
github.com/elastic/crd-ref-docs@$(CRD_REF_DOCS_VERSION)`.

The cached-binary path was a footgun: a contributor with an older
crd-ref-docs already on PATH would silently keep using it after we
bumped CRD_REF_DOCS_VERSION, and the API reference output could
drift from CI's expectation. `go install` against the module proxy
is fast (~1s) for an already-downloaded version, so unconditional
install pays a tiny cost in exchange for guaranteed version
correctness.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
## Summary
Wires `crd-ref-docs` into the build so `docs/reference/api/index.md` stays in lockstep with `api/v1alpha1/*.go`. Closes the v0.7.0 milestone's reference section.

## Linear

Fixes AMC-54

## Changes
**Tooling:**
- New **`make docs-api`** target installs `crd-ref-docs` v0.3.0 (pinned) and regenerates the markdown
- **`hack/crd-ref-docs-config.yaml`** — Markdown renderer, single-file mode, K8s version 1.31 for ObjectMeta links. Filters out `*List` pagination types

**CI guardrail:**
- New **"Check API reference docs are up to date"** step in `validate.yml`'s lint job. Runs `make docs-api`, fails on any diff under `docs/reference/api/`. Same pattern as the existing manifests check — catches a contributor changing a kubebuilder marker without regenerating

**Site wiring:**
- `mkdocs.yml` nav grows an **API reference** entry under Reference
- `docs/reference/index.md` replaces the v0.7.0-coming-soon placeholder with a real link

**Generated output:**
- **`docs/reference/api/index.md`** — 665 lines. Every type, every field, every kubebuilder validation rule. `AgentTeam` / `AgentTeamTemplate` / `AgentTeamRun` all present with embedded types (`AgentTeamSpec`, `LifecycleSpec`, etc.) cross-linked

## Test plan
- [x] `make docs-api` is reproducible (re-running produces no diff)
- [x] `mkdocs build --strict` clean
- [x] CI's new docs-api drift check should pass on this PR (the committed output matches the regenerated output)
…d issue templates

Closes the v0.7.0 milestone with the community-baseline trio so the
GitHub Community Standards page reads 100% and external contributors
have an obvious path in.

CODE_OF_CONDUCT.md (new):
- Adopts Contributor Covenant v2.1 by reference (links to canonical
  text rather than vendoring it inline). Defines scope, reporting
  channels (email + GitHub Security Advisory), enforcement stages,
  and attribution.

SECURITY.md (refreshed):
- Adds explicit coordinated-disclosure expectations: 7-day
  acknowledgement, 30-day fix-or-status-update, 90-day max embargo,
  GitHub Security Advisory + CVE workflow.
- Adds "what counts as a security issue" with in-scope and
  out-of-scope examples — privilege escalation, container escape,
  RBAC bypass, dashboard info-disclosure are in; pure DoS requiring
  cluster-admin to set up is out.
- Pointer to the docs site's Operations explanation for the
  defense-in-depth model.

CONTRIBUTING.md (polished):
- Welcome paragraph + 4-step orientation (Getting Started tutorial →
  concept pages → this guide → good first issues).
- Code of Conduct reference.
- New "Issue tracking" section explains the Linear ↔ GitHub split:
  external contributors file on GitHub, maintainer mirrors to
  Linear; internal contributors open in Linear directly. Calls out
  the linear-ref CI check that requires `Fixes AMC-N` (or
  `No-Linear-Issue:` opt-out) on PRs to develop.
- New "Good first issues" section with three label links.
- Pre-push checklist updated to include `make docs-api` for PRs
  that touch api/v1alpha1/*.go (matches the CI drift check).
- New "Documentation site changes" section with the mkdocs-material
  local-preview loop for docs/ contributors.

Issue templates (new):
- .github/ISSUE_TEMPLATE/docs_issue.yml — structured template for
  reporting wrong/missing/stale docs (location dropdown, page
  link, problem, optional fix suggestion). Auto-labels
  `documentation`.
- .github/ISSUE_TEMPLATE/config.yml — disables blank issues so
  contributors pick a structured template, and routes "general
  question" → Discussions, "find the docs" → kagents.dev,
  "security vulnerability" → private advisory.

Not touched:
- PR template stays as-is (the Linear section was reverted earlier
  in the milestone — the linear-ref CI check enforces the
  convention without needing a template hint).
- Bug report and feature request templates — already solid from the
  existing setup.
- GitHub Discussions — still needs to be enabled in repo Settings →
  Features (one click on the maintainer's end). The config.yml
  contact_links assume Discussions exists; once enabled, the
  "Question or discussion" link will work.

Verified locally: `mkdocs build --strict` clean.

Fixes AMC-93

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
…d issue templates (#201)

## Summary
The last v0.7.0 issue — closes the milestone with the community baseline so the GitHub Community Standards page reads 100% and external contributors have an obvious path in.

## Linear

Fixes AMC-93

## Changes

**`CODE_OF_CONDUCT.md`** (new) — adopts Contributor Covenant v2.1 by reference. Reporting via email or GitHub Security Advisory; four-stage enforcement; CC BY 4.0 attribution.

**`SECURITY.md`** (refreshed) — explicit coordinated-disclosure timeline (7-day ack, 30-day fix-or-status, 90-day max embargo, GHSA + CVE workflow), in-scope/out-of-scope examples, pointer to the docs site's Operations explanation.

**`CONTRIBUTING.md`** (polished) — welcome paragraph + 4-step orientation, Code of Conduct reference, new "Issue tracking" section explaining the Linear ↔ GitHub split for both external and internal contributors, "Good first issues" section, pre-push checklist updated with `make docs-api`, new "Documentation site changes" section.

**Issue templates** (new):
- `.github/ISSUE_TEMPLATE/docs_issue.yml` — structured template for docs problems (location dropdown, page link, problem, fix suggestion)
- `.github/ISSUE_TEMPLATE/config.yml` — disables blank issues, routes general questions → Discussions, docs → kagents.dev, security → private advisory

## What's intentionally not touched
- **PR template** — stays as-is. The Linear section was reverted earlier in the milestone; the linear-ref CI check enforces the convention without a template hint
- **Bug report / feature request templates** — already solid from the existing setup

## What needs your action
- **Enable GitHub Discussions** in repo Settings → Features → Discussions. The new `config.yml` `contact_links` assume Discussions exists; once enabled, the "Question or discussion" link works. Optional but recommended: pin a "Welcome" post and create a "Q&A" category.

## Test plan
- [x] `mkdocs build --strict` clean (no docs files touched, but verified anyway)
- [ ] After merge: GitHub Community Standards page reads 100% (Settings → Community Standards)
- [ ] After merge: opening a new issue in the GitHub UI shows all four templates (Bug, Feature, Docs, plus Security/Discussions/Docs-site contact links) and disables blank issues
Apply CAM family brand colors to README badges:
- License badge: blue -> Hunter Green (#1F4D3A), the family-system
  accent for license badges. Apache 2.0 stays unchanged.
- Version badge: append &color=0B0B0C (Ink), the structural color
  for version badges across the brand system.

Also update the GitHub repo description to remove an em-dash, per
brand voice rules (use periods, commas, parentheses, or "since/
because" instead).

README body still contains many em-dashes (feature lists, status
output, etc.). Those are deferred to a follow-up sweep PR so this
change stays scoped to badges and description.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
Adds the Linear issue reference so the "Linear Issue Reference" CI
check passes. The PR body was updated separately, but editing the
body alone does not re-trigger the workflow.

Refs AMC-121

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
chore: align badges and description to brand
Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.28.2 to 2.28.3.
- [Release notes](https://github.com/onsi/ginkgo/releases)
- [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md)
- [Commits](onsi/ginkgo@v2.28.2...v2.28.3)

---
updated-dependencies:
- dependency-name: github.com/onsi/ginkgo/v2
  dependency-version: 2.28.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.28.2 to 2.28.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/onsi/ginkgo/releases">github.com/onsi/ginkgo/v2's releases</a>.</em></p>
<blockquote>
<h2>v2.28.3</h2>
<h2>2.28.3</h2>
<h3>Maintenance</h3>
<p>Bump all dependencies</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md">github.com/onsi/ginkgo/v2's changelog</a>.</em></p>
<blockquote>
<h2>2.28.3</h2>
<h3>Maintenance</h3>
<p>Bump all dependencies</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/onsi/ginkgo/commit/5de9c152e440036fef089e065449ecaae64264f9"><code>5de9c15</code></a> v2.28.3</li>
<li><a href="https://github.com/onsi/ginkgo/commit/7e2fa191179736dde68165bc101e99c4980fe124"><code>7e2fa19</code></a> bump dependencies</li>
<li>See full diff in <a href="https://github.com/onsi/ginkgo/compare/v2.28.2...v2.28.3">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/onsi/ginkgo/v2&package-manager=go_modules&previous-version=2.28.2&new-version=2.28.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
Bumps the controller-runtime group with 1 update in the / directory: [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime).


Updates `sigs.k8s.io/controller-runtime` from 0.23.3 to 0.24.0
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.3...v0.24.0)

---
updated-dependencies:
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: controller-runtime
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/actions/setup-python/releases">actions/setup-python's releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Upgrade to node 24 by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1164">actions/setup-python#1164</a></li>
</ul>
<p>Make sure your runner is on version v2.327.1 or later to ensure compatibility with this release. <a href="https://github.com/actions/runner/releases/tag/v2.327.1">See Release Notes</a></p>
<h3>Enhancements:</h3>
<ul>
<li>Add support for <code>pip-version</code>  by <a href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1129">actions/setup-python#1129</a></li>
<li>Enhance reading from .python-version by <a href="https://github.com/krystof-k"><code>@​krystof-k</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/787">actions/setup-python#787</a></li>
<li>Add version parsing from Pipfile by <a href="https://github.com/aradkdj"><code>@​aradkdj</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1067">actions/setup-python#1067</a></li>
</ul>
<h3>Bug fixes:</h3>
<ul>
<li>Clarify pythonLocation behaviour for PyPy and GraalPy in environment variables by <a href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1183">actions/setup-python#1183</a></li>
<li>Change missing cache directory error to warning  by <a href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1182">actions/setup-python#1182</a></li>
<li>Add Architecture-Specific PATH Management for Python with --user Flag on Windows by <a href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1122">actions/setup-python#1122</a></li>
<li>Include python version in PyPy python-version output by <a href="https://github.com/cdce8p"><code>@​cdce8p</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1110">actions/setup-python#1110</a></li>
<li>Update docs: clarification on pip authentication with setup-python by <a href="https://github.com/priya-kinthali"><code>@​priya-kinthali</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1156">actions/setup-python#1156</a></li>
</ul>
<h3>Dependency updates:</h3>
<ul>
<li>Upgrade idna from 2.9 to 3.7 in /<strong>tests</strong>/data by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-python/pull/843">actions/setup-python#843</a></li>
<li>Upgrade form-data to fix critical vulnerabilities <a href="https://redirect.github.com/actions/setup-python/issues/182">#182</a> &amp; <a href="https://redirect.github.com/actions/setup-python/issues/183">#183</a> by <a href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1163">actions/setup-python#1163</a></li>
<li>Upgrade setuptools to 78.1.1 to fix path traversal vulnerability in PackageIndex.download by <a href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1165">actions/setup-python#1165</a></li>
<li>Upgrade actions/checkout from 4 to 5 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-python/pull/1181">actions/setup-python#1181</a></li>
<li>Upgrade <code>@​actions/tool-cache</code> from 2.0.1 to 2.0.2 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot] in <a href="https://redirect.github.com/actions/setup-python/pull/1095">actions/setup-python#1095</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/krystof-k"><code>@​krystof-k</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-python/pull/787">actions/setup-python#787</a></li>
<li><a href="https://github.com/cdce8p"><code>@​cdce8p</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-python/pull/1110">actions/setup-python#1110</a></li>
<li><a href="https://github.com/aradkdj"><code>@​aradkdj</code></a> made their first contribution in <a href="https://redirect.github.com/actions/setup-python/pull/1067">actions/setup-python#1067</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-python/compare/v5...v6.0.0">https://github.com/actions/setup-python/compare/v5...v6.0.0</a></p>
<h2>v5.6.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Workflow updates related to Ubuntu 20.04 by <a href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1065">actions/setup-python#1065</a></li>
<li>Fix for Candidate Not Iterable Error by <a href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1082">actions/setup-python#1082</a></li>
<li>Upgrade semver and <code>@​types/semver</code> by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1091">actions/setup-python#1091</a></li>
<li>Upgrade prettier from 2.8.8 to 3.5.3 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1046">actions/setup-python#1046</a></li>
<li>Upgrade ts-jest from 29.1.2 to 29.3.2 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1081">actions/setup-python#1081</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/actions/setup-python/compare/v5...v5.6.0">https://github.com/actions/setup-python/compare/v5...v5.6.0</a></p>
<h2>v5.5.0</h2>
<h2>What's Changed</h2>
<h3>Enhancements:</h3>
<ul>
<li>Support free threaded Python versions like '3.13t' by <a href="https://github.com/colesbury"><code>@​colesbury</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/973">actions/setup-python#973</a></li>
<li>Enhance Workflows: Include ubuntu-arm runners, Add e2e Testing for free threaded and Upgrade <code>@​action/cache</code> from 4.0.0 to 4.0.3 by <a href="https://github.com/priya-kinthali"><code>@​priya-kinthali</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1056">actions/setup-python#1056</a></li>
<li>Add support for .tool-versions file in setup-python by <a href="https://github.com/mahabaleshwars"><code>@​mahabaleshwars</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1043">actions/setup-python#1043</a></li>
</ul>
<h3>Bug fixes:</h3>
<ul>
<li>Fix architecture for pypy on Linux ARM64 by <a href="https://github.com/mayeut"><code>@​mayeut</code></a> in <a href="https://redirect.github.com/actions/setup-python/pull/1011">actions/setup-python#1011</a>
This update maps arm64 to aarch64 for Linux ARM64 PyPy installations.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/actions/setup-python/commit/a309ff8b426b58ec0e2a45f0f869d46889d02405"><code>a309ff8</code></a> Bump urllib3 from 2.6.0 to 2.6.3 in /<strong>tests</strong>/data (<a href="https://redirect.github.com/actions/setup-python/issues/1264">#1264</a>)</li>
<li><a href="https://github.com/actions/setup-python/commit/bfe8cc55a7890e3d6672eda6460ef37bfcc70755"><code>bfe8cc5</code></a> Upgrade <a href="https://github.com/actions"><code>@​actions</code></a> dependencies to Node 24 compatible versions (<a href="https://redirect.github.com/actions/setup-python/issues/1259">#1259</a>)</li>
<li><a href="https://github.com/actions/setup-python/commit/4f41a90a1f38628c7ccc608d05fbafe701bc20ae"><code>4f41a90</code></a> Bump urllib3 from 2.5.0 to 2.6.0 in /<strong>tests</strong>/data (<a href="https://redirect.github.com/actions/setup-python/issues/1253">#1253</a>)</li>
<li><a href="https://github.com/actions/setup-python/commit/83679a892e2d95755f2dac6acb0bfd1e9ac5d548"><code>83679a8</code></a> Bump <code>@​types/node</code> from 24.1.0 to 24.9.1 and update macos-13 to macos-15-intel ...</li>
<li><a href="https://github.com/actions/setup-python/commit/bfc4944b43a5d84377eca3cf6ab5b7992ba61923"><code>bfc4944</code></a> Bump prettier from 3.5.3 to 3.6.2 (<a href="https://redirect.github.com/actions/setup-python/issues/1234">#1234</a>)</li>
<li><a href="https://github.com/actions/setup-python/commit/97aeb3efb8a852c559869050c7fb175b4efcc8cf"><code>97aeb3e</code></a> Bump requests from 2.32.2 to 2.32.4 in /<strong>tests</strong>/data (<a href="https://redirect.github.com/actions/setup-python/issues/1130">#1130</a>)</li>
<li><a href="https://github.com/actions/setup-python/commit/443da59188462e2402e2942686db5aa6723f4bed"><code>443da59</code></a> Bump actions/publish-action from 0.3.0 to 0.4.0 &amp; Documentation update for pi...</li>
<li><a href="https://github.com/actions/setup-python/commit/cfd55ca82492758d853442341ad4d8010466803a"><code>cfd55ca</code></a> graalpy: add graalpy early-access and windows builds (<a href="https://redirect.github.com/actions/setup-python/issues/880">#880</a>)</li>
<li><a href="https://github.com/actions/setup-python/commit/bba65e51ff35d50c6dbaaacd8a4681db13aa7cb4"><code>bba65e5</code></a> Bump typescript from 5.4.2 to 5.9.3 and update docs/advanced-usage.md (<a href="https://redirect.github.com/actions/setup-python/issues/1094">#1094</a>)</li>
<li><a href="https://github.com/actions/setup-python/commit/18566f86b301499665bd3eb1a2247e0849c64fa5"><code>18566f8</code></a> Improve wording and &quot;fix example&quot; (remove 3.13) on testing against pre-releas...</li>
<li>Additional commits viewable in <a href="https://github.com/actions/setup-python/compare/v5...v6">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-python&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
… polish

Two small things in one PR ahead of cutting v0.7.0-rc.1:

1. Drop the "v0.7.0 milestone" phrasing in docs/tutorials/index.md.
   Since v0.7.0 IS shipping with this release, "tutorials land
   alongside the v0.7.0 milestone" reads strangely after the cut.
   Replaced with an evergreen "more tutorials will be added as
   the project matures" + a deep link into the Ideas Discussion
   category for use-case requests.

2. New .github/release-announcements/v0.7.0-rc.1.md — a working
   draft of the release announcement, transparency-first as
   discussed. Two parts:

   - Short version (Discussions / Slack / social card) — the
     "preview release, please poke at it" framing leading with
     three concrete feedback channels (docs issue / Q&A
     Discussion / Ideas Discussion).
   - Long version (GitHub release body) — what's in this preview
     organized by Diátaxis section, the kagents brand intro,
     upgrade notes (docs-only, zero functional changes), what's
     intentionally not yet in v0.7.0 (helm-values migration), and
     the next-up roadmap pointing at v1.0.0 KubeCon Demo Polish.

   This file is a working draft. Edit freely before posting.
   It's not on the docs site (sits under .github/) so changes
   here have no public surface until the GitHub release is cut
   with this body.

No-Linear-Issue: pre-release announcement copy + tutorials wording polish — no specific Linear ticket; counts toward the v0.7.0 stable cut readiness.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
#222)

## Summary
Pre-cut polish + a working draft of the release announcement.

## Linear

No-Linear-Issue: pre-release announcement copy + minor wording polish

## Changes
- **`docs/tutorials/index.md`** — drops "v0.7.0 milestone" phrasing now that v0.7.0 is the milestone shipping. Replaced with evergreen "more tutorials will be added" + deep link into the Ideas Discussion category.
- **`.github/release-announcements/v0.7.0-rc.1.md`** (new) — working draft of the release announcement. Short version (Discussions/Slack/social) + long version (GitHub release body). **Edit this freely before posting** — it's a draft, not a contract. The file lives under `.github/` so it has no public surface until the GitHub release is cut with this content as the body.

## What this PR does NOT do
- Cut the release. That's the next step after this merges and you've reviewed (and probably tweaked) the announcement copy.

## Test plan
- [x] `mkdocs build --strict` clean
- [x] No new files surface on the docs site (announcement lives under `.github/`)
- [ ] You read the announcement draft and edit anywhere it doesn't sound like you
- [ ] After merge: cut `v0.7.0-rc.1` using the (possibly edited) draft as the GitHub release body
The CFP was submitted in May 2026, ahead of the May 31 deadline.
Update KUBECON.md and the CLAUDE.md release-timeline note to reflect
the new status, and drop #23 from the Current Priority list.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
amcheste-ai-agent and others added 26 commits May 11, 2026 17:00
Brand alignment pass against the alanchester-brand voice rules.
196 em-dashes swept across 22 prose files. The mechanical sweep
replaces ` — ` with `. ` (period + space) and capitalizes the
following letter when it was lowercase. Code blocks and markdown
table rows are protected from substitution.

Files swept:
  README.md, CONTRIBUTING.md, AGENTS.md, ARCHITECTURE.md,
  SECURITY.md, docs/README.md, docs/index.md, docs/helm-values.md,
  docs/explanation/{coordination,index,operations,resources}.md,
  docs/how-to/index.md,
  docs/how-to/install/{aks,eks,gke}.md,
  docs/how-to/operate/{budget-alerts,expose-dashboard,
    shared-storage}.md,
  docs/tutorials/{getting-started,index}.md,
  docs/reference/index.md

Post-sweep audit (`grep -nE '\. [a-z]'`) found 5 awkward
continuations after mechanical replacement. 4 are abbreviation
false positives (`e.g.`, `Approx.`, `vs.`) and left as-is. 1 was
a real awkward continuation in
docs/how-to/operate/expose-dashboard.md where the original
em-dash separated a comma-clause; restored to comma form.

Out of scope (intentional):
- internal/dashboard/templates/layout.html status colors. The
  dashboard is a tool surface, not a brand surface; the semantic
  UI palette (gray/amber/blue/green/red phase colors) stays.
- docs/cfp/cfp-draft.md is deleted in this PR. The CFP was
  submitted, the draft no longer needs to live in the repo.
  Removing it eliminates 30 em-dashes that otherwise would have
  been flagged in scope.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
The brand-alignment sweep in 25fcf54 has no associated Linear
ticket. The validate.yml Linear-ref check requires either an
AMC-N reference or a No-Linear-Issue trailer. PR body was
updated with the trailer; this empty commit re-triggers the
synchronize event on the workflow.

No-Linear-Issue: brand-alignment doc cleanup, no associated Linear ticket

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
Linear is used for major project tracking only, not every PR.
Requiring an AMC-N reference (or the No-Linear-Issue opt-out
trailer) on every PR adds friction without proportional value
for the work that doesn't map to a Linear ticket. Particularly
ritualistic for bot-authored PRs, which categorically don't
have tickets.

The original incident that prompted this check (AMC-71/72/73/74
staying in Backlog after their work shipped, 2026-05-02) is real,
but the failure mode is acceptable: Linear tickets for major
projects that DO get referenced will still auto-close on merge.
Tickets that nobody referenced just need a manual close, which
is the same operation the team is already doing for tickets that
never had PRs.

Removes the `linear-ref` job (49 lines) from validate.yml. No
other changes; all other validation jobs (Lint, Tests,
Build Operator Image, Commit Lint, Detect Changed Files, Semgrep)
keep firing as before.

No-Linear-Issue: removing the gate itself, the gate would be self-referentially required to allow this PR to merge

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
chore(brand): em-dash sweep across prose + remove submitted CFP draft
ci: remove Linear Issue Reference gate from validate.yml
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 6.4.0 to 7.3.0.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](release-drafter/release-drafter@6a93d82...c2e2804)

---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
  dependency-version: 7.2.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
docs: mark KubeCon CFP as submitted
…op/release-drafter/release-drafter-7.2.1

chore: Bump release-drafter/release-drafter from 6.4.0 to 7.3.0
`recordEvent` is a printf-shaped helper (`messageFmt string, args
...interface{}`). The `create-pr` failure path was passing `err.Error()`
directly as `messageFmt`, so any `%` in the error text would be
misinterpreted as a format directive and produce garbled event
messages.

This is also what trips `go vet`'s printf analyzer on Go 1.26 — every
other `recordEvent` call in the file already uses the
`"%v", err` pattern, so just line up with the rest.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
The workflow assigned every PR creator to their own PR, which:

- Conflicts with the global "leave assignee unset by default" rule —
  bot-authored PRs already route to @amcheste via CODEOWNERS, so
  auto-assigning the same person on every PR is noise.
- Fails outright on bot-authored PRs: GitHub's REST API refuses
  `addAssignees` for agent accounts when authenticated with an App
  installation token ("Assigning agents is not supported…").

Deleting the workflow restores green CI on bot PRs and lines the repo
up with the documented assignee policy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
chore(ci): remove auto-assign-PR-creator workflow
fix(controller): pass error as printf arg, not format string
…ontroller-runtime-00af733091

chore: Bump sigs.k8s.io/controller-runtime from 0.23.3 to 0.24.0 in the controller-runtime group across 1 directory
Second pass following PR #224. Three small things:

1. Em-dash sweep in table cells (12 occurrences across 9 files).
   PR #224's mechanical sweep protected lines starting with `|`
   as code structure, but table cells contain rendered prose and
   the voice rule applies. Each em-dash replaced contextually:
   period-and-capitalize, comma, or word-rewrite. The one
   remaining em-dash in CONTRIBUTING.md:198 is inside a Go ```go
   code block (a kubebuilder marker comment example), correctly
   preserved.

2. scorecard.yml: publish_results now uses
   `github.ref_name == github.event.repository.default_branch`
   instead of hardcoded `refs/heads/main`. Same fix as
   engineering-handbook PR #16 and repo-template PR #11. The
   default here is `main`, so no behavior change today, but the
   workflow is now correct regardless of which branch is set as
   default (consistent with the family).

3. scorecard.yml: github/codeql-action/upload-sarif SHA pin
   replaced. The old pin (d4b3ca9fa7f69d38bfcd667bdc45bc373d16277e)
   is an imposter commit per OSSF Scorecard's anti-supply-chain
   check, which is why every Scorecard run since at least
   2026-04-29 has failed with `error sending scorecard results
   to webapp: ... imposter commit ... does not belong to
   github/codeql-action/upload-sarif`. New pin
   (68bde559dea0fdcac2102bfdf6230c5f70eb485e) is the real v4
   tag commit, verified via gh api.

The push trigger also now fires on `develop` in addition to
`main`, matching the family pattern. publish_results gating
keeps the public score canonical to default-branch state.

No-Linear-Issue: brand-alignment follow-up to PR #224

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
Bumps VERSION and Helm chart to 0.7.0, cutting the "Documentation
Site" milestone release.

v0.7.0 delivers:

  - kagents project brand introduction across README, badges, and
    KUBECON.md, plus the new mascot/banner imagery (#172, #199, #220,
    #224).

  - A full mkdocs-material documentation site under docs/ with CI
    deploy workflow (#194): Diátaxis nav, polished homepage, and a
    Getting Started tutorial (#195); three concept pages covering
    resources, coordination, and operations (#196); how-to guides for
    cloud installs (AKS, EKS, GKE) and operational recipes — budget
    alerts, dashboard exposure, shared storage (#197); and an
    auto-generated API reference produced from kubebuilder markers via
    crd-ref-docs, with a `make docs-api` target that always reinstalls
    the pinned version (#198).

  - Community baseline (#201): Code of Conduct, polished CONTRIBUTING,
    hardened SECURITY policy, expanded issue templates.

  - KubeCon NA 2026 CFP draft (#168) and submission tracking — the
    talk has now been submitted ahead of the May 31 deadline.

  - Dependency bumps: sigs.k8s.io/controller-runtime 0.23.3 → 0.24.0
    (#215, which transitively raises k8s.io/api, apimachinery,
    client-go to 0.36.0 and the go directive to 1.26.0),
    github.com/onsi/ginkgo/v2 2.28.2 → 2.28.3 (#216),
    actions/setup-python 5 → 6 (#219), release-drafter 6.4.0 → 7.3.0
    (#218).

  - Toolchain alignment for the Go 1.26 vet rules:
    fix(controller): the create-pr error path now passes the error as
    a printf argument instead of as the format string itself (#226),
    which also defends against `%` characters in error messages
    producing garbled Kubernetes events.

  - CI cleanup: remove the auto-assign-PR-creator workflow (#227)
    which conflicted with the documented assignee policy and failed
    outright on bot-authored PRs, and drop the Linear Issue Reference
    gate from validate.yml (#225).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
PR #228 changed the regenerated docs/reference/api/index.md to swap an
em-dash for a semicolon in the MaxRestarts description, but missed the
matching Go doc comment in api/v1alpha1/agentteam_types.go. The
`make docs-api` regeneration step in CI then pulled the em-dash back
from source and the Lint job's diff check failed.

Sync the source comment to match the rendered docs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
`make manifests` regenerates the CRD YAMLs from the Go type
descriptions, so the MaxRestarts comment change also has to be
reflected in:

  - charts/claude-teams-operator/crds/claude.amcheste.io_agentteams.yaml
  - charts/claude-teams-operator/crds/claude.amcheste.io_agentteamruns.yaml
  - charts/claude-teams-operator/crds/claude.amcheste.io_agentteamtemplates.yaml
  - config/crd/bases/claude.amcheste.io_agentteams.yaml
  - config/crd/bases/claude.amcheste.io_agentteamruns.yaml
  - config/crd/bases/claude.amcheste.io_agentteamtemplates.yaml

Pure regeneration — no logic change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
chore(brand): table-cell em-dash sweep + scorecard fixes
@amcheste-ai-agent amcheste-ai-agent Bot requested a review from amcheste as a code owner May 12, 2026 00:07
@amcheste amcheste merged commit 93d5b99 into main May 12, 2026
17 of 18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants