Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
af93cf1
feat: scaffold Factories tab and Automation Platform rename infra
rachaelrenk Aug 12, 2026
a80f842
docs: migrate hardcoded Oz product names to vars in agents/terminal/g…
rachaelrenk Aug 12, 2026
fcd0e6c
docs: migrate reference/ Oz-branded strings to vars, add CLI deprecat…
rachaelrenk Aug 12, 2026
373d387
docs: migrate hardcoded Oz strings to vars system in guides, support-…
rachaelrenk Aug 12, 2026
812d5d8
docs: migrate Oz platform strings to vars in platform/ directory
rachaelrenk Aug 12, 2026
d57d8ff
Merge remote-tracking branch 'origin/rrenk/factory-launch-restructure…
rachaelrenk Aug 12, 2026
17f9089
Merge remote-tracking branch 'origin/rrenk/factory-launch-restructure…
rachaelrenk Aug 12, 2026
3992f3d
Merge remote-tracking branch 'origin/rrenk/factory-launch-restructure…
rachaelrenk Aug 12, 2026
36b4cfe
fix: resolve topic-resolution build failures and lint false positives
rachaelrenk Aug 12, 2026
a9dbefa
fix: convert broken VARS markdown links to JSX anchors
rachaelrenk Aug 12, 2026
47e38a7
fix: merge software-factory redirect entries to stay under Vercel's r…
rachaelrenk Aug 12, 2026
97a701b
fix: use valid Vercel redirect syntax for software-factory redirect
rachaelrenk Aug 12, 2026
1c37d27
fix: address PR review feedback
rachaelrenk Aug 12, 2026
159d3eb
fix: remove {VARS.X} expressions from heading text (breaks TOC/anchors)
rachaelrenk Aug 13, 2026
538fd30
fix: use plain Warp instead of the automation-platform var on Agent M…
rachaelrenk Aug 13, 2026
8b939c4
fix: correct WARP_AUTOMATION_PLATFORM -> API_SDK_NAME mismatches (pos…
rachaelrenk Aug 13, 2026
3883bec
fix: round 2 of post-rename vars audit across the site
rachaelrenk Aug 13, 2026
717b044
fix: swap Factories tab icon from server to setting (gear)
rachaelrenk Aug 13, 2026
2d15c52
fix: remove redundant top-level API tab, fix stale Oz icon check
rachaelrenk Aug 13, 2026
174c910
fix: rename Reference tab to "API & Reference", surface API Reference…
rachaelrenk Aug 13, 2026
7fcd62a
fix: put Overview before API Reference under Technical Reference
rachaelrenk Aug 13, 2026
317622e
fix: restructure Cloud Agents group per HYC feedback
rachaelrenk Aug 13, 2026
30ca251
fix: rename subgroup to Warp Cloud Agents, relabel Overview to Cloud …
rachaelrenk Aug 13, 2026
dda424e
docs(factories): document Jira integration
hongyi-chen Aug 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .agents/references/terminology.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,34 @@ For the summary of the most critical terms (core features, Oz terms, terms to av

- **Warp CLI** — Ambiguous since the Warp Agent CLI launched; avoid the bare term. Use "Oz CLI" for the `oz` binary that runs and manages cloud agents (formerly called `warp-cli`), or "Warp Agent CLI" for the `warp` binary that runs the Warp Agent in any terminal.

- **Automation Platform** — Working name for Warp's cloud agent platform (the proposed successor branding for "Oz" as of the ~2026-08-18 launch), covering environments, integrations, orchestration, self-hosting, and the Agent API/SDK.
*Usage note:* PENDING final naming confirmation — not yet on ZL's locked product-naming list (Warp / Warp Factories / Warp Agent / Warp Terminal). Used in docs IA prototyping via `{VARS.WARP_AUTOMATION_PLATFORM}`; do not hardcode the literal string "Automation Platform" in prose so the name can still change cheaply.

## Warp Factories terminology

- **Warp Factories** — Warp's product for deploying and operating cloud software factories: automation loops around the SDLC where cloud agents triage, spec, implement, review, and verify work, with humans in the loop at key decision points. Launches in closed beta ~2026-08-18.
*Usage note:* Capitalize both words as the product name; plural "Factories." Distinct from "software factory" (see below), the generic industry term for the pattern.

- **software factory** — The generic, lowercase industry term for an automation loop around the SDLC (triage, spec, implement, review, verify). Warp Factories is Warp's product implementation of this pattern.
*Usage note:* Lowercase when used generically ("a software factory," "cloud software factories"). Capitalize only when part of the product name "Warp Factories."

- **factory** — An individual deployed instance of a software factory, built on Warp Factories infrastructure.
*Usage note:* Lowercase common noun ("your factory," "set up a factory").

- **factory definitions as code** — The practice of specifying a factory's repos, agent roles, skills, MCPs, and permissions as version-controlled code, similar to infrastructure-as-code. Enables rollback, canarying, and agentic self-improvement of the factory itself.

- **work item** — A unit of work moving through a factory (for example an issue, ticket, or triggered task) as it passes through triage, spec, implementation, review, and verification.

- **foreman agent** — The orchestrator agent that receives a work item's triggering context and dispatches subagents to move it through the factory, choosing model, harness, and context for each step.

- **Factory MCP** — The MCP server that lets any coding agent or MCP client interact with a factory: push work in, pull status, or guide sessions.
*Usage note:* Capitalize as a feature/proper-noun name.

- **control room** — The web app view showing all factory agent runs, work item status, automations, and configuration for a given factory.
*Usage note:* Lowercase common noun unless referring to a specific labeled UI element.

- **AI sovereignty** — Warp Factories' positioning around customer ownership and control of inference, hosting, and data exhaust (agent conversations, evals, memories) for their factory.

## Technical terms

- **AI** — not "A.I." Normalize all instances to "AI."
Expand Down
67 changes: 51 additions & 16 deletions .agents/skills/style_lint/style_lint.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
"Codebase Context", "Code Review", "Command Palette", "Global Rules",
"Oz CLI", "Oz Platform", "Project Rules",
"Slash Commands", "Terminal Mode", "Universal Input", "Warp Drive",
"Warp Platform",
"Warp Platform", "Automation Platform", "Warp Factories", "Factory MCP",
}

# Terminology: wrong → right (case-sensitive checks)
Expand Down Expand Up @@ -83,6 +83,9 @@
("oz.warp.dev", "WEB_APP_URL", "{VARS.WEB_APP_URL} in prose or {{WEB_APP_URL}} in frontmatter"),
("Oz dashboard", "DASHBOARD", "{VARS.DASHBOARD} in prose or {{DASHBOARD}} in frontmatter"),
("Oz run", "PLATFORM_RUN", "{VARS.PLATFORM_RUN} in prose or {{PLATFORM_RUN}} in frontmatter"),
("Oz API & SDK", "API_SDK_NAME", "{VARS.API_SDK_NAME} in prose or {{API_SDK_NAME}} in frontmatter"),
("Oz Platform", "WARP_AUTOMATION_PLATFORM", "{VARS.WARP_AUTOMATION_PLATFORM} in prose or {{WARP_AUTOMATION_PLATFORM}} in frontmatter"),
("Oz", "WARP_AUTOMATION_PLATFORM", "{VARS.WARP_AUTOMATION_PLATFORM} in prose or {{WARP_AUTOMATION_PLATFORM}} in frontmatter"),
]

