Repository navigation
Docs/dead sharepoint links - #44
Conversation
wire-protocol is not in KINDS, so key_from_upload_path rejects wr65-wire-protocol-en-v3.2.pdf. The kind is api-reference — its own comment reads 'API and wire-protocol specification' — with wire-protocol as the subject. The docs contradicted the code; the code is right. Also: humanise() upper-cases anything in ACRONYMS, so cad renders as 'CAD' and api-reference as 'API reference'. Two display columns were showing 'Cad' and would have shown 'Api reference'. No change to KINDS or to any policy. Verified against the parser.
As #31 for WRL63, a rebadged Realman RML63-B: manual V1.1, ROS manual V1.0, and the JSON protocol and interface function documents shared with WR65 — published from one source so the digests match across products. The wr_arm_sdk SDK manual is likewise unrecovered.
The nine SharePoint links pointed at tangrobot.sharepoint.com, which no longer resolves (#31). WR65 is a rebadged Realman RM65, so the vendor documents were recoverable: manual V2.8, ROS manual V1.0, JSON protocol V3.1 and interface function description V3.1, now published under robot/wr65/ and served through <Downloads product="wr65" />. The SDK manual for wr_arm_sdk is our own document and the dead tenant held the only copy; its link is removed rather than left broken. The CN manual and the RM API samples are recoverable from OneDrive and not yet published.
Three SharePoint links pointed at the dead tenant (#31). The user manual came from AgileX's official site, the CAD from the vendor folder — the STEP is zipped 90.6 MB to 21.0 MB since .STEP is not a publishable type. Also publishes the charging station manual in EN and ZH, which the page never linked. Firmware V6.0.5 has no source in the vendor folder or on the official site, so that table is replaced with a pointer to support rather than a link that does not resolve.
Eleven SharePoint links pointed at the dead tenant (#31). Published from the AgileX vendor folder: user manual EN and ZH, the CAN protocol frame reference, and three STEP models zipped, since .STEP is not publishable. The English quick start existed only as .docx and was converted with LibreOffice — an official PDF would overwrite the same key, so the URL survives the swap. The Chinese quick start is marked 'Limited Public Document' with blank Presented to / Presented by fields, and the Windows application is AgileX's own binary. Neither is ours to redistribute, so both rows are removed rather than replaced; available on request.
Six SharePoint links pointed at the dead tenant (#31). Unlike the AgileX and Realman pages, these are not rehosted: Kinova maintain a public resource centre and revise on their own schedule, so a copy in our store would freeze. Our OneDrive copy of the user guide is r3.1; Kinova ship r4.0 today, which is the argument made concrete. Resource pages where they exist, so no revision appears in the URL; Artifactory directory listings for release notes, CAD and specifications where they do not, for the same reason. Specifications are new — Kinova publish them and this page never offered them. The KORTEX system overview is removed: Kinova's tree has no Gen3 lite-specific document for it, so there is nothing to point at.
Ranger Mini 2.0 is no longer supported and is not being documented, but six links to the dead tenant is a worse state to leave the page in than no links at all — a customer who still owns one hits NXDOMAIN six times. The manual and CAD rows go: the link was the content. The firmware table stays with the versions unlinked, because what each build does is useful whether or not you can download it here, and points at support for the images instead.
Three Google Drive links replaced with store queries. These are Weston Robot's own material — two training decks and the expansion dock reflash guide — so no vendor link can replace them and an opaque Drive share token is the same failure class as the SharePoint links, one host over. b2 3-Day Training on Unitree B2 Robot Operations, 2024.10, 51 slides g1 2-Day Training on Unitree G1 Robot Operations, 2025.08, 63 slides go2 Expansion Dock Reflash Guide, 2025.01 Everything else on these pages stays pointing at Unitree, who maintain their own SDK docs and developer guides. The Go2 user guide row is unchanged: the file in OneDrive is Unitree's own manual (V1.0, 2023, unitree.com on the cover), not ours as the page claims, so it needs a decision rather than a swap.
Unitree publish a per-model manual at a predictable path, so each page now carries one. Go2's row replaces a Google Drive link described as 'Weston Robot's Go2 user guide' — the file behind it was Unitree's own manual, V1.0 from 2023, so the description was wrong as well as fragile. Added for Go2, B2, A2, G1, H2, and also H1-2 and R1, which have manuals too. As2 has none published yet, so that page is unchanged. No Google Drive links remain under robot/.
Unitree publish a per-model manual at a predictable path, so each page now carries one. Go2's row replaces a Google Drive link described as 'Weston Robot's Go2 user guide' — the file behind it was Unitree's own manual, V1.0 from 2023, so the description was wrong as well as fragile. Added for Go2, B2, A2, G1, H2, and also H1-2 and R1. As2 has none published yet.
Both still carry TODO rows for the SDK, ROS 2 package and URDF. Unlisted rather than drafted: the pages stay reachable by URL and the product cards on /robot keep working, so an owner can still find them, but they are out of the sidebar and the sitemap. docusaurus-lunr-search does not honour the unlisted front matter, so the routes are named in excludeRoutes too — without that a search for 'As2' still returned the page.
|
Is the Z1 part of the scope? unitree_z1_dev is not accessible, its a dead link from unitree |
|
Service manual · Expansion dock itself is fine. There is a deadlink in that file itself, it still points to tangrobot Take Note: The check of deadlinks should expand to the training slides [G1, B2, etc] as well. |
|
Even though As2 and H2 (potentially to include Nero) are hidden, the Robots intro.md still shows As2 and H2. These should be hidden as well |
The page still carries its "in preparation" admonition and TODO rows for the manual, SDK, ROS 2 packages and URDF — the same state As2 and H2 were in. Unlisted rather than deleted: the page stays reachable by URL, so an owner can still find it and finish it. docusaurus-lunr-search does not honour the `unlisted` front matter, so the route is named in excludeRoutes too.
Review found As2 and H2 still advertised on /robot despite both pages being unlisted, so the cards were the one route left that put an incomplete page in front of a customer. NERO joins them. This reverses the reasoning in the earlier unlist commit, which kept the cards deliberately so an owner could still reach the pages. The URL still works, which is enough for that — a card is a recommendation, and a page of TODOs should not be recommended.
dev-z1.unitree.com is dead. Unitree folded the Z1 material into their main support site, where the SDK intro is the equivalent entry point. Replaces both references: the resource list and the bring-up outline. EOF
The decks link out to the renamed tenant like the pages did, but no check we run can see inside a PDF or PPTX — onBrokenLinks reads routes, not file contents, and the proposed CI link checker would not help either. So these rot silently and surface only when a reader follows one. Recorded as two steps: fix and republish the decks now, and eventually move the prose into Markdown so the material is searchable, diffable and covered by the build. The inventory of which decks exist is the gating unknown and is marked as such rather than guessed.
The item pointed at manifold_pocket.md:44-47. c29eb73 shifted the resource table down two lines when the Pocket2 page was added, so the range had come to cover the heading rather than the four dead links. Naming the *Related resources* table instead of a line range fixes it durably: the next edit above it cannot silently invalidate the pointer the way a number does. The finding itself is unchanged.
|
All four points addressed, and the branch is now merged up to current 1. Z1 scope / dead 2. NERO empty resource fields — 3. Robots intro still showing As2 / H2 — 4. Dead links inside the published files themselves @timothy-weston Please help review~ Thanks. |
| excludeRoutes: [ | ||
| '**/robot/ugv/ranger-mini-v2', | ||
| '**/solution/adt/intro', | ||
| // Unlisted pages. docusaurus-lunr-search does not honour the |
There was a problem hiding this comment.
can remove these comments. Claude likes to add comments relating to history/ implementation/ design... its something we need to specifically tell claude not to do, and instead move these kinds of comments and such into ADRs/ changelog/ todo/ etc, instead
Eight comment blocks in the config explained decisions rather than mechanics. Four repeated ia-proposal.md and are dropped; the Release 1 renames, the /tutorial to /guides rename and the version-page consolidations were recorded nowhere else and become a §11 amendment. The lunr-search trap becomes a lesson, with a pointer kept in the config because unlisting is a two-place change.
|
Added since your review: a rule that rationale belongs in ADR/TODO/LESSONS rather than config comments, and the eight comment blocks in docusaurus.config.ts moved accordingly. Three of them were recorded nowhere else and are now an ia-proposal.md §11 amendment. No behaviour change. |
timothy-weston
left a comment
There was a problem hiding this comment.
Re-checked at eae2690. The config cleanup looks good. The unlisted pages match excludeRoutes exactly (5 of 5), check:downloads and test:files pass, and every new external link resolves. Unitree's support site returns 567 to curl, so I checked Z1 in a browser; it lands on the SDK intro. Four inline comments.
Nit: LESSONS.md:158 says nine comment blocks, but the commit message and the TODO entry say eight. The diff touches nine if the two lunr comments are counted separately.
| - **Findings and follow-ups** → [`TODO.md`](TODO.md), with the `file:line` and how it was verified. | ||
| - **Operational lessons** → [`docs/LESSONS.md`](docs/LESSONS.md), in Pattern / Correction / Context form. | ||
|
|
||
| **Not in a config file.** `docusaurus.config.ts` and its neighbours record *what* is set, not why it was decided. Leave at most a one-line pointer and file the reasoning in one of the three above. The test is whether the comment would change if the decision were revisited: a note explaining a mechanism a maintainer needs at that line stays, a note explaining a decision moves. This repository is public, so a comment describing the state of our own content — which pages are incomplete, what was an oversight — is published where no reviewer reads it. See [`docs/LESSONS.md`](docs/LESSONS.md), *"Rationale in a config file is filed where nobody looks for a decision"*. |
There was a problem hiding this comment.
Good to have the rule here. That's what I was after with the config comments. I'd cut this paragraph down to the rule, the test and the pointer, though. Most of it repeats the reasoning from the LESSONS entry it links to (the public-repo point and the test are both in LESSONS.md:158-159), which is the same rationale-in-the-wrong-place problem the rule is about.
Two specifics:
- "One of the three above" leaves out design docs, but this same commit filed three decisions in
ia-proposal.md§11, which was the right place. The list should include the design doc being amended. - The public-repo sentence is the lesson's reasoning, not something a contributor can act on. Read as a rule, it also conflicts with this commit, which moved "an oversight, not a decision" into
ia-proposal.md:321, and that file is public too.
Suggested wording:
| **Not in a config file.** `docusaurus.config.ts` and its neighbours record *what* is set, not why it was decided. Leave at most a one-line pointer and file the reasoning in one of the three above. The test is whether the comment would change if the decision were revisited: a note explaining a mechanism a maintainer needs at that line stays, a note explaining a decision moves. This repository is public, so a comment describing the state of our own content — which pages are incomplete, what was an oversight — is published where no reviewer reads it. See [`docs/LESSONS.md`](docs/LESSONS.md), *"Rationale in a config file is filed where nobody looks for a decision"*. | |
| **Not in a config file.** `docusaurus.config.ts`, the sidebars and CI workflows record *what* is set. A comment there may explain a mechanism a maintainer needs at that line. The reasoning behind a decision goes in an ADR, the design doc it amends, `TODO.md` or `docs/LESSONS.md`, with at most a one-line pointer left behind. If the comment would change when the decision is revisited, it moves. See [`docs/LESSONS.md`](docs/LESSONS.md), *"Rationale in a config file is filed where nobody looks for a decision"*. |
| 2. **Connect power and a CAN interface** to your computer. | ||
| 3. **Bring up CAN** and confirm the arm responds — the [CAN protocol reference](https://tangrobot.sharepoint.com/:x:/s/Public-Outgoing/EXt0lngMwfpEuhgttEqFuYIBtMUkrF6Ou1ovQOHQbsWm8A?e=2FoZtv) documents the frames. | ||
| 3. **Bring up CAN** and confirm the arm responds — the CAN protocol reference under [Related resources](#related-resources) documents the frames. | ||
| 4. **Drive it from code** using `piper_sdk`, or from the Windows application for a first check. |
There was a problem hiding this comment.
This step still mentions the Windows application, but its row was removed (AgileX's binary, per the description), so the page no longer says where to get it. Either drop the clause or link AgileX's own download page.
| 4. **Drive it from code** using `piper_sdk`, or from the Windows application for a first check. | |
| 4. **Drive it from code** using `piper_sdk`. |
|
|
||
| **Documents we publish** — generated from the file store, so a new revision appears here without this page being edited. | ||
|
|
||
| <Downloads product="wr65" /> |
There was a problem hiding this comment.
Three things from the old table aren't in the store, and they're not in the Links removed table in the description either:
- The Chinese manual. The old row was EN · CN; the store has
user-manualinenonly. - The ROS 2 manual.
wr65-integration-guide-en-v1.0.pdfis the RealMan RM65-B ROS Manual V1.0. It's Melodic/catkin, with no mention of ROS 2 or colcon, so only the ROS 1 half of the old row is covered. - The RM API samples. There's no
api-examplesentry for either arm.
Same for wrl63.md. All three were only behind old SharePoint links, so treat them as lost until found: list them in the Links removed table, and record them in TODO as lost until found next to the SDK manual (see the TODO.md comment). If one turns up, for example in the OneDrive copy the English manuals came from, publish it.
Edit: these are now treated as lost until found, our procedure for documents that were only behind the old SharePoint links.
There was a problem hiding this comment.
All three are in TODO as lost until found, with the SDK manual (f6573f9), and in the Links removed table in the description. Same for WRL63.
| @@ -102,6 +102,10 @@ New page, not yet published. It is the hardware third of the Autonomy Stack, whi | |||
| - [ ] Bulk-load the exported documents: stage them under `static/_upload/` at their D4 paths and run `publish-files.py --publish`, which uploads, indexes and invalidates in one pass. | |||
| - [ ] Rewrite the 48 SharePoint occurrences (34 unique documents, 8 files) to the new URLs. | |||
There was a problem hiding this comment.
This PR closes most of this block, but TODO.md still shows it open:
- 104 (Google Drive): done. No
drive.google.comlinks are left in served content. - 103 (SharePoint rewrite): done except the two on
manifold_pocket.md:46-47, which are on me. - 88 asks for an export from the old SharePoint. That SharePoint can no longer be recovered, so the item can't be done as written; the documents it covers are lost until found. It also still says WR65/WRL63 have "no reachable documentation today", and the section summary at 86 still says the store is empty.
The follow-ups in the PR description aren't in TODO.md either. Can you add them, so they don't only live in a merged PR's description?
- The
wr_arm_sdkSDK manual is lost until found. The old SharePoint can't be recovered, so record it in TODO as lost until found, not as a recovery task. Whether to rewrite it or point at thewr_arm_sdkrepo instead is a separate decision. - Delete the
_permcheck/xuebin-20260907.txttest object from thewestonrobot-filesbucket. It's not a repo file. It's a 55-byte permission probe uploaded on 2026-09-07, and its own text reads "permission probe by xuebin, 2026-09-07, safe to delete". It shouldn't still be there: it's publicly served atdownload.westonrobot.net/_permcheck/…, and every index rebuild reports it, because its key has no<section>/<product>/part andwrfiles.index_entry()raisesValueErroron it. Publishers have no delete permission by design (docs/design/file-hosting.md§6), so the TODO entry should say it needs an AWS admin and how to do it:aws s3 rm s3://westonrobot-files/_permcheck/xuebin-20260907.txt aws cloudfront create-invalidation --distribution-id E2SQLRWCEUM8UK --paths '/_permcheck/*' # done when this returns 403 (what a missing key returns): curl -sI https://download.westonrobot.net/_permcheck/xuebin-20260907.txt
- Unitree and the future link checker. This is one clause for the existing link-checking item (TODO.md:385), not a new task.
support.unitree.comreturns 567 to non-browser clients, so an automated checker would report every Unitree link as broken even though they all work in a browser. Exclude that domain from the checker rather than accepting 567 everywhere.
Edit: clarified that _permcheck/… is an object in the file store bucket, not a file in this repo; updated for the old SharePoint being unrecoverable; documents that were only behind its links are now worded as lost until found, which is our procedure.
There was a problem hiding this comment.
Done in f6573f9: 103 and 104 ticked, 88 closed as can't be done, and the section summary updated. The follow-ups are in TODO: SDK manual lost until found, the _permcheck object with the admin commands, and the Unitree exclusion added to the link-checking item.
|
Two more for this branch. Neither blocks the merge. Neither changes anything on the site today: no Guides page uses The section below is written so you can hand it to Claude as-is. It asks Claude to re-check everything before editing, since these are my findings and your instance may know something mine didn't. Brief for ClaudeContext. Repo How to work. Treat each item as a claim to check, not a fact. For each one: run the checks, and apply the change only if they agree with the claim. If a check disagrees, or you see a better fix, don't apply that item. Reply on this PR with what you found and the output that showed it. Don't force-push; the PR is in review. Item 1: the scripts still list
|
| ### Found while working, not fixed | ||
|
|
||
| - [ ] All four resource links on `peripheral/sensor/manifold_pocket.md:44-47` are dead, but **for two different reasons** — corrected 2026-09-03 after re-checking. The two `tangrobot.sharepoint.com` manuals are a **DNS failure** (the host left public DNS with the tenant rename). The two `www.manifoldtech.cloud` app downloads are **not**: that host resolves to `1.15.86.130` and its Let's Encrypt chain validates, but the leaf certificate expired **2026-07-01**, so `curl` fails with exit 60, "certificate has expired". Both report `%{http_code}` as `000`, and an earlier revision of this item read that as DNS for all four — the trap `docs/LESSONS.md` names under *"verify the failure mode before diagnosing"*. Only the apex `manifoldtech.cloud` has no DNS record; the links use `www.`. The distinction matters: a lapsed certificate may come back on its own, a withdrawn hostname will not. The SharePoint pair is covered by the rewrite item under *File hosting* above; **the two `manifoldtech.cloud` links are not** — same failure class as issue #31, one vendor over, and the pinned version in `?file=MindCloudGo_0.3.0.apk` is why nobody noticed. Correct replacements are on the Pocket2 page. Left untouched deliberately, to keep that change additive. | ||
| - [ ] All four resource links in the *Related resources* table on `peripheral/sensor/manifold_pocket.md` are dead, but **for two different reasons** — corrected 2026-09-03 after re-checking. The two `tangrobot.sharepoint.com` manuals are a **DNS failure** (the host left public DNS with the tenant rename). The two `www.manifoldtech.cloud` app downloads are **not**: that host resolves to `1.15.86.130` and its Let's Encrypt chain validates, but the leaf certificate expired **2026-07-01**, so `curl` fails with exit 60, "certificate has expired". Both report `%{http_code}` as `000`, and an earlier revision of this item read that as DNS for all four — the trap `docs/LESSONS.md` names under *"verify the failure mode before diagnosing"*. Only the apex `manifoldtech.cloud` has no DNS record; the links use `www.`. The distinction matters: a lapsed certificate may come back on its own, a withdrawn hostname will not. The SharePoint pair is covered by the rewrite item under *File hosting* above; **the two `manifoldtech.cloud` links are not** — same failure class as issue #31, one vendor over, and the pinned version in `?file=MindCloudGo_0.3.0.apk` is why nobody noticed. Correct replacements are on the Pocket2 page. Left untouched deliberately, to keep that change additive. |
There was a problem hiding this comment.
The same procedure applies here. The two tangrobot.sharepoint.com manuals on manifold_pocket.md (MindCloud GO manual and MindCloud manual) are lost until found, like the other documents that were only on the old SharePoint. This item still says the SharePoint pair "is covered by the rewrite item under File hosting above", and that rewrite item assumed they could be exported and rehosted. Can you reword it to record both manuals as lost until found?
The two app links on www.manifoldtech.cloud (the MindCloud GO APK and MindCloud for Windows) are best effort. The Manifold Pocket is no longer in production, so the vendor may never renew that certificate, and any vendor link may stop working. The item's "a lapsed certificate may come back on its own" shouldn't be counted on; as of today the certificate is still expired (notAfter 2026-07-01). Can you word that part as best effort too?
On best-effort basis. The PR description says Manifold's download page (version.manifoldtech.cn/download/mcs?lang=en) hosts the manuals as well as the software.
Edit: added the manifoldtech.cloud app links as best effort, since the product is no longer in production.
There was a problem hiding this comment.
Since Pocket 1 is no longer in production, likely need state that the product and support for this is not longer available and redirect to pocket 2...
There was a problem hiding this comment.
Second thought, maybe better to hide pocket 1. Leave this portion to me, once you've rectified the others, should be okay to merge. I'll create another branch to fix this
There was a problem hiding this comment.
The folder was renamed on 2026-09-11 but these list weren't.
Also fix the count in LESSONS.md to eight.
WR65 J5 uses the spec table's ±180°. The manual's installation section says ±128°, which looks like a documentation error.
Unlisting also needs the product card removed, since the flag doesn't hide it. A page with its own directory needs both **/x and **/x/** in excludeRoutes, because the entries are globs.
The design doc and the upload skill still described the publish script rewriting a hand-written link. Pages use <Downloads> now, so both describe that flow, and the skill adds the component before preview as CONTRIBUTING does. Also drop the OneDrive mention from the Phase 0 status, and call the table column File in two comments to match the component.
ia-proposal wrongly said unlisted pages are left out of search, and §10 didn't explain the per-type split that sidebars-guides.ts points to. Both are fixed. The LESSONS entry no longer quotes the judgements it says not to publish, and names the sidebars-*.ts files. One leftover tutorial path in release-pages-plan is fixed.
Remove pointers to the old OneDrive, since the store is where documents live now. Correct seven line references, four tutorial paths and some stale counts, and merge six pairs of entries that tracked the same thing. Add four missing items: relisting As2, H2 and NERO, the guide linking to the unlisted H2 page, the wrong search claim on two draft pages, and the Robot Platforms rationale that points back and forth between the plan and this file.
|
@timothy-weston Thanks for the review. Everything from 5–7 Oct is addressed, and the branch is pushed. Summary below. Your review threads
Your brief
Audit of all .md files
Everything else is in TODO under Audit 2026-10-07 (9e0ff83, 0a31a70). It starts with questions for the product owner and safety items. Three I'd flag:
Open points
Checks: |
…5 and WRL63 Realman's current parameters (Gen 3 and Gen 4, English and Chinese) and our archived specifications agree on these values; the manuals' specification tables are the outlier and widened WR65 J5 and WRL63 J3. The 27 V supply maximum from the manuals stays.
…nreachable It passes and reports the queries as not checked, so "fails if a query matches nothing" only holds when the store's index is reachable.
The folder can hold staged documents that are not published yet, and deleting it to preview the CI build loses them.
Restore Realman arm specs and fix two #44 docs details


Refs #31, and standardises how every robot page offers documents.
Product pages no longer depend on hosts we do not control where the document is ours to publish. 24 documents are now in the file store, up from 2, and every dead link under
robot/is gone.wr65.mdwrl63.mdpiper.mdkinova-gen3-lite.mdranger-mini-v2.mdranger-mini-v3.mdz1.md(dev-z1.unitree.com)go2,g1,b2)peripheral/sensor/manifold_pocket.mdis the only page left with dead links. See Follow-ups.The rule applied throughout
If the document is ours, publish it. If it is the vendor's, link to them.
A copy of a vendor's manual freezes: our copy of Kinova's Gen3 Lite user guide was r3.1 while Kinova ship r4.0 today, and the Go2 "user guide" on Google Drive turned out to be Unitree's own manual at V1.0 from 2023. A document only we wrote, such as a training deck or a reflash procedure, has no vendor to link to, and an opaque share token is the same failure class as the SharePoint links.
Published to the store
Linked to the vendor
Links removed
No source exists for these. The old SharePoint can't be recovered, so the ones that were only linked from it are recorded in
TODO.mdas lost until found, to be published if a copy turns up.wr_arm_sdkSDK manual (wr65, wrl63)enonlySpecs corrected against the published manuals
The WR65 and WRL63 pages call the store manuals "the ones to work from", so they now match them:
-B); the page said 10.0 kg.Ranger Mini 2.0
No longer supported and not being documented, but the dead links are removed. The manual and CAD rows go; the firmware table keeps its rows with the versions unlinked, and points at support for the images.
As2, H2 and NERO unlisted
All three are incomplete.
unlisted: truerather thandraft, so the pages stay reachable by URL, but they are out of the sidebar and the sitemap. Their product cards on/robotare removed.docusaurus-lunr-searchdoes not honour theunlistedfront matter, so all three routes are also inexcludeRoutes. CONTRIBUTING now has an Unlisting a page section with the full steps.Conventions and tooling
<Downloads>with no hand-written links; naming table uses the real column names and includeszxx; new Unlisting a page section; rationale for config belongs in an ADR, design doc, TODO or LESSONS, not in a comment.docusaurus.config.ts, thesidebars-*.tsfiles andguides/tags.ymlkeep only mechanism comments. The reasoning is inia-proposal.md§9–§11 andrelease-pages-plan.md§2.wrfiles.SECTIONS,check-downloads.py, the upload skill, README, the page template andllms.txt. A test now fails ifSECTIONSdrifts fromdocusaurus.config.ts.zxxand subjects the same waywrfiles.pydoes, with a test for drift.wire-protocolis a subject ofapi-reference, not a kind, and the display columns showCADandAPI reference.Reviewing it
Serve the production build rather than
npm startwhen checking As2, H2 and NERO. Docusaurus deliberately shows unlisted pages in development.Every version was read from inside the document, not its filename. That caught
SCOUT MINI USER MANUAL 3.0.pdfactually containing V.2.0.0 from 2020, and confirmedRGM3.0.STEP, whose header saysRGM2 v2.01, really is the Ranger Mini 3.0 model by measuring it at 722 × 459 × 341 mm against the datasheet's 720 × 500 × 345.Follow-ups, not in this PR
All tracked in
TODO.md:support.unitree.com, which returns 567 to non-browser clients._permcheck/xuebin-20260907.txtin the bucket: needs an AWS admin to delete it.8bc8492's commit message is wrong: it addsunlisted: truetoh2.md, not a manual link. Left as is rather than force-push during review.