Test plan
EVT, DVT and PVT test plans and fixture requirements.
All action kinds · Project workflow
- Kind:
test_plan - Availability: available
- Registry cost category:
one_call - Lifecycle stage IDs:
prototype_and_testing,evt,dvt,test_fixture_development,pvt
The cost category describes model work in the registry; it is not a manufacturing price or a monetary quote. Read maglev actions kinds --json for current availability and schemas.
What this does
Section titled “What this does”Returns a draft for review against the project brief and supporting evidence. A completed action does not establish that a physical test, production gate or engineering review has passed.
Send these fields inside the request’s input object. Use only facts you have, and keep unresolved requirements explicit. Optional fields with defaults can be omitted.
| Field | Type | Required | Details |
|---|---|---|---|
builds |
string[] | No | Max items 3 |
criticalFunctions |
string[] | No | Max items 40 |
environment |
string | No | Max length 2000 |
Input JSON schema
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "builds": { "maxItems": 3, "type": "array", "items": { "type": "string", "enum": [ "evt", "dvt", "pvt" ] } }, "criticalFunctions": { "maxItems": 40, "type": "array", "items": { "type": "string", "maxLength": 500 } }, "environment": { "type": "string", "maxLength": 2000 } }}Request the action
Section titled “Request the action”Prepare action.json with kind: "test_plan" and an input object matching the schema above.
Replace PROJECT_ID with your saved project ID. Use a new idempotency key for new work and retain it for an identical retry.
maglev actions request PROJECT_ID --input action.json \ --idempotency-key example-test-plan-001 --jsonRead action.status, action.output, deliveries and any task in the response. Model actions can take several minutes. After a timeout, check saved actions before retrying. See request and recovery behavior.
Output
Section titled “Output”The schema below describes action.output.result. The saved action.output envelope also contains draft: true and a note. It can be null while an action is running or after a failure; check the status before reading the result. Null or missing facts are unknown; preserve source references and open questions.
| Field | Type | Required | Details |
|---|---|---|---|
builds |
object[] | Yes | |
builds[].build |
string | If parent supplied | One of: evt, dvt, pvt |
builds[].purpose |
string | If parent supplied | |
builds[].quantity |
integer or null | If parent supplied | |
builds[].basis |
string | If parent supplied | Where the quantity comes from, or why it is null |
builds[].exitCriteria |
string[] | If parent supplied | |
builds[].tests |
object[] | If parent supplied | |
builds[].tests[].name |
string | If parent supplied | |
builds[].tests[].method |
string | If parent supplied | |
builds[].tests[].passCriteria |
string | If parent supplied | Numeric only where the request gives the number, else the limit is TBD and who sets it |
fixtures |
object[] | Yes | |
fixtures[].name |
string | If parent supplied | |
fixtures[].purpose |
string | If parent supplied | |
fixtures[].owner |
string | If parent supplied | One of: factory, customer, unknown |
assumptions |
string[] | Yes | What was assumed in order to write this draft |
openQuestions |
string[] | Yes | What only the founder, a factory or a lab can answer |
sources |
string[] | Yes | Repo paths of the passages actually relied on |
Output JSON schema
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "builds": { "type": "array", "items": { "type": "object", "properties": { "build": { "type": "string", "enum": [ "evt", "dvt", "pvt" ] }, "purpose": { "type": "string" }, "quantity": { "anyOf": [ { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, { "type": "null" } ] }, "basis": { "type": "string", "description": "Where the quantity comes from, or why it is null" }, "exitCriteria": { "type": "array", "items": { "type": "string" } }, "tests": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "method": { "type": "string" }, "passCriteria": { "type": "string", "description": "Numeric only where the request gives the number, else the limit is TBD and who sets it" } }, "required": [ "name", "method", "passCriteria" ], "additionalProperties": false } } }, "required": [ "build", "purpose", "quantity", "basis", "exitCriteria", "tests" ], "additionalProperties": false } }, "fixtures": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "purpose": { "type": "string" }, "owner": { "type": "string", "enum": [ "factory", "customer", "unknown" ] } }, "required": [ "name", "purpose", "owner" ], "additionalProperties": false } }, "assumptions": { "type": "array", "items": { "type": "string" }, "description": "What was assumed in order to write this draft" }, "openQuestions": { "type": "array", "items": { "type": "string" }, "description": "What only the founder, a factory or a lab can answer" }, "sources": { "type": "array", "items": { "type": "string" }, "description": "Repo paths of the passages actually relied on" } }, "required": [ "builds", "fixtures", "assumptions", "openQuestions", "sources" ], "additionalProperties": false}