Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
277f401
docs(agents): use marketplace install flow for agent plugins
guthrie-vast Jun 23, 2026
e14987d
Merge pull request #154 from vast-ai/docs/agent-plugin-marketplace-in…
guthrie-vast Jun 23, 2026
5939944
Adding New Notifications Documentation with Webhook workflow examples
nakinnubis Jun 30, 2026
63f6b3b
docs(CLN-3495): segment renter/host notifications and de-duplicate AP…
guthrie-vast Jul 1, 2026
3e85f34
Fix ordering of example webhooks
nakinnubis Jul 1, 2026
bd43cf4
hide in-app for now pending frontend catch-up
nakinnubis Jul 1, 2026
112323b
Merge pull request #157 from vast-ai/CLN-3495-CLN-3496
guthrie-vast Jul 1, 2026
87db3c8
docs(QA-1212): clarify reserved instance early-cancellation refund fee
AidaLadybug Jul 7, 2026
5d974c3
docs(QA-1212): keep intro refund sentence, tighten fee wording
AidaLadybug Jul 7, 2026
eb50ee2
docs(QA-1212): restore bullet-list example format with corrected fee …
AidaLadybug Jul 7, 2026
1b9f86f
Merge pull request #160 from vast-ai/docs/reserved-refund-fee-example
AidaLadybug Jul 7, 2026
bdb909f
CON-1584 add host account and CLI SDK bridge docs
Jul 8, 2026
4f7dee2
CON-1584 group host account docs
Jul 8, 2026
f81a446
CON-1584 group self-test host nav pages
Jul 8, 2026
b6a60c7
CON-1584 reorder verify and list host nav
Jul 8, 2026
bf9f3ea
CON-1584 link common questions to search troubleshooting
Jul 8, 2026
0d129d0
CON-1584 add host setup screenshots
Jul 8, 2026
6d2b1cb
CON-1584 add local review annotation server (temporary review aid)
Jul 10, 2026
4bd24b5
Merge remote-tracking branch 'origin/main' into CON-1584-host-cli-api…
Jul 10, 2026
86bfa16
CON-1518 close IA audit gaps: anchors, canonical thresholds, journey …
Jul 10, 2026
bc5361b
CON-1518 route legacy alias anchors and link CLI self-test to error r…
Jul 10, 2026
6f04d21
CON-1518 add persona chip sync check
Jul 10, 2026
cf88d21
CON-1187 surface the 8 blocking reviewer inputs on the PR
Jul 10, 2026
28f9864
CON-1187 link the 8 blocking questions from the review overlay
Jul 10, 2026
c13ab50
CON-1584 improve selection comments in review overlay
Jul 13, 2026
7b7e123
CON-1187 add Jira context to docs review panel
Jul 13, 2026
d0c4364
CON-1513 reconcile generated self-test reference
Jul 13, 2026
2a6fd6a
CON-1584 publish review traceability audit
Jul 13, 2026
90d1855
CON-1584 add JSON feedback restore
Jul 13, 2026
db12a3b
CON-1584 add host console review screenshots
Jul 23, 2026
5088d76
CON-1584 fix host docs review findings
Aug 26, 2026
1566df6
CON-1584 add host docs QA evidence
Aug 26, 2026
befc430
CON-1518 add host docs V&V evidence plan
Aug 27, 2026
9a872a4
CON-1518 retain host docs V&V attempt and fixes
Aug 27, 2026
792295c
CON-1518 add host docs V&V retest evidence
Aug 27, 2026
ad2c808
CON-1518 retain final host docs V&V replay
Aug 27, 2026
0b4af06
CON-1518 group Host Docs commands by access
Aug 27, 2026
09d729e
CON-1518 retain command access verification
Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions .github/workflows/self-test-reference.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: Self-test reference check

