makepad/skills/makepad-game-director/references/evidence-manifest.md
Arena Agent fe21c07d84 skills: add Makepad game skills pack ported from threejs-game-skills
Nine agent skills for building Makepad/Rust games, ported from
majidmanzarpour/threejs-game-skills. Same director-routed workflow and
premium bar; runtime rewritten for this fork's game crates.

- makepad-game-director        entrypoint, routing, continuity, asset probe
- makepad-gameplay-systems     loop, movers vs rigid bodies, input, camera, netplay
- makepad-aaa-graphics-builder lighting, shaders, budget, visual scorecard
- makepad-game-ui-designer     HUD, menus, touch and XR UI
- makepad-debug-profiler       defect bisection and profiling
- makepad-qa-release           verification ladder, evidence, packaging
- makepad-3d-generator         CC0 model search, casts, procedural geometry
- makepad-image-generator      texgen textures, palettes, sky, icons
- makepad-audio-generator      sample bank, mixer, material impacts, 3D audio

Written against the real APIs in libs/game/*, libs/sim and apps/arcade:
the game.* verb table, GameRenderer adaptive quality, the packed 6-float
GameMeshVertex layout, script_mod! splash styling, makepad-test driving,
and the BUDGETS.md numbers. No paid generation API is required - the CC0
library plus seeded makepad-game-gen replaces them.

Includes install.sh (Codex/Claude), validate-skills.sh and a repo-aware
probe_assets.sh; both scripts verified against this checkout.
2026-09-05 21:18:58 +00:00

81 lines
3.2 KiB
Markdown

# Evidence manifest
What counts as proof. "It should work" is not on this list.
## Levels of evidence, weakest to strongest
1. **Compiles**`cargo check -p <crate>`. Necessary, never sufficient. Makepad resolves the splash DSL at runtime, so a widget or style error survives `cargo check` and appears on launch.
2. **Unit-tested**`cargo test -p <crate>` for a Cx-free crate. Strong for rules: physics, generation, scoring, netcode, merge.
3. **Driven** — a `makepad-test` test that launches the real app, sends real input, and asserts on `widget_snapshot()` or a log line.
4. **Seen** — a `screenshot()` from that run, inspected by you, at the actual target aspect ratio.
5. **Measured** — frame time, draw calls, instance bytes, entity counts, against `apps/arcade/BUDGETS.md`.
6. **Shipped**`--release` build succeeds and runs.
## Required by change size
| Change | Required |
| --- | --- |
| Constant, copy, colour | 1 |
| Rule change in a Cx-free crate | 1, 2 |
| New mechanic | 1, 2, 3 |
| Visual or UI change | 1, 3, 4 |
| Performance work | 1, 5 (before *and* after) |
| Full game or premium pass | all six, plus the scorecard |
## Capturing each
**Unit test** — the Cx-free crates are the point of the architecture:
```bash
cargo test -p makepad-game-sim
cargo test -p makepad-game-gen
cargo test -p makepad-game-blocks
```
**Driven test**`makepad-test` gives `TestApp` with `type_text`, `press_key`, `touch_down`, `screenshot`, `widget_dump`, `widget_snapshot`, `wait_for_log_contains`:
```rust
use makepad_test::{makepad_test, TestApp, KeyCode};
#[makepad_test]
fn player_scores_on_pickup(app: TestApp) {
app.wait_for_log_contains("game: ready");
app.press_key(KeyCode::ArrowUp);
app.wait_for_log_contains("score: 1");
let shot = app.screenshot();
println!("evidence: {}", shot.display());
}
```
**Headless probe** — for render and perf claims without a window:
```bash
cargo run -p makepad-arcade --example bigworld_probe --release
```
**Measurement** — read from the renderer, do not estimate:
```rust
renderer.frame_p90_ms(); // Option<f32>
renderer.quality_level(); // adaptive quality actually applied
renderer.quality_reason(); // why it dropped
```
`RenderStats::instance_floats` is the authority on instance stream width — the BUDGETS numbers were taken from the compiled shader, not counted by hand. Do the same.
**Asset resolution** — prove the scene is not silently on primitives:
```rust
assert!(renderer.model_is_loaded("kenney/racing/vehicle-truck-yellow"));
```
## Screenshot discipline
- Capture at the target aspect ratio, not the default window.
- Capture the states that exist: menu, playing, paused, win, lose. A premium claim with only one screenshot is unverified.
- Look at them. An agent that captures a screenshot and does not describe what is in it has produced a file, not evidence.
- Name them for what they show: `artifacts/shots/playing-desert-1920x1080.png`.
## Reporting
Keep detailed evidence and the scorecard in `artifacts/`. Keep the final answer focused on what works and what the remaining risks are. State plainly what you could not run and why — an unrun check reported as passing is the one failure mode that destroys trust in everything else in the report.