Skip to content

lang: static/runtime guard coverage is inconsistent (optional bool, silent index none, dead SecretLookup) #453

Description

@pskry

Found while writing negative goldens for #446 - three cases where the checker and evaluator disagree about who guards what.

  1. Optional-bool inconsistency: if and ! on bool? are rejected statically (good), but &&/|| on bool? pass the checker and fail at runtime. Same class of mistake, two behaviors - the binary ops should be checked statically too.

  2. Runtime indexing silently yields none: evalIndex raises nothing for out-of-range list access, missing map key, or dynamically wrong key type; only static cases are caught by the checker. A typo'd map key propagates none into a config instead of erroring at the access site.

  3. lang.SecretLookup is a dead code: the errs.Code is defined but no path raises it - secret lookup failure has no lang-layer diagnostic. Either wire it or delete the code (relates to the dead-diagnostic invariant deferred in test: 4 step kinds have zero E2E fixtures (container, mount, run_set, unarchive) #444).

Metadata

Metadata

Assignees

No one assigned

    Labels

    impact/mediumImproves a real workflowkind/bugSomething is not working

    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