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
/
test
/
at
main
4 folders
10 files
Russ T. Fugal
chore(conf): keep generated and fixture JSON prettier-clean
6d ago
3882709b
conf
chore(conf): keep generated and fixture JSON prettier-clean Prettier-ignore generated/block-meta.json (it must match its generator byte for byte; the drift test guards its content) and reformat the conf fixture config goldens so `bun run check` is clean.
6 days ago
level-blocks
feat(meta): committed block-meta.json dump with drift test scripts/generate-block-meta.ts writes dumpBlockMeta(standardRegistry()) to generated/block-meta.json (17 blocks), added to package files so it ships. A drift test deep-equals the committed JSON against a fresh dump and, on mismatch, points at re-running the generator — so a schema/shadow or composition change can't land without regenerating the artifact.
6 days ago
level-core
fix(analyzeRun): exempt milestones from the E105 duration bound serialSGS places milestones with zero span regardless of their nominal durationDays, but analyzeRun applied the (deadline - release) < duration bound to them. A milestone carrying an explicit duration (as MPP/JSON files can) with a same-day release + deadline gate was reported as LEVELSET_E105 'no feasible placement exists' — and runFromConfig threw — for a run serialSGS places successfully.
6 days ago
xlsx
feat(xlsx): declarative SheetSpec layer with formulas and named ranges Adds writeSheets() and writeWithGanttAndSheets() driven by CellSpec/SheetSpec: formula cells written without cached results so Excel/LibreOffice recalculate on open, workbook named ranges, cell notes, row outlines, and header/input/derived/muted/internal style hooks. Formula strings stay opaque to the writer — pricing semantics live in the consuming app's emitter. Spec sheets append after the Gantt sheet so chart-injection sheet indices stay stable. The named-range recalc test (row insertion absorbed by an open slot) runs under LibreOffice headless when soffice is available.
1 month ago
csv.test.ts
feat(csv): CSV writer with RFC 4180 quoting and injection defense Export a ProjectFile's tasks to CSV. Quoting follows RFC 4180 and triggers on a bare CR as well as comma/quote/LF, since a lone CR can desync strict parsers. Fields beginning with a formula trigger (=, +, -, @) are defanged with a leading apostrophe per OWASP guidance, and the trigger set is a named constant so the policy is auditable in one place. Adds shared test helpers (parseCsv, makeMinimalProject) reused by the CSV, XLSX, and library suites.
4 months ago
helpers.ts
feat(csv): CSV writer with RFC 4180 quoting and injection defense Export a ProjectFile's tasks to CSV. Quoting follows RFC 4180 and triggers on a bare CR as well as comma/quote/LF, since a lone CR can desync strict parsers. Fields beginning with a formula trigger (=, +, -, @) are defanged with a leading apostrophe per OWASP guidance, and the trigger set is a named constant so the policy is auditable in one place. Adds shared test helpers (parseCsv, makeMinimalProject) reused by the CSV, XLSX, and library suites.
4 months ago
json.test.ts
feat(json): JSON reader and writer with round-trip A native JSON format for ProjectFile, with reader and writer forming a lossless round-trip. The reader handles version metadata so older documents load against the current model.
4 months ago
levelsetVersion.test.ts
feat(leveling): declarative RunConfig with runFromConfig One JSON document now fully describes a leveling run — resolve options, blocks by versioned registry code (reusing the PipelineGraph format as the config's pipeline section), and objective weights (null = compute and report but don't optimize). runFromConfig fills the config (block-schema defaults expanded, levelset version stamped — the filled config is the persistable artifact), resolves the project, compiles blocks with instanceIds doubling as constraint names for attribution, statically analyzes the run (throwing coded RunAnalysisError on errors), and returns a live run: stream/best/scores/materialize plus the combined weightedScorer objective. Framework-owned config sections are strict so a typo'd key is an error, not a silently unconstrained run. Graph instances gain an optional enabled lever (undefined = enabled, so existing graphs and constructors stay valid).
6 days ago
library.test.ts
test: comprehensive library integration suite An end-to-end suite over the public API that exercises the readers and writers together against fixtures. Fixture-dependent cases skip gracefully when the gitignored fixture files are absent, so the suite stays green in a clean checkout.
4 months ago
model.test.ts
feat(model): entity interfaces via z.infer re-export The model-layer entity types (Task, Resource, Assignment, Calendar, Relation, ProjectFile/ProjectProperties) as thin z.infer re-exports of the schemas, so there is no hand-written interface to keep in sync with the validators. Project.ts also provides createEmptyProject for building a minimal valid ProjectFile.
4 months ago
mspdi.test.ts
feat(mspdi): MSPDI reader, writer, and XSD duration Read and write Microsoft Project's MSPDI XML format. XsdDuration handles the xsd:duration parse/format the format uses for every duration field. The reader and writer cover the scheduling and work fields (including actualWork), and the writer emits a trailing newline. A finish expressed as an end-of-workday time (e.g. Friday 17:00) is normalized so it round-trips consistently with the day-indexed scheduling model.
4 months ago
schema.test.ts
feat(schema): schema subpath barrel and validation tests A schema subpath barrel re-exporting every entity schema as a curated public surface for consumers who want runtime validation, with tests that exercise parse and round-trip on each schema.
4 months ago
version.test.ts
feat(mpp): variant detection, MPP14 extraction, public reader MppVariant scores the CFB root paths to detect the MPP format variant, Mpp14Reader extracts tasks/resources/assignments from MPP14 through a FieldMap of binary offsets, and MppReader is the public entry point that loads the CFB container. MppReader takes an ArrayBuffer rather than a path, so it carries no filesystem dependency and runs anywhere. Unsupported versions (< 14) and invalid or missing containers produce clear, typed errors instead of obscure binary-parsing failures.
4 months ago
xlsx.test.ts
feat(xlsx): alternating row-band shading in Gantt plot area Paint alternating white / light-gray horizontal bands behind the Gantt bars, one band per category, so task rows are visually separated in the exported workbook. Implemented as a hard-step gradient fill on the plot area (<c:spPr>) with duplicated stop positions per band and a 90deg top-to-bottom angle aligned to the catAx maxMin orientation.
1 month ago