Rewrite vision section: new how-tos, migrated references, runtime fixes#4933
Merged
shannonbradshaw merged 20 commits intoviamrobotics:new-docs-sitefrom Apr 16, 2026
Merged
Conversation
Landing and explanation:
- Rewrite vision/_index.md as explanation with CVOps loop framing
- Add how-it-works.md extracting the two-service architecture
New how-tos (docs/vision/):
- tune.md: symptom-driven map of mlmodel vision service attributes
- retrain.md: CVOps loop for model drift
- deploy-from-registry.md: registry model deployment (takes /data-ai/ai/deploy/)
- deploy-custom-model.md: BYO model deployment
- segment-3d.md: GetObjectPointClouds with detections-to-segments
- detect-by-color.md: dedicated color_detector how-to
- batch-inference.md: viam infer CLI (takes /data-ai/ai/run-inference/)
- roll-out-to-fleet.md: fleet model rollout (link-heavy)
Config reference migration (operate/reference/services/vision → reference/services/vision):
- mlmodel.md: adds missing xmin_ymin_xmax_ymax_order field, corrects
input_image_mean_value description, removes false defaults, fixes Go
code; preserves #prerequisites anchor (hardcoded in app UI)
- color_detector.md: adds missing label field, surfaces startup errors
- detector_3d_segmenter.md renamed to detections-to-segments.md;
updates to viam:vision:detections-to-segments module model name,
adds module install step
Runtime bug fixes on existing pages:
- measure-depth.md: fix Python depth decode (get_image→get_images,
source_name→name, .image→bytes_to_depth_array)
- act-on-detections.md: fix do_command timeout keyword argument
- data-ai/ai/deploy.md: add {#model-framework-support} anchor (hot
app UI link was broken)
Configure.md trim: 552→238 lines. Remove duplicate attribute table (now
in reference), remove cloud inference section (now batch-inference.md),
trim troubleshooting (now tune.md), fix self-referential links and
unsourced FPS claim.
Deletions with URL aliases preserved:
- data-ai/ai/{act,alert}.md superseded by vision/{act,alert}-on-detections.md
- data-ai/ai/{deploy,run-inference}.md migrated to vision/
- operate/reference/services/vision/* migrated to reference/services/vision/
API reference: refresh stale 2022-01-01 dates, fix /operate/ links on
reference/apis/services/vision.md.
All 23 affected pages pass vale, prettier, markdownlint. make build-prod
passes with no errors. All reverse-link paths from app UI preserved
through aliases.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
✅ Deploy Preview for viam-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Nav structure: - Create docs/vision/overview.md as the section overview page (weight 1, linkTitle "Overview"). Section header opens this via manualLink. - Stub docs/vision/_index.md to frontmatter only with manualLink to /vision/overview/. - Rename how-it-works.md linkTitle to "How the vision service works". Prose editing pass (23 pages): - overview.md: replace "wraps whatever is doing the seeing" framing and reword detection/classification/segmentation examples to avoid colon-then-or constructions. - configure.md: clarify Tune detection quality link sentence. - tune.md: fix repeated "specific" and rework architecture sentence. - retrain.md: replace the "a camera gets moved" passive/active mix. - deploy-from-registry.md: tighter opening, fewer repeated "Viam registry" phrasings. - deploy-custom-model.md: flatten parallel bullets, fix double-negative, clarify role-registration language. - segment-3d.md: parallelize gerunds in use cases list; fix label repetition in pipeline description. - detect-by-color.md: "brittle to" → "sensitive to". - batch-inference.md: fill in the missing number in "roughly seconds per image". - measure-depth.md: trim redundant phrasing in depth map definition. - alert-on-detections.md: replace "--" em-dash-style break with colon. - detect.md: parallelize the final application examples. - classify.md: clarify the implicit-confidence description. - track.md: split the long opening sentence. - mlmodel.md: flatten the opening paragraph. - color_detector.md: parallelize the use-case examples. - detections-to-segments.md: fix label repetition. Registry linking: - Every mention of "registry" that was unlinked now links to https://app.viam.com/registry. - Existing filtered-view links normalized to the landing URL. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The Viam app add-resource menu no longer has a "Component or service" top-level item. The current flow is: click +, select "Configuration block", type to search in the dialog, click a result, enter a name, click "Add component". Updated every vision how-to and config reference to match this flow. Registry modules install automatically when you click "Add component"; replaced "If prompted, confirm to install the module" with that clarification. Also aligned other UI label references: - Section titles render uppercase via section-group.svelte CSS. Use "ML MODEL" and "DEFAULT CAMERA" (section labels) rather than title case or "dropdown" descriptions. - retrain.md now uses the actual Version dropdown that exists in the ML model service panel (not an "ML model dropdown" that doesn't). Files updated: - vision/configure.md - vision/deploy-from-registry.md - vision/deploy-custom-model.md - vision/detect-by-color.md - vision/segment-3d.md - vision/retrain.md - vision/track.md - reference/services/vision/mlmodel.md - reference/services/vision/color_detector.md - reference/services/vision/detections-to-segments.md Verified against app.viam.com UI code at 84d992edc: - app/ui/src/lib/components/robot/add-resource-menu/menu-items.svelte:42 - app/ui/src/lib/components/robot/add-resource-menu/create-block-modal/ - app/ui/src/routes/.../builder/vision-ml-model/section.svelte:58,101 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rigorous pass verifying every UI label across the vision section against Viam app source at 84d992edc. Add-resource dialog flow corrections: - "Search for X and select it" → "In the search field, type X and select the matching result" for specificity - Dropped "click Add component again to confirm" from multiple places. Registry modules install automatically on first Add component click. Control card and TEST panel: dropdown labeled "Camera" (app/test-cards/src/lib/components/vision-service-view/vision-service-view.svelte:134). Every instruction that previously said "select your camera" now specifies the **Camera** dropdown by name, and tells users to pick the camera their vision service is configured to run on. Affects: - vision/overview.md - vision/configure.md - vision/deploy-from-registry.md - vision/deploy-custom-model.md - vision/detect-by-color.md - vision/tune.md (new camera step in Verify section) - vision/act-on-detections.md (TEST panel troubleshoot step) - vision/alert-on-detections.md (TEST panel confidence check) - reference/services/vision/mlmodel.md - reference/services/vision/color_detector.md Refresh button does not exist on the control card. The RefetchController defaults to refetching every second; users see a live overlay automatically. Replaced "click Refresh" with "the overlay refreshes automatically" everywhere. Upload model form (deploy-custom-model.md) corrected field labels: - "Name" → "Model name" - "Framework" → "Model framework" - "Type" → "Task type" (options: Object detection, Single label classification, Multi label classification, Other) - "Model file"/"Labels file" → "Choose model file"/"Choose label file" button labels inside the Upload files picker - Added the "New model"/"New version" + Visibility step that precedes the main form - Final button is "Upload model", not "Upload" Run model flow in mlmodel.md reference: updated to reflect the Auto-prediction mode icon (tooltip "Run Model") and the Run model side panel in the expanded image view. The "Actions tab" referenced earlier does not exist. Verified but unchanged (accurate): - CONFIGURE, CONTROL, CONNECT, LOGS, MODELS, TEST — tabs are rendered uppercase via details-nav.svelte and section-group.svelte CSS - Save button label - ML MODEL / DEFAULT CAMERA section titles - Select model button, Version dropdown, Latest option - SDK code sample, Include API key, API key, API key ID - Trigger menu item, Type and Data Types field labels - Data has been synced to the cloud, Binary (image) - Email specific addresses, Email all machine owners, Add Webhook - Data Capture button on component cards - GetImages data-capture type Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The add-Configuration-block flow has TWO Add component buttons:
- One on the block detail page that opens after selecting a search
result (block-page-header.svelte:36-41)
- One in the modal name-input dialog that opens after the first click
(content-rdk-builtin.svelte:87, content-registry-item.svelte:85)
Every vision how-to was documenting only the second click, leaving
users stuck on the detail page. Updated 11 step sequences across
10 docs to use the canonical pattern: "Click Add component, name X,
click Add component again to confirm".
Also corrected:
- vision/mlmodel display string from "vision / mlmodel" (with spaces)
to "vision/mlmodel" (no spaces) — block-card-rdk-builtin.svelte:27
uses {subtype}/{name} with no spaces. Affects configure.md,
deploy-from-registry.md, mlmodel.md reference, color_detector.md
reference.
- track.md: clarified that the search result for object-tracker is a
registry-item card showing the module/model with a VISION badge,
not a literal "viam:vision:object-tracker" string.
Verified against canonical state machine documented at
code-map/ui-flows/add-configuration-block.md.
Per-page mapping verified in code-map/vision-ui-verification-add-block.md.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Align step language with the verified trigger-card UI: Method (not "type"), Frequency (hz), and Alert frequency (not "notification frequency"). Corrections found while verifying UI flow docs end-to-end against current app source. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Catches UI-label mistakes at commit time by grepping markdown for strings that don't match the current app UI (e.g., "Notification frequency" when the label is "Alert frequency", "Generate machine key" when the button says "Generate API key", "Component or service" for the retired + menu item). Rules derive from the canonical flow documents at ~/viam/code-map/ui-flows/, each verified by reading every involved Svelte component end-to-end. Usage: python3 scripts/check-ui-labels.py # scan docs/ python3 scripts/check-ui-labels.py path/to/p.md # scan named files python3 scripts/check-ui-labels.py --staged # scan staged files Escape hatch: add `<!-- ui-check-ignore -->` to the end of a line to suppress the check (for common-mistakes callouts that reference the wrong label on purpose). To enable locally as a pre-commit hook, place the following in .git/hooks/pre-commit: #!/usr/bin/env bash set -euo pipefail worktree_root="$(git rev-parse --show-toplevel)" script="$worktree_root/scripts/check-ui-labels.py" [ -x "$script" ] || exit 0 python3 "$script" --staged Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Traced every UI step in the vision docs against the 7 canonical flow documents and fixed discrepancies: - mlmodel reference: sharpen "Run model" panel step to name the Choose ML model and Run buttons explicitly. - alert-on-detections: trigger-card step 5–6 now names the ALERT OPTIONS and WEBHOOKS sections and clarifies that Alert frequency is per-row (each email row, all-owners row, each webhook row each have their own). - configure: rewrite the CONNECT tab / SDK code sample instructions to match the actual switch behavior. The Include API key switch starts visually on but displays placeholders; clicking it flips the snippet to real credentials. Step now says "click the switch" and names the real placeholder strings. No new flows discovered: every UI instruction in the vision docs maps to one of the existing flows under ~/viam/code-map/ui-flows/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Systematic pass against code-map/playbook-writing.md (Williams/LRS
principles plus Viam style rules) over all 22 vision-section pages.
Style-rule fixes (the bulk):
- Replace em dashes (-- and —) in prose with colons, parentheses, or
separate sentences across detect, classify, measure-depth, act-on-
detections, alert-on-detections, color_detector reference.
- Sentence-case headings: "Try It" -> "Try it", "What's Next" ->
"What's next", "Troubleshoot" -> "Troubleshooting" where it diverged
from the section's dominant pattern.
- Sentence-case and restored canonical link text in "What's next" /
cross-reference links (for example, "Detect Objects (2D)" ->
"Detect objects").
- Fix `vision / mlmodel` -> `vision/mlmodel` (no spaces; matches the
actual result-card display per add-configuration-block flow doc).
- Replace 2 `e.g.` in track.md code comments with "for example".
- Track.md: table default-value cells `--` -> `None` for readability.
Structural / writing fixes:
- overview.md: add an Index Position sentence before the built-in
model table so it doesn't drop into the reader cold.
- how-it-works.md: move an `if`-clause from stress position to
opener so the payload "more than one role" sits at stress; split a
19-word parenthetical so subject and verb stay close.
- configure.md: split a dense nested parenthetical in the tflite_cpu
search step into two sentences.
- measure-depth.md: fix malformed two-em-dash parenthetical ("--for
example, ... --you") to proper parentheses.
- alert-on-detections.md: trigger-card section 5/6 now names the
ALERT OPTIONS and WEBHOOKS sections and clarifies that Alert
frequency is per-row. (Supplements earlier UI-label commits.)
- retrain.md: soften an unverifiable quantitative claim ("majority
drop significantly within the first six months") and replace with
the same training-to-production-gap citation used in overview.md.
No changes to prose that was already clean: deploy-from-registry,
tune, roll-out-to-fleet, batch-inference, reference _index,
mlmodel/color_detector/detections-to-segments reference body prose.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Before: 17 flat pages under /vision/. After: 4 top-level pages + 3
task-oriented subsections, matching how users frame their goals.
New structure:
/vision/overview, /vision/how-it-works, /vision/configure,
/vision/classify (top-level)
/vision/object-detection/ (detect, detect-by-color, tune, track,
act-on-detections, alert-on-detections)
/vision/3d-vision/ (segment-3d, measure-depth)
/vision/deploy-and-maintain/ (deploy-from-registry,
deploy-custom-model, retrain, roll-out-to-fleet, batch-inference)
Every moved page keeps its old /vision/<page>/ URL as an alias, so
existing inbound links continue to work via Hugo's redirect.
Internal vision-section links and the vision-service reference links
updated to point directly at the new locations. overview.md's "Where
to go next" regrouped to match the new subsection structure.
Cross-section link updates (train, monitor, data-ai, tutorials, etc.)
are in a separate commit.
Classification stays as a single top-level page. act-on-detections
and alert-on-detections live under object-detection since that's the
dominant use case; classify.md cross-references them.
Build verified: make build-prod clean. Vale clean. 1126 aliases emitted.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Point links from other sections (train, monitor, data-ai, tutorials, reference) at the new /vision/object-detection/, /vision/3d-vision/, and /vision/deploy-and-maintain/ paths. The old /vision/<page>/ aliases still resolve, but direct links are cleaner. Also fix pre-existing UI-label violations in files touched by this pass (caught by scripts/check-ui-labels.py): - pet-photographer.md (3 places): "Component or service" is the retired menu label; current label is "Configuration block". - monitor/alert.md: same. - monitor/overview.md: "notification frequency" aligned to the UI label "alert frequency". Tighten the "Trigger type" rule in check-ui-labels.py to require a UI-instruction context (Set/select/dropdown/EVENT section/field) so table column headers and prose use of the phrase don't false-trip. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fixes 4 correctness issues and 7 enhancements from a review pass on the vision section. Bugs: - configure.md: clarify that registry models ship with their own labels.txt (previous text implied users had to create one). - configure.md: move GetProperties mention out of "Save" step and into post-verify prose. GetProperties is a code call, not a web-app action, so placing it under Save created a false expectation. - 3d-vision/measure-depth.md: "from the camera's optical center" is wrong for LiDAR and ToF sensors; rephrase to name the sensor frame. Also change "from your camera" to "from your perception sensor" to cover LiDAR/ToF, and hedge "standard convention" to "typically follows this convention". - object-detection/act-on-detections.md: add a "Not a safety system" caution box on the wrapper pattern. The example gates new motion at command time but does NOT interrupt motion in progress; readers copying the pattern for real safety would build something that fails in the exact scenario it is meant to protect against. Enhancements: - configure.md opener: name the upstream paths (registry, managed training, custom training script, external) so the page does not assume users arrived via a specific prior section. - configure.md step 4: include camera_name in the vision service JSON (previously only mlmodel_name was shown). - configure.md step 7: expand the "complete configuration" JSON to include the camera component, not just the two services. - classify.md: bump weight so Classification appears before Object detection in the nav (classification is conceptually simpler). - overview.md: reorder the "Where to go next" groups to match. - measure-depth.md "What's next": add an Act on detections link. - alert-on-detections.md: link to filter-at-the-edge tutorial alongside the sparse filtered-camera README. - classify.md: link the first "transform camera" mention to its reference page. - track.md: link the Hungarian algorithm mention to Wikipedia. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Addresses the two bigger reviewer items:
1. configure.md step 2 "Configure the ML model service" now shows a
Builder tab alongside the JSON tabs. The Builder walkthrough names
the Select model dialog, the My models / Registry tabs, the Task
type / Framework / Visibility filters, and the Version dropdown
(Latest vs. specific timestamp), verified against the app source.
JSON now splits into "registry model" and "local model file" tabs
so the two paths are visibly distinct.
2. The "Available ML model services and vision models" section moved
out of configure.md into a new page:
docs/vision/deploy-and-maintain/available-models.md. The new page
has context the reviewer asked for: how to pick among the listed
modules (read the README, check recent releases, prefer framework-
specific services over generic triton), what the distinction is
between ML model services, vision services, and public models,
and a pointer back to the deploy-from-registry matching table.
The new page is weight 5 in deploy-and-maintain so it appears first
in the subsection. The subsection _index card list and overview.md's
"Deploy and maintain models" group link to it.
Removed modulescript: true from configure.md frontmatter since the
{{< mlmodels >}} shortcode moved.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
available-models.md: reword the opening "three things" list so it correctly describes one ML model service API with multiple module implementations and one vision service API with multiple models (instead of pluralizing "services" in a way that implies they are separate APIs). how-it-works.md: rename linkTitle and title from "How the vision service works" to "How a vision service works". A configured vision service is an instance of one of several models, so "a" reads more accurately than "the". Updated cross-references in configure.md, tune.md, and overview.md to match the new title. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The registry-search widgets on docs pages duplicate app.viam.com/registry without adding much. Their disambiguation and guidance framing, however, is docs-native value that the registry site doesn't provide. Reshape the page accordingly: - Cut resources_svc and mlmodels widgets from both the dedicated page and deploy-from-registry.md. Remove modulescript frontmatter from deploy-from-registry.md since no shortcode on the page needs it now. - Rename the dedicated page to "What's in the Viam registry for vision": three-way entry taxonomy (ML model service implementations vs vision service models vs public ML models) plus the existing picking guidance (read the README, check versions, prefer framework-specific, verify task type). The page now sends users to app.viam.com/registry for the actual browse/search. - Update link text in configure.md, deploy-from-registry.md §1, and overview.md's "Where to go next" to match the new title and framing. Net effect: one page of opinions and taxonomy, not a docs-hosted second search UI. Deploy how-to is shorter and focused on the procedure. URL stays /vision/deploy-and-maintain/available-models/ so existing links and aliases continue to resolve. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The base branch dropped the hidden data-ai/ and manage/ sections (PRs viamrobotics#4931, viamrobotics#4932) and had started migrating docs/operate/reference/services/ vision/* to docs/reference/services/vision/* (viamrobotics#4924). My branch was already at the new location. Conflict resolution: - docs/data-ai/_index.md, docs/data-ai/ai/_index.md: modify/delete — accept base's deletion. My changes were link updates from the vision restructure pass; moot now that the files are gone. - docs/operate/reference/services/vision/mlmodel.md: deleted in HEAD, modified in base — accept my deletion. My branch has a modern rewrite at the new path (docs/reference/services/vision/mlmodel.md); the old file is stale and should not come back. - docs/vision/object-detection/alert-on-detections.md: keep my content (sentence-case, colon-delimited next steps, "In the WEBHOOKS section" UI precision) but retarget the triggers-reference link to /reference/triggers/ (base's new path). - docs/reference/apis/services/ml.md: keep my link to deploy-from-registry. - docs/tutorials/configure/pet-photographer.md: keep my card link to deploy-from-registry. Also retarget broken cross-section links to base's new paths: - /data-ai/capture-data/capture-sync/ -> /data/capture-sync/capture-and-sync-data/ - /data-ai/train/train/ -> /train/train-a-model/ - /data-ai/ai/deploy/ in retrain.md Next steps -> /vision/deploy-and-maintain/deploy-from-registry/ (Aliases that still reference /data-ai/ paths stay in frontmatter for inbound redirect compatibility.) Commit bypasses check-ui-labels hook because the 29 violations it flags are pre-existing style issues in unrelated files the base branch brought in (tutorials, monitor, reference), none of which this merge touched. The hook logic is tightened in a follow-up commit to check only files modified in the commit. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Before this change, --staged mode returned every file in the index, so a merge commit pulling in files from upstream tripped on pre-existing style issues in content the merge author never touched. The yesterday merge commit had to pass --no-verify because of 29 false positives from tutorials and other files the base branch brought in untouched. Fix: detect an in-progress merge by the presence of .git/MERGE_HEAD, then filter the candidate list to files whose staged blob differs from BOTH parents (HEAD and MERGE_HEAD). A file whose staged content matches one parent is inherited unchanged from that side and is not the merge author's work. A file whose staged content differs from both was manually edited during conflict resolution — exactly what the hook should check. Non-merge commits are unaffected: MERGE_HEAD does not exist, so we return every staged .md file as before. Works correctly in git worktrees thanks to `git rev-parse --git-dir` (returns the worktree's actual .git location, which is a pointer file in a worktree — the full path is resolved before the MERGE_HEAD existence check). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The merge brought htmltest back online against my PR. 26 link errors across my own files and files affected by the vision restructure. Fixes in my vision reference and how-to files: - mlmodel reference: retarget 5 broken cross-section links (/data-ai/train/train/ -> /train/train-a-model/, /data-ai/ai/deploy/ -> /vision/deploy-and-maintain/deploy-from-registry/, /manage/troubleshoot/teleoperate/default-interface/ -> /monitor/default-interface/, /data-ai/capture-data/capture-sync/ -> /data/capture-sync/capture-and-sync-data/) - tune.md: anchor /vision/configure/viamrobotics#6-test-from-the-control-tab -> /vision/configure/viamrobotics#6-verify-with-the-control-card - retrain.md, roll-out-to-fleet.md: /fleet/fragments/ -> /hardware/fragments/ Fixes in files that reference vision content from elsewhere: htmltest's IgnoreDirs config treats /operate/, /manage/, /data-ai/ as non-existent even if Hugo generates alias redirects, so every link to those paths is flagged broken. Updated direct link targets in 13 files (glossary stub, 7 tutorials, 3 operate reference pages, hello-world/building, and 5 motion API generated/override includes) to the canonical /reference/services/vision/* and /vision/object-detection/* paths instead of the old ones. Also fixed 14 pre-existing "Component or service" -> "Configuration block" UI-label violations in the tutorial/operate files I was already editing for the link fixes, since the pre-commit hook flags them whenever a file is touched. Local htmltest run: all 1415 documents pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
PR viamrobotics#4938 "Motion planning + navigation: section review" restructured motion-planning/ and navigation/ out of /operate/reference/services/ into top-level sections and updated internal links. My PR restructured vision/ the same way on the same base. Merge collided on one file both PRs touched: docs/operate/hello-world/building.md. Resolution: in building.md, keep my Vision link (/vision/object-detection/detect/#using-a-vision-service) and take upstream's Motion + Frame system links (/motion-planning/ and /motion-planning/frame-system/). Each PR owns its own section's paths. Local htmltest: 1448 documents, 0 errors. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ew/vision Upstream PR viamrobotics#4939 added three alias redirects to fix the base-branch Netlify deploy, which had been erroring since PR viamrobotics#4938 merged. My last merge commit inherited the broken state. Pull in the fix. Clean merge, no conflicts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Full Phase 1–4 rewrite of the vision docs section against upstream
new-docs-site. 14 new pages, 10 modified, 8 deleted. All linters andmake build-prodclean.New how-tos (
docs/vision/)tune.md: symptom-driven map ofmlmodelvision service attributes including the previously-undocumentedxmin_ymin_xmax_ymax_order, per-label confidence, and input normalization fieldsretrain.md: CVOps loop for driftdeploy-from-registry.md: takes over/data-ai/ai/deploy/URL (hot app-UI link with#model-framework-supportanchor preserved)deploy-custom-model.md: BYO model pathsegment-3d.md:GetObjectPointCloudsviaviam:vision:detections-to-segmentsdetect-by-color.md: dedicatedcolor_detectorhow-tobatch-inference.md:viam inferCLI (takes/data-ai/ai/run-inference/)roll-out-to-fleet.md: vision-specific fleet rollouthow-it-works.md: extracted two-service architecture explanationReference migration (
operate/reference/services/vision/→reference/services/vision/)mlmodel.md: adds missingxmin_ymin_xmax_ymax_orderfield, correctsinput_image_mean_valuedescription (was copy-pasted from stddev), removes false defaults, fixes Go code (undefined variables, wrong method casing, wrongDecodeImageFromCamerasignature). Preserves#prerequisitesanchor hardcoded in the vision-ml-model builder UIcolor_detector.md: adds missinglabelfield, surfaces startup errorsdetector_3d_segmenter.md→detections-to-segments.md: updates to theviam:vision:detections-to-segmentsmodule model name following the July 2025 RDK migration (PR rdk#5143); adds module install stepRuntime bug fixes
measure-depth.md: three Python bugs (get_imagesingular →get_imagesplural;NamedImage.source_name→.name;.imageattribute →bytes_to_depth_array())act-on-detections.md:do_commandtimeout keyword argumentdata-ai/ai/deploy.md: adds{#model-framework-support}anchor (the app UI hardcodes this anchor but the heading slugged to something else)Other changes
vision/_index.mdrewritten as explanation with CVOps framing and links to all pages in the sectionconfigure.mdtrimmed from 552 to 238 lines; attribute table moved to reference, cloud inference moved to batch-inference.md, troubleshooting moved to tune.md, self-referential links and unsourced FPS claim fixedreference/apis/services/{vision,ml}.md: date refreshed, stale/operate/links fixeddata-ai/_index.md,data-ai/ai/_index.md, andtutorials/configure/pet-photographer.mdupdatedReverse-link paths preserved through aliases
/operate/reference/services/vision/mlmodel/#prerequisites(vision-ml-model builder)/data-ai/ai/deploy/+#model-framework-support(registry UI + ML model instructions)/data-ai/ai/{act,alert,run-inference}/(data-ai section cards)/services/vision/*,/ml/vision/*,/data-ai/services/vision/*pathsTest plan
/vision/tune.mdsymptom-to-attribute mapping against the mlmodel reference/data-ai/ai/deploy/#model-framework-supportredirects and the anchor resolves (tests the app UI hot path)/operate/reference/services/vision/mlmodel/#prerequisitesredirects with anchor (tests the vision-ml-model builder link)/data-ai/ai/{act,alert}/redirect to thevision/equivalentsmake build-prodpassesArtifacts in the code-map
Review outputs saved at
~/viam/code-map/vision-*for traceability — landscape, IA evaluation, section plan, per-page findings, and the inventory files produced during Phase 1.