Skip to main content

HumanCompiler Scheduler

HumanCompiler Scheduler is a small Python package for HumanCompiler-oriented planning experiments. It provides plain dataclass models, YAML fixture loading, review tools, a daily timeline solver, and a weekly task selection solver that can be called from HumanCompiler adapter code without depending on HumanCompiler database models.

The distribution name is humancompiler-scheduler; the import package is humancompiler_scheduler.

Installation

Install from PyPI after the first release:

uv add humancompiler-scheduler

Weekly task selection uses OR-Tools CP-SAT. Install the optional extra in environments that call plan_weekly_selection:

uv add 'humancompiler-scheduler[cp-sat]'

Or install the current repository checkout:

uv pip install -e .

For weekly task selection from a checkout, include the same extra:

uv pip install -e '.[cp-sat]'

HumanCompiler Integration API

HumanCompiler-oriented scheduling models live under humancompiler_scheduler.human. Use plan_daily_schedule for daily scheduling and plan_weekly_selection for weekly task selection as stable adapter-facing entry points. The weekly entry point requires the cp-sat extra shown above.

from humancompiler_scheduler.human import plan_daily_schedule

report = plan_daily_schedule(
    {
        "date": "2026-05-20",
        "availability_windows": [
            {"start": "09:00", "end": "12:00", "work_kind": "focused_work"},
            {"start": "13:00", "end": "18:00", "work_kind": "light_work"},
        ],
        "fixed_events": [
            {"title": "Team sync", "start": "11:00", "end": "11:30"},
        ],
        "tasks": [
            {
                "id": "proposal",
                "title": "Draft proposal",
                "remaining_minutes": 90,
                "priority": 1,
                "work_kind": "focused_work",
                "source": "task",
            },
        ],
        "solver_config": {
            "kind_match_score": 8,
            "kind_mismatch_score": 1,
        },
    }
)

for block in report.plan.blocks:
    print(block.task_id, block.start, block.end)
from humancompiler_scheduler.human import plan_weekly_selection

result = plan_weekly_selection(
    {
        "tasks": [
            {
                "id": "proposal",
                "title": "Draft proposal",
                "hours": 10.0,
                "priority_score": 9.0,
                "project_id": "project-alpha",
            },
        ],
        "project_allocations": [
            {
                "project_id": "project-alpha",
                "target_hours": 5.0,
                "priority_weight": 1.0,
            },
        ],
        "total_capacity_hours": 5.0,
    }
)

print(result.selected_task_ids)
print(result.assigned_task_hours)

The lower-level fixture helpers and solver functions remain available for review tooling and experiments.

Known Limitations

The current release intentionally keeps the solver compact. It does not yet:

  • insert break blocks automatically;
  • preserve prior scheduled blocks or model current-task interruptibility for full rolling reschedule.

Fixture Review

Run one fixture:

uv run python examples/human_daily_demo.py samples/human/daily_basic.yaml

Run a batch review and save a snapshot:

uv run python examples/human_daily_review.py samples/human/*.yaml --format markdown --output human_daily_review.md

The sample review fixtures share the same synthetic HumanCompiler task database at samples/human/data/humancompiler_common_database.yaml. The fixture files vary the available time windows and constraints, not the underlying task set.

Apply a shared solver config override to every fixture in the review:

uv run python examples/human_daily_review.py samples/human/*.yaml --config review_config.yaml

Documentation

Sphinx documentation lives in docs/.

uv run --extra docs sphinx-build -b html docs docs/_build/html

Open docs/_build/html/index.html after the build completes.

Releasing

Releases are tag-driven. Update CHANGELOG.md, create a semantic version tag such as vX.Y.Z, and push it. The release workflow builds the package, checks the distribution metadata, publishes to PyPI through Trusted Publishing, and creates GitHub release notes from the matching changelog section.

Metadata

Release files for humancompiler-scheduler 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for humancompiler-scheduler 0.4.0
File Size Uploaded
humancompiler_scheduler-0.4.0.tar.gz 164.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for humancompiler-scheduler 0.4.0
File Interpreter ABI Platform
humancompiler_scheduler-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 199.9 kB

Release files / humancompiler_scheduler-0.4.0.tar.gz

Download URL humancompiler_scheduler-0.4.0.tar.gz
Size 164.6 kB
Tags Source
SHA-256 checksum
How to use checksums
23f145fb487602582457113969d5052413f91ec622b2d6b16579d31ccdafdabb
BLAKE2b-256 checksum
How to use checksums
a4a6cf762ea570139cd8f22ee9f728e06b8a888bb211ba7041cb4feb33a74a12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.

Transparency log

Release files / humancompiler_scheduler-0.4.0-py3-none-any.whl

Download URL humancompiler_scheduler-0.4.0-py3-none-any.whl
Size 35.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d2ece6a9e3dcd55dd2e3f018538243c1f83d6e161c3bf0d1681f832a4a23bb2f
BLAKE2b-256 checksum
How to use checksums
bfa20e3710b59da57e0c60f22bfe7eb63984de76889e0795839c6e5f2582cf9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.0

2 release files

This release

0.4.0 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page