ContractSpec docs

OSS-first docs

These docs teach the open system first: contracts, generated surfaces, runtimes, governance, and incremental adoption. Studio shows up as the operating layer on top, not as the source of truth.

Harness browser structured reads

Keyed browser get actions collect exact deterministic values while legacy unkeyed reads remain output-neutral.

field.key.label
Harness browser structured reads
field.version.label
field.type.label
field.title.label
Harness browser structured reads
field.description.label

Keyed browser get actions collect exact deterministic values while legacy unkeyed reads remain output-neutral.

field.tags.label
harness,browser,playwright,structured-output
field.owners.label
field.stability.label
public

Keyed reads

Add a non-empty `key` to a browser `get` action to collect its result in the step output. Keyed reads execute in authored order and return a plain object whose keys preserve that order. Values are strings, except a successful `text` read may return `null`.

`text`, `html`, and `value` require a selector.

`title` and `url` reject selectors.

Empty or duplicate keys and unsupported browser methods fail the step without

returning partial output.

Unkeyed `get` actions remain legacy no-ops and do not create step output.

Harness `json-match` assertions compare this object with exact deep equality; they do not coerce values or ignore missing, extra, or mistyped fields.