Update workflow-preset to v3.2.0 - #82
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".
| if not requirement_ids.issubset(set(all_requirement_ids)): | ||
| raise ValueError( | ||
| "all_spec_requirement_refs omits a UI/VIS requirement" | ||
| ) |
There was a problem hiding this comment.
Require a structured row for every projected UI ref
When all_spec_requirement_refs contains an additional UI-* or VIS-* ref, this one-way subset check allows a source to project that ref even if it has no entry in requirements; _validate_sources then accepts the projection against the broad list, so the requirement bypasses all statement, evidence, acceptance, and status validation. Require equality for UI/VIS refs, while still allowing non-UI refs in the full Spec inventory.
Useful? React with 👍 / 👎.
| 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.
Validate complete adaptation decision rows
For any ordinary allowed decision such as preserve or adapt, the validator accepts a row with no observable target outcome, acceptance condition, or status because only the decision enum and refs are checked. Such an incomplete dimension can therefore make a policy appear specified and flow into X2-B as an actionable ADP-* contract; require the row fields and specified status, or a stable blocker where applicable.
Useful? React with 👍 / 👎.
| if derivation == "conflicting" and len(evidence_locators) < 2: | ||
| raise ValueError(f"{requirement_id} conflicting requirement needs two locators") | ||
| if derivation in {"unresolved", "conflicting"}: | ||
| _require_blocker(requirement, requirement_id) |
There was a problem hiding this comment.
Verify evidence behind conflicting requirements
When a requirement is classified as conflicting, two arbitrary strings in evidence_locators satisfy this branch because locator membership in the cited sources' supplied_facts is checked only for observed and derived rows. This permits a fabricated conflict to block the workflow despite having no supplied conflicting evidence; validate conflicting locators against the referenced sources as well.
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
If a PEX-* exception names a valid target here but that target and its profile omit the exception from their exception_refs, validation still succeeds because only forward target-to-profile membership is checked. The exception can then be inventoried downstream as accepted even though the target never opted into its divergence; require every exception's target refs to reciprocally include the exception and belong to a profile that declares it.
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).