A YAML driven roster framework for agent context
  • Python 84.5%
  • HTML 12.8%
  • Shell 1.6%
  • Just 1.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
coilyco-ops f96f733f96
All checks were successful
ci / gate (push) Successful in 1m18s
chore: use the full name Kai Ase Siren in attribution
Kai Ase Siren is the current and correct full form, and has been the
public name on LinkedIn since 2026-08-25.

Attribution only: copyright lines and package author metadata, which are
the places a full name belongs. Handles like coilysiren, prose that
refers to Kai by first name, and frozen records are left alone.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: coilyco-ops <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Agent-Role: advocate
2026-08-28 23:23:47 -07:00
.agents/skills/repo-housecast docs: stop describing housecast in acompose's own vocabulary 2026-08-27 03:10:26 -07:00
.forgejo/workflows feat: move the composition engine and evalkit in from agent-compose 2026-08-27 04:01:33 -07:00
.github chore: bootstrap the catalog scaffold (closes #1) 2026-08-27 02:46:00 -07:00
.ward docs: lead the catalog blurb with the settled description 2026-08-27 04:18:38 -07:00
docs feat(grade): seal an export into a copy of the page, and land the docs inside the caps 2026-08-28 22:51:55 -07:00
evalkit feat(grade)!: absorb the grading half, so aos-eval can be deleted 2026-08-28 19:43:16 -07:00
evaluations feat: move the composition engine and evalkit in from agent-compose 2026-08-27 04:01:33 -07:00
housecast feat(grade): seal an export into a copy of the page, and land the docs inside the caps 2026-08-28 22:51:55 -07:00
scripts fix: gate on all extras, so evalkit's imports are visible to mypy and pytest 2026-08-27 04:15:32 -07:00
.gitattributes chore: bootstrap the catalog scaffold (closes #1) 2026-08-27 02:46:00 -07:00
.gitignore feat: move the composition engine and evalkit in from agent-compose 2026-08-27 04:01:33 -07:00
.pre-commit-config.yaml chore(hooks): bump the aos-precommit pin past the lane exemption 2026-08-28 23:14:02 -07:00
.typos.toml feat: move the composition engine and evalkit in from agent-compose 2026-08-27 04:01:33 -07:00
AGENTS.md docs(housecast): stand up the WIP walkthrough structure under docs/ 2026-08-28 22:06:25 -07:00
challenges.yaml fix(comments): clear the two code-comments violations on main 2026-08-28 22:22:19 -07:00
CLAUDE.md chore: bootstrap the catalog scaffold (closes #1) 2026-08-27 02:46:00 -07:00
justfile feat(grade): the room-facing half, as a second process rather than a mode 2026-08-28 22:28:36 -07:00
LICENSE chore: use the full name Kai Ase Siren in attribution 2026-08-28 23:23:47 -07:00
pyproject.toml chore: use the full name Kai Ase Siren in attribution 2026-08-28 23:23:47 -07:00
README.md chore: use the full name Kai Ase Siren in attribution 2026-08-28 23:23:47 -07:00
uv.lock feat(grade): serve one run for grading in a browser, private half never in the build 2026-08-28 22:01:00 -07:00

housecast

The roster framework for agent context. It reads roster data authored as YAML (roles, personalities, boundaries, and the invariant), validates it, resolves each role's personality meld and boundary allocation, derives the identity primitives including each role's favorite color, and emits an immutable bundle. It also runs and boards the behavior evaluations against what it composed, which is what keeps the graded artifact and the shipped artifact identical.

The engine and the eval runner both live here now, moved out of agent-compose under agent-compose#337. docs/FEATURES.md is the inventory. Nothing is published to PyPI yet: consumers install from Forgejo, and the distribution claim is agent-compose#347, which waits on Kai.

housecast and acompose

acompose is downstream of housecast, not its peer.

housecast owns the roster language and the engine. acompose renders the bundle housecast emits into harness surfaces and launches them. Reading housecast as an accessory, plugin, adapter, or helper to acompose inverts the relationship the whole program exists to establish. The position housecast holds relative to acompose is the position umbra holds relative to its own downstream consumers.

The name

A house cast is the resident standing company of a theatre: a fixed troupe held by one house under one set of conventions, able to mount any role in its book. house is the authority noun. cast carries both casting a play and casting metal, and that second sense is the immutable bundle.

Two other readings of the string are live. Neither one is this project, and both are named here rather than left to be discovered.

  • house plus forecast - housecast also parses that way, and three of the four existing GitHub repositories under the string are dead housing-price forecasters. This engine forecasts nothing.
  • type casting - cast is a live Python concept, so a Python reader lands on coercion for a beat before they land on the theatre. This engine does no type casting worth the name.

The name is locked in agent-compose#330, which carries the full search record.

housecast unhyphenated is the repository, the import name, and the primary distribution. house-cast is held defensively and never shipped.

Quick start

git clone https://forgejo.coilysiren.me/coilyco-flight-deck/housecast.git
cd housecast
just sync
just compose --role director --out /tmp/bundle

just with no arguments lists every verb. just check is the offline gate: lint, format check, types, and tests in one recipe.

Installing it elsewhere

There is no PyPI release. Depend on it from Forgejo with uv:

[project]
dependencies = ["housecast"]

[tool.uv.sources]
housecast = { git = "https://forgejo.coilysiren.me/coilyco-flight-deck/housecast.git", tag = "housecast-v0.1.0" }

That is the same shape the estate already uses for aos-eval. Add the eval extra when the consumer needs the board runner rather than just the engine.

Layout

  • housecast/ - the engine. Roster loading, validation, meld and boundary resolution, the OKLab favorite-colour solve, and bundle emission.
  • housecast/data/roster.yaml - the roster the engine composes.
  • evalkit/ - the board runner, which travels with the engine so the graded artifact and the shipped artifact stay identical.
  • challenges.yaml and evaluations/ - the board and its committed evidence.
  • scripts/ - the eval workflow, with no Go anywhere in it.

License

MIT. Kai Ase Siren holds the copyright. See LICENSE.

See also