PCAT-31-01 deep review — September 30, 2026¶
The guide maps all 34 numbered objectives and expands all 17 answers. Four exact original Python files pass 25 application test methods and 31 probe checks in each normal/optimized mode, plus an actual one-method CLI selection. The probes retain intentional inner-suite failures, skips and expected failures as observed evidence; the application suite has none of those exclusions.
Canonical scope and conflicts¶
The complete indexed syllabus, including every numbered objective and the full MQC profile, was read after direct retrieval and the automated monitor timed out. The existing snapshot was manually compared and retained. Its 34 objectives group 7/4/5/8/7/3, while 42 exam items group 7/4/5/12/11/3 with weights 16.7/9.5/11.9/28.6/26.2/7.1. Block 2's heading says three objectives but lists four. Introductory 31-02/four-block/data-analysis prose conflicts with active 31-01/six-block testing content. The full PDF remains unread; no successful automated hash observation is claimed.
The complete credential page and FAQ identify active 31-01, 31-02 in development without a launch date found, six-year validity, 42 questions, 60 minutes plus NDA, 75% cumulative threshold, English/TestNow, USD 195 exam/225 retake option and a 15-day failed-retake wait. The complete indexed PCAT policy, revised January 23, 2025, agrees on 15 days in its specific rule but says seven after failure or pass in generic footer prose. Local 24-hour rescheduling and global unredeemed-voucher procedures differ. No booking or system test was performed.
Exact original executable evidence¶
The original catalog.py and service.py form a small multi-module application. test_catalog.py supplies requirement-derived expected token amounts, type/range/canonical-code partitions, copied input data, subclass construction, specific exceptions/causes, context ownership, decorators and isolated collaboration checks. Codes are nonempty stripped uppercase text, prices positive exact integers and quantities exact integers 1–5; booleans are excluded. A costs 7 and B costs 11 tokens, with explicit A×5=35 and B×5=55 oracles. Exact duplicate raw keys follow dict construction; canonical collisions are separately rejected. No payment or actual inventory operation occurs.
The four exact guide files, including probes.py, are extracted and matched with executed sources. CPython 3.13.14, coverage.py 7.15.4 and Ruff 0.16.4 were already installed. Discovery passes 25 methods with warnings promoted to errors normally and under -O; CLI -k boundary runs one method. Both probe runs pass 31 explicit checks and produce matching JSON. Selected E4,E7,E9,F,W,E501 lint at 79 columns passes all files. Commands, timestamps, full outputs, hashes and calculated results are retained in operation evidence. Subtest rows and inner demonstration cases do not inflate the application method count.
Class and generator contexts verify normal/body-error cleanup and propagation of the same exception. A failed entry performs its own partial-acquisition cleanup because exit is not called. Nested function decorators record inner/outer application and outer/inner/body/inner/outer invocation events while preserving metadata and exceptions. A class decorator retains identity, and classmethod construction preserves the actual subclass. These are bounded executed contracts, not a whole-language audit.
Mocked file contexts observe normal and parse-error exit; imported clock/file aliases are patched where looked up and restored. A MagicMock demonstrates the context protocol. An autospecced HTTP-shaped interface verifies its keyword-only timeout, complete payload, validation before side effects and exactly one attempted call with propagated failure. No transport exists and no real file or HTTP request is performed. Interface shape is not provider semantics.
Framework, coverage and TDD results¶
The grouped fixture trace is module setup, class setup, each method's setup/body/teardown/cleanup, class teardown/cleanup, module teardown/cleanup. A seeded setup error instead produces setup, second cleanup, first cleanup; body/tearDown do not execute. The result records one error, not a body assertion failure.
The marking probe reports three methods: two explicit unavailable-adapter demonstration skips and one expected body failure. Its wasSuccessful() is True despite no ordinary passing method. Repairing the body while retaining the marker produces one unexpected success and an unsuccessful result. A setup error remains an error even when the method is marked expected failure. These intentional results are inspected, not concealed as successful application behavior.
A selected empty-state test passes alone. The full two-test shared-list suite fails after a previous mutation; reversed order passes and hides the same defect. Fresh method state makes both pass. This demonstrates why selection and ordering need explicit scope and why shared mutable fixtures can mislead.
The original wrong upper-bound function accepts 1 <= quantity < 5 against an inclusive-five contract. Inputs 0/1 execute 4/4 statements and 2/2 branches, 100% combined coverage, and satisfy their selected oracles. A later independent input-5 check exposes expected True/actual False. Only that temporary module is measured, with no added exclusions or persistent coverage database. It is not whole-application, type-policy or method-coverage proof.
The actual red–green–refactor experiment implements chunking. Red validates but returns the entire list as one chunk, producing exactly one intended mismatch [[1,2,3]] versus [[1,2],[3]] among three test methods, with no errors. Green's slice loop and the refactored comprehension pass the same methods and fixed examples, including empty/remainder/size-one/oversized chunk and invalid inputs. All three sources/hashes/results are recorded. This is one original test-first slice, not five reviewed refactor changes or exhaustive equivalence. The Given/When/Then statement is explanatory; no stakeholder workshop or behave step binding occurred.
Learning and remaining work¶
The complete PT102 public outline separates free Core lessons/module tests from USD 49 Full/Pro interactive features, assessment and diploma. Its provider estimate is 30–40 hours at 5–7 hours/week, with 40+ advertised labs. The complete store product instead estimates six weeks at one hour/day, distinguishes minimum 12-month access from a 12-month voucher-redemption period, and claims a PCAT practice test and 20% discount. The credential FAQ still calls dedicated practice in development. These descriptions do not prove equivalent products or actual entitlement. Duplicated module numbering and repeated unittest prose under pytest are visible outline issues; canonical exam objectives control scope.
The complete Testing Goat landing/blog index and Cosmic Python preface were read; linked chapters/exercises were not. The guide labels author budgets rather than invented provider runtimes and does not infer current whole-book content from a dated progress post. No book code or enrolled course material was copied. Pytest is installed but unused; pytest-mock, pytest-cov, pytest-html and behave are absent and were not installed. Broader course tooling is distinguished from canonical scope.
Nineteen direct receipts comprise 16 successful responses and three errors. Complete indexed canonical fallback is distinguished from direct health; generic unpinned manuals were fetched but not reviewed. Selected pinned sections and three hash-verified reused text bodies have explicit reading boundaries. The full PDF, 12 broader labs, real integrations, independent inspection, stakeholder discussion and human content/accessibility review remain pending. No account, cart, purchase, booking, redemption, protected questions, readiness approval or independent career validation is claimed.