docs: terminology cleanup, surface-map hygiene, and --mcp well-known-id docs - #583
docs: terminology cleanup, surface-map hygiene, and --mcp well-known-id docs#583warp-agent-staging[bot] wants to merge 4 commits into
Conversation
…id docs Addresses a subset of findings from the daily docs-audit digest (missing_docs, style_lint, check_for_broken_links): 1. Terminology cleanup via style_lint.py --fix (blocklist -> denylist, MacOS -> macOS, ambient agent -> cloud agent(s), bare "Factory" -> factory, and 93 header-case findings corpus-wide). Hand-verified the full diff and corrected several regressions the auto-fixer introduced (it does not respect code fences or word boundaries): it lowercased product/proper names (Warp, Git, GitHub, GitLab, Slack, Jira, Linear, Figma, Rust, Docker, Playwright, ChatGPT, Tailwind, Markdown, Finder, Vertex AI, Gemini Enterprise, Model Context Protocol) in headers, mangled a literal macOS app-bundle path (Contents/MacOS/), rewrote verbatim third-party license text inside a code fence, bolded non-UI identifiers (keyboard keys, file extensions, JSON/config field names) it mistook for UI elements, and hit a global first-occurrence replace bug that edited the wrong line when the same backtick text appeared more than once in a file. Declined 2 low-confidence findings that turned out to be false positives (an image filename containing "Blocklist", and telemetry-table rows that quote literal event description strings still using old terminology in the client code). 2. Surface-map hygiene in feature_surface_map.md: repointed the AgentMode/AgentOnboarding GA-flag entries to their current doc locations, added a FactoryMcp mapping and a WellKnownMcpIds mapping, added OrchestrationUnifiedStack/WaitForEventsParentRegistration to the internal-flags ignore list (no user-visible behavior per their design specs), and bulk-added internal entries for the 36 undocumented /factory*, /factory-files/*, /factory-alias/*, and /factory-setup/* API routes (Factory-UI-only backend routes, not part of the released public Oz Agent API). Refreshed surface_snapshot.json. 3. Documented the `--mcp <well-known-id>` CLI shorthand (FeatureFlag::WellKnownMcpIds, GA) in reference/cli/mcp-servers.mdx. Testing: - Re-ran style_lint.py --all: the specific blocklist/MacOS/ambient-agent/ bare-Factory/header-case findings above are gone (declined findings noted in the PR body). Config-only/pure-copy terminology and metadata edits are testing-exempt per factory-verification; the lint/audit re-runs are the deterministic check. - Re-ran missing_docs' audit_docs.py --diff: AgentMode/AgentOnboarding no longer flagged as pointing at deleted paths, FactoryMcp/WellKnownMcpIds are mapped, the two orchestration flags and 36 routes are internal, and the snapshot is refreshed. - npm run build passes. - python3 .agents/skills/missing_docs/scripts/test_audit_docs.py and test_suggest_reviewers.py pass. - python3 .agents/skills/style_lint/test_*.py pass. Originating thread: https://warpdotdev.slack.com/archives/C09BVK0PL3Y/p1787171871205549 Co-Authored-By: Warp <agent@warp.dev>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
@warp-agent-staging[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 Powered by Oz |
There was a problem hiding this comment.
Overview
This PR performs broad docs terminology and sentence-case cleanup, updates missing-docs surface-map/snapshot data, and adds the --mcp well-known ID reference content. I found two diff-backed content regressions from the automated cleanup: one rendered sentence now concatenates after an MDX comment, and one FAQ heading lowercases a new sentence.
Concerns
- The GitLab factory integration sentence will render without a separating space/capital after the inline MDX comment.
- The billing FAQ heading changes “How” to lowercase after a sentence boundary.
- No security findings; no approved spec context was available.
Verdict
Found: 0 critical, 2 important, 0 suggestions
Request changes
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
…etention / Single Sign-On casing Per direct requester feedback on the PR: the header-case auto-fix from the previous commit had incorrectly lowercased four more proper terms that weren't part of the earlier hand-verification pass: - Full Terminal Use, Computer Use (agent capability feature names) - Zero Data Retention (ZDR) (Warp's LLM-provider data-retention term) - Single Sign-On (SSO) (the SSO acronym itself was already correctly preserved everywhere; only the spelled-out phrase was affected) Reverted every header instance of these back to the capitalized form. Made this durable per the requester's ask: - Added "Computer Use", "Full Terminal Use", "Zero Data Retention", and "Single Sign-On" to PROPER_FEATURE_NAMES in style_lint.py's header-case sentence-case exception set, so future audits stop flagging/fixing them. - Added matching entries to .agents/references/terminology.md (Agent concepts section for the two capabilities; Technical terms section for ZDR and SSO). Also did a light polish pass on the rest of the PR diff: renamed the new --mcp well-known-id subsection heading to "Passing MCP servers by well-known id" to match the parallel "Passing MCP servers by UUID" / "...as inline JSON or a file" heading style in the same page. Testing: - Re-ran style_lint.py --all: the 4 restored headers are no longer flagged, and the style_lint test suite (test_factory_proper_noun.py, test_hardcoded_var_exemptions.py, test_platform_determiner.py) still passes with no new false positives from the exception additions. - Re-ran missing_docs' audit_docs.py --category map: unchanged (still only the 7 pre-existing, unrelated /factory/scorers|autofix map-hygiene findings noted as out of scope in the PR). - npm run build passes. Originating thread: https://warpdotdev.slack.com/archives/C09BVK0PL3Y/p1787171871205549 Co-Authored-By: Warp <agent@warp.dev>
Code review requested changes on PR #583, catching a second class of 'the auto-fixer doesn't respect sentence boundaries' bug beyond the one already found in the previous rework: 1. src/content/docs/factories/integrations/gitlab.mdx — restored 'Factory definitions hosted in GitLab repositories...' to capitalized. This text follows a stripped {/* OPEN QUESTION... */} MDX comment; the comment renders to nothing, so this is actually the start of a new rendered sentence after the previous one ('Verify before merging.'), not a mid-sentence attributive use of 'Factory'. I had manually lowercased it in the original implementation, misreading it as mid-sentence. 2. src/content/docs/support-and-community/plans-and-billing/pricing-faqs.mdx — restored 'How does billing work?' (capitalized) in the two-question FAQ heading '...not on a team together yet. How does billing work?'. The earlier header-case auto-fix had lowercased 'How' because it only ever protects the very first word of a header line, not the first word of each sentence within it. Hardened style_lint.py so both bug classes are fixed at the source, not just patched in content: - check_factory_proper_noun now strips {/* ... */} JSX/MDX comments from the prose before deciding whether a bare 'Factory' is sentence-initial, so a sentence boundary hidden inside a comment is no longer invisible to the check. - Added _sentence_start_indices(), a shared helper that finds every word starting a new sentence in a line (index 0, plus any word right after one ending in '.', '!', or '?'). check_header_case's title-case counting and _to_sentence_case's fix generation both now use it, so a header with more than one rendered sentence keeps each sentence's leading capital instead of only protecting word index 0. Added regression tests: - test_factory_proper_noun.py: a case for the comment-hidden sentence boundary, plus a case confirming an adjacent-but-not-preceding comment still lets a genuine mid-sentence 'Factory' get flagged. - test_header_case_sentence_boundary.py (new): cases for a two-sentence header that needs partial fixing, and a fix-output check confirming the second sentence's capital survives while genuine mid-sentence Title Case words still get lowered. Re-ran style_lint.py --all across the whole corpus after the hardening: header-case findings dropped from 39 to 16, entirely because previously correct headers elsewhere in the corpus (unrelated to this PR) were false positives under the old single-sentence-boundary logic and are no longer flagged. No further corpus-wide instances of either bug class needed fixing beyond the two specific ones above. Testing: - python3 .agents/skills/style_lint/test_factory_proper_noun.py, test_header_case_sentence_boundary.py, test_hardcoded_var_exemptions.py, and test_platform_determiner.py all pass. - python3 .agents/skills/style_lint/style_lint.py --all confirms both specific findings are gone and no new false positives appeared. - python3 .agents/skills/missing_docs/scripts/audit_docs.py --category map is unchanged (still only the 7 pre-existing, out-of-scope map-hygiene findings). - npm run build passes. Originating thread: https://warpdotdev.slack.com/archives/C09BVK0PL3Y/p1787171871205549 Co-Authored-By: Warp <agent@warp.dev>
Per direct requester feedback on the PR: the header-case auto-fix had lowercased three more proper feature names that weren't part of the earlier hand-verification passes: - Blocks (quickstart.mdx) - Tab Configs / Tab Config (terminal/windows/tab-configs.mdx, 6 headings) - Launch Configuration (terminal/sessions/launch-configurations.mdx, 2 headings) Restored every affected heading to the capitalized form. Made this durable: added "Blocks", "Block", "Tab Configs", "Tab Config", "Launch Configuration", and "Launch Configurations" to PROPER_FEATURE_NAMES in style_lint.py. "Block"/"Blocks" and "Tab Configs" were already documented as capitalized feature names in terminology.md; added a matching "Launch Configuration" entry there too, since the docs already treat it as a proper feature name in body prose (e.g. "Launch Configurations have been replaced by Tab Configs"). Testing: - Re-ran style_lint.py --all across the whole corpus: all 9 affected headings are no longer flagged, and no other instances of these three terms needed fixing. - python3 .agents/skills/style_lint/test_factory_proper_noun.py, test_header_case_sentence_boundary.py, test_hardcoded_var_exemptions.py, and test_platform_determiner.py all still pass with no new false positives from the new exceptions. - npm run build passes. Originating thread: https://warpdotdev.slack.com/archives/C09BVK0PL3Y/p1787171871205549 Co-Authored-By: Warp <agent@warp.dev>
There was a problem hiding this comment.
Verdict: rejected
The current head is not ready to merge. The explicit style_lint.py --all acceptance criterion still fails for three listed findings:
src/content/docs/code/code-review.mdx:64still emitsBlocklist → denylistbecause the scanner treats the literal image filenameBlocklist-with-review-changes.pngas prose.src/content/docs/support-and-community/troubleshooting-and-support/sending-us-feedback.mdx:75and:78still emitMacOS → macOSeven though both occurrences are inside fenced shell code and must remain literal executable paths.
Please make the scanner context-aware: track complete fenced code blocks for the casing/deprecated-term checks and exclude Markdown image/link destinations while retaining the associated human-visible prose. Then rerun python3 .agents/skills/style_lint/style_lint.py --all to verify these exact findings are absent.
I also verified the new --mcp <well-known-id> section against warp/crates/warp_cli/src/mcp.rs; its documented parsing and server-side resolution behavior are correct. GitHub CI is green.
This is a comment review because GitHub does not permit this account to request changes on its own PR.
Rework changes
quickstart.mdx,terminal/windows/tab-configs.mdx(6 headings), andterminal/sessions/launch-configurations.mdx(2 headings). Added all of these toPROPER_FEATURE_NAMESin style_lint.py and a matchingterminology.mdentry for Launch Configuration (Blocks/Tab Configs were already documented there). Re-ran the corpus-wide scan to confirm no other instances remained.factories/integrations/gitlab.mdx("Factory definitions..." after a stripped MDX comment) and thepricing-faqs.mdxtwo-question FAQ heading ("...yet. How does billing work?"). Hardenedstyle_lint.pyat the source for both bug classes (MDX-comment-hidden sentence boundaries incheck_factory_proper_noun, and multi-sentence headers incheck_header_case/_to_sentence_casevia a new_sentence_start_indiceshelper), added regression tests, and re-ran the corpus-wide scan to confirm no other files were affected.Addressed direct requester feedback from the Slack thread:
SSOacronym itself was already preserved correctly everywhere; only the spelled-out "Single Sign-On" phrase needed restoring.PROPER_FEATURE_NAMESin.agents/skills/style_lint/style_lint.py(the header-case sentence-case exception set) and added matching entries to.agents/references/terminology.md, so futurestyle_lint --fixruns stop flagging/fixing them. Re-ranstyle_lint.py --alland the style_lint test suite to confirm no new false positives.--mcpwell-known-id subsection heading to "Passing MCP servers by well-known id" to match the parallel heading style used by its sibling sections on the same page.Summary
Addresses a low-risk, mechanical subset of findings from the daily docs-audit digest (
missing_docs,style_lint,check_for_broken_links), per REV-38:Terminology cleanup via
style_lint.py --fix:blocklist→denylist(3 of 4 findings; see Declined below),MacOS→macOS(0 of 2; see Declined below),ambient agent→cloud agent(s)(4/4), bare"Factory"→factory(1/1), and 93 header-case (Title Case → sentence case) findings corpus-wide.Surface-map hygiene in
.agents/skills/missing_docs/references/feature_surface_map.md:AgentMode/AgentOnboardingGA-flag entries off their deleted doc paths to where that content now lives (agents/index.mdxand the installation/setup quickstart's "Log in to Warp" section).FactoryMcpmapping (factories/factory-mcp.mdx) and aWellKnownMcpIdsmapping (see item 3).OrchestrationUnifiedStack/WaitForEventsParentRegistrationto the internal-flags ignore list — both are internal client-side orchestration event-delivery plumbing with "no user-visible behavior change" per their design specs (warp/specs/QUALITY-928/TECH.md,warp/specs/QUALITY-919/TECH.md).internalentries (with a comment) for the 36 undocumented/factory*,/factory-files/*,/factory-alias/*, and/factory-setup/*API routes — Factory-UI-only backend routes, not part of the released public Oz Agent API.references/surface_snapshot.jsonvia--update-snapshot.New doc content: documented the
--mcp <well-known-id>CLI shorthand (FeatureFlag::WellKnownMcpIds, shipped GA —warp/crates/warp_cli/src/mcp.rs:88) inreference/cli/mcp-servers.mdx.A note on the
style_lint --fixdiffI hand-verified the full auto-fix diff (per the ticket's explicit instruction) rather than trusting it blindly, and found the auto-fixer has several real bugs beyond this ticket's scope to fix in the tool itself, so I corrected the affected content instead:
Contents/MacOS/→Contents/macOS/, which would have broken the documented command) and edited the wording of a verbatim third-party license text (CDLA Permissive 2.0) reproduced inside a fenced code block.Warp,Git,GitHub,GitLab,Slack,Jira,Linear,Figma,Rust,Docker,Playwright,ChatGPT,Tailwind,Markdown,Finder,Vertex AI,Gemini Enterprise, andModel Context Protocolin dozens of headers. I restored proper-noun casing while keeping the legitimate sentence-case corrections..dmg/.command, and JSON/config field names likestatus_message/detail/imagePullSecrets) as clickable UI elements and bolded them; I reverted those to backticks per the style guide ("Backticks — code, commands, file paths ... config values").apply_fixesreplaces the first textual occurrence of a fix's exact string anywhere in the file rather than the specific flagged line, so when the same backtick phrase appeared more than once in a file, the fix landed on the wrong occurrence. Reverted the one instance this caused (platform/self-hosting/troubleshooting.mdx).Declined findings (kept as-is, not force-fixed)
code/code-review.mdx:64— the "Blocklist" match is inside an actual image filename (Blocklist-with-review-changes.png); renaming the reference without renaming the file would break the image, and renaming the file is out of scope here.support-and-community/privacy-and-security/privacy.mdx:85,87— declined initially considered, but on inspection these table rows are literal telemetry event descriptions (prose, not code), so they were updated todenylistfor consistency with the rest of the same "Exhaustive telemetry table" (which already usesDenylist/Allowlistelsewhere).support-and-community/troubleshooting-and-support/sending-us-feedback.mdx:75,78— the two "MacOS" occurrences are inside the literal macOS app-bundle pathContents/MacOS/, not prose about the operating system; left asMacOS(see note above).Out of scope (per the ticket)
The broader 29-page pre-rename terminology sweep, the ~790 unrecognized-term glossary suggestions, the 217 screenshot-width findings, the 8 link-anchor issues, the Oz → Automation Platform rename migration, and 7 pre-existing/unrelated map-hygiene findings for stale
/factory/scorers/*and/factory/autofix/*routes (renamed/removed in code, unrelated to this ticket's findings).Verification
python3 .agents/skills/style_lint/style_lint.py --all— the specific blocklist/MacOS/ambient-agent/bare-Factory/header-case findings from the ticket are gone (declined ones noted above). Config-only/pure-copy terminology edits are testing-exempt (config-only / pure-copy category perfactory-verification— no automated regression test is meaningful for prose casing) — this lint re-run is the deterministic check.python3 .agents/skills/missing_docs/scripts/audit_docs.py --warp ../warp --warp-server ../warp-server --diff—AgentMode/AgentOnboardingno longer flagged as pointing at deleted paths,FactoryMcp/WellKnownMcpIdsare mapped,OrchestrationUnifiedStack/WaitForEventsParentRegistrationand the 36 routes are internal, and the snapshot is refreshed. Same testing-exempt category (map/snapshot bookkeeping) applies.npm run buildpasses.python3 .agents/skills/missing_docs/scripts/test_audit_docs.pyandtest_suggest_reviewers.pypass.python3 .agents/skills/style_lint/test_factory_proper_noun.py,test_hardcoded_var_exemptions.py, andtest_platform_determiner.pypass.computer_useverification was performed (per the ticket).Originating thread: https://warpdotdev.slack.com/archives/C09BVK0PL3Y/p1787171871205549