@fro.bot/systematic 3.14.5 → 3.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -210,15 +210,27 @@ validating it. This ordering makes the artifact validatable at all: without
210
210
  `schema_version`, the validator reports the legacy status (exit 3) rather than
211
211
  a real validation result.
212
212
 
213
- After writing `review-summary.json`, the parent checks whether the
214
- `systematic` executable is available on the invoking environment's `PATH`.
215
- When it is available, the parent runs
216
- `systematic validate-review-artifact <path>` against it. The executable ships
217
- through the npm package's `bin` entry; a harness that installs bundled
218
- markdown without that package will not have it. When it is unavailable, the
219
- parent records `validation.status: "unavailable"` and a `validation.reason` in
220
- the run record. When the executable is available and the parent does not run
221
- it, that is `validation.status: "not_attempted"`, also with a reason. The
213
+ After writing `review-summary.json`, the parent resolves and runs a validator
214
+ in this order: the bundled `systematic-validate-review-artifact <path>` command
215
+ first, then the npm-installed `systematic validate-review-artifact <path>`
216
+ command. Both can be present at once. The bundled command ships beside the
217
+ prose being executed, so it is the one whose behavior matches the contract.
218
+ The parent runs the first command it resolves and reads its result; it does not
219
+ merely test whether a name is on `PATH`, because a version-manager shim can be
220
+ present there and fail on every invocation.
221
+
222
+ The command runs from the repository root. Containment resolves
223
+ `.context/systematic/ce-review` relative to the working directory. If it runs
224
+ elsewhere, the CLI reports that the directory is unavailable and the parent
225
+ records that reason. This is visible degradation rather than silent success,
226
+ so it is acceptable. If neither command is available, the parent records
227
+ `validation.status: "unavailable"` with a reason that the validator is absent.
228
+ If a resolved command is present but cannot be started or otherwise fails
229
+ before returning a validation result, the parent records the same status with
230
+ a distinct invocation-failure reason. Neither case is `failed`: that value is
231
+ reserved for a validator that ran and found that the artifact did not conform.
232
+ When a validator is available and the parent does not run it, that is
233
+ `validation.status: "not_attempted"`, also with a reason. The
222
234
  `validation.status` values are `passed`, `failed`, `unavailable`, and
223
235
  `not_attempted`; `validation.reason` is required for every status except
224
236
  `passed`, where it is forbidden.