# Drawing sheets and retained integration tests

POST `/v2/vastu/report/drawing-sheet` with `{plan, titleBlock:{project,architect}, format:"html"}`. Metric normalized plans use `units:"metres"`, `trueNorthDeg`, `plot.polygon` and `rooms:[{id,name,polygon}]`. Add `paperSize:"A3"|"A2"`, `scaleDenominator:50|100|200`, `dimensions`, `zoneOverlay` and `fieldEvidence:[{label,note,roomId?,imageDataUrl?}]`. Evidence accepts embedded PNG/JPEG only, up to six 512-KiB images of at most 4096 pixels. Label/note limits are 80/120 bytes. Unknown request/title/evidence fields are rejected.

The default is A3 landscape at 1:100: one metre is exactly ten millimetres on paper. The sheet includes edge/overall dimensions, north arrow, scale bar and project/architect title block. Directional overlays are labelled modern drawing convention. Plans too large for the chosen paper/scale are rejected, never resized. Print at 100%. `format:"pdf"` returns a renderer-verified `pdfBase64`; HTML is always included. The operation costs $0.01 after successful output. 4xx and rendering errors cost zero; retain Idempotency-Key for retries. Rendering uses the existing bounded PDF renderer and cannot fetch external photo URLs.

Authenticated sandbox keys alone access POST `/sandbox/v2/vastu/workspace/{properties,jobs,get,list,reset,webhook,report}`. These operations are explicitly $0.00 and never invoke billing. Properties/jobs persist in an account-derived test namespace for seven days (maximum 100 records). Requests cannot choose an owner. Create properties with `{idempotencyKey,title?,input:<assessment-input>}`; create jobs with `{idempotencyKey,propertyId,outcome:"completed"|"failed"}`. Completed jobs run the existing deterministic assessment; controlled failure jobs persist a failure without charging. Read with `{propertyId}` or `{jobId}`, list/reset with `{}`. Reset deletes only the authenticated test namespace; it leaves live properties and other tenants untouched. Account erasure fences and removes test rows through the existing property-store erasure adapter.

`webhook` takes `{jobId,webhookSecret}` (16..256 bytes) and returns the exact `payload` and `headers`, including Vedika-Signature. The signature is HMAC-SHA256 over `timestamp + "." + raw body`. Secrets are never persisted. Delivery is caller replay: no callback URL or automatic external network request is accepted. Test sheets use `report` with `{drawing:<drawing-request>}` and HTML format. Image-model extraction and PDF rendering retain their live paid contracts.

The deployable `examples/vastu-reference-app` keeps API keys on its Node server, persists history in SQLite, supports manual/image/DXF input and verifies callback signatures before parsing JSON. Its README covers one-command startup and ordinary hosting. JavaScript, Python, Swift, Kotlin and Flutter expose drawing and workspace methods. New API and renderer source must be deployed before these capabilities are available; this change does not deploy infrastructure.

Drawing sheets accept plan units `m`, `ft`, `mm` and `in` (legacy `metres` remains supported). Coordinates normalize once to metres; physical paper dimensions remain in millimetres. Responses include `inputUnits`, `units: "m"` and `metresPerInputUnit`. Plot and room polygons may contain `holes` or `multipolygons`; SVG boundaries and zone clipping preserve every courtyard and separate wing. Directional overlays use the net-area centroid. Rooms must stay within the filled plot region.
