docs: address daily-audit findings (terminology, surface-map hygiene, --mcp well-known-id doc) - #583
docs: address daily-audit findings (terminology, surface-map hygiene, --mcp well-known-id doc)#583warp-agent-staging[bot] wants to merge 7 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.
Addresses a fresh content-review pass against the current PR diff (final "user/developer perspective" review, not just lint correctness): - Harden style_lint.py's check_product_casing to match wrong-casing terms with word-boundary lookarounds instead of plain str.find, fixing a real bug where "agent mode" matched inside "agent model" and corrupted the CLI reference's "/model" description into "Agent Model". Added a regression test suite (test_product_casing_word_boundary.py). - Restore "Warp Terminal" in enterprise/index.mdx's three-products bullet list — the exact "specifically distinguishing" case the checker's own PRODUCT_CASING comment says should be exempt, but the blind substring replace doesn't special-case. - Restore "Team" capitalization in a pricing FAQ heading, and "Block Sharing" capitalization in a guide heading, to match every other reference in the same doc. - Restore "Bring Your Own LLM (BYOLLM)" capitalization in two places, and add it to PROPER_FEATURE_NAMES + terminology.md so future style_lint --fix runs stop mis-flagging it as Title Case. - Revert three undisclosed heading-level promotions (## Zero Data Retention (ZDR) -> ### in security-overview.mdx, team-managed-keys-and-endpoints.mdx, and byollm-aws-bedrock.mdx) and one more (## MCP (Model Context Protocol) -> ### in getting-started-developers.mdx) that had orphaned subsections or broken numbered onboarding flows. - Restore four third-party/technical proper nouns (Bitbucket Data Center, Workload Identity Pool and Provider, Workload Identity Federation, Direct backend) and add them to PROPER_FEATURE_NAMES + terminology.md, with regression test coverage (test_proper_feature_names_third_party.py). - Fix the --mcp flag resolution-order list in mcp-servers.mdx to match the actual order in warp_cli/src/mcp.rs (UUID -> file path -> well-known id -> inline JSON); no existing well-known-id catalog page to link to. Re-ran style_lint.py --all, the full style_lint test suite, the missing_docs unit tests, and npm run build. Co-Authored-By: Warp <agent@warp.dev>
# Conflicts: # .agents/skills/missing_docs/references/feature_surface_map.md # .agents/skills/missing_docs/references/surface_snapshot.json # .agents/skills/style_lint/SKILL.md # .agents/skills/style_lint/test_factory_proper_noun.py # src/content/docs/reference/cli/mcp-servers.mdx
…ure_surface_map.md (REV-38) Rework cycle 3 addresses two blocking issues from a rejected verification review of rework cycle 2: 1. style_lint.py's check_product_casing and check_deprecated_terms only skipped a line that itself started with a backtick/fence marker, so a fenced code block's interior lines and a Markdown link/image destination were both still scanned as prose. This was the original formal-review requirement (GitHub PR review 4979931272) that prior cycles never actually implemented — only declined the two affected findings instead. Added fenced-code-block tracking and a _strip_markdown_destinations helper to both checks, plus regression tests in test_context_aware_terminology.py. 2. The main-merge (commit 8247468) left 38 duplicate entries in feature_surface_map.md (36 /factory* API-route internal-ignore lines + 2 feature-flag ignore lines). Deduped down to one line each, keeping the fuller comment in each case. Co-Authored-By: Warp <agent@warp.dev>
Rework changes
check_product_casingandcheck_deprecated_termsin.agents/skills/style_lint/style_lint.pyonly skipped a line that itself started with a backtick/fence marker, so a multi-line fenced code block's interior lines, and a Markdown link/image destination on an otherwise-prose line, were both still scanned as prose. Added a shared_strip_markdown_destinationshelper and fenced-code-block tracking (in_code_block, matching the pattern already used bycheck_oz_terms) to both checks, soBlocklistinside the literal image filename incode/code-review.mdx:64(Blocklist-with-review-changes.png) andMacOSinside the literal executable paths insending-us-feedback.mdx:75,78(/Applications/Warp.app/Contents/MacOS/stable) are no longer flagged, while a genuine prose hit is still caught correctly. Added regression coverage in a newtest_context_aware_terminology.py(a fenced-code-block case and a Markdown-link-destination case that must NOT flag, plus a normal prose case that must still flag, for both checks). Confirmed viastyle_lint.py --allthat exactly these 3 findings are gone and diffed the full before/after issue list to confirm no new findings appeared.feature_surface_map.mdentries left unresolved by the main-merge (commit 8247468). The merge kept both branches' independent additions as literal duplicates: 36/factory*//factory-files/*//factory-alias/*//factory-setup/*API-endpoint internal-ignore lines, and 2 feature-flag ignore lines (OrchestrationUnifiedStack,WaitForEventsParentRegistration). Removed the duplicate copies, keeping whichever copy had the fuller/more specific comment in each case (the original per-route/per-flag annotations, over the generic bulk-add block's comment). Confirmed viaaudit_docs.py --diffthat zeromap_hygieneduplicate-entry findings remain for these entries.## Summaryheading while editing this body.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.check_product_casing(.agents/skills/style_lint/style_lint.py): it usedline.find(wrong)with no boundary check, so the "agent mode" → "Agent Mode" rule matched inside "agent model" and corruptedagents/cli/reference.mdx's/modelrow into "Switch the base Agent Model". Hardened matching with lookaround-based word boundaries (plain\b...\bdoesn't fully fix this either, since it fails on terms ending in punctuation like "A.I."), added a regression suite (test_product_casing_word_boundary.py), and restored the doc text to "agent model".enterprise/index.mdx's three-products bullet — the exact "specifically distinguishing" casePRODUCT_CASING's own comment says should be exempt, but the blind substring replace has no such context awareness. Fixed only this instance; see the structural note below.pricing-faqs.mdxFAQ heading to match every other "Team" reference in that entry.guides/agent-workflows/understanding-your-codebase.mdx(named feature page).security-overview.mdxandpricing-faqs.mdx. Added it toPROPER_FEATURE_NAMES+ aterminology.mdentry, following the ZDR/SSO/Full Terminal Use/Computer Use pattern; re-scanned the corpus for other instances (none found).##→###heading-level promotions for "Zero Data Retention (ZDR)" (security-overview.mdx,team-managed-keys-and-endpoints.mdx,byollm-aws-bedrock.mdx) that had orphaned sibling sections or de-nested the heading from its true parent section.##→ heading-level promotion for "MCP (Model Context Protocol)" ingetting-started-developers.mdxthat had pulled it out of the numbered "3. Set up key features" section, breaking the page's numbered onboarding flow.platform/integrations/bitbucket.mdx.platform/integrations/cloud-providers.mdx.platform/self-hosting/managed-kubernetes.mdx.platform/self-hosting/managed-direct.mdx.PROPER_FEATURE_NAMES+ matchingterminology.mdentries, with regression coverage in a newtest_proper_feature_names_third_party.py. See the second structural note below.--mcpresolution-order list inreference/cli/mcp-servers.mdxagainstwarp/crates/warp_cli/src/mcp.rs— main had independently superseded this exact section (PR docs(mcp): document well-known managed integration ids #599, "document well-known managed integration ids") with a more accurate rewrite while this PR was in flight, so the merge took main's version as authoritative rather than re-deriving order from the older framing this PR had been carrying.PRODUCT_CASING's "Warp Terminal" → "Warp" rule is a blind substring replace with no way to detect the "unless specifically distinguishing" exception its own comment names. It will keep flagging legitimate uses like the enterprise three-products list. Not fixed here (a context-aware rule engine is out of scope) — flagging as a real limitation worth tracking.style_lint.py's proper-noun protection (PROPER_FEATURE_NAMES) is scoped to Warp's own product names by design. It does not generalize to third-party/technical proper nouns, so any new Bitbucket/GCP/Kubernetes-style term will keep getting silently mis-cased by--fixuntil someone adds it as a named exception, one at a time. This is a structural limitation, not something to over-engineer a general fix for.style_lint.py --all, the full style_lint regression suite (including the two new test files), themissing_docsunit tests, andnpm run build.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(4/4 — see rework cycle 3 for the last one),MacOS→macOS(0/2 legitimate — both are literal executable paths in fenced code, now correctly left un-flagged by a context-aware scanner as of rework cycle 3),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)
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).No longer declined as of rework cycle 3:
code/code-review.mdx:64(Blocklist in an image filename) andsending-us-feedback.mdx:75,78(MacOS in a fenced executable path) were previously left as "declined findings" here instead of being fixed at the source, which is exactly what GitHub PR review 4979931272 rejected this PR for. Rework cycle 3 madestyle_lint.py'scheck_product_casingandcheck_deprecated_termsskip fenced code blocks and Markdown link/image destinations, so these two are now genuinely fixed (the scanner no longer flags non-prose text) rather than accepted exceptions. See "Rework cycle 3" 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.code-review.mdx:64andsending-us-feedback.mdx:75,78are fixed at the scanner level as of rework cycle 3 (see above), not merely declined — diffed the full before/after issue list and confirmed exactly these 3 findings disappeared with no new findings introduced. 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); the scanner fix itself is source code and ships with regression tests (test_context_aware_terminology.py).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 (as of rework cycle 3) zeromap_hygieneduplicate-entry findings remain — the 38 duplicates left by the main-merge were deduped. Same testing-exempt category (map/snapshot bookkeeping) applies.npm run buildpasses.python3 .agents/skills/missing_docs/scripts/test_audit_docs.pyandtest_suggest_reviewers.pypass, except one pre-existing, unrelated failure (test_diff_against_committed_snapshot_is_current) caused by an out-of-bandagents.custom_endpointssetting added to../warpsince the committed snapshot — reproduces identically on this branch's HEAD before this rework's changes and is unrelated to either blocking issue; leavingreferences/surface_snapshot.jsonuntouched rather than bundling an unrelated snapshot refresh into this fix.python3 .agents/skills/style_lint/test_factory_proper_noun.py,test_hardcoded_var_exemptions.py,test_platform_determiner.py,test_header_case_sentence_boundary.py,test_product_casing_word_boundary.py,test_proper_feature_names_third_party.py,test_tone_checks.py, and the newtest_context_aware_terminology.pyall pass.computer_useverification was performed (per the ticket).Originating thread: https://warpdotdev.slack.com/archives/C09BVK0PL3Y/p1787171871205549