on:
schedule:
- cron: '17 7 * * 1'
repository_dispatch:
types:
- self-test-reference-source-updated
pull_request:
paths:
- 'host/self-test-reference.mdx'
- 'host/common-errors-diagnostics.mdx'
- 'host/how-to-self-test.mdx'
- 'host/verification-stages.mdx'
- 'scripts/generate_self_test_reference.py'
- 'docs.json'
- 'package.json'
- '.github/workflows/self-test-reference.yml'
workflow_dispatch:
inputs:
vast_cli_ref:
description: 'vast-ai/vast-cli ref to generate from'
required: false
default: 'master'
self_test_ref:
description: 'vast-ai/self-test ref to generate from'
required: false
default: 'main'

jobs:
verify-self-test-reference:
runs-on: ubuntu-latest
steps:
- name: Checkout docs
uses: actions/checkout@v4
with:
path: docs

- name: Decide whether private source repos can be checked out
id: source-access
env:
SOURCE_TOKEN: ${{ secrets.VAST_DOCS_SOURCE_TOKEN }}
HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
run: |
if [ "${{ github.event_name }}" = "pull_request" ] && [ "$HEAD_REPO" != "${{ github.repository }}" ] && [ -z "$SOURCE_TOKEN" ]; then
echo "can_verify=false" >> "$GITHUB_OUTPUT"
echo "::notice::Skipping self-test reference sync check for fork PR because VAST_DOCS_SOURCE_TOKEN is unavailable. Run workflow_dispatch or use an upstream branch to verify private source repos."
else
echo "can_verify=true" >> "$GITHUB_OUTPUT"
fi

- name: Checkout vast-cli source
if: steps.source-access.outputs.can_verify == 'true'
uses: actions/checkout@v4
with:
repository: vast-ai/vast-cli
ref: ${{ github.event.client_payload.vast_cli_ref || github.event.inputs.vast_cli_ref || 'master' }}
path: vast-cli-source
token: ${{ secrets.VAST_DOCS_SOURCE_TOKEN || github.token }}

- name: Checkout self-test source
if: steps.source-access.outputs.can_verify == 'true'
uses: actions/checkout@v4
with:
repository: vast-ai/self-test
ref: ${{ github.event.client_payload.self_test_ref || github.event.inputs.self_test_ref || 'main' }}
path: self-test-source
token: ${{ secrets.VAST_DOCS_SOURCE_TOKEN || github.token }}

- uses: actions/setup-python@v5
if: steps.source-access.outputs.can_verify == 'true'
with:
python-version: '3.11'

- name: Regenerate self-test reference
if: steps.source-access.outputs.can_verify == 'true'
working-directory: docs
run: |
PYTHONDONTWRITEBYTECODE=1 npm run generate-self-test-reference -- \
--vast-cli ../vast-cli-source \
--self-test ../self-test-source

- name: Fail if generated page is out of sync
if: steps.source-access.outputs.can_verify == 'true'
working-directory: docs
run: |
if ! git diff --quiet host/self-test-reference.mdx; then
echo "::error::host/self-test-reference.mdx is out of sync with vast-ai/vast-cli or vast-ai/self-test."
echo "::error::Run 'npm run generate-self-test-reference -- --vast-cli PATH_TO_VAST_CLI --self-test PATH_TO_SELF_TEST' and commit the result."
git diff --stat host/self-test-reference.mdx
git diff -- host/self-test-reference.mdx
exit 1
fi

- name: Fail if Python bytecode was generated
if: steps.source-access.outputs.can_verify == 'true'
working-directory: docs
run: |
if find scripts -name '__pycache__' -o -name '*.pyc' | grep -q .; then
echo "::error::Generated Python bytecode should not be committed or produced by the docs generation check."
find scripts -name '__pycache__' -o -name '*.pyc'
exit 1
fi

- name: Report skipped private-source validation
if: steps.source-access.outputs.can_verify != 'true'
run: |
echo "Self-test reference sync check skipped because this fork PR cannot access private source repositories."
215 changes: 215 additions & 0 deletions HOST-DOCS-CLI-COMMAND-CHECK.md

Large diffs are not rendered by default.

244 changes: 244 additions & 0 deletions HOST-DOCS-COMMAND-ACCESS.md

