Solver as a Service
Sign Up Now →Sign Up Now

Milestone 11: debug the complete loop

Preview

Debug from the outside in. At each layer, preserve the contract you observed.

Layer Check If it fails
Service GET /openapi.json, GET /api/v1/manifests Fix endpoint, authentication, or deployment before changing a manifest
Pack GET /api/v1/extensions, then find retail_rota in the manifest list Check enabled state and server-resolvable URI; registration alone is insufficient
Manifest Fetch the full manifest and run validate_manifest Fix the declaration or shared contract; do not disable the gate
Problem data Show normalized employee/shift records and pre-solve feasibility checks Name every missing or invalid field; never generate hidden demo data
Solve Inspect status, failure_code, detail, job_id, engine, and build stamp Repair the named input or service; do not silently switch provider or engine
Answer Inspect is_feasible, placements, admission bands, violations, and unevaluable_rules Do not present an uncertified or partially evaluated plan as solved
UX Compare the raw envelope with the normalized view Fix the shared normalizer or adapter rather than adding per-response guesses

For rostering engine selection, be explicit:

from helixor_solvers.rostering_local import solve_rostering_local

result = solve_rostering_local(
    problem,
    options={"engine": "benders_dw"},
)

Unknown engines return a typed failure. The request must not fall through to a different solver. Judge every engine’s final schedule with the same solver-independent feasibility certificate.

Before a rotation-based solve, inspect what is actually priced:

from helixor_solvers.manifest_master import preflight_rotations

report = preflight_rotations(
    manifest,
    problem,
    n_entities=len(problem["employees"]),
    n_groups=len(problem["shifts"]),
)
print(report["priced_in_columns"])
print(report["priced_in_rows"])
print(report["unpriced"])
print(report["warnings"])

An unpriced family is a diagnostic prediction about where quality may be lost. It is not permission to claim that the rule was enforced.