Skip to content

chore: aeo crosslink audit run log - #663

Closed
warp-factories[bot] wants to merge 110 commits into
mainfrom
chore/aeo-crosslink-audit-log
Closed

chore: aeo crosslink audit run log#663
warp-factories[bot] wants to merge 110 commits into
mainfrom
chore/aeo-crosslink-audit-log

Conversation

@warp-factories

Copy link
Copy Markdown
Contributor

Perpetual run log for the aeo_crosslink_audit scheduled skill. Merge periodically so entries reach main.

oz-agent and others added 30 commits July 27, 2026 15:02
Co-Authored-By: Oz <oz-agent@warp.dev>
Co-Authored-By: Oz <oz-agent@warp.dev>
Co-Authored-By: Oz <oz-agent@warp.dev>
Co-Authored-By: Oz <oz-agent@warp.dev>
Co-Authored-By: Oz <oz-agent@warp.dev>
Co-Authored-By: Oz <oz-agent@warp.dev>
Co-Authored-By: Oz <oz-agent@warp.dev>
…409)

@astrojs/react 5.x targets Astro 6 / Vite 7. Under Vite 8's oxc
transform, its React refresh filter claimed Astro's ?lang.ts script
virtual modules and forced them to parse as plain JS, breaking any
.astro <script> using TypeScript syntax in dev.

Co-authored-by: Oz <oz-agent@warp.dev>
… and PR artifacts pages (#410)

* docs: restructure Computer Use into a nested section with browser use and PR artifacts pages

Co-Authored-By: Oz <oz-agent@warp.dev>

* docs: use VARS for rebrandable Oz names in computer-use pages

Co-Authored-By: Oz <oz-agent@warp.dev>

* docs: mention video recording in Computer Use overview capabilities

Co-Authored-By: Oz <oz-agent@warp.dev>

---------

Co-authored-by: Oz <oz-agent@warp.dev>
* Update Computer Use docs: enabled by default

Computer use for cloud agents is no longer experimental and now
defaults to enabled (warpdotdev/warp-server#13465). Update the
Computer Use pages and the mirrored Agent API OpenAPI spec to describe
the default-on behavior and how to opt out.

Co-Authored-By: Oz <oz-agent@warp.dev>

* Document harness-conditional Computer Use default

Computer use now defaults to enabled only for runs on Warp's built-in
harness; third-party harness runs default to disabled.

Co-Authored-By: Oz <oz-agent@warp.dev>

* Address review: Warp-app setting exception and config-nested API example

Co-Authored-By: Oz <oz-agent@warp.dev>

---------

Co-authored-by: Oz <oz-agent@warp.dev>
Resolve missing_docs drift-watch findings that need only surface-map
bookkeeping (no new public doc pages were warranted this run):

- Slash commands /add-api-key, /clear, /clear-provider-api-key,
  /statusline, /status: all SlashCommandSurfaces::TuiOnly (Warp Agent
  CLI, not in the GUI) -> mapped internal, consistent with the other
  TUI-only commands. Pruned the removed /version entry.
- Setting agents.statusline: SettingSurfaces::TUI (Warp Agent CLI only)
  -> mapped internal, like general.autoupdate_enabled / appearance.theme.
- FileBackedExecutionProfiles (dogfood -> ga): internal persistence
  backend for execution profiles with no distinct user-facing surface
  (profiles are documented via agent-profiles-permissions) -> ignore list.
- Computer-use map paths: AgentModeComputerUse / BackgroundComputerUse /
  VideoRecording pointed at a flat computer-use.mdx that was split into a
  computer-use/ directory -> updated to the current pages.
- APIKeyAuthentication flag removed (GA/flag cleanup) -> pruned; API key
  auth stays documented via APIKeyManagement/TeamApiKeys.
- Oz Factory REST API (32 routes): Factory is a private, not-yet-released
  product (FactoryMcp is dogfood) -> mapped internal until it ships.

Refreshed surface_snapshot.json so the next run diffs against this baseline.

Deferred (not addressed here, called out for follow-up):
- 15 public_api /agent/* routes (messaging, schedules, artifacts, events,
  webhooks) missing from the OpenAPI spec -> route through sync-openapi-spec
  (never hand-document private warp-server endpoints).
- 32 low-severity terminology findings -> owned by the style_lint skill.

Co-authored-by: hongyi-chen <hongyigma@gmail.com>
Co-authored-by: Oz <oz-agent@warp.dev>
Adds npm override to pin brace-expansion to >=5.0.8, fixing a DoS
vulnerability via unbounded expansion length causing OOM crashes.

Co-authored-by: Oz <oz-agent@warp.dev>
Co-authored-by: Hong Yi Chen <hongyi@warp.dev>
Linear is retiring the legacy SSE MCP endpoint (https://mcp.linear.app/sse,
which now returns HTTP 404) in favor of the Streamable HTTP endpoint
https://mcp.linear.app/mcp. Update the Linear MCP server configs in the
MCP reference and the Linear MCP guide to the current endpoint, and rename
the "Linear SSE Server (URL)" heading to "Linear Streamable HTTP Server
(URL)" to reflect the transport (matching the Sentry example).

Verified against Linear's MCP docs (https://linear.app/docs/mcp), which
now document /mcp and recommend it over the deprecated /sse endpoint.

Co-authored-by: Oz <oz-agent@warp.dev>
Vercel installs with `npm ci` (see vercel.json installCommand), which
requires package.json and package-lock.json to be fully in sync. The
lockfile committed in #413 (brace-expansion CVE bump) was missing several
optional transitive deps (@emnapi/core, @emnapi/runtime,
@emnapi/wasi-threads), so `npm ci` failed with EUSAGE before the build
could run, erroring out every production deployment.

Regenerated the lockfile with `npm install` so it is in sync again.
Verified `npm ci` and `npm run build` both succeed.

Co-authored-by: Oz <oz-agent@warp.dev>
- Use BUZZ_SLACK_TOKEN (matches existing secret in K5KStCm5aYvhfBJb8cHol6)
- Hardcode #growth-docs channel ID (C09BVK0PL3Y) instead of env var
- Update environment reference from 'buzz' to 'Docs Agent'
- Require --draft flag on gh pr create
- Add oz-dev schedule create command to Scheduling section

Co-authored-by: Oz <oz-agent@warp.dev>
Co-authored-by: Oz <oz-agent@warp.dev>
* docs: add GitHub integration page and align GitHub docs for GA

Adds a first-class GitHub integration page covering setup, permissions,
supported workflows, limitations, and troubleshooting for the @oz-agent
mention workflow powered by the Oz by Warp GitHub App, and updates the
surrounding pages so GitHub is a first-class integration that is clearly
distinct from GitHub Actions and from GitHub authorization.

Co-Authored-By: Oz <oz-agent@warp.dev>

* docs: correct GitHub integration permission model and plan eligibility

Review rework: GitHub webhook runs always mint the triggering GitHub App
installation's token, so repository access comes from the installation
rather than the mentioning user's GitHub authorization. The account
binding only identifies the requester, their team, and billing.

Also aligns the plan-eligibility wording with the access-and-billing
page so Enterprise teams are not excluded, and documents the same-
installation requirement for the environment's repositories.

Co-Authored-By: Oz <oz-agent@warp.dev>

* docs: fix overstated repo constraint and include GitHub in integration lists

Review rework cycle 2:
- The installation only needs to cover at least one requested repository,
  and the trigger repo always qualifies, so the "all repos must be
  covered or the run fails to start" limitation was wrong. Replaced with
  the two constraints the code does enforce: the environment must be a
  GitHub environment, and repositories the installation doesn't cover
  are simply not reachable by the run.
- Oz web app quick reference and setup bullet, and the team access
  summaries on the access page, now list GitHub alongside the other
  integrations instead of contradicting the new GitHub sections.

Co-Authored-By: Oz <oz-agent@warp.dev>

---------

Co-authored-by: Oz <oz-agent@warp.dev>
Co-authored-by: Hong Yi Chen <hongyi@warp.dev>
The `auto_approve_bypasses_command_denylist` setting (default: true) means
auto-approve / Run until completion now runs commands that match the user's
command denylist. Two statements on this page were written before that
behavior existed:

- "Command denylist" said permission is "always required, regardless of other
  settings," which is no longer true once Run until completion is on.
- The "Run until completion" note said it "ignores the denylist entirely,"
  which overstates it in the other direction: the bypass is configurable, and
  org-enforced denylist rules are never bypassed.

Verified against `can_autoexecute_command` in warp
(app/src/ai/blocklist/permissions.rs): with auto-approve on, the user denylist
is bypassed only when the setting is enabled and the process isn't sandboxed,
and `get_org_execute_commands_denylist` is always enforced.

Also documents the GUI toggle at
Settings > Agents > Oz > Input > Allow auto-approve to bypass command denylist.

Co-authored-by: Oz <oz-agent@warp.dev>
* updating the manag billing links and locations

* docs: fix cancel FAQ teammate billing timing

New seats are billed immediately on a prorated basis, not at cycle end.

Co-Authored-By: Oz <oz-agent@warp.dev>

* Update src/content/docs/support-and-community/plans-and-billing/pricing-faqs.mdx

Co-authored-by: oz-for-oss[bot] <277970191+oz-for-oss[bot]@users.noreply.github.com>

---------

Co-authored-by: Oz <oz-agent@warp.dev>
Co-authored-by: oz-for-oss[bot] <277970191+oz-for-oss[bot]@users.noreply.github.com>
…ks (#447)

Running the check_for_broken_links skill against the docs surfaced two
problems that made it unusable, and no actual broken links.

The external check never completed. Every URL was fetched serially with a
sleep between files, so changelog/2026.mdx alone (696 links, mostly
rate-limited GitHub URLs) stalled the run indefinitely. It hung twice at
file 57 of 354. External URLs are now deduplicated and resolved up front
across a thread pool, leaving the per-file pass as pure cache reads. A
full check finishes in about 60s. Sessions are thread-local since
requests.Session is not thread-safe.

The report was also dominated by false positives. All 26 flagged links
were 401/403/429 from servers refusing automated clients, with zero real
404s: Cloudflare interstitials on sourceforge.net, OpenAI bot
challenges, and login-gated Slack invite links. Each was verified working
in a browser. Those statuses are now grouped into a separate BOT-BLOCKED
section that does not fail the run, so real breakage is not buried.
Pass --strict to treat them as broken.

Also:
- Send a browser-like User-Agent, which alone resolves platform.openai.com
  and tiktok.com.
- Retry once on timeouts and connection resets, which were flaky under
  concurrency, and fall back to GET whenever HEAD fails rather than only
  on 405.
- Add --workers and --strict, and correct the documented script paths from
  .warp/skills to .agents/skills, where the script actually lives.

Co-authored-by: Oz <oz-agent@warp.dev>
…e 0) (#420)

* feat(phase0): rename /agent-platform/ → /agents/ across docs site

- Move src/content/docs/agent-platform/ → src/content/docs/agents/
- Update all sidebar slug references in src/sidebar.ts
- Update astro.config.mjs llms.txt paths
- Update 'agents' display-name mapping in CustomSidebar.astro
- Fix all /agent-platform/ internal cross-links across 105+ content files
- Add 50 permanent (308) redirects in vercel.json

Rationale: the Agents tab is labeled 'Agents' but linked to /agent-platform/,
creating a confusing pairing with /platform/. The /agents/ vs /platform/ URL
distinction is immediately legible. This is standalone technical debt cleanup
with no dependency on other IA restructure phases.

Co-Authored-By: Oz <oz-agent@warp.dev>

* fix: restore assets/agent-platform/ image paths (incorrectly renamed by sed)

The bulk sed pass changed assets/agent-platform/ → assets/agents/ in 15 files,
but the assets directory itself was not renamed. This restores the correct paths.

Co-Authored-By: Oz <oz-agent@warp.dev>

* fix: address Oz review — update llms.txt label and remove unrelated yaml dep

- astro.config.mjs: update llms.txt custom set label/description from
  'Agent Platform' → 'Agents' to match the renamed section URL/path
- package.json + package-lock.json: remove accidental yaml dep added
  during local dev (unrelated to this rename, not needed at build time)
- agents/capabilities/slash-commands.mdx: fix remaining /agent-platform/
  href links that were missed by the initial sed pass

Co-Authored-By: Oz <oz-agent@warp.dev>

* fix: declare yaml as direct dependency

Co-Authored-By: Oz <oz-agent@warp.dev>

* chore: remove unrelated dependency diff

Co-Authored-By: Oz <oz-agent@warp.dev>

* fix: update stale H1 title on Agent FAQs page

The frontmatter title still said "Agent platform FAQs" while the sidebar
label already said "Agent FAQs". Aligning them removes the pre-rename
copy that was flagged during QA review of the preview.

Co-Authored-By: Oz <oz-agent@warp.dev>

* fix: update /agent-platform/ links in byollm provider pages

These two files were added to main after the branch was created and still
referenced the old /agent-platform/ prefix; updated all internal links to /agents/.

Co-Authored-By: Oz <oz-agent@warp.dev>

---------

Co-authored-by: Oz <oz-agent@warp.dev>
The Vim keybindings reference is an exhaustive list of supported
functionality, but it omitted the > and < operators.

Verified against crates/vim/src/vim.rs.

Co-authored-by: Oz <oz-agent@warp.dev>
* docs: missing_docs audit bookkeeping and OpenAPI path-parsing fix

Fix parse_openapi_paths() to accept YAML-quoted path keys. Every
parameterized endpoint looked absent from the spec, producing 6 false
positives this run.

Map GeminiEnterprise (dogfood -> GA), the three new TUI-only slash
commands, agents.voice.voice_input_hold_key, and the x-internal
messaging/events endpoints. Prune the two removed slash commands.
Regenerate the surface snapshot.

Co-Authored-By: Oz <oz-agent@warp.dev>

* docs: drop surface map entries already covered by #430

Narrow this PR to the audit-script parser fix, the API internal
mappings, and the snapshot regen, so it doesn't conflict with #430's
edits to the same regions of feature_surface_map.md.

Co-Authored-By: Oz <oz-agent@warp.dev>

---------

Co-authored-by: Oz <oz-agent@warp.dev>
* chore: update drafting signal logs from improve-drafting-skills run 2026-07-27

Co-Authored-By: Oz <oz-agent@warp.dev>

* chore: update drafting signal logs from improve-drafting-skills run 2026-08-01

Co-Authored-By: Oz <oz-agent@warp.dev>

* chore: update drafting signal logs from improve-drafting-skills run 2026-08-02

Co-Authored-By: Oz <oz-agent@warp.dev>

* chore: update drafting signal logs from improve-drafting-skills run 2026-08-03

Co-Authored-By: Oz <oz-agent@warp.dev>

---------

Co-authored-by: rachaelrenk <rachael.renk@warp.dev>
Co-authored-by: Oz <oz-agent@warp.dev>
Co-authored-by: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com>
Link high-traffic agent docs to multi-agent orchestration pages so readers
can continue from FAQs, slash commands, software factory, agents, and the
cloud agents quickstart into parent/child orchestration workflows.

Co-authored-by: Oz <oz-agent@warp.dev>
Co-authored-by: hongyi-chen <hongyigma@gmail.com>
hongyi-chen and others added 22 commits August 24, 2026 15:19
* chore: gate factory launch

Placeholder commit to open a draft PR that will gate the factory launch.

Co-Authored-By: Warp Agent <agent@warp.dev>

* Factory launch (8/18): Automation Platform rename infra + Factories tab scaffold (#513)

* feat: scaffold Factories tab and Automation Platform rename infra

- Add new top-level Factories sidebar topic with 6 stub pages
  (Overview, Quickstart, How Factories work, Configure your Factory,
  Connect your Factory, Infrastructure & security) per HYC's IA doc
- Relabel the Oz tab to Automation Platform and reorganize its 10
  subsections into 6 groups (Cloud Agents, Environments, Integrations,
  Orchestration, Self-hosting, API/SDK); all page slugs unchanged
- Add vars.ts entries: API_SDK_NAME (rename-sensitive) and
  FACTORY_WEB_APP/FACTORY_WEB_APP_URL (net-new, for platform.warp.dev)
- Extend style_lint.py RENAME_SENSITIVE_VAR_STRINGS to catch bare "Oz"
  and "Oz Platform", with longest-match dedup so specific matches
  (Oz CLI, Oz Platform, etc.) aren't double-flagged by the general
  bare "Oz" entry
- Add Automation Platform + Warp Factories terminology.md entries
- Migrate platform/index.mdx prose to the vars system
- Add redirect for /platform/software-factory -> /factories/ (content
  migration to the new tab flagged for HYC, not deleted)

Co-Authored-By: Warp Agent <agent@warp.dev>

* docs: migrate hardcoded Oz product names to vars in agents/terminal/getting-started

Replace hardcoded rename-sensitive Oz-branded strings (Oz, Oz CLI, Oz web
app, Oz API, Oz API & SDK, Oz Platform, Oz run) with {VARS.*} references
in body prose (and {{TOKEN}} in frontmatter) across:
- src/content/docs/agents/**
- src/content/docs/terminal/comparisons and terminal/input/classic-input
- src/content/docs/getting-started/migrate-to-warp-from-claude-code
- src/content/docs/index.mdx and quickstart.mdx

Left unmigrated (intentional, per scope): image alt/figcaption text that
transcribes actual on-screen branding of existing screenshots/graphics,
and Oz mentions inside fenced code blocks (example prompts).

Co-Authored-By: Warp Agent <agent@warp.dev>

* docs: migrate reference/ Oz-branded strings to vars, add CLI deprecation banner

Migrate hardcoded Oz product-name strings (Oz CLI, Oz web app, oz.warp.dev, Oz dashboard, Oz run, Oz API & SDK, Oz Platform, bare Oz) to the vars system across src/content/docs/reference/cli/** and src/content/docs/reference/api-and-sdk/**, using {VARS.KEY} in MDX body prose and {{TOKEN}} in frontmatter. Add a shared deprecation callout to the top of every reference/cli/* page pointing to the Warp Agent CLI as the replacement for the Oz CLI. Relabel the Reference tab's CLI sidebar entry to 'Oz CLI (legacy)' in src/sidebar.ts.

Co-Authored-By: Warp Agent <agent@warp.dev>

* docs: migrate hardcoded Oz strings to vars system in guides, support-and-community, enterprise, changelog

Replace hardcoded rename-sensitive Oz-branded strings (Oz CLI, Oz web app,
oz.warp.dev, Oz dashboard, Oz run, Oz API & SDK, Oz Platform, bare Oz) with
src/data/vars.ts references ({VARS.KEY} in body prose, {{TOKEN}} in
frontmatter) across all guides/, support-and-community/, enterprise/, and
changelog/ files containing product-name mentions.

Left unmigrated (intentional, per style_lint OZ_TERMS_TO_AVOID / screenshot
alt-text exceptions):
- changelog/2026.mdx:501 'Oz agents' (wording issue, not vars issue)
- changelog/2026.mdx:629 'Oz cloud agent' (wording issue)
- changelog/2026.mdx:787 'the Oz agent' (wording issue)
- changelog/2026.mdx:1362 image alt text describing the 2026.02.10 launch screenshot

Co-Authored-By: Warp Agent <agent@warp.dev>

* docs: migrate Oz platform strings to vars in platform/ directory

Replace hardcoded rename-sensitive strings (Oz, Oz Platform, Oz CLI,
Oz web app, Oz dashboard, Oz run, Oz API & SDK) with {VARS.*} in body
prose and {{TOKEN}} in frontmatter across src/content/docs/platform/,
excluding index.mdx and software-factory.mdx which are handled
separately.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: resolve topic-resolution build failures and lint false positives

- Add back platform/oz-web-app to the Automation Platform sidebar
  (accidentally dropped during the reorg, broke the build)
- Give the Automation Platform topic an explicit id and associate the
  orphaned platform/software-factory page with it via topic frontmatter,
  since it's no longer listed in any sidebar but still needs a topic to
  resolve (content stays as source material for HYC's Factories migration)
- Fix style_lint.py's check_hardcoded_vars to match on word boundaries
  instead of plain substring search, so short literals like bare "Oz"
  don't false-positive inside unrelated tokens (e.g. a YouTube share
  link's si=OzvuInMl8DoNR97R query param)
- Fix style_lint.py's video-title check to recognize JSX expression
  titles, not just quoted string literals

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: convert broken VARS markdown links to JSX anchors

MDX doesn't evaluate {} expressions inside plain markdown link
destination syntax [text](url) -- only inside JSX. 12 links across 8
reference/ pages used [label]({VARS.WEB_APP_URL}/path) syntax, which
the internal link checker correctly flagged as broken (the literal
string "{VARS.WEB_APP_URL}/path" isn't a real path).

Converted all 12 to the <a href={...}>label</a> JSX pattern already
used elsewhere in the codebase, using a template literal when a path
suffix is appended to the base URL.

Verified with:
- python3 .agents/skills/check_for_broken_links/check_links.py --internal-only (0 broken links, was 12)
- npm run build (370 pages, clean)

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: merge software-factory redirect entries to stay under Vercel's route limit

Vercel deployment was failing with errorCode "too_many_routes":
"Maximum number of routes (rewrites, redirects, etc) exceeded. Max is
2048, received 2049." The repo's vercel.json is already right at that
ceiling (~2047 processed routes on the base branch), and my two
separate redirect entries for /platform/software-factory (trailing
and non-trailing slash) each counted as a route, pushing the total
over by one.

Merged the two entries into a single rule using an optional trailing
slash pattern ("/platform/software-factory/?"), matching both URL
forms with one redirect instead of two.

Verified with npm run build (370 pages, clean).

Note for follow-up: the docs repo is now sitting almost exactly at
Vercel's 2048-route hard limit. Any future redirect addition (by
anyone) risks tripping this same failure. Worth a separate pass to
audit and consolidate redundant slash-variant redirect pairs across
vercel.json to create headroom.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: use valid Vercel redirect syntax for software-factory redirect

The previous fix used /platform/software-factory/? as the source
pattern to match both trailing-slash variants in one entry, but
Vercel rejected it with errorCode invalid-route-source-pattern (? is
not valid syntax in this position for Vercel redirect sources).

Reverted to a single plain entry using only the trailing-slash
canonical form (matching the simple, proven syntax used by the
adjacent /agent-platform/ entry), still keeping the net route count
at +1 instead of +2 to stay under the 2048 route cap.

Verified with npm run build (370 pages, clean) and a JSON validity
check on vercel.json.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: address PR review feedback

Automated (oz-for-oss) review comments:
- Revert incorrect variableization of the "Oz by Warp GitHub App"
  proper noun in reference/cli/integration-setup.mdx,
  reference/cli/api-keys.mdx, and enterprise/team-management/
  admin-panel.mdx. This is a literal, external GitHub App display
  name, not a docs-rename-sensitive string -- flipping
  WARP_AUTOMATION_PLATFORM would otherwise make these pages document
  a GitHub App name that doesn't actually exist.
- Fix sidebar.ts's hardcoded "Oz API & SDK reference" cross-link
  label to use {VARS.API_SDK_NAME} via a template literal, so it
  participates in the rename. Also imported VARS in sidebar.ts and
  applied the same fix to the "Oz CLI (legacy)" label I introduced
  earlier in this PR.
- (The flagged broken-markdown-link issue in reference/cli/api-keys.mdx
  was already fixed in a prior commit on this branch.)

Human review feedback (rachaelrenk):
- Fixed several places where "{VARS.WARP_AUTOMATION_PLATFORM} platform"
  would read as a duplicated word once the var's value changes to
  something like "Automation Platform" (e.g. "Automation Platform
  platform"). Removed the redundant literal "platform" suffix in 5
  MDX body occurrences and 2 frontmatter occurrences, since the var's
  value already conveys "platform" on its own.
- Wrapped the 6 Factories stub pages in an explicit sidebar group
  (matching how every other topic in sidebar.ts organizes its items)
  instead of leaving them as bare top-level entries, which is what
  was likely causing them to render as headings instead of pages
  under one collapsible "Factories" section.

Verified with npm run build (370 pages, clean), the internal link
checker (0 broken links), and style_lint.py --all (confirmed the
"Oz by Warp" reversions and "platform platform" fixes landed as
expected, no regressions).

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: remove {VARS.X} expressions from heading text (breaks TOC/anchors)

Starlight's "On this page" TOC and heading-anchor-id generation extract
heading text from the raw MDX AST before JSX expressions are evaluated,
so a heading like `### {VARS.WARP_AGENT_CLI}` doesn't render "Oz CLI"
in the TOC/anchor -- it renders the literal, unevaluated expression
source ("VARS.WARP_AGENT_CLI"), producing anchor ids like
"#varswarp_agent_cli" and a "On this page" entry reading
"VARS.WARP_AGENT_CLI" verbatim. The heading text in the page body
renders correctly (full MDX/JSX evaluation), so this only surfaces in
the TOC sidebar and in the URL fragment for that heading.

Found and fixed 40 occurrences across 21 files. In each case, reworded
the heading to avoid embedding a {VARS.X} expression, while keeping
{VARS.X} usable in the body prose beneath it (unaffected by this bug):
- Headings that were only "{VARS.X}" (e.g. "### {VARS.WEB_APP}") became
  static, descriptive text ("### Web app", "### CLI", "### API", etc.)
- Headings mixing static text + a var were reworded to drop the var
  while preserving meaning (e.g. "## How runners fit into the
  {VARS.WARP_AUTOMATION_PLATFORM}" -> "## How runners fit into cloud
  agent runs")
- The one historical changelog heading ("Introducing Oz: orchestration
  for cloud agents") was set to literal "Oz" text instead of the var,
  since it's a dated historical announcement and shouldn't silently
  reword itself when the var flips

Also fixed a related, unrelated heading collision on
agents/capabilities/computer-use/index.mdx: its own "## Overview"
heading collided with Starlight's synthetic top-of-page "Overview" TOC
entry (auto-generated for intro content before the first heading),
producing two adjacent "Overview" rows in the TOC. Renamed to
"## Capabilities" to match its actual content.

Per review feedback, also normalized the Computer Use API section to
consistently use {VARS.API_SDK_NAME} (matching the page's own later,
correct usage) instead of "{VARS.WARP_AUTOMATION_PLATFORM} API", since
both phrases link to the same /reference/api-and-sdk/ page and the
future name for that page is "Warp API & SDK", not "Automation
Platform API".

Verified with:
- npm run build (370 pages, clean)
- Inspected the built HTML for agents/capabilities/computer-use/index.html:
  TOC and anchor ids now read "Capabilities", "CLI", "API", "Web app"
  instead of "VARS.WARP_AGENT_CLI" / duplicate "Overview" / broken ids
- python3 .agents/skills/check_for_broken_links/check_links.py --internal-only (0 broken links)
- style_lint.py --all (no new hardcoded-var regressions)

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: use plain Warp instead of the automation-platform var on Agent Memory page

Per review feedback: "Agent Memory gives agents in Automation Platform
persistent memory..." reads awkwardly once the WARP_AUTOMATION_PLATFORM
var flips. Since "Warp" is already a locked, stable product name (not
rename-sensitive), it's the safer and more natural choice here.

Applied the same reasoning consistently across the rest of the page,
not just the flagged frontmatter line, since the same "lives on
Automation Platform" / "runs on Automation Platform" pattern recurs in
several other sentences and would have reintroduced the same
awkwardness once the var value changes:
- Frontmatter description
- "lives on Warp" / "part of Warp" / "run on Warp"
- "Warp extracts/saves/searches/creates..." (subject of a sentence)

Left one occurrence alone ("self-hosted {VARS.WARP_AUTOMATION_PLATFORM}")
since that specifically references the self-hostable orchestration
platform as a technical concept, not a generic "in Warp" phrasing.

Also normalized the "Programmatic API access" bullet to use
{VARS.API_SDK_NAME} instead of "{VARS.WARP_AUTOMATION_PLATFORM} API",
consistent with the same fix applied elsewhere in this PR (both link
to /reference/api-and-sdk/, and the correct future name is "Warp API
& SDK", not "Automation Platform API").

Verified with npm run build (370 pages, clean).

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: correct WARP_AUTOMATION_PLATFORM -> API_SDK_NAME mismatches (post-flip audit, round 1)

Following up on the "Automation Platform API" bug caught in review: audited
every {VARS.WARP_AUTOMATION_PLATFORM} usage across the docs for the same
class of issue and found it recurring in 14 more files (~25 occurrences).

Root cause: whenever prose names the actual API/SDK product surface (usually
as "the [X] API" linking to /reference/api-and-sdk/, or an "[X] API and SDK"
phrase), it must use {VARS.API_SDK_NAME} (future value "Warp API & SDK"),
not {VARS.WARP_AUTOMATION_PLATFORM} + a literal " API"/" SDK" suffix (which
would render the invented, non-canonical name "Warp Automation Platform
API" once the platform var flips). This is a wrong-var bug, not just a
grammar/redundancy issue -- the two vars name different things.

Fixed across: platform/overview.mdx, platform/quickstart.mdx,
reference/api-and-sdk/{index,quickstart,demo-sentry-monitoring-with-sdk}.mdx,
reference/api-and-sdk/troubleshooting/{index,errors/index}.mdx,
reference/cli/{index,artifacts}.mdx, reference/index.mdx,
platform/team-access-billing-and-identity.mdx,
support-and-community/plans-and-billing/{credits,platform-credits}.mdx,
guides/agent-workflows/how-to-run-multiple-ai-coding-agents.mdx.

Where a sentence names the API/SDK as a generic noun without further
qualification (not the proper name of the product), simplified to plain
"API"/"the API" instead of introducing an unnecessary var, e.g. "calls the
API (directly or via an SDK)" and "The Python SDK ... calls the API from
Python services".

Also applied the same generic-scaffolding-to-plain-"Warp" simplification
established on the Agent Memory page fix earlier in this PR, for sentences
like "another agent CLI outside of {var}" and "uploads to {var} --
screenshots...", since "Warp" is the stable, locked product name and reads
correctly regardless of how WARP_AUTOMATION_PLATFORM resolves.

One grammar fix: "An {VARS.WARP_AUTOMATION_PLATFORM} cloud environment"
(reference/api-and-sdk/quickstart.mdx) used "An" for agreement with "Oz"
today, but "Warp Automation Platform" needs "A" -- reworded to "A cloud
environment" to avoid the var/article dependency entirely.

Broader audit scope covered in this pass (per user direction, judging
DASHBOARD/PLATFORM_RUN under the same-shape assumption where their future
value is still TBD): swept the whole docs tree for the API_SDK_NAME
mismatch class, redundant trailing-word duplication (e.g. "platform
platform"), and "an {VAR}" article-agreement breaks across all six
rename-sensitive vars (WARP_AUTOMATION_PLATFORM, WARP_AGENT_CLI, WEB_APP,
DASHBOARD, PLATFORM_RUN, API_SDK_NAME). No further redundant-word or
article-agreement issues were found beyond what's fixed here.

Not yet exhaustively reviewed: the full ~300-occurrence long tail of plain
{VARS.WARP_AUTOMATION_PLATFORM} usages for subtler phrasing/tone issues
(the kind fixed on the Agent Memory page) -- flagging as a follow-up since
that requires reading full sentence context per occurrence rather than
pattern-matching, and is lower risk than the two bug classes fixed here.

Verified with:
- npm run build (370 pages, clean)
- check_for_broken_links.py --internal-only (0 broken links, 3495 checked)

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: round 2 of post-rename vars audit across the site

Continues the systematic sweep of {VARS.X} usages for issues that would
only surface after the Oz -> Warp Automation Platform rename ships.

Fixes applied:
- "platform...platform" duplicate wording (7 more instances across
  agents/index.mdx, enterprise/index.mdx, enterprise/getting-started/*,
  and root index.mdx), matching the earlier computer-use/index.mdx fix.
- Leftover un-migrated literal "Oz agents" / "@Oz" mentions in
  reference/cli/integration-setup.mdx (missed in the original migration).
- Leftover un-migrated VideoEmbed title in platform/oz-web-app.mdx.
- Reworded platform/team-access-billing-and-identity.mdx:160, which
  incorrectly described personal-token auth as "authenticating as
  {platform}" instead of authenticating as the triggering user.

Policy decision (confirmed with user): changelog/2026.mdx entries are
dated historical records of what shipped under the Oz brand at the time.
Reverted all ~58 rename-sensitive var usages in that file
(WARP_AUTOMATION_PLATFORM, WARP_AGENT_CLI, PLATFORM_RUN, DASHBOARD,
WEB_APP, WEB_APP_URL) back to their current literal Oz-branded text, so
historical entries don't get silently rewritten when the rename ships.
This is consistent with the earlier "Introducing Oz" launch-heading fix
in the same file. Removed the now-unused VARS import from that file.

Verified: clean build (370 pages), 0 broken internal links, and no new
hardcoded-var lint regressions (all 71 remaining findings are pre-existing
exceptions in files untouched by this round).

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: swap Factories tab icon from server to setting (gear)

Starlight's built-in icon set has no literal factory glyph, so a true
factory-with-smokestack icon would need an icon-library plugin (e.g.
Phosphor or Material Symbols via starlight-plugin-icons) plus a Sidebar
component override -- out of scope for now. Using 'setting' (gear) as a
placeholder since it's the closest built-in match to automated machinery,
and it's visually distinct from the icons on the Terminal (laptop) and
Automation Platform (cloud-download) tabs.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: remove redundant top-level API tab, fix stale Oz icon check

The horizontal "API" tab duplicated a link already present in the
Reference tab's sidebar (API & SDK > API Reference > /api). Both pointed
to the same standalone Scalar-rendered page.

The original reason for splitting /api into its own top-level topic was
that Scalar is a different rendering framework than the rest of the
Astro/Starlight site, so /api can't have a normal per-topic sidebar tree
(hence it was a link-only topic with no `items`). That constraint only
explains why /api itself can't be a full Starlight topic -- it doesn't
require /api to also have its own top-level nav pill. The destination
remains fully reachable:
- From the Reference tab's existing "API Reference" sidebar link
- From WarpTopbar.astro's own breadcrumb/nav on the /api page itself,
  which already links back to "API & SDK" and "Quickstart"

Removing the topic entry needed no other changes: WarpTopicNav.astro just
renders whatever topics exist, and the search breadcrumb label map in
CustomSidebar.astro is keyed off URL segments, not the topic list.

Also fixed a related stale reference in WarpTopicNav.astro: the custom
cloud-icon override still checked `topic.label === 'Oz'`, left over from
before the Automation Platform rename. Updated to `'Automation Platform'`
so the custom SVG actually renders again instead of silently falling
back to Starlight's generic cloud-download icon. Removed the now-dead
`</>`-bracket icon branch for the deleted API topic.

Verified: clean build (370 pages, /api page itself untouched) and 0
broken internal links.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: rename Reference tab to "API & Reference", surface API Reference link

Per HYC/Rachael's Slack discussion following the top-level API tab
removal: HYC flagged that dropping the tab could make the standalone
Scalar-rendered /api page harder to discover. Two changes address that
without re-adding the redundant top-level tab:

1. Renamed the "Reference" tab to "API & Reference" so the tab label
   itself signals that API docs live there.
2. Promoted the "API Reference" link from 3 levels deep (Reference >
   API & SDK > 3rd item) to a new "Technical Reference" group at the very
   top of the tab's sidebar, as the first item -- immediately visible
   without expanding anything. The group's second item is a renamed
   self-link ("Overview") to the former bare "Technical reference" page
   link, following the same self-link-as-first-child pattern already used
   by other groups in this file (e.g. Self-hosting > Overview).

Also updated two lower-priority, non-interactive spots that mirrored the
old "Reference" label for consistency: the llms.txt generator's
customSets list (astro.config.mjs) and the search-result breadcrumb label
map (CustomSidebar.astro).

Verified: clean build (370 pages) and 0 broken internal links.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: put Overview before API Reference under Technical Reference

Order flip only, per feedback on the previous commit.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: restructure Cloud Agents group per HYC feedback

Addresses HYC's follow-up feedback on the Automation Platform tab:

1. Renamed the bare "Agents" sidebar item to "Cloud agent accounts",
   matching the page's own H1 exactly. The generic "Agents" label was
   confusing sitting inside a "Cloud Agents" group, and easily conflated
   with the different "agents" meaning used under Harnesses (Warp Agent,
   Claude Code, Codex).

2. Converted it into a small group and nested Skills as agents, MCP
   servers, and Secrets beneath it, replacing the removed "API / SDK"
   group entirely (which is now empty since its 4th item, a duplicate
   cross-link to /reference/api-and-sdk/, was already identified as
   actively breaking topic-detection for that page and removed).
   Skills and Secrets are literal properties of a cloud agent identity
   (POST /agent/identities accepts `skills` and `secrets` directly); MCP
   is per-run rather than identity-scoped, so added a bridging
   "## Capabilities" section to agents.mdx explicitly covering both
   identity-level and run-level capabilities.

3. Reordered the Cloud Agents group per HYC's note that individual cloud
   agents should be introduced before the tooling for monitoring them:
   Quickstart -> Oz platform -> Cloud agent accounts (+ capabilities) ->
   Viewing cloud agent runs -> Managing cloud agents -> Oz web app ->
   Handoff -> Harnesses -> Access/billing/identity -> FAQs.
   ("Managing cloud agents" was previously positioned above the page
   that actually defines what a cloud agent is.)

Verified: clean build (370 pages) and 0 broken internal links.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: rename subgroup to Warp Cloud Agents, relabel Overview to Cloud agent accounts

The subgroup label 'Cloud agent accounts' was too narrow for its actual
contents -- Skills as agents, MCP servers, and Secrets are cloud-agent
capabilities generally (per HYC/Rachael Slack discussion), not
account/identity-specific. Renamed the subgroup to 'Warp Cloud Agents'
(broader, factually accurate: all 4 pages are genuinely about cloud
agents) and moved the more specific 'Cloud agent accounts' label down to
just the Overview item (platform/agents.mdx), where it's fully accurate.

Accepted a slight nesting redundancy with the parent 'Cloud Agents'
group per explicit direction.

Verified: clean build (370 pages) and 0 broken internal links.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: lead Warp Cloud Agents with the Warp Agent page, move it above Oz platform

HYC review feedback on the restructured Cloud Agents group.

- Move the Warp Agent harness page into the Warp Cloud Agents subgroup as
  its Overview, and drop it from the Harnesses subgroup.
- Move the Warp Cloud Agents subgroup above the Oz platform entry.
- Point the Warp Agent page at its new siblings, splitting Related pages
  into the agents in this section and the harness comparison.

The page keeps its /platform/harnesses/warp-agent slug, so all six
inbound links stay valid and no redirects are needed. The Harnesses
overview still links to it, so it remains reachable from that group.

Cloud agent accounts stays its own page: it carries the
/agent/identities endpoint table, plan limits, service accounts, and
pull request authorship rules, none of which the harness page covers.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix: land the Automation Platform tab on the platform overview

The tab pointed at /platform/, so clicking "Automation Platform" opened a
page titled "Cloud agents overview". The platform overview it should have
opened already exists at /platform/overview.

Retarget the tab to /platform/overview/ and move /platform/ into the
Cloud Agents group as that group's Overview.

Did not swap the two page bodies, which was the other option considered.
The URLs are already aligned with their content, and each carries 16
legacy redirects that match:

  /platform/overview  <- /agent-platform/warp-platform,
                         /cloud-agents-platform, /agent-platform/platform
  /platform/          <- /agent-platform/ambient-agents,
                         /cloud-agents-overview

Swapping the bodies would have sent all 32 legacy URLs to the opposite of
what they ask for, inverted 17 internal links across 10 files that read
"the Automation Platform" and point at /platform/overview/, and broken an
#execution-hosts anchor link from platform/environments.mdx.

Precedent for a non-root tab target: the Changelog tab links to
/changelog/2026/.

Also on the platform overview:

- Add a Warp Factories section, framed as composing the primitives the
  page describes. The page previously mentioned Factories zero times,
  which is a gap now that Factor  which is a gap now that Factor  which is  th  which is a gap now that Factor  which is a gap now that Factor  whicexp  which is a gap now that Factor  which is a gap now that Factor  duplicated "Using cloud agents with or without the Warp
  app" section with a "Where to g  app" section with a "Where to g  app" section with a "Where to g  appch   app" section with a "Where to g  app" section with aunt stays at 2037.

Co-Authored-By: Warp Agent <agent@warp.dev>

* refactor(sidebar): split agent runtime from agent configuration

Per HYC's review on 8/14, which chose Option 1 from the three proposed.
This supersedes 763abea0, which made the Warp Agent harness page the
Overview of a "Warp Cloud Agents" group. That group mixed one
Warp-Agent-specific page with four cross-harness ones, so a Codex user
looking for Secrets had to find it under a Warp-branded heading.

Cloud Agents now reads:

  Overview / Quickstart
  Harnesses           Overview, Warp Agent (Default), Claude Code,
                      Codex, Authentication
  Agent configuration Cloud agent accounts, Skills as agents,
                      MCP servers, Secrets
  Operations          Session sharing, Managing cloud agents, Oz web app
  Handoff
  Access, billing, and identity / Cloud agent FAQs

HYC asked to confirm everything in Agent configuration is cross-harness,
and flagged Cloud agent accounts as a likely exception. Audited all four:

- platform/agents        zero references to any harness, Warp Agent,
                         Claude, or Codex
- skills-as-agents       - skills-as-agents       - skills-as-agents       - skills-as-agent   uses OPENAI_API_KEY as its example; both
                         third                         third                         thirdharness constraint

So nothing needed calling out. Recorded in a sidebar comment so the
group does not silently reacquire Warp-specific pages.

Operations groups the three surfaces HYC lisOperations groups the three surfaces HYC lisOperations groups theg Operations groups the three surfaces HYC lup. The name mirrors the "Management and observability"
section of the platform overview, which covers thessection of the platform overview, which covers thessection of the platrom "Viewing cloud agent
  runs" to "Session sharing". The page is titled "Cloud agent session
  sharing", so the old label sent readers somewhere they did not expect.
- Revert the Related pages split on warp-agent.mdx from 763abea0. The
  "agents in this section" framing only held while that page was a
  section overview.
- Delete the old collapsed Harnesses group, which would otherwise have
  listed the same four pages twice.

No slugs change: no redirects, no broken links, route count still 2037.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix(platform): correct group label, heading levels, and two content issues

From a top-to-bottom review of the Automation Platform tab.

Sidebar

- Rename the 'Self-hosting' group to 'Deployment and hosting'. The group
  holds a comparison page, a Warp-HOSTED page, and the self-hosting set,
  so the old label filed 'Warp-hosted agents' under its own opposite.
- Qualify two labels inside that group. With the group renamed, a bare
  'Overview' and 'Quickstart' read as the group's rather than
  self-hosting's. Both now match their page titles.

deployment-patterns.mdx

- Promote every heading one level. The page had no H2 at all: it opened
  with an H4, used H3 for its three patterns, and H4 beneath. Starlight
  builds the on-page table of contents from H2s, so the page had none.

integrations/bitbucket.mdx

- 'Step 4: Test your environment' was an H2 while Steps 1-3 were H3s
  under the two H2 deployment variants, so Step 4 rendered as a sibling
  of the variants rather than continuing either sequence. It is a   of the variants rather than continuing either sequence. It is a   ofso.

integrations/index.mdx

- Drop the second of two consecutive :::note ca- Drop the second of two coegration setup, which the Get started list alr- Drop the second of two consecutive :::note ca- Drop the second of he {WARP_AGENT_CLI}'. Integrations
  run on the platform; the CLI is one trigger among six, which the
  Triggers page states plainly. The replacem  Triggers page states plainly. The replacem  Triggers page slugs change: no redirects, no broken links, route count still 2037.

Co-Authored-By: Warp Agent <agent@warp.dev>

* refactor(sidebar): split Triggers and Integrations into sibling groups

Triggers was nested inside Integrations, which inverted the concept.
platform/triggers lists integrations as one of six trigger types,
alongside schedules, the CLI, the API, GitHub, and GitHub Actions. So
the content said Triggers contains Integrations while the nav said the
reverse. The sidebar comment showed the nesting was inherited from an
earlier prototype rather than chosen.

They are now siblings:

  Triggers        Triggers overview, Scheduled agents quickstart,
                  Scheduled agents
  Integrations    Integrations overview, Integrations quickstart, Slack,
                  Linear, Jira, GitHub, GitHub Actions, Azure DevOps,
                  Bitbucket, GitLab, cloud providers

Siblings rather than nesting Integrations under Triggers, which would
have pushed 11 pages four levels deep for a relationship the overview
pages can state in prose.

Also add the return cross-link. Triggers already pointed at Integrations
three times; Integrations did not point back. Its intro now names
Triggers as the full set of ways to start a run.

Grouping is independent of slugs, so no files move, no redirects, and no
links change. 52 pages links change. 52 pages links change. 52 pages links change. 52 pt@warp.dev>

* refactor(sidebar): merge Triggers & integrations, collapse level-2 groups

Supersedes 248e6035, which split Triggers and Integrations into sibling
groups. Siblings implied the two are peers, which they are not:
platform/triggers lists integrations as one of six trigger types. But
nesting either inside the other is also wrong -- Triggers under
Integrations inverts the concept, and Integrations under Triggers buries
11 pages four levels deep. A single group named for both sidesteps the
question, and the overview pages carry the actual relationship in prose.

The return cross-link added in 248e6035 stays. Triggers overview is still
a distinct page, and the Integrations intro still needs to name it as the
full set of ways to start a run.

Separately, collapse the three level-2 groups added in 42b84229:
Harnesses, Agent configuration, and Operations. Every other level-2 group
on the site already sets collapsed: true -- Blocks, Capabilities,
Interacting with agents, Handoff, GitHub Actions -- so these three were
the only ones expanding on load, which made the tab open long and
inconsistent with the rest of the docs.

Also normalize the indentation of the ClouAlso normalize the indentation of the ClouAlso han its siblings. No rendering change.

52 pages in the tab, none listed twice. No slugs change.

Co-Authored-By: Warp Agent <agent@warp.dev>

* refactor(sidebar): nest Scheduled agents and Integrations subgroups

Shortens the Triggers & integrations group from 14 visible rows to 3.

  Overview                  platform/triggers
  Scheduled agents          collapsed: Overview, Quickstart
  Integrations              collapsed: Overview, Quickstart, Slack, Linear,
                            Jira, GitHub, GitHub Actions, Azure DevOps,
                            Bitbucket, GitLab, cloud providers

Both new subgroups follow the Overview-then-Quickstart shape the GitHub
Actions subgroup already uses. Nesting GitHub Actions one level deeper
matches existing precedent: the Agents tab nests Computer Use inside
Capabilities inside Warp Agents.

platform/triggers becomes the group overview, so its intro now names
integrations explicitly instead of only 'schedules, webhooks, or other
automation patterns'.

Kept both overview pages rather than merging them into one. Merging
would mean deleting a page, and the two are not comparable:
platform/integrations has 20 inbound links and 19 legacy redirect
sources, against 4 and 0 for platform/triggers. Deleting the more
established of the two to save a single sidebar row is a bad trade, and
with Integrations now a subgroup it needs its own overview regardless.

52 pages in the tab, none listed twice. No slugs change.

Co-Authored-By: Warp Agent <agent@warp.dev>

* fix(platform): hardcode @Oz mention handle instead of variabilizing it

18 places across 9 files wrote the Slack and Linear mention handle as
@{VARS.WARP_AUTOMATION_PLATFORM}. That renders as "@Oz" today, so it
looks correct, but the variable flips to the new product name at rename.
Every one of these would have silently become "Tag @Automation Platform
in a message" -- an invalid handle -- with nothing failing in CI to catch
it.

A mention handle is a literal string a user types. It is not the product
name appearing in prose, and it does not necessarily change when the
product name changes. The GitHub handle was already correctly hardcoded
as @oz-agent in 31 places; this brings Slack and Linear in line.

Rendering is unchanged: WARP_AUTOMATION_PLATFORM is currently "Oz", so
these already displayed as "@Oz".

Also teaches the style linter the same distinction. The hardcoded-var
rule matched "Oz" inside "@Oz" via its word boundary, so hardcoding
raised the repo total from 1148 to 1167. The rule now skips an
"@"-prefixed occurrence. The exemption is per-occurrence, not per-line:
a line containing both "@Oz" and "Oz web app" still flags the latter.
Repo total is back to 1148.

The correct post-rename handle is still an open product question. It is
flagged inline on the changed lines for review.

Co-Authored-By: Warp Agent <agent@warp.dev>

* Add a hairline separator above the page footer CTA

HYC's review asked for a visual break between page content and the
"See something wrong? Edit this page or open an issue" CTA, which
previously ran on directly after the last line of prose and read like a
trailing sentence of the article.

Adds a border-top to the page footer in FeedbackFooter.astro, using the
same treatment already applied to the "On this page" panel footer in
CustomPageSidebar.astro (1px, --sl-color-hairline-light). The rule sits
inside .sl-container, so it spans the content column rather than
full-bleed like Starlight's ContentPanel divider.

Also drops a dead `margin-top: 2rem` from the same rule. The footer is a
sibling of .sl-markdown-content inside Starlight's ContentPanel, whose
`.sl-container > * + *` rule (0,1,1) outranks a bare `footer` selector
(0,0,1), so the gap above the footer has always been 1.5rem. Space below
the rule is now set with padding-top, which nothing else targets, so the
1.5rem above and below is symmetric and under our control.

The /api reference is unaffected: it renders DocsFeedbackLinks in its own
fixed-position card, not through this footer.

Verified: build clean at 370 pages; the separator renders on standard and
splash (404) pages; /api emits no page footer.

Co-Authored-By: Warp <agent@warp.dev>

* refactor(sidebar): shorten the Support tab and relabel two platform groups

Addresses HYC's final round of structural feedback on the tab bar and the
Automation Platform tab.

- 'Support & Community' -> 'Support'. The horizontal tab bar was wrapping
  to a second line early; this was the longest label after 'Automation
  Platform'. Total tab-label length drops from 102 to 89 characters across
  the 9 tabs, a 13% trim, and 'Automation Platform' (19) and
  'API & Reference' (15) are now the longest remaining.
- Community group moved to the bottom of the Support tab. Readers enter
  this tab for help far more often than for community links, so
  troubleshooting, plans and billing, and privacy now come first.
- 'Deployment and hosting' -> 'Deployment & hosting'.
- 'Operations' -> 'Management & Observability', matching the section name
  already used on the platform overview.

Labels only. No slugs, redirects, or page content change.

Verified in built output: the Support tab renders with group order
Troubleshooting -> Plans -> Privacy -> Community; 'Operations' and
'Deployment and hosting' no longer appear anywhere; build clean at 370
pages.

Co-Authored-By: Warp <agent@warp.dev>

* refactor(sidebar): label follow-ups on the Support and platform tabs

Two consistency fixes on top of the previous commit.

- Support tab's bare first item: 'Support and Community' -> 'Overview'.
  The tab is now 'Support', so repeating the old two-part name in the
  first item was stale. 'Overview' also matches the bare first item on the
  Automation Platform, API & Reference, and Enterprise tabs. The page's own
  'Support & Community' H1 and title are intentionally left alone, so the
  page keeps its search and SEO surface.
- 'Management & Observability' -> 'Management & observability', matching
  the sentence case used by its sibling labels ('Triggers & integrations',
  'Infrastructure & security') and by the platform overview section of the
  same name.

Verified in built output: no 'Support and Community' left in the sidebar,
the page title still renders, and no capital-O variant survives.

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp Agent <agent@warp.dev>

* docs(factories): add launch documentation foundation (#537)

Co-authored-by: Warp Agent <agent@warp.dev>

* docs: add Warp Factories to docs landing pages (#538)

* docs: add Warp Factories cross-links

Co-Authored-By: Warp Agent <agent@warp.dev>

* docs: clarify Factories cross-link copy for external readers

Rewrite the four Warp Factories blurbs in plain, benefit-led language:
- Replace the repeated 'coordinates specialized cloud agents across
  software development workflows' phrasing with concrete descriptions
  grounded in the terminology glossary (triage, spec, implement,
  review, verify; humans approve key decisions).
- Drop internal implementation jargon ('Oz primitives',
  'cloud-run primitives') from user-facing copy.
- Fix the dangling modifier on the Guides landing page.
- Simplify the Enterprise product-list intro and make the Factories
  bullet parallel with the other product bullets.
- Match the root landing page's section pattern (divider, bold name,
  arrow link) and move 'Early Access' into prose.

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp Agent <agent@warp.dev>

* docs(factories): document factory agents (#518)

* docs(factories): document factory agent roles

Co-Authored-By: Warp Agent <agent@warp.dev>

* docs(factories): rewrite factory agents page in plain language

Remove undefined jargon that confused readers: 'intake' becomes plain
descriptions of work entering the factory, 'seeded' becomes 'default',
and phrases like 'advisory verdict', 'prompt appendix', 'parent-child
lineage', and 'correlated mistakes' are rewritten to say what they mean.
Same verified facts, human approval gates, and security caveats; clearer
sentences, second-person voice, and simpler section names.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): address feedback on factory agents page

Drop 'specialists' wording in favor of plain 'agents', link computer use
from the implement and verification sections, surface custom agents and
automations in the default roles section, and call out that agent
configuration can be stored as version-controlled code.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): address harness plan gating and config-editing review feedback

- Note that third-party harnesses require a Build plan or higher, with a
  link to warp.dev/pricing (verified against warp-server billing tiers:
  free.yaml sets third_party_enabled false; all paid bases set it true)
- Rework 'Configure agent behavior' to state clearly that a Warp-managed
  factory repo supports both the visual agent editor and the code-based
  editing flow, while a team-owned GitHub repo is file-only with read-only
  control room settings
- Reword the custom-agents opener to drop the 'aren't a ceiling' phrasing

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp Agent <agent@warp.dev>

* Restyle the Factories "Early Access" topic badge and fix nav wrap (#543)

* Restyle the Factories "Early Access" topic badge

The topic nav rendered Starlight's default <Badge>, a monospace
bordered box that clashed with the nav's Inter type and was wide
enough to wrap "Guides" onto a second header row at common laptop
widths (~1300-1460px).

- Render the badge as a compact brand pill (Inter 11px/600, accent
  tint, fully rounded) in both the top nav and the mobile drawer
  topic list.
- Retune the nav's responsive fallbacks: drop per-item icons below
  94rem (the ten-topic row no longer fits with icons below ~1460px)
  and hide the badge below 80rem so the row survives down to
  ~1160px before wrapping.

Co-Authored-By: Warp <agent@warp.dev>

* Temporarily add PR screenshot assets (removed in next commit)

* Remove temporary PR screenshot assets

The images stay referenceable in the PR description via the previous
commit's raw.githubusercontent.com URLs; the tree stays clean.

---------

Co-authored-by: Warp <agent@warp.dev>

* Anchor the active topic tab underline to the header divider (#545)

* Anchor the active topic tab underline to the header divider

The 2px accent underline for the active topic tab hugged the tab
label mid-header, floating ~14px above the header's bottom hairline.
Anchor it to the divider instead (the Cursor/Devin docs pattern):

- Stretch the nav -> ul -> li -> a chain to the header's full content
  height, with tab content centered by the link's own flex alignment.
- Offset the underline by --sl-nav-pad-y so it rests flush on the
  1px border-bottom drawn by Starlight's header.
- In the crowded <=80rem band, where the tab list may wrap to two
  rows inside the taller header, fall back to the previous
  tab-hugging underline so a wrapped row-one tab doesn't leave the
  line stranded between rows.
- Inset the focus-visible ring since the links now span the full
  header content height.

Verified in headless Chromium from 900-1600px: single row >=1160px,
line flush on the divider >=1300px (1281+ once icons drop), correct
fallbacks below.

Co-Authored-By: Warp <agent@warp.dev>

* Temporarily add PR screenshot assets (removed in next commit)

* Remove temporary PR screenshot assets

The images stay referenceable in the PR description via the previous
commit's raw.githubusercontent.com URLs; the tree stays clean.

---------

Co-authored-by: Warp <agent@warp.dev>

* docs(factories): document Slack integration (#525)

* docs(factories): document Jira integration (#528)

* docs(factories): document Jira integration

Co-Authored-By: Warp Agent <agent@warp.dev>
Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): clarify Jira integration page

Editorial pass for external readers:
- Lead with the user flow in plain language instead of internal routing
  vocabulary
- Restructure setup into three clean steps with the automation example
  nested under its step, and explain the example inline
- Consolidate trigger/filter behavior into one section, removing repeated
  explanations of when the event fires and keyword case-insensitivity
- Replace internal jargon (seeds, intake, factory admission, issue
  mutations) with plain wording
- Surface the filters-vs-access caveat as a caution callout and group
  permissions/reliability notes into a scannable list
- Align title and headers with the sibling Linear page; use root-relative
  link for the platform setup page

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): center Jira page on Warp, not Rovo

Reduce Rovo mentions from six to one. The remaining mention is a
recognition pointer in prerequisites (Jira lists the Warp agent among
Atlassian's Rovo agents); everywhere else the actors are Warp and the
factory agent, and sessions are just agent sessions.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): address Jira page review feedback

- Inline the app install and workspace connection steps instead of
  bouncing readers to the platform setup page mid-procedure; keep that
  page as a supplementary deep link and plainly note that its
  warp-agent label flow is for standalone cloud agents, not factories.
- Note the agent runs in the cloud and link cloud agent session
  sharing for watching the full run from the factory.
- Drop the repeated-deliveries bullet (internal dedup detail with no
  user action).
- Reword the code-access bullet: connecting Jira grants no repository
  access, and agent PRs go through the usual review process.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): address Jira page review feedback (round 2)

- Document the automation editor's Jira trigger (Add trigger > Jira >
  Agent session created), now that the control room editor supports it
  alongside GitHub, GitLab, Linear, and Slack triggers. Keep definitions
  as code as the alternative path.
- Correct the access caution: Jira access is workspace-wide today (no
  per-team or per-project scoping exists yet), so drop the inaccurate
  suggestion that the Warp app's Jira authorization can be scoped by
  project.
- Remove the now-false claim that a new session on the same work item
  always starts a separate run.
- Rewrite the Permissions bullet: the Jira user who starts a session
  must connect their Jira account to Warp before a run starts (new
  user-binding gate); the run still executes as the automation's agent,
  not as that Jira user.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): fix four accuracy issues from adversarial review

- Add the missing per-factory Jira connection step (Settings > Jira >
  Connect/Install, select projects, Enable). Without it, the automation
  editor's Add trigger > Jira entry stays a disabled not-connected item
  (confirmed via AutomationEditor.tsx/TriggerMenu.tsx/
  JiraIntegrationConnect.tsx and the editor's own test suite).
- Correct the access caution: project_keys does control whether a given
  automation fires (provider_jira.go's evalFilter), it just isn't an
  access boundary across teams in the same workspace. Left the last
  sentence about no team/project scoping untouched.
- Rewrite the Permissions bullet: a bound Jira actor becomes the run's
  creator/ActorUserID (automation_dispatch_jira.go), while the
  automation's agent remains the ExecutionPrincipal either way.
- Make the definitions-as-code alternative self-contained (factory.yaml
  integration declaration + automation file path) instead of depending
  on the still-stubbed factory-as-code page.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): remove em dashes from Jira setup steps per style guide

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp Agent <agent@warp.dev>
Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>

* docs(factories): document the control room (#531)

* docs(factories): document the control room

Co-Authored-By: Warp Agent <agent@warp.dev>

* docs(factories): clarify control room copy

Editorial pass on the control room page for external readers:

- Replace internal jargon (web surface, source mode, terminal state,
  polling interval, atomic commit) with plain language
- State Activity's default filters directly instead of "two defaults
  shape what you see"
- Restructure dense comma lists into scannable bullets (dashboard
  metrics, run pane actions, Code tab source modes, editor boundaries)
- Explain what the scorer Self-improvement toggle does, per the UI copy
- Fix inverted phrasing ("the automation editor overrides no execution
  settings") and cut duplicated sidebar orientation

No factual changes; all labels and behavior stay as verified.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): trim UI narration from control room page

Cut prose that describes what UI elements do rather than documenting
behavior: search/filter/sort control walkthroughs, filter chip and URL
state mechanics, pane field inventories, refresh cadence, and editor
form-field enumerations. Kept the semantics readers can't infer from
the UI: default Activity filters, metric definitions and cost caveats,
the Stop task warning, source-mode boundaries, and read-only rules.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): control room feedback — session steering, self-improvement, code tab

- Replace the 'no way to steer' note: View session opens the run's shared
  agent session (cloud agent session sharing) for real-time follow-ups.
- Add the Self-improvement page to the pages table and scorer section;
  drop the stale claim that the Dashboard lists self-improvement PRs.
- Link the Code tab section to Factory definitions as code, align its
  source modes with the current UI (GitHub links out; live-managed), and
  document the in-room branch review (Request changes / Approve & merge).
- Refresh details: harness is editable in the agent editor, Scorers are
  read-only for file-managed factories, work-item pane shows origin and
  View agent, Cost per PR expands into most expensive PRs.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): address control room review feedback

- List Integrations among the team-level sidebar pages
- Clarify Settings manages the integrations the factory can access
- Mention the Complete and Cancelled terminal stages on Activity
- Contrast runs with Activity work items

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp Agent <agent@warp.dev>

* docs(factories): clarify Jira access-scoping gap is coming, not available (#548)

PR #528 (already merged) left the access caution flat: 'Warp doesn't yet
offer a way to scope Jira access by team or project.' The requester asked
to verify whether installing the Warp Jira app itself supports scoping
access to specific projects before deciding on wording.

Checked forge-jira/manifest.yml: the app requests classic, site-wide
scopes (read:jira-work, read:jira-user, write:jira-work), not
project-scoped grants, and neither platform/integrations/jira.mdx's
install flow nor the factory's own Settings > Jira connection
(JiraIntegrationConnect.tsx) offers a way to restrict the app's own Jira
access by project — project selection there only seeds automation
defaults. So install-level project scoping does not exist today,
confirming the requester's own suspicion.

Reworded the caution's last sentence to state the coming Warp
team-level Jira scoping feature instead of a flat 'not available',
leaving the already-correct project_keys-is-not-an-access-boundary
guidance untouched. Kept the ':::caution' aside type per this repo's
own convention (limitations/caveats, not destructive/irreversible
actions) rather than introducing an unsupported type.

Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
Co-authored-by: Warp <agent@warp.dev>

* docs(factories): document Factory MCP (#521)

* docs(factories): document Factory MCP

Co-Authored-By: Warp Agent <agent@warp.dev>

* docs(factories): make the Factory MCP page reader-focused

- Lead with what you can do and add example prompts; make clear your
  agent calls the tools for you
- Replace the tool-by-tool sequence diagram (Mermaid isn't rendered by
  this site) and the agent operating rules (error-code handling,
  reference resolution order, fan-out restrictions) with two plain
  workflows: send new work, and pick up a task locally
- Keep the load-bearing caveats: full-permission auth, non-locking
  pickup, push-before-handback, handback vs complete
- Simplify the tool table to purpose-only and add a Related pages
  section

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): give Factory MCP setup instructions directly

Replace "get connection details from Warp or your factory
administrator" with the actual quickstart: the endpoint URL
(https://app.warp.dev/api/v1/mcp/factory, verified against warp-server
route registration and the client's builtin server config), a Claude
Code one-liner, the standard mcpServers JSON snippet, and the bearer
header form for API-key automation. Browser OAuth on first connect is
backed by the server's RFC 8414/9728 discovery metadata for this
endpoint.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): cross-link factory pages and enrich MCP-in-Warp link

- Point the MCP-in-Warp related-pages entry at the catalog of MCP
  servers you can add to Warp directly
- Link foreman to the factory agents page and control room to its page
- Include Jira in the intake paths alongside Slack, Linear, and GitHub

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp Agent <agent@warp.dev>

* docs(factories): document measurement and improvement (#522)

* docs(factories): document measurement and improvement

Co-Authored-By: Warp Agent <agent@warp.dev>

* Simplify measure-and-improve language

Rewrite the page in plainer language based on review feedback:
- Rename the jargon table headers (Boundary/Limitation -> Keep in mind)
- Drop the 25-lines-per-engineer-hour heuristic explanation; describe
  Time saved simply as a directional estimate
- Merge the two dense metric-caveat paragraphs into one
- Shorten Scorer, benchmark, Self-improvement, and improvement-loop
  sections without changing verified behavior claims

Co-Authored-By: Warp <agent@warp.dev>

* Drop Keep in mind columns; state facts in descriptions

Reviewer feedback: docs should read as objective statements, not
advice. Both tables are now two columns, with measurement facts folded
into the metric descriptions and coverage facts kept in the caution
block.

Co-Authored-By: Warp <agent@warp.dev>

* Remove remaining implementation details and duplication

- Metric rows describe only what each metric shows; GitHub App
  coverage facts live in the caution block alone
- Cut UI inventory (median/mean/By complexity/By size views,
  scoreboard, scatter plot) and billing-rate conversion detail
- Replace jargon: eligible, lower-bound, freeze, clusters, PR
  signals, webhook data
- Dedupe Self-improvement paragraphs and the three-newest-PRs fact,
  fix the ambiguous pronoun, drop the closing aphorism and generic
  benchmark advice already covered by loop step 4

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): address measure-and-improve review feedback

- Trim the dashboard caution to the actionable GitHub App coverage
  caveat; move the run-count composition into the interpretation
  paragraph and drop the opaque merge-rate sentence
- Add a Mermaid diagram to the practical improvement loop showing the
  monitoring cycle and where Self-improvement joins it
- Link definitions as code from the Self-improvement section,
  explaining that follow-up runs improve the versioned factory
  definition through reviewable pull requests

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): align Scorer docs with current UI per review

- Replace the all-agents/pause framing with the actual model: Scorers
  apply to selected agents, and setting the sample rate to 0 stops
  automatic scoring.
- Drop the Manual/Periodic mode table; describe automatic scoring at
  sample rate > 0 plus on-demand scoring of a single conversation.
- Remove the Analysis model setting paragraph, which may be dropped
  from the product.
- Polish: list the Agent(s) to evaluate field in UI order, introduce
  'benchmark suite' before use, and update improvement-loop steps to
  match the pause-less model.

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp Agent <agent@warp.dev>

* docs(factories): use root-absolute links on merged factory pages (#550)

* docs(factories): fix relative links and non-rendering mermaid on merged pages

Convert all 31 relative internal links across factory-agents,
factory-mcp, measure-and-improve, and the Jira/Slack integration pages
to root-absolute paths with trailing slashes. Relative links resolve
against Starlight's trailing-slash page URLs (../platform/x becomes
/factories/platform/x) and 404 in the browser, while the file-path-based
CI link checker stays green — the same breakage bnavetta flagged on the
infrastructure page in #523.

Also remove the mermaid flowchart from measure-and-improve: the docs
site has no mermaid renderer, so the block displayed as a raw code
fence. The numbered improvement-loop list directly below it already
narrates every node and edge, so no information is lost.

Only pages whose owning PRs (#518, #521, #522, #525, #528) have already
merged are touched; open factory PRs own different files.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): restore improvement-loop mermaid diagram

Mermaid rendering shipped on main in c35aab4 (#515) after
hyc/factory-launch forked, so the diagram only failed to render because
the launch branch predates the renderer. Restore it; this PR now only
converts relative links to root-absolute paths.

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp <agent@warp.dev>

* docs(factories): document integrations and intake (#520)

* docs(factories): document integrations and intake

Co-Authored-By: Warp Agent <agent@warp.dev>

* docs(factories): replace intake jargon with plain language on connect page

Rewrites Connect your factory so external readers don't need internal
vocabulary to follow it:

- Drop 'intake' everywhere (intake paths, intake boundaries, how intake
  works); use plain framing like 'how work reaches your factory'.
- Dissolve the 'Intake boundaries' grab-bag table into a 'Good to know'
  list scoped to user-facing behavior, and move provider authorization
  mechanics to the per-provider integration guides.
- Remove internal implementation details: seeded tracker skill and
  prompt appendix, retry-safety guidance for receiving workflows,
  subscription-matching plumbing, and the unexplained 'managed factory'
  qualifier.
- Simplify the flow diagram and setup steps; gloss 'foreman agent' and
  'work item' on first mention per the terminology glossary.

Validated with npm run build (377 pages), the style_lint skill
(--changed, no findings for this page), and the broken-links checker
(0 broken links).

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): link provider mentions to their integration guides

Link Slack, GitHub, Linear, Jira, and Factory MCP from the source table,
the default-automation bullets, and the tracker-selection note so readers
can jump straight to the relevant guide from wherever a provider is
mentioned.

Validated with the style_lint skill (no findings for this page) and the
broken-links checker (0 broken links).

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): Jira work goes to Warp, surfaced through Rovo

The agent users assign or mention in Jira is Warp (the rovo:agentConnector
module named 'Warp' in forge-jira/manifest.yml), not a generic Rovo agent.
Rovo is Atlassian's framework that surfaces it; the conversation still
happens in a Rovo agent session (A2A agent_session_created ingress).

Reword the source table, Jira default-automation bullet, and integration
guides bullet accordingly, and align 'Rovo agent session' phrasing with
the Jira integration guide.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): de-emphasize Rovo on the connect overview

Lead with what matters to the reader: Jira work items are assigned to
Warp. Drop the remaining Rovo mentions from the source table, the Jira
integration-guides bullet, and the follow-ups note — the Jira guide
covers the Rovo session mechanics.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): tighten connect page from review feedback

- Drop the vague 'What you get back' table column; the intro already
  covers results posting back to the source
- Expand the foreman description: what it orchestrates (triage, spec,
  implementation, review) and where it pauses for humans
- Replace the marketing-toned 'You stay in control of what ships'
  bullet with a factual pull-request hand-off note
- Remove em dashes from procedural steps and reduce them elsewhere

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp Agent <agent@warp.dev>

* docs(factories): document Linear integration (#527)

* docs(factories): document Linear integration

Co-Authored-By: Warp Agent <agent@warp.dev>

* docs(factories): rewrite Linear page for clarity

Restructure the page in plainer language without changing any
verified claims:

- Open with the two-part mental model (connection grants access,
  automations route work) instead of abstract phrasing
- Split the dense agent-session paragraph into a dedicated
  'Route agent sessions' subsection
- Move the OAuth-scope-vs-routing caveat and the duplicate-run
  hazard into :::caution callouts
- Rename jargon headings ('Writeback and operational boundaries'
  -> 'What the factory can do in Linear') and simplify table cells
- Trim redundant sentences throughout

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): remove internal vocabulary from Linear page

Polish pass for external readers:

- Replace the Linear activity-type enumeration ('thoughts, actions,
  plan changes, final responses, and errors') with plain descriptions
  of what shows up in the session
- Fold the session fallback into 'Route agent sessions' and drop the
  'configured fallback behavior' routing mechanics
- Rephrase 'requester attribution' and 'artifact links' in
  user-facing terms

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): address review feedback on Linear page

- Replace the intro with the launch-approved Linear description copy
- Split setup into first-time factory setup vs. factory settings, per review
- Move trigger configuration into its own section and note the Not
  connected state in the Add trigger menu
- Editorial polish: sharper frontmatter description, prerequisite
  wording, expected outcomes after connect steps, clearer link text

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): polish Linear page structure and flow

- Promote Route agent sessions to its own section directly after the
  connect paths, matching the assign-or-tag flow the intro describes
- Orient trigger steps from the Automations page (New > Add trigger)
- Tighten section leads and the settings parity outcome sentence

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp Agent <agent@warp.dev>

* docs(factories): document infrastructure and security (#523)

* docs(factories): document infrastructure …
…ch them (#572)

* docs: fix 19 broken heading anchors and teach the link checker to catch them

Post-launch pass over the docs after the Warp Factories rollout (#508).

The new /factories pages are clean: build passes at 378 pages, style_lint
reports 0 errors on them, and the internal and external link checkers are
both green. What the checks miss is anchors.

check_links.py strips the #fragment before resolving a link, so a link to a
heading that was renamed or deleted still passes. The page exists, CI is
green, and the reader silently lands at the top of the page instead of the
section the sentence promised. 19 such links had accumulated.

Fixes, grouped by cause:

- Fragments aimed at a <TabItem> or a bolded line rather than a heading.
  Only headings get anchor ids, so these never resolved: #linux / #windows
  on installation-and-setup, #windows on command-palette, #sentry on mcp,
  and #warp-wont-run-or-render-on-windows / #auto-update-on-macos-ventura
  on known-issues. Retargeted to the enclosing heading.
- Headings renamed out from under the link: #custom-prompt ->
  #shell-prompt-ps1 (4 migrate guides), #custom-prompt-compatibility-table
  -> #shell-prompt-compatibility-table, #warp-ai-autofill -> #ai-autofill,
  #manage-your-data -> #delete-your-account-and-data, #fundamentals ->
  #all-available-shortcuts, #what-is-agent-mode ->
  #conversations-with-warps-agent, #routing-runs-to-self-hosted-workers ->
  #routing-runs-to-this-worker, and the guided-setup anchor on environments.
- Content that moved pages: the "Gathering Warp logs" link (3x) pointed at
  the Support overview, which has no such section; the content is on
  sending-us-feedback. Same for the session sharing anchor, which pointed at
  a stub page with no headings.
- Sections that never existed. Slack and Linear both sent readers to an
  "Integrations Troubleshooting" page at /platform/integrations/#troubleshooting
  and listed what it covers. That section has never existed on that page.
  Repointed both at /platform/environments/#common-issues, which genuinely
  covers GitHub authorization, repo access, Docker images, and setup
  failures, and trimmed the promised list to match.
- One removed feature: universal-input told readers Classic Input supports
  "same line prompt" and linked #same-line-prompt. That section is commented
  out in prompt.mdx with a TODO noting the feature was removed. Dropped the
  claim rather than just repointing the link.

Two launch follow-ups in the same pass:

- CustomSidebar.astro's search breadcrumb map gained 'API & Reference' at
  the launch but not the two topics the launch actually touched. The slug
  stayed `platform` through the rename, so every search result under the
  Automation Platform tab breadcrumbed as "Platform". Added `platform` and
  `factories`, and noted why the now-tabless `api` entry stays.
- linear.mdx read "Linear not detecting the Automation Platform" post-flip,
  where a mention handle belongs. Hardcoded to @oz, matching the handle
  treatment the launch established for Slack and Linear.

To keep this from recurring, check_links.py now validates fragments against
the target page's headings, rebuilding slugs the way github-slugger (and so
Starlight) does. Verified it catches a reintroduced break, and that it stays
silent on component-generated anchors and heading-less pages.

Also fixed two llms.txt set descriptions using "Warp's agents" /
"Warp's Automation Platform", which AGENTS.md calls out by name as the
ambiguous phrasing to avoid.

Verified: npm run build clean at 378 pages; 0 broken internal links and 0
broken anchors, cross-checked against ids in the built HTML; external link
check green at 1531 URLs; style_lint unchanged at 1151 findings, 0 errors.

Co-Authored-By: Warp <agent@warp.dev>

* docs: validate same-page #fragment links in the link checker

should_skip() dropped every bare #fragment link before check_fragment()
ever ran, so a same-page link to a renamed or deleted heading passed
silently instead of being reported broken. Only truly empty urls need
skipping now; bare fragments fall through to the existing
check_internal()/check_fragment() same-page path.

Running the fixed checker against the docs surfaced one real broken
same-page anchor (factory-as-code.mdx's #runnersnameyaml), fixed here
to #runnersyaml to match the heading's actual github-slugger anchor.

Adds a regression test covering both a valid and an invalid same-page
fragment.

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp <agent@warp.dev>
Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
* chore: log aeo new-guide rec run 2026-08-04

Co-Authored-By: Oz <oz-agent@warp.dev>

* chore: log aeo new-guide rec run 2026-08-04

Co-Authored-By: Oz <oz-agent@warp.dev>

* Update .agents/logs/aeo_new_guide_recommendation_runs.md

---------

Co-authored-by: Oz <oz-agent@warp.dev>
* docs(factories): make web app name the hyperlink in quickstart.mdx and github.mdx

Match the pattern already applied to gitlab.mdx: the Warp Factories
web app name itself is the link, instead of a separate 'at platform.warp.dev'
link fragment following the name.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): rename @oz-agent -> @warp-agent, Oz by Warp -> Warp Factories

Consolidates PR #549 review-fix work into this fast-follow PR:
- Renames the legacy GitHub integration mention handle and GitHub App name
  across platform docs to match the Warp Factories launch naming.
- Resolves the factories/integrations/gitlab.mdx and
  platform/integrations/gitlab.mdx content, adopting Foreman-name
  terminology and fixing stale control-room links to factory-dashboard.
- Flags two open product questions inline for tech review: whether GitLab
  is supported as a definitions-as-code host, and whether a native
  GitLab.com OAuth integration exists today.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): restore numbered steps in quickstart's setup section

PR #563 (merged to the staging branch after our review rounds, then
squash-merged to main) restructured 'Set up your factory' from a
numbered list into ### subheadings with prose paragraphs -- the exact
anti-pattern flagged repeatedly on the GitHub/GitLab integration docs.
It also broke 'Setup asks you for the following,' which no longer led
into an actual list.

- Flatten the section back into a single numbered list, preserving
  #563's content improvements (GitLab support, Foreman name
  terminology, dashboard naming).
- Move the Factory MCP skip-the-wizard aside into a :::note so it
  doesn't interrupt the numbered flow.
- Rewrite the 'What you'll decide' bullets as plain one-sentence
  statements instead of bold-phrase-dash-definition pairs.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): make 'What you'll decide' bullets direct sentences

Use imperative verbs (Choose/Name/Decide) so each item states the
decision directly instead of reading as an indirect question.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): add Early Access note to common entrance-point pages

Add the same Early Access note used on the overview page to quickstart.mdx,
how-factories-work.mdx, and factory-agents.mdx, since readers may land on
these directly via search or a shared link without passing through the
overview first.

Also standardize placement: the note now sits at the very top of the page
content on all four pages, immediately after the frontmatter (and import,
where present), before any intro prose.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): tighten decide bullets, prerequisites, and split setup steps

- 'What you'll decide': reword the intro to avoid the semicolon and to
  set up the list as noun phrases (the intro's 'you decide' already
  supplies the verb, so bullets no longer repeat 'choose'/'decide').
  Replace the closing sentence with a direct statement that these are
  editable after setup.
- Prerequisites: drop the implied 'if your team doesn't have it yet.'
- Set up your factory: step 1 now names the actual action (click + next
  to Factories). Split the old step 2 into choosing/authorizing a code
  host and organization, then a separate step for selecting repos and
  clicking Add repos, matching the real wizard flow. Rewrote the Factory
  MCP note to describe what create_factory covers directly instead of
  a step-number cross-reference that breaks when steps are renumbered.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): add setup wizard screenshots and fix step order in quickstart.mdx

- Add cropped screenshots for 5 of the 6 'Set up your factory' steps
  (open wizard, connect organization, select repos, name factory, pick
  agents), sourced from a real walkthrough.
- Swap the order of the agent-toggle and chat/tracker-connection steps
  to match the actual wizard flow: connecting Slack/an issue tracker
  happens before the agent-picker screen, not after.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): split issue tracker into its own step after agent picker

Clarifies the real wizard order: connecting a chat tool (Slack) happens
before the agent picker, and connecting an issue tracker is a separate
screen that comes after it, not bundled into the same step.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): polish quickstart wording per review

- Add missing comma after 'Optionally' in steps 5 and 7.
- Simplify the post-procedure sentence to 'Warp creates the factory
  and opens its dashboard.'
- Introduce 'setup wizard' plainly in the procedure's lead-in sentence
  instead of only in a screenshot caption, then reference it directly
  in the skip-the-wizard note ('Want to skip the wizard? ...').

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): tighten quickstart intro paragraph and decide bullets

- Reduce repeated 'team' in the opening sentence ('team of cloud
  agents' / 'your team's requests') by rewording to 'a group of cloud
  agents that turns incoming requests into pull requests.'
- Split the comma-heavy second sentence into two shorter ones so it
  reads more cleanly.
- Drop the redundant 'now' from the last decide-bullet and rework the
  closing sentence to 'a best guess is fine for now.'

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): tighten skip-the-wizard note in quickstart.mdx

Two shorter, more direct sentences instead of one long clause-chained
sentence.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): address Aloke's video feedback (gaps 1-3 + code comment fix)

- connect-your-factory.mdx: weave the 'Good to know' bullets into the
  sections they relate to (source table, connect-a-source steps, and
  how-work-reaches-your-factory) instead of an appendix-style dump.
- factory-dashboard.mdx: remove the exhaustive 'Pages at a glance'
  table (redundant with the per-page sections below it) and lead with
  the Dashboard metrics page instead, matching the actual landing
  experience.
- factory-dashboard.mdx / measure-and-improve.mdx: clarify what counts
  as human input for the Autonomy metric.
- sidebar.ts: update the stale 'pending ZL naming sign-off' comment
  now that the Automation Platform name is confirmed.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): add self-hosted worker example to factory-as-code.mdx

Grounded in the existing workerHost field and infrastructure-and-security.mdx's
'Choose an execution host' section, not new/unverified specifics.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): feature the Factory MCP creation path up front in quickstart.mdx

Aloke felt the agent-driven create_factory flow was underselling a real
differentiator by being a footnote-style :::note after all 7 wizard steps.
Move it to the top of 'Set up your factory,' presented as a real
alternative before the numbered wizard steps rather than an afterthought.

Co-Authored-By: Warp <agent@warp.dev>

* docs: bake Aloke's general feedback themes into the style guide and feature-doc template

AGENTS.md:
- Voice & tone: add a rule against AI-sounding copy.
- General guidance (all content types): add rules to sequence basics
  before jargon, avoid appendix-style/bolted-on content, avoid
  over-specifying counts/internals that drift, feature real
  differentiators structurally instead of as footnotes, and verify
  claims against the live product. Strengthen the practical-examples
  rule to prefer complete examples for enterprise/infra features.
- Procedural rules: add 'explain the default before the override' for
  configurable infrastructure and advanced settings.

.agents/templates/feature-doc.md: add inline reminders in Key features
and How it works to not bury real differentiators as footnotes and to
avoid citing exact tool/component counts that can go stale.

draft_conceptual and draft_feature_doc skills already defer to AGENTS.md's
'Drafting by content type' section directly, so these additions flow
through automatically without needing separate skill edits.

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp <agent@warp.dev>
* docs: fix Jira app naming in Jira integration page

The Oz -> Automation Platform rename (0e8c5a6) replaced references to
'the Oz app' installed in Jira with {VARS.WARP_AUTOMATION_PLATFORM}.
That's the platform's name, not the Atlassian app's name -- the app
the reader installs and finds in Manage apps is named Warp. Replace
the ten Automation Platform references with Warp app naming.

* docs: fix Warp app naming across integration docs

Extends the Jira integration fix to the rest of the integration docs.
For each {VARS.WARP_AUTOMATION_PLATFORM} use, replace it with Warp / the
Warp app where the sentence names the installed third-party app or the
actor posting/acting inside that tool, and leave the variable where the
sentence describes the platform itself (triggers, environments, OIDC
federation).

- quickstart.mdx: fixed 9 of 10 uses (Slack app install/authorize steps
  and the actor that acknowledges/posts in Slack); left the platform-level
  "integrations" and "consistent instructions across every run" uses.
- linear.mdx: fixed all 4 uses (install, uninstall, and the actor that
  clones repos and works the issue).
- reference/cli/integration-setup.mdx: fixed 2 of 3 uses (configuring
  the app, installing it into Slack/Linear); left the link to the
  platform overview page.
- cloud-providers.mdx, bitbucket.mdx, azure-devops.mdx, gitlab.mdx,
  index.mdx: audited, no changes -- all uses describe the platform
  (triggers, OIDC federation) rather than an installed app.

* docs: address review feedback on quickstart.mdx:87

The --prompt is supplied to each run's agent, not the platform or
"Warp" (which can also read as the desktop app). Say "give agents
consistent, reusable instructions across every run" instead.

---------

Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
* docs: restore literal Oz Cloud API Keys Settings label

* docs: exempt literal 'Oz Cloud API Keys' Settings label from hardcoded-var lint

* docs: scope hardcoded-var exemption to the Oz literal specifically

Rework of PR review finding: the suffix exemption previously suppressed
every rename-sensitive literal followed by ' Cloud API Keys', which would
have silently exempted a hardcoded 'Automation Platform Cloud API Keys'
too -- exactly the new-name literal this check exists to catch. Key the
exemption per-literal instead so only 'Oz' gets the ' by Warp' / ' Cloud
API Keys' suffix exemptions, and add a negative regression case asserting
the different literal still flags.

---------

Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
* docs(factories): add Slack thread-reply screenshot to slack.mdx

Shows the factory's Slack app posting progress updates in the thread
where work started, per stakeholder feedback requesting a product
shot for the Slack integration page. Cropped to remove the requester's
name/photo from the original capture.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): add software factory diagram and Activity page screenshot

- Add the software factory concept-loop diagram (from the launch blog) to
  index.mdx's 'What is a software factory?' section, cropped to remove
  Figma export artifacts.
- Add a real Activity page screenshot (from the launch blog) to
  factory-dashboard.mdx's 'Track work items on Activity' section, cropped
  to remove the Figma canvas margin and a corner marker artifact.
- Both are interim assets sourced from launch marketing materials, to be
  replaced with live product screenshots once a demo factory has real
  usage history.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): rework Who benefits from Warp Factories bullets

- Replace bolded-term + dash definitions with plain sentence descriptions,
  since these items aren't discrete terms/features being defined.
- Rework the intro sentence and its lead-in to the list.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): quickstart tweaks

- Change '10 minutes' framing to 'less than 10 minutes' in the frontmatter
  description and intro sentence.
- Add the Slack thread-reply screenshot to 'Send your first work item' as
  an example of following progress from Slack.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): polish quickstart setup steps

- Remove the awkward 'Otherwise,' transition from the note back to prose
  in 'Set up your factory'.
- Shorten the Foreman name sentence in step 4.
- Split steps 5 and 7 into two sentences each so the optional
  connect-later path reads as its own sentence, with a link to connect
  your factory.
- Reword the 'Send your first work item' intro's opening sentence.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): trim duplication and vagueness in connect-your-factory

- Remove the 'Integration guides' section, which duplicated the same 5
  sources, links, and one-liners already in the 'Choose a source' table.
- Simplify the Linear/Jira exclusivity sentence in 'Choose a source'.
- Replace the vague 4-step 'Connect a source' numbered procedure (pick a
  factory, install the integration) with two short paragraphs covering
  the two things it actually needs to convey: default automations/filters
  and testing the connection.
- Reword the automation-start sentence in 'How work reaches your factory'.
- Tighten the wall-of-text paragraph describing the foreman/work-item
  flow, removing detail that's already covered by how-factories-work.mdx
  and linking there instead.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): clean up Factory MCP and Direct runs and schedules

- Rework the Factory MCP paragraph to remove the colon and em dash.
- Rewrite the direct-run bullet with concrete steps (click New on the
  Runs page, describe the task to the foreman) instead of vague framing,
  and remove its colon.
- Drop the closing 'Next, customize which agents...' line: it pointed to
  Definitions as code, which sits earlier than this page in the sidebar,
  making it read as a disembodied non-sequitur rather than a next step.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): wording tweaks in Slack integration guide

- 'send it work' -> 'send work'
- 'app, carrying the factory's name and avatar' -> 'app with the factory's
  name and avatar'
- Shorten the first prerequisite bullet

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): reorder Slack guide to match sibling integration docs

- Convert 'Connect the factory' from prose to a numbered procedure,
  matching the GitHub/GitLab/Linear/Jira pattern.
- Move 'Configure factory automations for Slack' to immediately follow
  the connect steps, instead of being stranded after two usage/reference
  sections.
- Move 'Who can start work' down next to 'Follow work and review
  outputs', right before Troubleshooting, mirroring where sibling docs
  place their Permissions section.

New order: Prerequisites -> Connect the factory -> Configure automations
-> Start and continue work (reference) -> Follow work and review outputs
-> Who can start work -> Troubleshooting and reconnection -> Privacy.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): apply Slack-review wording fixes to sibling integrations

- linear.mdx: 'send it issues' -> 'send issues' in the intro, matching
  the same fix applied to slack.mdx.
- github.mdx: remove two em dashes in the Permissions and 'How the
  factory responds' sections.
- jira.mdx: remove an em dash in the Connect Jira step 3 automation note.

Structural review of github.mdx, gitlab.mdx, linear.mdx, and jira.mdx
against the same criteria used for slack.mdx found no ordering issues --
these four already follow the setup -> configure -> reference ->
permissions -> troubleshooting pattern that slack.mdx was reordered to
match.

Co-Authored-By: Warp <agent@warp.dev>

* Update src/content/docs/factories/connect-your-factory.mdx

* docs(factories): drop redundant table in slack.mdx per review feedback

Hong Yi flagged the 'Start and continue work from Slack' table as
possibly unnecessary and over-explaining. The Context/Slack output
columns mostly restated the obvious (of course the triggering message
is context) and repeated the same acknowledgment/progress-updates
phrase in nearly every row, without adding info beyond what the intro
paragraph and the following sentence already said. Replaced the table
with tight prose that keeps only the genuinely distinguishing facts:
mention/DM starts work, a reply only continues existing work, and
automations can start work without a mention.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): upgrade concept diagram and Activity screenshots

- Replace factories-concept-loop.png and factory-dashboard-activity.png
  with clean, higher-resolution source exports of the same designs
  (found via Figma), instead of the cropped launch-blog versions.
- Add factory-dashboard-activity-filters.png showing the Stage filter
  chip and search bar, illustrating the Created by/Stage filtering
  paragraph in factory-dashboard.mdx. Redacted the source screenshot's
  visible requester name while preserving the Stage filter chip.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): add Dashboard metrics and Slack automation screenshots

- Replace factory-dashboard-activity.png with an even cleaner, higher-
  resolution source that shows fuller (though still slightly clipped)
  relative timestamps.
- Add factory-dashboard-metrics.png (Cost per PR chart broken down by
  compute/platform/inference, plus example Scorer cards) to the
  'Read metrics on the Dashboard page' section of factory-dashboard.mdx.
  Anchoring the previously-approved Code Quality/Efficiency cards next
  to the documented Cost per PR metric reads naturally as example
  Scorer cards, which the surrounding text already describes.
- Add slack-automation-example.png to slack.mdx, illustrating the
  acknowledgment -> progress update -> tracked task pattern described
  in 'Start and continue work from Slack'.

All three sourced from user-provided launch assets, cropped to remove
Figma export corner markers.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): remove redundant Slack automation screenshot

The new example duplicated the visual pattern already shown by
slack-factory-thread-reply.png in 'Follow work and review outputs'
(bot replying in a thread with acknowledgment/progress/links), adding
no new information.

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp <agent@warp.dev>
- Remove leftover GitLab review-question comment and correct the
  definition-host claim (GitLab isn't yet a supported definition host).
- Fix agent naming: quickstart and troubleshooting referred to the
  Implement agent as "Code" and called the default agents "subagents";
  align both with the Implement Agent name shown in the product UI.
- Normalize the GitLab integration page's title/description to the
  "Connect X to your factory" pattern used by the other integrations.
- Rewrite the troubleshooting page's opener to lead with the fix,
  not "This page covers...".
- Fix the How factories work sidebar label casing and align the
  Complete/Completed terminal-stage label between the dashboard and
  Slack Home tab docs.
- Normalize a few Related pages/Next steps link labels for consistency.
- Add brief {/* VISUAL: ... */} comments at sections a product
  screenshot would help, skipping locations already covered by the
  open factory-agents.mdx/how-factories-work.mdx screenshot PR (#589).

Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
Co-authored-by: Warp <agent@warp.dev>
* docs(factories): copy edits and screenshots for Factories launch review

- how-factories-work.mdx: simplify intro paragraph, fix work item
  definition flow, clarify stage-skip conditions, split run-on
  sentences, remove passive voice
- factory-agents.mdx: tighten agent descriptions, drop anthropomorphic
  language, remove redundant heading, clarify Agents page navigation
  and terminology, add Agents list and agent settings screenshots

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): fix repeated "from" per review feedback

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): clean up screenshot crops

- factory-agents-list.png: remove a thin blue artifact strip on the left edge
- factory-agent-settings.png: crop above the Agent prompt heading so the field list ends cleanly

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): restructure factory-agents.mdx sections and trim duplication

- Nest Foreman/Triage/Spec/Implement/Review as H3s under "The default agents"
- Convert "Configure agent behavior" into numbered Steps, with both
  screenshots moved there (Agents list + agent settings page)
- Shorten the factory-as-code paragraph to the info unique to this page
  (file-only settings) and link to factory-as-code.mdx for hosting-mode
  details instead of restating them
- Move the skills/MCP/secrets links out of "Choose models and harnesses
  per agent" (non sequitur there) to where those concepts are
  introduced: Built-in skills and the new Configure agent behavior steps

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): use plain numbered list instead of Steps component

Match the numbered-list procedure style already used elsewhere in the
Factories section (quickstart.mdx, automation-filters.mdx, factory-mcp.mdx)
rather than introducing the Steps component for just this one page.

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp <agent@warp.dev>
…tle (#596)

* Automated SEO fixes: trim long descriptions and expand Factory MCP title

Co-Authored-By: Oz <oz-agent@warp.dev>

* Remove duplicate H1 and de-redundant Factory MCP title

Starlight already renders the frontmatter title as the page H1, so
the explicit H1 added by the SEO fix duplicated the page title.
Also reworked the title to avoid repeating "Factory"/"Factories"
against the sidebar section context.

Co-Authored-By: Warp <agent@warp.dev>

* docs-seo-audit: stop instructing manual H1 sync/add

Astro Starlight always renders the page H1 from the frontmatter title
(or sidebar label/slug fallback) -- this repo's pages never contain a
manual H1 in the markdown body, since that pattern was leftover
behavior from the old GitBook-based docs platform. The skill
previously told the audit to add or sync an H1 whenever a title or
sidebar label changed, which is what produced the duplicate H1 on the
Factory MCP page fixed earlier on this branch. Rewrite the guidance so
the skill never adds/syncs a manual H1, and instead treats one found
during the multiple_h1/missing_h1 checks as an incidental defect to
remove.

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: warp-factories[bot] <243557089+warp-factories[bot]@users.noreply.github.com>
Co-authored-by: Oz <oz-agent@warp.dev>
Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
Co-authored-by: Warp <agent@warp.dev>
Co-authored-by: warp-factories[bot] <243557089+warp-factories[bot]@users.noreply.github.com>
Co-authored-by: Oz <oz-agent@warp.dev>
Co-authored-by: Hong Yi Chen <hongyi@warp.dev>
* docs: weekly release updates (2026-08-20)

Co-Authored-By: Oz <oz-agent@warp.dev>

* Update src/content/docs/changelog/2026.mdx

Co-authored-by: warp-for-oss[bot] <277970191+warp-for-oss[bot]@users.noreply.github.com>

* Update src/content/docs/changelog/2026.mdx

Co-authored-by: warp-for-oss[bot] <277970191+warp-for-oss[bot]@users.noreply.github.com>

* Update src/content/docs/changelog/2026.mdx

Co-authored-by: warp-for-oss[bot] <277970191+warp-for-oss[bot]@users.noreply.github.com>

---------

Co-authored-by: warp-factories[bot] <243557089+warp-factories[bot]@users.noreply.github.com>
Co-authored-by: Oz <oz-agent@warp.dev>
Co-authored-by: Hong Yi Chen <hongyi@warp.dev>
Co-authored-by: warp-for-oss[bot] <277970191+warp-for-oss[bot]@users.noreply.github.com>
Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
Co-authored-by: Warp <agent@warp.dev>
…g, cloud agent terminology, code spans, Settings path bold) (#608)

Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
Co-authored-by: Warp <agent@warp.dev>
…606)