# Oz terms to avoid (case-insensitive patterns)
Expand Down Expand Up @@ -181,6 +184,11 @@
)
MARKDOWN_LINK = re.compile(r"\[([^\]]*)\]\(([^)]+)\)")
VIDEO_EMBED_TITLE = re.compile(r"\btitle\s*=\s*([\"'])(.*?)\1", re.DOTALL)
# JSX expression titles, e.g. title={`${VARS.WEB_APP} walkthrough`} — used when
# the title includes a rename-sensitive {VARS.KEY} reference. Content can't be
# statically evaluated, so these are treated as present but skipped by the
# generic-title check below.
VIDEO_EMBED_TITLE_EXPR = re.compile(r"\btitle\s*=\s*\{(.*?)\}", re.DOTALL)

# Common bolded words that are NOT product terms (false positive suppression)
COMMON_BOLD_WORDS = {
Expand Down Expand Up @@ -656,21 +664,29 @@ def check_video_embed_titles(lines: List[str], filepath: str) -> List[Issue]:
issues = []
for line_number, tag in _iter_video_embed_tags(lines):
title_match = VIDEO_EMBED_TITLE.search(tag)
if not title_match or not title_match.group(2).strip():
issues.append(Issue(
filepath, line_number, "video-title",
"VideoEmbed missing title prop. Add a specific title that describes the integration, workflow, feature, or task shown.",
"error",
))
if title_match and title_match.group(2).strip():
title = title_match.group(2).strip()
if _is_generic_video_title(title):
issues.append(Issue(
filepath, line_number, "video-title",
f"Generic VideoEmbed title: \"{title}\". Use a specific title that describes what the video shows.",
"warning",
))
continue

title = title_match.group(2).strip()
if _is_generic_video_title(title):
issues.append(Issue(
filepath, line_number, "video-title",
f"Generic VideoEmbed title: \"{title}\". Use a specific title that describes what the video shows.",
"warning",
))
# Not a quoted string literal — check for a JSX expression title, e.g.
# title={`${VARS.WEB_APP} walkthrough`}. Content isn't statically
# evaluable, so skip the generic-title check but still confirm a
# non-empty title prop is present.
expr_match = VIDEO_EMBED_TITLE_EXPR.search(tag)
if expr_match and expr_match.group(1).strip():
continue

issues.append(Issue(
filepath, line_number, "video-title",
"VideoEmbed missing title prop. Add a specific title that describes the integration, workflow, feature, or task shown.",
"error",
))
return issues


Expand Down Expand Up @@ -890,9 +906,23 @@ def check_hardcoded_vars(lines: List[str], filepath: str) -> List[Issue]:

Skips fenced code blocks and inline code spans so that CLI examples like
`oz.warp.dev` in a code fence are not flagged.

Literals are checked longest-first and matches are deduplicated by span so
a specific match (e.g. "Oz Platform", "Oz CLI") doesn't also get re-flagged
by the more general bare "Oz" entry for the same occurrence.

Matches use word boundaries (`\b`) rather than plain substring search, so
short literals like bare "Oz" don't false-positive inside unrelated tokens
such as URL query params, hashes, or other identifiers (e.g. a YouTube
share link's `si=OzvuInMl8DoNR97R` parameter).
"""
issues = []
in_code_block = False
sorted_strings = sorted(RENAME_SENSITIVE_VAR_STRINGS, key=lambda entry: -len(entry[0]))
compiled = [
(literal, var_key, suggestion, re.compile(r"\b" + re.escape(literal) + r"\b"))
for literal, var_key, suggestion in sorted_strings
]
for i, line in enumerate(lines, 1):
if line.strip().startswith("```"):
in_code_block = not in_code_block
Expand All @@ -901,8 +931,13 @@ def check_hardcoded_vars(lines: List[str], filepath: str) -> List[Issue]:
continue
# Strip inline code spans so backtick-wrapped references are not flagged
prose_line = re.sub(r"`[^`]+`", "", line)
for literal, var_key, suggestion in RENAME_SENSITIVE_VAR_STRINGS:
if literal in prose_line:
matched_spans: List[Tuple[int, int]] = []
for literal, var_key, suggestion, pattern in compiled:
for m in pattern.finditer(prose_line):
span = m.span()
if any(span[0] >= s and span[1] <= e for s, e in matched_spans):
continue
matched_spans.append(span)
issues.append(Issue(
filepath, i, "hardcoded-var",
f'Hardcoded "{literal}" should use {suggestion} (see src/data/vars.ts)',
Expand Down
2 changes: 1 addition & 1 deletion astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ export default defineConfig({
{ label: 'Enterprise', description: 'Enterprise features, SSO, team management, and security.', paths: ['enterprise/**'] },
{ label: 'Getting Started', description: 'Installation, quickstart, and migration guides.', paths: ['index', 'quickstart', 'getting-started/**'] },
{ label: 'Knowledge and Collaboration', description: 'Warp Drive, teams, and the Admin Panel.', paths: ['knowledge-and-collaboration/**'] },
{ label: 'Reference', description: 'CLI and API reference.', paths: ['reference/**'] },
{ label: 'API & Reference', description: 'CLI and API reference.', paths: ['reference/**'] },
// All support-and-community/ pages. open-source-licenses.mdx is excluded
// globally above (stack overflow in hast-util-to-text); the patch ensures
// it's excluded from this custom set as well.
Expand Down
2 changes: 1 addition & 1 deletion src/components/CustomSidebar.astro
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ import KapaLauncher from './KapaLauncher.astro';
'getting-started': 'Getting started',
'knowledge-and-collaboration': 'Knowledge & collaboration',
'agents': 'Agents',
'reference': 'Reference',
'reference': 'API & Reference',
'changelog': 'Changelog',
'support-and-community': 'Support',
'enterprise': 'Enterprise',
Expand Down
27 changes: 5 additions & 22 deletions src/components/WarpTopicNav.astro
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,12 @@ const { topics } = Astro.locals.starlightSidebarTopics;
// Per-topic icon overrides for topics where Starlight's icon registry doesn't
// ship the right glyph (only 22 generic UI icons available; no robot/AI). The
// `sidebar.ts` config keeps the closest Starlight name (e.g. `puzzle` for
// Agents, `seti:json` for API) so the mobile drawer falls back gracefully;
// this map points to a custom inline SVG that we render here in the header
// instead.
// Agents) so the mobile drawer falls back gracefully; this map points to a
// custom inline SVG that we render here in the header instead.
const CUSTOM_TOPIC_ICONS: Record<string, true> = {
Agents: true,
API: true,
Enterprise: true,
Oz: true,
'Automation Platform': true,
};
---

Expand All @@ -60,22 +58,7 @@ const CUSTOM_TOPIC_ICONS: Record<string, true> = {
this and the Starlight-rendered icons to a single
uniform size. `currentColor` so each icon inherits the
link's text color and picks up the active-state accent. */}
{topic.label === 'API' ? (
/* `</>` brackets — the conventional dev-API glyph.
Two chevrons mirrored across center, stroke weight
matched to the other topic icons. */
<svg
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M16 18l6-6-6-6" />
<path d="M8 6l-6 6 6 6" />
</svg>
) : topic.label === 'Enterprise' ? (
{topic.label === 'Enterprise' ? (
/* Office building — simple outline: tall rectangle
with window grid and entrance, stroke weight matched
to the other topic icons. */
Expand All @@ -96,7 +79,7 @@ const CUSTOM_TOPIC_ICONS: Record<string, true> = {
<line x1="15" y1="14" x2="15" y2="14.01" />
<path d="M10 22v-4h4v4" />
</svg>
) : topic.label === 'Oz' ? (
) : topic.label === 'Automation Platform' ? (
/* Cloud icon — Feather-style cloud outline, stroke weight
matched to the other topic icons. */
<svg
Expand Down
Loading
Loading