Flash v1 exercise contract

Snapshot
v0.2.0
Source path
components/flash/exercises/README.md
Tree
c41b976e0362

This directory contains the executable inventory for the complete Flash v1 user contract. v1.toml lists every user-reachable language, intrinsic, built-in, frontend, configuration, language-server, editor, process, platform, and active-documentation feature. Each entry points to a host exercise, an expected rejection case, or the FlashOS test that covers it.

run.fsh builds or reuses the product binaries and records the actions, inputs, expectations, observations, environment, and results. The case order and coverage map live in host-cases-v1.json. From the repository root, prepare the independent bootstrap and run the CI profile with the selected candidate runtime:

make flash-bootstrap
FLASH_V1_BOOTSTRAP_FSH="$PWD/build/flash-bootstrap/134635a5e1282b5d8455a4b2aeb754be5a3a77c1/fsh" \
  components/flash/target/debug/fsh components/flash/exercises/run.fsh \
  --profile ci

Add --no-build only after the workspace binaries and test fixtures have already been built. The smoke profile runs the direct assembled-script cases, while the CI and full profiles also run executable-boundary acceptance owners for PTY, configuration, frontend, language-server, platform, and documentation paths.

The native runner records its driving fsh 1.0.0 rather than a Python version and refuses source paths containing newlines because frozen-v1 Flash cannot iterate those paths without ambiguity. Flash 1.0 also lacks guaranteed scope-exit cleanup; an interruption or runtime-adapter failure may leave the runner's uniquely owned temporary directory for inspection.

evidence/host-v1.json is the retained host execution for the source digest recorded in that file. CI validates that the report still matches the current source inventory and reruns the complete CI profile. A host pass establishes only the recorded macOS or Linux environment; it is not FlashOS evidence.

FlashOS execution is owned by the versioned flashos-x86_64-target-matrix-v1.toml and its QEMU consumer. The matrix exercises the installed fsh and flash-language-server inside the exact candidate image. Signals remain an explicitly withheld capability. Physical-device qualification remains separate and requires exact-device read-only identification plus operator approval before any write.

The documentation inventory covers every fenced block in the active component overview and four canonical guides. Runnable language and scripting examples are assigned to assembled executable owners; output, protocol descriptions, architecture models, and operational commands are classified under their stronger validation or qualification gates. Adding or removing a block without updating the inventory fails CI.

The compatibility inventory is deliberately separate from the v1 contract. Pre-v1-only executable routes have been removed; retained internal machinery has an explicit v1-or-later owner. An unclassified production legacy marker fails validation.

This suite supports a bounded claim: the exact recorded candidate passed every listed action in each named available environment. It does not promise that arbitrary hosts, unlisted platform behavior, physical hardware, or future revisions work, and it is not release qualification by itself.

The Flash 1.0.0 release record binds this inventory to the component version, frozen conformance contract, public claims, and exact candidate workflow without expanding the suite's host, target, or hardware claims.

Documentation index