Update workflow-preset to v3.2.0 - #81
Conversation
Assisted-by: GitHub Actions (autonomous)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8fb2e652c8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| value = decision.get("decision") | ||
| if value not in ADAPTATION_DECISIONS: | ||
| raise ValueError(f"{context} has invalid adaptation decision") |
There was a problem hiding this comment.
Require complete adaptation decision outcomes
For preserve decisions—and for adapt/add/omit decisions with a valid source—the validator checks only the decision enum and references, so a row with no outcome, acceptance, or status is accepted. This permits a supposedly specified adaptation policy whose dimensions provide no observable target behavior or acceptance criteria for Plan to implement; require these fields for every non-blocked dimension and require status == "specified".
Useful? React with 👍 / 👎.
| target_refs = set(map(str, _require_list(exception, "target_refs", context))) | ||
| if not target_refs.issubset(set(target_ids)): | ||
| raise ValueError(f"{context} references unknown target") |
There was a problem hiding this comment.
Enforce reciprocal pixel-exception bindings
When an exception names any existing target, this check accepts it without confirming that the target lists the exception or that the target's profile declares it. Consequently an exception can claim PXT-002 while being applied through PXT-001.exception_refs, or a target can omit an exception that claims to weaken it, leaving downstream Plan mappings with contradictory exception scope. Validate the exception/profile/target relationship in both directions.
Useful? React with 👍 / 👎.
| if "threshold" not in envelope: | ||
| raise ValueError(f"{context} acceptance envelope lacks threshold") |
There was a problem hiding this comment.
Reject invalid acceptance thresholds
For every mode except pixel-exact, merely having a threshold key is considered valid, so values such as -4, "TBD", or None pass the contract. In a pixel-tolerant or perceptual profile these values do not define a usable measurable envelope and can let an incomplete specification proceed into Plan; validate that thresholds are finite, numeric, and non-negative, with any mode-specific bounds.
Useful? React with 👍 / 👎.
Summary
presets/catalog.jsonandpresets/catalog.community.jsonmetadata.Community submission
Validation evidence
python3 -m pytest tests/test_presets.py -k 'workflow_preset'Agent disclosure
Prepared and posted on behalf of @bigsmartben by OpenAI Codex (GPT-5, autonomous).