* Overhaul docs tone guidance and rewrite platform overview as example

Expand the AGENTS.md Voice & tone section with concrete anti-AI-slop rules
modeled on the GitHub and Vercel docs: define-show-link pattern, document
the user-visible model (not internal architecture), words to avoid,
structural patterns to avoid, and a stricter callout budget (never
consecutive, at most one per section).

Propagate the rules to the drafting/review workflow:
- draft_docs: tone bullets in critical rules + checklist
- review-docs-pr: tone/AI-ism review focus item
- style_lint: report-only tone checks (tone-buzzword, tone-meta-opener,
  callout-consecutive, callout-density), never auto-fixed
- oz-style-guidelines: align voice section; fix stale 'Ask Oz to...'
  preferred phrases from before the Automation Platform rename

Rewrite platform/overview.mdx as the example page: user-visible model
instead of orchestrator/control-plane internals, one callout instead of
five, ~65% shorter. Fix the one anchor that pointed at the renamed
section (environments.mdx: #execution-hosts -> #hosts).

Co-Authored-By: Warp <agent@warp.dev>

* Restore overview content that had no home on other pages

The tone rewrite over-cut: trigger context, the Warp-vs-customer
infrastructure diagram, API/SDK team use cases, the integration setup
pointer, and cloud provider credentials had no equivalent on linked
pages. Restore them in the new style. Details that live on dedicated
pages (when to use environments, task states, CLI command reference)
stay linked instead of restated.

Co-Authored-By: Warp <agent@warp.dev>

* Fold learnings from warp-factory-examples copy passes into tone guidance

warp-factory-examples #10 (plain-language pass) and #11 (follow-up trims
from human review) surfaced patterns the tone section didn't cover yet:

- Relocate, don't delete: detail in the wrong register (provenance,
  pinned versions, maintainer process) moves to the surface whose
  audience needs it, with a pointer, instead of being cut outright.
- Say it once, across pages: shared boilerplate lives on the parent or
  reference page, not repeated on every sibling.
- Keep the author out of it: no self-commentary, rules stated calmly
  without defensive emphasis, describe the present rather than weaving
  rename history through pages.
- Slashed shorthand reads as notes, not prose.
- Cut again: a plain-language rewrite under-cuts on the first pass;
  follow with a deletion-only pass. #11 existed because human review
  asked for more cutting after #10 had already landed.

Also adds the second-pass and relocation items to the draft_docs
checklist.

Co-Authored-By: Warp <agent@warp.dev>

* docs: address review feedback and polish tone/brevity guidance

Addresses Rachael's review comments on PR #606 and applies a broader
polish pass on the same change:

- style_lint: add the missing filler frames (designed to, ensures
  that, allows you to, in order to) and abstract-dramatics words
  (landscape, realm) to the tone-buzzword check, and add
  test_tone_checks.py regression coverage for the three tone checks
  (tone-buzzword, tone-meta-opener, callout-density/consecutive),
  which previously shipped without tests.
- oz-style-guidelines.md: add a Don't against stacking an em dash and
  a colon in the same sentence.
