ISO Teaching & Learning Management System v1.5.0
Requirement revision: 20 October 2026, 8 pm

AUTOMATED RESULT
PASS: 74 tests, 454 assertions, PHPUnit 11.5.57.
Runtime: PHP 8.3.6; Laravel Framework 13.31.0; MariaDB 10.11.14.
The uploaded aicommy1_isotnl_db (3).sql was imported into a disposable local database. The original application key was retained privately for encrypted-record checks. Neither the live website nor the production database was modified.

DATABASE PRESERVATION
PASS: update_20oct_8pm_isotnl_db.sql imported twice.
PASS: the row values of all 19 original tables are unchanged after the repeat patch and transaction-based tests. The new attendance_dates table is the intended addition and is excluded from that original-table comparison.
PASS: existing encrypted record payloads and available snapshots remain readable.
The patch does not replace users, password hashes, enrollment, ISO records, approvals, signatures or Monday week_dates. It does not infer actual class dates from the calendar.

NEW WORKFLOWS
PASS: Lecturer sees Create module, can create a module and is assigned to it by the server; a forged other-lecturer assignment is ignored.
PASS: authorised module users, including the assigned moderator, can create, view, update and delete actual attendance dates. Unrelated users, dates outside semester bounds and stale versions are rejected.
PASS: teaching-date CSV preview/commit accepts non-Monday dates and does not change enrollment or week_dates. Exported date text is DD/MM/YYYY. Invalid ISO-format CSV dates and impossible dates are rejected. Changed date setup invalidates a pending import.
PASS: QF 8.7.1 drafts prefill enrollment and actual dates, with monthly groups of at most ten dates. Wednesday attendance passes submission validation. Explicit enrollment refresh preserves existing marks and adds students with blank marks.
PASS: QF 8.8.1, QF 8.8.2 and QF 8.10.2 copy selected enrollment identity and programme. Typed forged identity values cannot replace the selected student on create. Another module's enrollment is rejected.
PASS: QF 8.5.1 checkbox markup and saved Yes/No values.
PASS: TOS CSV round trip, new draft import, existing draft update, record CSV download, original PDF and workbook export.
PASS: TOS invalid weights, unknown CLO references and inconsistent marks are rejected. Approved targets, unrelated users and stale draft previews are rejected.
PASS: revised import card labels and 73 by 30 pixel profile thumbnail limits.

REGRESSION CHECKS
PASS: all three semester modes and Monday teaching-plan calendars.
PASS: teaching-plan CSV import/export, version checks and signed-record protections.
PASS: Lecturer and Programme Coordinator draft access; assigned Lecturer calendar controls retain master assignment restrictions.
PASS: editable revisions retain original records; submitted snapshots retain the original mode.
PASS: private evidence upload/download and unrelated-user access denial.
PASS: profile and institution signature persistence and invalid-image rejection.
PASS: create, view, edit, save, delete, original ISO PDF and audit PDF for every one of the 18 form codes; original Excel export for workbook forms.
PASS: guest redirection, main pages and Ollama connector using a simulated HTTP response.

BROWSER AND VISUAL CHECKS
PASS: desktop layouts for imports, attendance setup, new attendance, checklist, mentoring, Lecturer module creation and profile.
PASS: mobile layouts at 390 x 844 CSS pixels for imports, attendance setup, new attendance and module creation, with no document-level horizontal overflow. Wide ISO tables retain their intended internal horizontal scrolling.
PASS: checked checkbox sends No followed by Yes, with PHP retaining Yes; unchecked checkbox sends No. Dynamically added rows contain checkboxes.
PASS: enrollment selector copies student name into the editor.
PASS: selected-image preview works and computes maximum dimensions of 73px by 30px.
PASS: generated QF 8.8.1 and QF 8.10.2 PDFs visually reviewed for selected-student identity and programme placement.
PASS: README.pdf rendered and visually reviewed; nine pages without clipping.
Browser: headless Chrome for Testing 131.0.6778.204, used for local layout and control checks, not a claim about all current production browsers.

BUILD CHECKS
PASS: 49 application/configuration/route/test PHP files linted.
PASS: route registration and Blade compilation.
PASS: production Composer install and non-development platform requirements.
Bundled theme remains AdminLTE 4 with Bootstrap 5.
Production vendor dependencies are included; development dependencies are omitted from the delivered vendor folder.

LIMITS
No cPanel deployment, live Apache rewrite verification, physical printer check, actual Android/iOS device test, load test, exhaustive security audit or real Ollama inference was performed. The real hosting environment still requires the README acceptance checks. This release does not claim universal 100% correctness or ISO certification.
PDF form regions have finite capacities; oversized entries are reported rather than silently truncated. Example CSV academic content is illustrative and requires replacement and review.

REPRODUCTION
Install development dependencies with composer install. Import the uploaded SQL and the patch into a disposable database copy, retain its APP_KEY, configure phpunit-qa.xml for that copy and run:
php vendor/bin/phpunit -c phpunit-qa.xml
Never run the test suite against live data.
