HumanCompiler-oriented scheduling models, fixtures, and daily planning solvers
Project description
HumanCompiler Scheduler
HumanCompiler Scheduler is a small Python package for HumanCompiler-oriented daily planning experiments. It provides plain dataclass models, YAML fixture loading, review tools, and a timeline 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
Or install the current repository checkout:
uv pip install -e .
HumanCompiler Integration API
HumanCompiler-oriented scheduling models live under
humancompiler_scheduler.human. Use plan_daily_schedule as the stable
adapter-facing entry point:
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)
The lower-level fixture helpers and solver functions remain available for review tooling and experiments.
Known Limitations
The 0.1.0 release intentionally keeps the solver compact. It does not yet:
- split one task across multiple scheduled blocks;
- 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 v0.1.0, 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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file humancompiler_scheduler-0.1.0.tar.gz.
File metadata
- Download URL: humancompiler_scheduler-0.1.0.tar.gz
- Upload date:
- Size: 150.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e686e18c2d9ef74f8ca04a76f0e93ca731f56b5bd0b7c5ac63caf4074c6a9d49
|
|
| MD5 |
d49b81b455062a3974127a148c62cd36
|
|
| BLAKE2b-256 |
034b8cc5094dcbd730e45986096814bf56df24faca408a4fe8c73e7b48413a63
|
Provenance
The following attestation bundles were made for humancompiler_scheduler-0.1.0.tar.gz:
Publisher:
release.yml on masa10-f/Scheduler
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
humancompiler_scheduler-0.1.0.tar.gz -
Subject digest:
e686e18c2d9ef74f8ca04a76f0e93ca731f56b5bd0b7c5ac63caf4074c6a9d49 - Sigstore transparency entry: 1920812051
- Sigstore integration time:
-
Permalink:
masa10-f/Scheduler@c67733c2a318ef419a25e022808faf894991522b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/masa10-f
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c67733c2a318ef419a25e022808faf894991522b -
Trigger Event:
push
-
Statement type:
File details
Details for the file humancompiler_scheduler-0.1.0-py3-none-any.whl.
File metadata
- Download URL: humancompiler_scheduler-0.1.0-py3-none-any.whl
- Upload date:
- Size: 27.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c0dac702c3309bd8b439ce96680f4dc973bd8f73f644d3f383a9df238323e2e
|
|
| MD5 |
73e4dc46da7d2cd1a34b868f79eb31d7
|
|
| BLAKE2b-256 |
03bbd877f8f25d1166fefb26d75fa27beb7cfa24becce62cad418478f8e0885b
|
Provenance
The following attestation bundles were made for humancompiler_scheduler-0.1.0-py3-none-any.whl:
Publisher:
release.yml on masa10-f/Scheduler
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
humancompiler_scheduler-0.1.0-py3-none-any.whl -
Subject digest:
2c0dac702c3309bd8b439ce96680f4dc973bd8f73f644d3f383a9df238323e2e - Sigstore transparency entry: 1920812151
- Sigstore integration time:
-
Permalink:
masa10-f/Scheduler@c67733c2a318ef419a25e022808faf894991522b -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/masa10-f
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c67733c2a318ef419a25e022808faf894991522b -
Trigger Event:
push
-
Statement type: