Repository navigation
docs: re-point the source citations #618 to #655 moved - #656
Merged
Merged
Conversation
The pull requests merged since 279f28f moved lines in the source files the hand-written pages cite. This re-points 610 path:line citations on 19 pages (each move confirmed by exact text plus git's diff line mapping, or by a read-only audit against the doc sentence), rewords the sentences the new code made false (upload ownership handoff, resume from a RUNNING handle, agentd's power-off module, StartRequest's poweroff_on_exit, the health response headers), and lowers four Vale ceilings to the branch's counts.
35 of 45 tasks
3 tasks done
2 tasks done
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.
What and why
The 30 pull requests merged since 279f28f (#618 to #655) moved lines in the source files the hand-written pages cite, so 610
path:linecitations on 19 pages pointed a few lines off while still resolving, whichdocs:checkcannot see. This re-points them. Eight citations sat in sentences the new code makes false or incomplete, so those sentences change with them, each worded from the code it cites. The branch starts from main at 9eef8f0; only Markdown underdocs/and the ceilings in.vale/warnings.jsonchange.How each move was found
For every citation,
blame-shift-citations-2026-10-12.py(in the nightly job's workspace) takes the doc line'sgit blamecommit as its baseline, reads the cited block there, and looks for the same text at HEAD. It reported 647 citations whose block is no longer at the cited lines: 460 with one exact match elsewhere, 121 with several, and 66 with none. Each match was then checked against git's own line mapping:git diff -U0 <baseline> HEAD -- <file>maps every cited line outside a changed hunk to its HEAD line, and a citation moves only when that mapped range is one of the exact-text matches. That settled 580 rows. TheCONTRIBUTING.md:146row is an examplemutants.outline, not a citation, and stays.A second pass found two citations the first one counts as current.
cli.md:577(--state-dir) andcli.md:757(--delete-image) cite an#[arg(long)]line that still sits at the cited number, while the field it belonged to moved nine lines down. The probe now also reports a repeated line that matches at its own number, and the same diff mapping moved exactly those two.Of the 67 rows without a settled match, comparing with version numbers normalized cleared 29
Cargo.tomlrows whose cited lines are right and only carry a new version or feature. A read-only audit of the other 38, each against its doc sentence, found 7 still right, 23 moved, and 8 contradicted.Moves by page
docs/reference/cli.mddocs/behavior/processes.mddocs/reference/rpc-tools.mddocs/diagrams/behavioral/sequences.mddocs/insights/contract-map.mddocs/diagrams/architecture/components.mddocs/diagrams/structural/dependency-graph.mddocs/architecture/data-flow.mddocs/insights/debugging-guide.mddocs/architecture/system-overview.mddocs/analysis/risk-hotspots.mddocs/insights/business-logic.mddocs/reference/public-api.mddocs/insights/impact-analysis.mddocs/analysis/dead-code.mddocs/insights/tech-debt.mddocs/behavior/state-machines.mddocs/architecture/module-map.mddocs/analysis/ownership.mdMost cite
crates/microvms-cli/src/cli.rs,crates/microvms-app/src/sandbox.rs,crates/agentd/src/exec.rsandcrates/microvms-app/src/session/mod.rs. Oncli.md, every flag bullet's citation was read back at HEAD: 483 land on the#[arg]of a field named for the bullet's flag, and the other four are fields spelled differently from their flag (--tagistags,--forisfor_sec, and--egress-network-connectorisegress_network_connectorstwice). Ondependency-graph.md, each third-party crate's table citation lands on that crate's declaration line, and each workspace crate's row cites the dependency line it describes.The changed sentences
docs/architecture/data-flow.md, upload step 3:Session::upload_filenow callsupload::upload(crates/microvms-app/src/session/mod.rs:534-541), which readsGET /v1/healthonce per session and, with the default-user header present, runsid -u; id -gas that user (crates/microvms-app/src/session/upload.rs:57-102). With no header or a root default user it callsfiles::upload_filedirectly. Otherwise root stages the bytes in a private directory, hands them to the default user, and an exec as that user installs them (crates/microvms-app/src/session/upload.rs:104-166).docs/architecture/data-flow.md, launch step 6:Sandbox::wait_until_runningnow waits throughwait_for_sandbox_launchandwait_for_launch_inner(crates/microvms-app/src/control/microvm.rs:628-689), so the citation moves there fromwait_for_state. The sentence itself still holds.docs/diagrams/behavioral/sequences.md: the launch wait's "running VM" return is"RUNNING" => return Ok(got)in that loop (crates/microvms-app/src/control/microvm.rs:655).docs/behavior/processes.md, resume step 4: a handle that still holdsRunningnow reads the service state first (crates/microvms-app/src/sandbox.rs:1683-1714), and a VM the service reports as ended recordsTerminatedand fails withWindowClosed, before the not-suspended check (crates/microvms-app/src/sandbox.rs:1715).docs/architecture/module-map.md: agentd's module list gainedpoweroff("Optional guest shutdown, performed by the daemon after observed group completion",crates/agentd/src/poweroff.rs:2), so the agentd sentence names that responsibility and the page's module pointers gainpoweroff.rs:2.docs/insights/contract-map.md: theStartRequestshape gainspoweroff_on_exitwith itsskip_serializing_if = "is_false"attribute (crates/protocol/src/exec.rs:284-285).docs/reference/rpc-tools.md: the optionalStartRequestfields gainpoweroff_on_exit; the dispatcher servesGET /v1/healththroughhealth_response(crates/agentd/src/routes.rs:179), and a new paragraph names its two headers,microvms-default-user-configuredandmicrovm-poweroff-on-exit(crates/agentd/src/routes.rs:414-429,crates/protocol/src/health.rs:9-16), and the client check that reads the second (crates/microvms-app/src/session/mod.rs:462-477).Splitting the
rpc-tools.mdintro sentence removed one semicolon, and the branch's warning counts sit below four ceilings in.vale/warnings.json, so those ceilings drop to the counts:Readability.AutomatedReadability35 to 34,Readability.FleschKincaid38 to 37,ai-tells.SemicolonUsage293 to 291, andwrite-good.Passive509 to 507.Evidence
mise run docs:checkon this branch: EXIT=0 in 149 s;astro check0 errors, and vitest 15 files, 223 tests passed.mise run prose:checkon this branch: EXIT=0 in 41 s, "Prose: 0 errors, 4063 warnings, 0 suggestions."tools/prose.py --linton main and on this branch differ only in one fewerai-tells.SemicolonUsagewarning onrpc-tools.md.transforminverify/guards/faults/*.tomlnames an edited file.moves-verify-2026-10-15.txt,moves-audited-verify-2026-10-15.txt,hand-edits-verify-2026-10-15.txt), and every audited move and changed sentence was read by hand.mise run pr-body:check -- --body <this body>: PR_BODY_LINEmise run checkon main at 9eef8f0: EXIT=0 in 330 s. Not rerun on this branch, which changes only Markdown underdocs/and one JSON ceiling file;prose:checkis thechecktier that reads them.Guards
None: this adds no guard.
Follow-ups
docs/diagrams/structural/dependency-graph.md:97listsnixwith 5 edges;crates/agentd/src/poweroff.rs:63adds a sixth source path, and the declaration gained therebootfeature (crates/agentd/Cargo.toml:63). The page's edge counts are hand-written, which AGENTS.md's counts rule leaves to whoever regenerates the page.crates/agentd/Cargo.tomlnow declaresrustix, anddependency-graph.mddoes not show it.docs/insights/contract-map.md'sStartRequestconsumer list does not namecrates/microvms-app/src/session/upload.rs:17, which builds one for the ownership handoff.Platform claims
Scope
(see
docs/STRATEGY.md).