alpha
Login
or
Join now
russ.fugl.dev
/
levelset
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
A functional toolkit for authoring resource-leveling algorithms — compose constraint and scoring blocks, enumerate feasible schedules
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
levelset
/
src
/
schema
/
at
main
11 files
Russ T. Fugal
fix(provenance): preserve unknown levelset keys across the JSON round trip
6d ago
99b3ec41
assignment.ts
fix(provenance): preserve unknown levelset keys across the JSON round trip RunProvenanceSchema (and its warning items) parsed with key-stripping z.object, so a levelset block written by a newer levelset version — or annotated by app tooling — was silently truncated to this version's fields on read → write. Parse with z.looseObject so unknown keys survive the round trip; garbage that fails the known-field contract is still dropped whole, as documented.
6 days ago
calendar.ts
feat(schema): entity schemas as the single source of truth Task, Resource, Assignment, Calendar, Relation, and ProjectFile schemas. These are the single source of truth for the data model: the model-layer interfaces are derived from them via z.infer, so each shape has exactly one definition and the validators can never drift from the types. Optional fields are declared with `.optional()` and typed `T | undefined` so they round-trip cleanly under exactOptionalPropertyTypes.
4 months ago
date.ts
feat(schema): zod enum, date, and duration schemas The leaf zod schemas the entity schemas build on. Enum schemas use z.enum, which under Zod v4 accepts native TypeScript enums directly, so the runtime validators share identity with the model enums. The date and duration schemas carry transforms, making parse/serialize part of validation rather than a separate step.
4 months ago
duration.ts
feat(schema): zod enum, date, and duration schemas The leaf zod schemas the entity schemas build on. Enum schemas use z.enum, which under Zod v4 accepts native TypeScript enums directly, so the runtime validators share identity with the model enums. The date and duration schemas carry transforms, making parse/serialize part of validation rather than a separate step.
4 months ago
index.ts
feat(leveling): embed run provenance in materialized projects Every LevelingRun.materialize output now carries a levelset metadata block: engine version, the filled run config (rerunnable — the reproducibility artifact), seed, achieved scorer values, analysis warnings, and search annotations. ProjectFileSchema gains the optional field and the JSON reader/writer round-trips it (non-parsing provenance is dropped on read rather than failing the file). Answers "why does this schedule look like this?" from the file itself, spaCy config.cfg-style.
6 days ago
project.ts
feat(leveling): embed run provenance in materialized projects Every LevelingRun.materialize output now carries a levelset metadata block: engine version, the filled run config (rerunnable — the reproducibility artifact), seed, achieved scorer values, analysis warnings, and search annotations. ProjectFileSchema gains the optional field and the JSON reader/writer round-trips it (non-parsing provenance is dropped on read rather than failing the file). Answers "why does this schedule look like this?" from the file itself, spaCy config.cfg-style.
6 days ago
provenance.ts
fix(provenance): preserve unknown levelset keys across the JSON round trip RunProvenanceSchema (and its warning items) parsed with key-stripping z.object, so a levelset block written by a newer levelset version — or annotated by app tooling — was silently truncated to this version's fields on read → write. Parse with z.looseObject so unknown keys survive the round trip; garbage that fails the known-field contract is still dropped whole, as documented.
6 days ago
relation.ts
feat(schema): entity schemas as the single source of truth Task, Resource, Assignment, Calendar, Relation, and ProjectFile schemas. These are the single source of truth for the data model: the model-layer interfaces are derived from them via z.infer, so each shape has exactly one definition and the validators can never drift from the types. Optional fields are declared with `.optional()` and typed `T | undefined` so they round-trip cleanly under exactOptionalPropertyTypes.
4 months ago
resource.ts
feat(schema): entity schemas as the single source of truth Task, Resource, Assignment, Calendar, Relation, and ProjectFile schemas. These are the single source of truth for the data model: the model-layer interfaces are derived from them via z.infer, so each shape has exactly one definition and the validators can never drift from the types. Optional fields are declared with `.optional()` and typed `T | undefined` so they round-trip cleanly under exactOptionalPropertyTypes.
4 months ago
task.ts
feat(schema): entity schemas as the single source of truth Task, Resource, Assignment, Calendar, Relation, and ProjectFile schemas. These are the single source of truth for the data model: the model-layer interfaces are derived from them via z.infer, so each shape has exactly one definition and the validators can never drift from the types. Optional fields are declared with `.optional()` and typed `T | undefined` so they round-trip cleanly under exactOptionalPropertyTypes.
4 months ago
types.ts
feat(schema): zod enum, date, and duration schemas The leaf zod schemas the entity schemas build on. Enum schemas use z.enum, which under Zod v4 accepts native TypeScript enums directly, so the runtime validators share identity with the model enums. The date and duration schemas carry transforms, making parse/serialize part of validation rather than a separate step.
4 months ago