The core is Python for v0.1; a TypeScript port is explicitly deferred (SPEC §4.5) but wanted — it would let scorekeeper run natively inside JS/TS agent harnesses.
Task (large, milestone): scaffold core-ts/ mirroring the Python model + store + operators, so JS harnesses can maintain a scoreboard without a Python dependency.
Sensible first slice (doesn't need the LLM parts):
Commitment type + the deontic vocabulary (kinds, statuses, entitlement sources)
- transparent store: YAML/JSON records +
log.jsonl + scoreboard.md/digest generation
- Tier-0 deterministic attr-collision check and the operators (ASSERT/SUPPORT/REFINE/SUPERSEDE/BRANCH-CONFLICT) — the core distinction
- port the golden round-trip + operator tests from
core/tests/
Keep parity with the Python schema (same YAML on disk, so both can read one board). LLM extraction/detection can come later behind the same ModelBackend shape.
This is a big one — comment to claim it, and let's scope a first PR together. Great for someone who wants to own a subsystem. See CONTRIBUTING.md → "Port the core".
The core is Python for v0.1; a TypeScript port is explicitly deferred (SPEC §4.5) but wanted — it would let scorekeeper run natively inside JS/TS agent harnesses.
Task (large, milestone): scaffold
core-ts/mirroring the Python model + store + operators, so JS harnesses can maintain a scoreboard without a Python dependency.Sensible first slice (doesn't need the LLM parts):
Commitmenttype + the deontic vocabulary (kinds, statuses, entitlement sources)log.jsonl+scoreboard.md/digest generationcore/tests/Keep parity with the Python schema (same YAML on disk, so both can read one board). LLM extraction/detection can come later behind the same
ModelBackendshape.This is a big one — comment to claim it, and let's scope a first PR together. Great for someone who wants to own a subsystem. See CONTRIBUTING.md → "Port the core".