All checks were successful
Build, test and publish / verify (push) Successful in 8m54s
73 lines
4.5 KiB
Markdown
73 lines
4.5 KiB
Markdown
> Historical validation evidence from application commit `bd898e92d22f6c412e671908770f4d89c8ae12bc`. Commands retain their original paths; current tooling is documented in README.md.
|
|
|
|
# S18 implementation validation
|
|
|
|
Validated on 2026-11-03 against the confirmed S18 specification.
|
|
|
|
## Automated checks
|
|
|
|
- JDK 25 `mvn clean verify`: passed, 52 backend tests and 19 standards-tool
|
|
regression tests, with no failures or skipped tests.
|
|
- Clean backend line coverage: 1175/1215 lines, 96.70781893004116%, above the
|
|
exact 80% gate. No handwritten-code exclusions were introduced.
|
|
- Frontend `npm test`: 24 tests across six files passed.
|
|
- Frontend production build and ESLint: passed.
|
|
- Playwright with the real REST backend: all three scenarios passed, covering school management,
|
|
shared memberships, automatic scheduling, manual draft editing and finalization,
|
|
a coach accompanying preschoolers across dates, and connection-error recovery.
|
|
|
|
Focused solver tests cover showcase bookends (including extra showcases), single
|
|
and absent showcases, changing gaps, coach exemptions, infeasibility, the strict
|
|
priority of showcase attendance over balance, and style/age scores. Lifecycle
|
|
and HTTP tests cover skipped empty groups, first-show-date ages, retained preferredDayParts after
|
|
daypart removal, atomic structural validation, invalid drafts, final status
|
|
invalidation, stale solver results, timeout preservation, coach identity links,
|
|
and ordered JSON round trips including version-2 migration.
|
|
|
|
## Manual standards assessment
|
|
|
|
The standards report passes without new waivers. Retained review signals were
|
|
assessed against `CODING_STANDARDS.md` and `docs/backend-review.md`:
|
|
|
|
- `GroupRequirement`, `SchedulingInput`, `Performance` and `ShowView` carry six
|
|
or seven related snapshot/API values. Collections are defensively copied;
|
|
coach identity and group membership use IDs across the solver boundary.
|
|
The larger record shapes make the scheduling contract explicit. Other added
|
|
records are small. `OrderedAssignments` deliberately owns mutable OR-Tools
|
|
variables and arrays internally during one solve; it is not an API snapshot.
|
|
- `ScheduleRules` has cyclomatic signals for independent configuration checks
|
|
and showcase cases. Each rule family is isolated in a short method and shared
|
|
between finalization and solver-result validation.
|
|
- `ShowSchedules` retains branching for nullable initial settings, retained preferredDayParts,
|
|
and structural draft validation. It stages complete replacement lists before
|
|
mutation and uses the existing aggregate lock. It separates schedule lifecycle
|
|
from the already broad `SchoolManagementService` aggregate owner.
|
|
- The aggregate owner's fan-out and public-method signals are retained for its
|
|
repository and transaction ownership. Scheduling-input preparation, coach
|
|
identity operations, lifecycle rules and scoring reside in separate focused
|
|
classes. Its new revision operation invalidates final status as well as pending
|
|
solver results.
|
|
- `SchoolSnapshot` retains orchestration size, fan-out and cognitive signals for
|
|
validating and reconstructing an entire graph. Import resolves coach/dancer
|
|
links explicitly, retains order, rejects unknown references, accepts invalid
|
|
assignment drafts and resets imported final status. Graph construction remains
|
|
staged before repository mutation.
|
|
- REST resource fan-out is mainly endpoint annotations, request/view types and
|
|
domain/service collaborators. OR-Tools stays inside the solver package.
|
|
`SchedulingInputs` uses domain types to produce one immutable solver snapshot.
|
|
- `OrToolsSchedulingEngine` retains a length/cognitive signal for the ordered
|
|
optimization stages and their feasible/optimal/timeout outcomes. Keeping the
|
|
incumbent and freezing only proven optima preserves strict objective priority
|
|
and valid results within one total deadline.
|
|
- Solver objective helpers retain five-parameter review signals where a model,
|
|
variables, group pair and objective coefficient are needed. Replacing those
|
|
with additional transient wrapper types would obscure the constraint mapping.
|
|
Common adjacency penalties are algebraically removed without changing scores.
|
|
- Test fan-out and scenario length signals reflect full HTTP/import/concurrency
|
|
workflows. Shared fixture setup is extracted where it aids readability; every
|
|
executable remains within the blocking limits.
|
|
|
|
Public behavior is documented in `show-scheduling-rules.md`, the README and the
|
|
school JSON format reference. No new standards waiver, threshold change or
|
|
analysis exclusion is required.
|