Skip to content

Maestro compat: assertTrue phase 1 — literal/${VAR}-lookup truthiness (expressions gated on #1292) #1295

Description

@thymikee

Context

assertTrue is entirely unsupported. Full upstream parity means evaluating arbitrary JS in the assertion (GraalJS) — that's gated on the #1292 decision. But there's a cheap, genuinely useful phase 1 that does NOT require it:

Phase 1 scope: assertTrue: ${VAR} (variable lookup) and literals, evaluated with JS truthiness on the resolved value. This covers the common CI pattern: runScript sets output.flagassertTrue: ${output.flag}. Upstream truthiness reference: their 065_when_true.yaml exercises ${undefined}/${null}/${0} falsy, ${123}/${'String'}/objects/arrays truthy — phase 1 needs the same truthiness table for looked-up values (which arrive as strings post-lookup; define and test the string-value truthiness rules explicitly: ''/'false'? — pin to upstream behavior for interpolated string results, add a layer-2-style vector or corpus flow for it).

JS expressions inside assertTrue keep failing loud, referencing #1292.

Repro

  • Corpus flow: scripts/maestro-conformance/corpus/upstream/067_assertTrue_pass.yaml
  • Declared divergences: FLOW_DIVERGENCES['upstream/067_assertTrue_pass'] and the assertTrue item in FLOW_DIVERGENCES['upstream/076_optional_assertion']

Acceptance

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions