7.6 KiB
7.6 KiB
ATVM AGENTS Guide
This file defines how to operate and maintain the ATVM workspace in /home/aw/code/cds/atvm.
Workspace Layout
README.md- human entry point for the folder
scripts/- executable workflow assets
docs/setup/- setup/bootstrap procedure and run learnings
docs/automation/- ATVM Cypress automation procedure, examples, and run learnings
docs/workflow/- shared conventions for how the docs are maintained
inventory/- environment reference, credentials, IP allocations, and inventory indexes
archive/imported-notes/- preserved original long-form source material
Authoritative Sources
- Setup/bootstrap procedure:
docs/setup/guide.md
- Setup/bootstrap learnings:
docs/setup/run-learnings.md
- Automation execution procedure:
docs/automation/guide.md
- Automation command examples:
docs/automation/examples.md
- Automation run learnings:
docs/automation/run-learnings.md
- Workspace conventions:
docs/workflow/conventions.md
Setup Track Defaults
- ATVM static IP target:
192.168.3.191/22 - Gateway:
192.168.0.1 - DNS:
8.8.8.8,8.8.4.4 - Default Linux setup credential source:
/home/aw/code/cds/.env.credentials.localviaATVM_TARGET_USERandATVM_TARGET_PASSWORD - Client log file:
atvm_setup_script.log - Treat
192.168.3.191as the default ATVM target host reference. - For SSH to
192.168.3.191, ignore host key mismatch by default with-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null. - For Linux SSH to
192.168.3.191, source/home/aw/code/cds/.env.credentials.localand useATVM_TARGET_USERplusATVM_TARGET_PASSWORDunless explicitly overridden. - Use
ATVM_WINDOWS_TARGET_USERplusATVM_WINDOWS_TARGET_PASSWORDfor Windows guest access to the same ATVM target IP unless explicitly overridden.
Automation Track Defaults
- Controller host:
atvm-cypres-vm-1 - Controller IP:
192.168.3.190 - Controller credential source:
/home/aw/code/cds/.env.credentials.localviaATVM_CONTROLLER_USERandATVM_CONTROLLER_PASSWORD - Detailed test artifact root on controller:
/root/cdc-e2e-cyp-12.17.4/cypress/cmcReporter - Default Mattermost status destination config:
/home/aw/code/cds/.env.credentials.local - Default plugin:
--use_specified_plugin iscsi - Always include
--ignore_force_shutdownunless explicitly told not to. - Always include
--test_partitionunless explicitly told not to. - Default config family:
gold - Do not auto-add the maintained
--exclude_partial_matchblacklist when the operator explicitly targets named VMs with--specify_vms. - Even for explicit
--specify_vmsrequests, first check whether any requested VM is on the maintained blacklist and stop if it is.
Required Operating Rules
- Never run setup without operator-provided
--expected-ipand--expected-hostname. - Keep static IP configuration as the final setup step.
- Before any automation run, always check whether automation is already running.
- Always show exact planned ATVM commands before execution.
- Never execute setup or automation commands that require approval until the operator explicitly approves them.
- For ATVM run approvals, treat
approveas run-with-watcher andapprove without watcheras run-without-watcher. - Treat git/commit requests as a separate approval gate.
- Follow
/home/aw/code/cds/git-guide.mdfor commit-request handling, including the rule that phrases such ascreate me a git,create a git,create a git description,make me a git,make a git,make me a git description,create me a git description, and close variations are prepare-only until the operator explicitly approves the displayed commit command. - Never execute
git pushfrom the assistant for this workspace. - After creating a local commit, stop and give the operator the exact manual push command reference, defaulting to
git push origin mainunless they explicitly ask for a different remote or branch. - Do not treat
approveafter a commit as permission to push; pushing requires separate explicit wording and still remains manual-reference-only unless the operator explicitly overrides this workspace rule. - After
cmc-templates.py, always verify that the generated spec files and the configspecPatternstill include every requested VM before startingrun-sorry-cypress.py. - If any requested VM is missing after template generation, stop and report the mismatch instead of launching the runner.
- Do not infer plugin behavior from the mere presence of plugin-specific strings or code blocks in a generated spec file.
- For plugin selection questions, determine expected behavior from the template/runtime gate such as
Cypress.env(...)conditions or other execution guards, and only treat it as a mismatch if the runtime logic would execute the wrong plugin path. - For
cmc-reboot, treat--use_specified_plugin bothas a separate confirmation gate, not a normal plugin selection. - When a planned reboot command uses
--use_specified_plugin both, warn that FC+iSCSI together may have a "chicken before the egg" timing issue where iSCSI disks are not attached before mTDI / CMC services start, and ask the operator to confirm thatbothis really intended. - Unless the operator explicitly reconfirms
bothforcmc-reboot, prefer onlyfcor onlyiscsi, not both. - When the watcher is requested, start the watcher before
run-sorry-cypress.py. - Do not start the runner before the watcher, because the watcher helper clears stale
/tmp/<build-name>.logand can delete the fresh live runner log if the runner starts first. - For host-level test detail and failed-test investigation, use
/root/cdc-e2e-cyp-12.17.4/cypress/cmcReporter, especiallylogs/,xml/, andmochawesome/. - Treat
/var/lib/atvm-run-watcher/<build>/state.jsonas cached watcher output, not the source of truth for a completed-run confirmation. - Before confirming a completed ATVM run status, verify in this order: live launch log, matching reporter artifacts,
Cloud Run Finishedsummary / Currents URL, then compare against saved watcher state. - If saved watcher state disagrees with the launch log or a replay of the exact artifacts through the current watcher code, treat the saved state as stale and do not report from it.
- Never confirm a completed ATVM run from
state.jsonalone. - If the operator asks for ATVM run status without mentioning Mattermost, respond locally only and do not post externally.
- If the operator asks to send ATVM run status to Mattermost, use
MATTERMOST_ATVM_WEBHOOKandMATTERMOST_ATVM_CHANNELfrom/home/aw/code/cds/.env.credentials.localby default and send the final status only after the run has fully completed, whether the run passed or failed. - Do not call out expected, harmless
systemctl reset-failed ... unit not loadedoutput in routine run updates; mention it only if it blocks startup or matters for debugging. - Treat
docs/automation/examples.mdas reference-only, not default operator intent. - Put reusable workflow rules in
guide.mdfiles. - Put dated lessons only in
run-learnings.mdfiles. - Keep durable environment reference in
inventory/. - Preserve imported long-form notes in
archive/imported-notes/; do not treat them as the primary runbook.
Maintenance Rules
- When changing workflow behavior, update the corresponding
guide.md. - When adding a reusable command pattern, update
docs/automation/examples.md. - When a run produces a new lesson, update the appropriate
run-learnings.md. - Keep filesystem paths in docs aligned with the actual repo layout.
- Do not remove detailed inventory or credential information from this workspace unless explicitly instructed.