Large diffs are not rendered by default.

106 changes: 106 additions & 0 deletions HOST-DOCS-QA-SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
# Host Docs QA summary

Date checked: 2026-08-27
Docs revision: `5088d76b89856185f3ab15a628e4152ff140ab26`
Review target: [vast-ai/docs PR #185](https://github.com/vast-ai/docs/pull/185)

## Outcome

The repeatable audit covers all 72 Host pages plus all 33 imported Host CLI/SDK snippets. It found three concrete publication problems; all three are corrected in this checkout. One low-risk generated-metadata drift and several areas that require named source-owner confirmation remain.

No paid rental, destructive command, privileged host change, production mutation, or credential-bearing operation was executed.

Fresh evidence now follows the [Oxiom V&V Evidence procedure](./verification/README.md). The current retained result is eight passing local-safe items, one failing accessibility item, and two blocked validation classes. This is strong evidence for the stated local/static claims, not a claim that paid-host runtime or private product behavior is fully validated. See the [current V&V summary](./verification/summary.md) and the preserved [failure/retest ledger](./verification/issues.md).

## Corrections made

| Priority | Problem | Evidence | Resolution |
|---|---|---|---|
| High | The three rendered Self-Test examples used `vast` instead of the supported `vastai` executable. | [`snippets/host/cli/self-test-machine.mdx:49`](./snippets/host/cli/self-test-machine.mdx#L49), lines 49–51 | All three examples now use `vastai self-test machine ...`; the registry verifier passes all 181 occurrences. |
| Medium | Host Notifications linked to an API-reference route Mint could not resolve. | [`host/notifications.mdx:64`](./host/notifications.mdx#L64); clean `mint broken-links` comparison | The Host page now links to the stable Notification Type Keys guide. The clean scan dropped from 100 links in 11 files to 99 links in 10 files, with no Host Docs link failure. |
| Medium | The Host Payouts image had empty alt text. | [`host/payment.mdx:19`](./host/payment.mdx#L19) | Added concise alt text verified against the image; `host/payment.mdx` no longer has a missing-alt finding. |
| Improvement | Host CLI setup did not link directly to the official installer. | [`host/cli-api-sdk.mdx:22`](./host/cli-api-sdk.mdx#L22), [`host/how-to-self-test.mdx:22`](./host/how-to-self-test.mdx#L22) | Added the official [Vast CLI installation page](https://cloud.vast.ai/cli/) while retaining the local authentication and verification guide. |

Repository-level accessibility also fails because the shared `#315FFF` light color has 3.94:1 contrast on the dark background. Mint reports 97 additional Host warnings for empty `<a id="..." />` named anchors; these should be triaged as an anchor/linter pattern rather than bulk-edited blindly.

## Verified results

| Check | Result |
|---|---|
| Rendered scope | 72 Host pages + 33 imported Host snippets |
| Full inventory | 474 unique targets / 529 occurrences: 176 command snippets, 77 error strings/categories, 18 thresholds, 203 behavior-claim candidates |
| Command execution access | All 176 commands reconcile into 5 mutually exclusive groups: 6 paid-only, 52 Host-root, 14 Host-context without root, 104 needing neither, and 0 needing both paid spend and Host root |
| Bash structure | 123/123 fenced Bash snippets parse with `bash -n` after inert placeholder substitution; nothing executed |
| CLI registry | 179 occurrences pass against clean current `vast-cli master@ecf32efa...`; 2 are command-family references; 0 actionable defects |
| Local Host images/routes/fences | No missing local images, missing `/host` routes, empty fences, or unclosed fences |
| Previously missing Pricing image | Present as `/images/host-listing-pricing-controls.webp` with descriptive alt text |
| Self-Test generated reference | Exact match at declared sources `vast-cli@d4316fb...` + `self-test@6f93fc4...` |
| Current Self-Test sources | Current CLI `ecf32efa...` + self-test `6f93fc4...` change only the embedded CLI SHA comment; rendered content is unchanged |
| Persona validation | 39/39 authored pages pass |
| Review-context tests | 9/9 pass |
| Review-server JavaScript syntax | Pass |
| OpenAPI validity/build drift | Valid; rebuild produces the same SHA-256 |
| Clean Mint broken links | 99 repository-wide across 10 files; 0 are in Host Docs |
| Clean Mint accessibility | Fails: 97 Host named-anchor findings plus shared color contrast; the Host Payouts missing-alt finding is fixed |
| Git whitespace | Pass |

## Reproduce the audit

Use Python 3, Bash, and a supported Node runtime. Node 24 was used here; system Node 26 was not used for Mint.

```bash
python3 -B scripts/inventory_host_docs.py
python3 -B scripts/inventory_host_docs.py --check

python3 -B scripts/verify_host_cli_commands.py \
--vast-cli /path/to/clean/current/vast-cli

npm run check-persona-chips
npm run test-review-context
node --check review-server.mjs

npx mint broken-links
npx mint a11y
npm run check-openapi
git diff --check
```

The CLI verifier exits `0` with the corrected `vastai` examples. The review-context tests bind a temporary localhost port; a restricted sandbox may need local-bind permission.

Installed Mint `4.2.234` does not have a `mint validate` command. Use `broken-links`, `a11y`, and `openapi-check`/`npm run check-openapi` explicitly.

## Commands that must not be treated as routine local tests

Use the generated [command execution access groups](./HOST-DOCS-COMMAND-ACCESS.md) to select an approved environment for every command. The grouped report preserves each stable inventory ID and source line; it is a planning aid, not authorization.

- `vastai self-test machine ...` creates a paid temporary instance. Run only with approved machine/account/budget and record CLI SHA, image digest, machine, instance, cost, and result.
- Listing, unlisting, maintenance, cleanup, defrag, delete, and default-job commands mutate account or machine state. Use a disposable/non-production target and record before/after state.
- Installer, storage, Docker, firewall, kernel, reboot, and GPU commands require a disposable supported host and may need root access.
- API-key and setup-key examples require approved test credentials and log/history redaction.
- GPU, network, Docker, and Windows PowerShell checks require the matching environment; a macOS syntax check cannot prove their runtime behavior.

## Product/source-owner confirmation still required

Passing local tests does not settle these claims:

| Area | Confirmation needed | Tracking |
|---|---|---|
| Machine errors | Complete public catalog, visible fields, impact level, and clearing/TTL behavior | [CON-1531](https://vastai.atlassian.net/browse/CON-1531) |
| Network and ports | Per-GPU vs per-instance semantics, TCP/UDP behavior, release timing, and exact failed-port evidence | [CON-1514](https://vastai.atlassian.net/browse/CON-1514) |
| Verification | Authoritative queue and wait-time behavior | [CON-1515](https://vastai.atlassian.net/browse/CON-1515) |
| Host Teams | Migration, registration permissions, billing role, earnings, and payout ownership | [CON-1581](https://vastai.atlassian.net/browse/CON-1581) |
| Pricing/business | Pricing positioning and ongoing content ownership | [CON-1256](https://vastai.atlassian.net/browse/CON-1256) |

## Detailed artifacts

- [V&V reviewer summary](./verification/summary.md)
- [V&V inventory, raw attempts, and reviewer workflow](./verification/README.md)
- [Full verification inventory](./HOST-DOCS-VERIFICATION.md)
- [Command execution access groups](./HOST-DOCS-COMMAND-ACCESS.md)
- [CLI command registry check](./HOST-DOCS-CLI-COMMAND-CHECK.md)
- [Machine-readable inventory](./host-docs-verification-inventory.json)
- [Machine-readable command access groups](./host-docs-command-access.json)
- [Spreadsheet-friendly inventory](./host-docs-verification-inventory.csv)
- [Machine-readable CLI check](./host-docs-cli-command-check.json)

Reviewer feedback should cite the stable inventory/check ID plus the source line. That makes each correction reproducible and avoids a vague “large docs change was not QA'd” discussion.
Loading
Loading