- review-docs-pr: add a length/brevity review item so a reviewing
  agent catches an oversized page, not just isolated buzzwords.
- AGENTS.md: fix the page-length guidance to "cut first, split only
  if it's still long" (it previously told authors to split first,
  contradicting the new tone guidance), and sync the canonical
  Quality checklist with the tone/brevity items draft_docs already
  carries.
- Extend the brevity guidance to the rest of the drafting surface:
  add an explicit "delete any section you don't need" instruction to
  the 7 page templates that lacked one, and a tone/brevity rule to
  draft_conceptual, draft_quickstart (explicit ~600-word budget),
  draft_troubleshooting, and draft_feature_doc.

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp <agent@warp.dev>
Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
Adds `terminal.input.enable_ai_command_search_hash_trigger` and
`terminal.input.right_click_behavior` to the all-settings reference.
Both are user-facing, always-on settings registered in app/src/settings.

Co-authored-by: Warp <agent@warp.dev>
Both flags are new on `oz agent run-cloud`: `--title` sets the run and
conversation title, and `--parent-run-id` starts the run as an
orchestration child of an existing run.

Co-authored-by: Warp <agent@warp.dev>
Warp now accepts short managed-integration ids (linear, slack, jira)
wherever an MCP server UUID is accepted: bare `--mcp` arguments and
`warp_id` values in cloud agent MCP configs. This shipped with the
WellKnownMcpIds flag going GA.

