Skip to content
PROCTOR Form 0.1

Exam log · 2026-10-28 · 82 candidates

82 Wayne State applications run through PROCTOR on 2026-10-28: 0 passed, 81 flagged, 1 tool error.

Each app was copied with its secrets stripped and checked inside php:8.4-cli, with Wayne State's servers out of reach, against CREED's policy for that date. The first sitting turned up 31 apps PROCTOR could not grade at all. That was fixed and every app sat the exam again; these are the retake's marks.

  • PROCTOR 0.2.0 + fix
  • commit efc2341
  • policy CREED, 2026-10-28
  • image php:8.4-cli
  • median per app 23 s

Part 1 · The tally

Eighty-two papers, marked

An app passes when PROCTOR exits 0: no failing finding. It is flagged when PROCTOR exits 1 with a report that names each problem, its rule and its file. That is PROCTOR doing its job. A tool error is a crash, a report that does not parse, or any other exit code; those are PROCTOR's fault.

  • 0Passedno failing finding
  • 81Flaggeda report with at least one fail
  • 1Tool errorout of memory on one very large tree; fix queued
  • 0Not applicableevery app could be checked

82 applications, one square each: 0 passed, 81 flagged, 1 tool errors, 0 not applicable.

One bubble per application, in the order of its anonymous id. This repository is public, so the apps are counted and never named.

Part 2 · The marks

What PROCTOR wrote in the margin

How many of the 82 apps got each rule at least once. The per-app reports stay in the stack's internal record.

Fails: these stop a pipeline

  • php-floor: PHP floor below a supported line, or none76
  • lock-committed: no composer.lock in the repo30
  • composer-audit: a security advisory20
  • unbounded-constraints: a * or open range13
  • destructive-deploy4
  • ci-pipelines: no pipeline file2

Warnings: these get a comment

  • ci-pipelines: no GitLab pipeline78
  • composer-audit: advisory warnings24
  • portability: a host path in code14
  • mysql56: schema MySQL 5.6 cannot run8
  • portability: a file PHP 8 cannot parse8
  • composer-audit: could not run8
  • composer-audit: abandoned package7

Every one of the 82 reports was valid JSON with a rule id on each finding. The same run through PREFLIGHT's proctor component produced valid GitLab Code Quality JSON for 81 apps, the 82nd being the memory crash below.

Part 3 · The retake

The first sitting failed PROCTOR, not the apps

31 of the 82 apps are plain PHP with no composer.json. On the first run PROCTOR refused them with exit 2, "not a PHP project", which is no verdict at all for the apps that most need one.

First sitting and retake
SittingPROCTORFlaggedTool errors
First0.2.0, the day before its tag5131
Retake0.2.0 + "apps without composer.json get a verdict"811

The fix gives such an app a failing php-floor finding and runs every other check on its files. It shipped with a fixture test before the retake. The retake then found the one remaining error: on an app with a very large PHP tree, the parser ran past PHP's default 128 MB and the process died with exit 255. Raising PROCTOR's memory limit is queued with a test.

Part 4 · Sit it yourself

Run it on your own app

Install PROCTOR as a dev dependency and point it at CREED's policy.

Install

composer require waynestate/proctor --dev

Check, with the date pinned so the result repeats

vendor/bin/proctor check --path=. --format=json --policy=policy.json --today=2026-10-28

The proof harness ran exactly this inside php:8.4-cli on a throwaway copy of each app, with .git, auth.json and every .env removed first, and logged each app as one line (tool commit, unit id, command, exit code, duration, outcome) in the stack's internal record.

Part 5 · Rules of the exam

What this does not prove

  • PROCTOR reads the repository. It does not see what runs on a server, so an app whose host is newer than its composer.json says still fails php-floor.
  • The unpatched check needs --php-runtime, the PHP that serves the app; the run did not pass one, so that check stayed quiet.
  • The report's own version field still says 0.1.0 on the 0.2.0 tree. The marks are right; the label is queued for a fix.
  • Nothing reached a database, a sign-in service or any Wayne State server.
  • One tool error stands until the memory fix ships.

Eighty-one papers handed back in red. The proctor saw that.