Skip to content
13 changes: 8 additions & 5 deletions specifications/OCPS-1.0.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# OCPS 1.0: The Baseline

**Status:** FINAL
**Revision:** 1
**Date:** 2025-10-28
**Revision:** 2
**Date:** 2025-11-21

## 1. Introduction

Expand Down Expand Up @@ -97,7 +97,7 @@ In OCPS 1.0, the special characters are combined within a single field to create

1. **List Separation (`,`)**: The comma is the top-level separator. It breaks a field into a list of independent sub-expressions. The final set of values for the field is the union (logical `OR`) of the results of each sub-expression.
2. **Range (`-`) or Wildcard (`*`)**: Within each sub-expression, a range (`10-20`) or a wildcard (`*`) defines the initial set of numbers. A wildcard is equivalent to the full possible range for that field (e.g., `0-59` for minutes).
3. **Step (`/`)**: The step is an operator that filters the set generated by a range or wildcard. The resulting set includes the lowest value of the range, plus every S-th value after that which also falls within the range.
3. **Step (`/`)**: The step is an operator that filters the set generated by a range or wildcard. The resulting set includes the lowest value of the range, plus every N-th value after that (where N is the step value) which also falls within the range.

---
## 6. Operational Semantics
Expand All @@ -115,8 +115,10 @@ A parser MUST reject a pattern if any numeric value falls outside the allowed ra
#### Invalid Ranges
A range `A-B` where `A` is greater than `B` is invalid. A parser MUST treat this as a parsing error.

#### Invalid Step Values
A step value of `0` has no logical definition and is invalid. A parser MUST reject any field containing `/0` as a parsing error.
#### Invalid Step Syntax
A parser MUST reject the following step-related patterns as parsing errors:
* A step value of `0` (e.g., `*/0`), as it has no logical definition.
* A step operator not preceded by `*` or a full range `A-B` (e.g., `/30`, `0/15`, or `10/10`). The `/` character MUST be preceded by either `*` or a range in the form `A-B` where both A and B are specified (e.g., `*/30` or `10-50/10` are valid, but `/30`, `0/15`, or `10/10` are not).

#### Impossible Date Combinations
A pattern containing a valid but impossible date (e.g., `* * 31 2 *` for February 31st) MUST be considered syntactically valid and MUST NOT cause a parsing error.
Expand All @@ -140,4 +142,5 @@ A compliant parser or scheduler MUST interpret the pattern against the implement

| Revision | Date | Author(s) | Description of Changes |
| :--- | :--- | :--- | :--- |
| 2 | 2025-11-21 | The OCPS Authors | Clarified step notation syntax requirements: step operator (`/`) must be preceded by either wildcard (`*`) or range (`A-B`). Added explicit parsing error for invalid syntax like `/30`. |
| 1 | 2025-10-28 | The OCPS Authors | Initial publication of the 1.0 specification. |