Co-authored-by: Warp <agent@warp.dev>
The Warp client renamed Settings > Cloud platform > Oz Cloud API Keys
to API keys. Refresh valid_paths.json, migrate doc references, and keep
the old label as a deprecated alias for validation.

Co-authored-by: warp-factories[bot] <243557089+warp-factories[bot]@users.noreply.github.com>
Bookkeeping for this drift-watch run: repoint two stale map targets, map
the newly GA WellKnownMcpIds and FactoryMcp flags, ignore two internal
orchestration flags, mark the new Factory REST routes internal, prune
routes that no longer exist, and regenerate the surface snapshot.

Co-authored-by: Warp <agent@warp.dev>
…docs (#610)

* docs(factories): link warp-factory-examples throughout the factories docs

Point readers at working definitions in the now-public
warp-factory-examples repository: the definition-syntax page links the
repo, the multi-harness example, and the per-agent runners; the
automations pages link the committed automation catalog and label-gated
triggers; the agents page links the default-agents snapshot; and the
overview, quickstart, scorers, infrastructure, Slack, and GitHub pages
each gain one placement.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): tighten the example link sentences

Drop the repo-internal word committed, vary the repeated harness
sentence, fix the repository-ranges grammar, and smooth the Slack,
GitHub, and scorer phrasings.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): finish the link-sentence tightening

Apply the remaining fixes: grammar in the definitions-as-code intro,
drop the repo-internal word committed, vary the duplicated harness
sentence, and replace label-gated with plain phrasing.

Co-Authored-By: Warp <agent@warp.dev>

* docs(factories): inline real automation files from the examples repo

Add the pr-opened filter automation to the automation-filters page, the
weekly cron audit to connect-your-factory, CI failure triage to the
GitHub integration page, and reaction intake to the Slack page, each
quoted from warp-factory-examples with a source link. Point the
directory-structure section at the smallest and fullest example trees.

Co-Authored-By: Warp <agent@warp.dev>

---------

Co-authored-by: Warp <agent@warp.dev>
@cla-bot

cla-bot Bot commented Aug 31, 2026

Copy link
Copy Markdown

Thank you for your pull request and welcome to our community. We require contributors to sign our Contributor License Agreement, and we don't seem to have the users @independabot-soc2[bot] on file. In order for us to review and merge your code, each contributor must visit https://cla.warp.dev to read and agree to our CLA. Once you have done so, please comment @cla-bot check to trigger another check.

@vercel

vercel Bot commented Aug 31, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Ready Ready Preview Aug 31, 2026 3:16pm

Request Review

@warp-for-oss

warp-for-oss Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

@warp-factories[bot]

I'm starting a first review of this pull request.

You can view the conversation on Warp.

I completed the review and no human review was requested for this pull request.

Comment /warp-agent-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

@warp-factories warp-factories Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

This is the perpetual log PR for the aeo_crosslink_audit skill; the intended net change — a single new dated entry in .agents/logs/aeo_crosslink_audit_runs.md for the 2026-08-31 run (referencing PR #662) — is correctly formatted per the skill's "Run log format" spec. However, the branch is severely out of sync with main and carries a real data-loss risk if merged carelessly.

Concerns

  • Stale branch, real merge conflicts: GitHub reports mergeable: CONFLICTING / mergeStateStatus: DIRTY. The branch's merge-base with main is 30ecc91e (~139 commits behind main's tip), so the PR's diff spans 379 files / +21536 -11486 lines — almost entirely divergence noise, not intended content. This branch needs a rebase onto the latest origin/main before it can merge safely.
  • Concrete data loss if conflicts are resolved naively: comparing the branch tip directly against main's current tip (rather than the stale merge-base) shows this branch is also missing entries that already exist on main in two unrelated run logs: the 2026-08-21 entry in .agents/logs/afdocs_audit_runs.md and the 2026-08-24 / 2026-08-17 entries in .agents/logs/weekly_404_monitor_runs.md. If the merge conflicts here get resolved by preferring this branch's content (a common instinct for a "chore" bot PR), those two logs would silently lose real run history. Whoever resolves the conflicts should rebase onto main and keep main's content for every file except the new aeo_crosslink_audit_runs.md entry.
  • Consider updating the aeo_crosslink_audit skill's step 7 (log branch push) to fetch/rebase chore/aeo-crosslink-audit-log onto origin/main before each push, the same way step 6 already requires for the cross-link docs PR branch — this would prevent the branch from drifting this far again.

Verdict

Checks: build n/a (log-only chore PR), tests n/a, CI: 1 failing (verification/cla-signed, likely a bot-account exemption issue, not content-related), Vercel preview pending, visual proof n/a.

Found: 1 critical, 0 important, 1 suggestion, 0 nits

Recommendation: Request changes — rebase the branch onto the latest main before merging to avoid losing existing entries in afdocs_audit_runs.md and weekly_404_monitor_runs.md.

@warp-for-oss warp-for-oss Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overview

Reviewed PR #663 using the attached PR description, annotated diff, and empty spec context. I did not find any merge-blocking correctness, documentation-quality, or security issues that map to the provided diff.

Validation run:

  • npm run postinstall
  • npm run build
  • npm run typecheck
  • python3 .agents/skills/check_for_broken_links/check_links.py --internal-only --output /tmp/pr663_internal_links.json
  • python3 .agents/skills/check_for_broken_links/test_check_links.py
  • python3 .agents/skills/style_lint/test_factory_proper_noun.py
  • python3 .agents/skills/style_lint/test_hardcoded_var_exemptions.py
  • python3 .agents/skills/style_lint/test_platform_determiner.py
  • python3 .agents/skills/style_lint/test_tone_checks.py

Concerns

No critical, important, or suggestion findings to report.

Found: 0 critical, 0 important, 0 suggestions.

Final recommendation: Approve.

Comment /warp-agent-review on this pull request to retrigger a review (up to 3 times on the same pull request).

Powered by Oz

@warp-agent-staging

Copy link
Copy Markdown
Contributor

Closing per requester decision in the Doc 'n Roll Factory Slack thread: this branch (chore/aeo-crosslink-audit-log) is ~139 commits behind main, reports mergeable: CONFLICTING/mergeStateStatus: DIRTY, and its diff (+21.5k/-11.5k across 379 files) is almost entirely divergence noise rather than the intended single log entry — merging as-is risks silently dropping unrelated run-log history (see the automated review above for details).

Recommend the aeo_crosslink_audit skill's next run rebase (or recreate) the chore/aeo-crosslink-audit-log branch from the latest origin/main before re-adding its log entries, so this doesn't recur.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants