Progress, commit by commit

HL7 conformance, roadmap tasks, tests and source size for every commit on the main line of the history. Step through it with the arrow keys, the space bar or the slider.

70/70
#153 feat(site): add a task drawer and clearer highlights to the roadmap
e341dd8 · 2026-11-08
Phase 1 passing
488 / 934
R4 suite
Tasks merged
25 / 45
Functions + operators
23 / 98
Unit tests
1,103
100 test files
Source lines
14,115
packages/*/src, no tests

HL7 conformance

Test suite

Phase 1 tests passing (the target of release 0.1.0).

0%25%50%75%100%runner not added yetinit#9#10#65#73#76#80#91#95#100#102#110#118#124#93#136#144#15252.2%initial commit#1 docs: architecture and roadmap for Callis#2 docs: add contributing guidelines and agent instructions#3 build: scaffold pnpm monorepo, tooling and CI#9 feat(core): add exact BigInt-backed Decimal#13 docs: add workflow for findings outside a task#11 feat(core): add lexer#46 chore: sync the roadmap to task issues and the project board#10 feat(core): add type system and collection foundations#12 feat(core): add Date, DateTime and Time values#14 feat(conformance): add the HL7 FHIRPath test-suite runner#15 fix(core): keep Decimal ln and log precise near 1#65 fix(conformance): harden the ratchet and record date/time exceptions#68 fix(core): report one unconvertible singleton item as a type mismatch#66 fix(core): bound Decimal size so overflow gives empty#71 fix(core): name the type in singleton type-mismatch messages#73 docs: reflect the Decimal size bound in the plan#74 docs: forbid AI tool attribution in commits and PRs#75 docs: set the API change policy for 0.x releases#77 ci: stop cancelling main runs and add a single required check#76 docs: add task T0035 for a documentation site, progress page and deploy#83 feat(site): add the documentation site, progress page and deploy#79 ci: add a release workflow with npm trusted publishing#78 test(core): give the Decimal size-bound properties a longer timeout#80 build(core): add an npm README and links to the package metadata#81 docs: say in the README that nothing is published yet#87 build: release prereleases under the next dist-tag#85 chore: version packages (next)#91 feat(core): add parser and AST#88 feat(core): add quantity and minimal unit system#89 feat(model-gen): add generated FHIR R4 and R5 providers#94 test(core): check that parser and Quantity agree on calendar keywords#95 docs: link evaluator and fixture adapter contracts#96 docs: assign comparison coercion and ordering contracts#97 docs: define type resolution and model-less resource matching#98 feat(core): add the System value of model-less input nodes#100 feat(core): add equality, equivalence and ordering kernels#99 feat(conformance): convert the suite's FHIR XML inputs to JSON#101 chore: report roadmap sync errors and link the project board#106 docs: keep work PRs as drafts until they meet the ready criteria#102 feat(ucum): add the @callis/ucum package#105 feat(core): add the compiler and evaluator core#108 docs: keep validation evidence in one PR comment, not the commit body#109 docs: record the unchanged UCUM essence file in ADR-0007 and T0006#110 fix(conformance): evaluate the suite with the UCUM unit system#112 docs: split the first 0.1 release from phase-1 completion#113 feat(core): implement equality and arithmetic operators#117 feat(core): add minimal synchronous public evaluation API#118 feat(site): add a browser-local FHIRPath playground#119 fix(site): keep playground margins stable after running#120 chore: exit next prerelease mode#121 build: prepare the first four-package stable release#124 docs: schedule pinned R6 model delivery and verification#125 feat(model-gen): add pinned FHIR R6 snapshot provider#127 docs: include R6 in the first five-package release#126 build: verify the pinned R6 package in shared gates#93 chore: version packages#128 docs: define milestone scope and release-tracking governance#129 build: add opt-in release milestone assignment#135 docs: narrow 0.2 scope to where exists and count#136 feat(core): add model-less where filtering#137 feat(core): add model-less exists and count#140 feat(site): add a shared synthetic example library#138 chore: version packages#144 feat(site): redesign the playground as a console#142 docs: split first and single into a bounded child task#143 feat(core): add first and single functions#147 feat(core): add model-aware evaluation and lossless JSON input#152 docs: plan R4, R5 and R6 coverage and fix roadmap drift#153 feat(site): add a task drawer and clearer highlights to the roadmap

Roadmap tasks

Tasks merged, of 45. A task counts from the first commit with its Task: line.

013253850init#9#10#65#73#76#80#91#95#100#102#110#118#124#93#136#144#15225/45initial commit#1 docs: architecture and roadmap for Callis#2 docs: add contributing guidelines and agent instructions#3 build: scaffold pnpm monorepo, tooling and CI#9 feat(core): add exact BigInt-backed Decimal#13 docs: add workflow for findings outside a task#11 feat(core): add lexer#46 chore: sync the roadmap to task issues and the project board#10 feat(core): add type system and collection foundations#12 feat(core): add Date, DateTime and Time values#14 feat(conformance): add the HL7 FHIRPath test-suite runner#15 fix(core): keep Decimal ln and log precise near 1#65 fix(conformance): harden the ratchet and record date/time exceptions#68 fix(core): report one unconvertible singleton item as a type mismatch#66 fix(core): bound Decimal size so overflow gives empty#71 fix(core): name the type in singleton type-mismatch messages#73 docs: reflect the Decimal size bound in the plan#74 docs: forbid AI tool attribution in commits and PRs#75 docs: set the API change policy for 0.x releases#77 ci: stop cancelling main runs and add a single required check#76 docs: add task T0035 for a documentation site, progress page and deploy#83 feat(site): add the documentation site, progress page and deploy#79 ci: add a release workflow with npm trusted publishing#78 test(core): give the Decimal size-bound properties a longer timeout#80 build(core): add an npm README and links to the package metadata#81 docs: say in the README that nothing is published yet#87 build: release prereleases under the next dist-tag#85 chore: version packages (next)#91 feat(core): add parser and AST#88 feat(core): add quantity and minimal unit system#89 feat(model-gen): add generated FHIR R4 and R5 providers#94 test(core): check that parser and Quantity agree on calendar keywords#95 docs: link evaluator and fixture adapter contracts#96 docs: assign comparison coercion and ordering contracts#97 docs: define type resolution and model-less resource matching#98 feat(core): add the System value of model-less input nodes#100 feat(core): add equality, equivalence and ordering kernels#99 feat(conformance): convert the suite's FHIR XML inputs to JSON#101 chore: report roadmap sync errors and link the project board#106 docs: keep work PRs as drafts until they meet the ready criteria#102 feat(ucum): add the @callis/ucum package#105 feat(core): add the compiler and evaluator core#108 docs: keep validation evidence in one PR comment, not the commit body#109 docs: record the unchanged UCUM essence file in ADR-0007 and T0006#110 fix(conformance): evaluate the suite with the UCUM unit system#112 docs: split the first 0.1 release from phase-1 completion#113 feat(core): implement equality and arithmetic operators#117 feat(core): add minimal synchronous public evaluation API#118 feat(site): add a browser-local FHIRPath playground#119 fix(site): keep playground margins stable after running#120 chore: exit next prerelease mode#121 build: prepare the first four-package stable release#124 docs: schedule pinned R6 model delivery and verification#125 feat(model-gen): add pinned FHIR R6 snapshot provider#127 docs: include R6 in the first five-package release#126 build: verify the pinned R6 package in shared gates#93 chore: version packages#128 docs: define milestone scope and release-tracking governance#129 build: add opt-in release milestone assignment#135 docs: narrow 0.2 scope to where exists and count#136 feat(core): add model-less where filtering#137 feat(core): add model-less exists and count#140 feat(site): add a shared synthetic example library#138 chore: version packages#144 feat(site): redesign the playground as a console#142 docs: split first and single into a bounded child task#143 feat(core): add first and single functions#147 feat(core): add model-aware evaluation and lossless JSON input#152 docs: plan R4, R5 and R6 coverage and fix roadmap drift#153 feat(site): add a task drawer and clearer highlights to the roadmap

Unit tests

Calls of it( and test( in test files. it.each counts once, so this is a lower bound.

05001,0001,5002,000init#9#10#65#73#76#80#91#95#100#102#110#118#124#93#136#144#1521,103initial commit#1 docs: architecture and roadmap for Callis#2 docs: add contributing guidelines and agent instructions#3 build: scaffold pnpm monorepo, tooling and CI#9 feat(core): add exact BigInt-backed Decimal#13 docs: add workflow for findings outside a task#11 feat(core): add lexer#46 chore: sync the roadmap to task issues and the project board#10 feat(core): add type system and collection foundations#12 feat(core): add Date, DateTime and Time values#14 feat(conformance): add the HL7 FHIRPath test-suite runner#15 fix(core): keep Decimal ln and log precise near 1#65 fix(conformance): harden the ratchet and record date/time exceptions#68 fix(core): report one unconvertible singleton item as a type mismatch#66 fix(core): bound Decimal size so overflow gives empty#71 fix(core): name the type in singleton type-mismatch messages#73 docs: reflect the Decimal size bound in the plan#74 docs: forbid AI tool attribution in commits and PRs#75 docs: set the API change policy for 0.x releases#77 ci: stop cancelling main runs and add a single required check#76 docs: add task T0035 for a documentation site, progress page and deploy#83 feat(site): add the documentation site, progress page and deploy#79 ci: add a release workflow with npm trusted publishing#78 test(core): give the Decimal size-bound properties a longer timeout#80 build(core): add an npm README and links to the package metadata#81 docs: say in the README that nothing is published yet#87 build: release prereleases under the next dist-tag#85 chore: version packages (next)#91 feat(core): add parser and AST#88 feat(core): add quantity and minimal unit system#89 feat(model-gen): add generated FHIR R4 and R5 providers#94 test(core): check that parser and Quantity agree on calendar keywords#95 docs: link evaluator and fixture adapter contracts#96 docs: assign comparison coercion and ordering contracts#97 docs: define type resolution and model-less resource matching#98 feat(core): add the System value of model-less input nodes#100 feat(core): add equality, equivalence and ordering kernels#99 feat(conformance): convert the suite's FHIR XML inputs to JSON#101 chore: report roadmap sync errors and link the project board#106 docs: keep work PRs as drafts until they meet the ready criteria#102 feat(ucum): add the @callis/ucum package#105 feat(core): add the compiler and evaluator core#108 docs: keep validation evidence in one PR comment, not the commit body#109 docs: record the unchanged UCUM essence file in ADR-0007 and T0006#110 fix(conformance): evaluate the suite with the UCUM unit system#112 docs: split the first 0.1 release from phase-1 completion#113 feat(core): implement equality and arithmetic operators#117 feat(core): add minimal synchronous public evaluation API#118 feat(site): add a browser-local FHIRPath playground#119 fix(site): keep playground margins stable after running#120 chore: exit next prerelease mode#121 build: prepare the first four-package stable release#124 docs: schedule pinned R6 model delivery and verification#125 feat(model-gen): add pinned FHIR R6 snapshot provider#127 docs: include R6 in the first five-package release#126 build: verify the pinned R6 package in shared gates#93 chore: version packages#128 docs: define milestone scope and release-tracking governance#129 build: add opt-in release milestone assignment#135 docs: narrow 0.2 scope to where exists and count#136 feat(core): add model-less where filtering#137 feat(core): add model-less exists and count#140 feat(site): add a shared synthetic example library#138 chore: version packages#144 feat(site): redesign the playground as a console#142 docs: split first and single into a bounded child task#143 feat(core): add first and single functions#147 feat(core): add model-aware evaluation and lossless JSON input#152 docs: plan R4, R5 and R6 coverage and fix roadmap drift#153 feat(site): add a task drawer and clearer highlights to the roadmap

Source size

Lines in non-test .ts files under packages/*/src.

05,00010,00015,00020,000init#9#10#65#73#76#80#91#95#100#102#110#118#124#93#136#144#15214,115initial commit#1 docs: architecture and roadmap for Callis#2 docs: add contributing guidelines and agent instructions#3 build: scaffold pnpm monorepo, tooling and CI#9 feat(core): add exact BigInt-backed Decimal#13 docs: add workflow for findings outside a task#11 feat(core): add lexer#46 chore: sync the roadmap to task issues and the project board#10 feat(core): add type system and collection foundations#12 feat(core): add Date, DateTime and Time values#14 feat(conformance): add the HL7 FHIRPath test-suite runner#15 fix(core): keep Decimal ln and log precise near 1#65 fix(conformance): harden the ratchet and record date/time exceptions#68 fix(core): report one unconvertible singleton item as a type mismatch#66 fix(core): bound Decimal size so overflow gives empty#71 fix(core): name the type in singleton type-mismatch messages#73 docs: reflect the Decimal size bound in the plan#74 docs: forbid AI tool attribution in commits and PRs#75 docs: set the API change policy for 0.x releases#77 ci: stop cancelling main runs and add a single required check#76 docs: add task T0035 for a documentation site, progress page and deploy#83 feat(site): add the documentation site, progress page and deploy#79 ci: add a release workflow with npm trusted publishing#78 test(core): give the Decimal size-bound properties a longer timeout#80 build(core): add an npm README and links to the package metadata#81 docs: say in the README that nothing is published yet#87 build: release prereleases under the next dist-tag#85 chore: version packages (next)#91 feat(core): add parser and AST#88 feat(core): add quantity and minimal unit system#89 feat(model-gen): add generated FHIR R4 and R5 providers#94 test(core): check that parser and Quantity agree on calendar keywords#95 docs: link evaluator and fixture adapter contracts#96 docs: assign comparison coercion and ordering contracts#97 docs: define type resolution and model-less resource matching#98 feat(core): add the System value of model-less input nodes#100 feat(core): add equality, equivalence and ordering kernels#99 feat(conformance): convert the suite's FHIR XML inputs to JSON#101 chore: report roadmap sync errors and link the project board#106 docs: keep work PRs as drafts until they meet the ready criteria#102 feat(ucum): add the @callis/ucum package#105 feat(core): add the compiler and evaluator core#108 docs: keep validation evidence in one PR comment, not the commit body#109 docs: record the unchanged UCUM essence file in ADR-0007 and T0006#110 fix(conformance): evaluate the suite with the UCUM unit system#112 docs: split the first 0.1 release from phase-1 completion#113 feat(core): implement equality and arithmetic operators#117 feat(core): add minimal synchronous public evaluation API#118 feat(site): add a browser-local FHIRPath playground#119 fix(site): keep playground margins stable after running#120 chore: exit next prerelease mode#121 build: prepare the first four-package stable release#124 docs: schedule pinned R6 model delivery and verification#125 feat(model-gen): add pinned FHIR R6 snapshot provider#127 docs: include R6 in the first five-package release#126 build: verify the pinned R6 package in shared gates#93 chore: version packages#128 docs: define milestone scope and release-tracking governance#129 build: add opt-in release milestone assignment#135 docs: narrow 0.2 scope to where exists and count#136 feat(core): add model-less where filtering#137 feat(core): add model-less exists and count#140 feat(site): add a shared synthetic example library#138 chore: version packages#144 feat(site): redesign the playground as a console#142 docs: split first and single into a bounded child task#143 feat(core): add first and single functions#147 feat(core): add model-aware evaluation and lossless JSON input#152 docs: plan R4, R5 and R6 coverage and fix roadmap drift#153 feat(site): add a task drawer and clearer highlights to the roadmap

Roadmap

[x] merged[>] unblocked[ ] blocked

Columns are the waves of the roadmap. A task is unblocked when all its dependencies are merged. Hover over or focus a task to highlight it, the tasks it depends on and the tasks that depend on it . Click it, or press Enter, to open its details in a panel on the right; another task switches the panel.

wave 0

wave 1

wave 2

wave 3

wave 4

wave 5

wave 6

wave 7

wave 8

Functions and operators

23 of 98 belong to a merged task. A chip lights up when the task that adds it is merged; that says the task landed, not that the function passes the conformance tests.

T0010 Operators · 18

=~!=!~<><=>=+-*/divmod&|incontains

T0011 exists and count · 2

exists()count()

T0012 where · 1

where()

T0013 subsetting and combining · 8

last()tail()skip()take()intersect()exclude()union()combine()

T0014 conversion · 17

iif()toBoolean()convertsToBoolean()toInteger()convertsToInteger()toDecimal()convertsToDecimal()toDate()convertsToDate()toDateTime()convertsToDateTime()toTime()convertsToTime()toString()convertsToString()toQuantity()convertsToQuantity()

T0015 string manipulation · 12

indexOf()substring()startsWith()endsWith()contains()upper()lower()replace()matches()replaceMatches()length()toChars()

T0016 math · 10

abs()ceiling()exp()floor()ln()log()power()round()sqrt()truncate()

T0017 tree navigation and utility · 6

children()descendants()trace()now()timeOfDay()today()

T0020 FHIR functions and variables · 9

extension()hasValue()getValue()resolve()memberOf()subsumes()subsumedBy()conformsTo()htmlChecks()

T0041 remaining existence · 10

empty()all()allTrue()anyTrue()allFalse()anyFalse()subsetOf()supersetOf()distinct()isDistinct()

T0042 projection and repeat · 3

select()repeat()ofType()

T0044 first and single · 2

first()single()

Commits

PRCommitSubjectTaskPhase 1 passTestsSource lines
–4089a43––00
#1112111d––00
#2d176fcf––00
#38d9f347T0000–15212
#9ab9dd26T0004–87787
#13ba4aa51––87787
#115814e01T0001–1471,681
#46b60ae69––1621,681
#10cc25fd7T0003–2322,652
#12f0101aaT0005–3014,124
#14f90bd3fT00220 / 9343714,124
#1570208b5T00040 / 9343794,223
#65a93ea5fT00220 / 9343864,223
#689902489T00030 / 9343874,225
#66b2bf2abT00040 / 9344044,295
#71ae32587T00030 / 9344044,296
#739591fb0–0 / 9344044,296
#74431fd2d–0 / 9344044,296
#757210d32–0 / 9344044,299
#77c4495df–0 / 9344044,299
#7684dfbe3–0 / 9344044,299
#83900afc6T00350 / 9344434,299
#79c846648–0 / 9344434,299
#78636e821–0 / 9344434,299
#804730457–0 / 9344434,299
#814a2b1aa–0 / 9344434,299
#8763287b8–0 / 9344434,299
#858fd5fdb–0 / 9344434,299
#9144b1ac6T00020 / 9344674,857
#88e2c7274T00060 / 9345005,476
#89e0dfde4T00190 / 9345097,219
#94e5cd3bc–0 / 9345117,219
#95ae8b500–0 / 9345117,219
#965c9936f–0 / 9345117,219
#97167751d–0 / 9345117,219
#98c7f579b–0 / 9345237,276
#10095cf7fdT00090 / 9345738,026
#99186673bT00230 / 9346248,026
#1011ab2c7a–0 / 9346248,026
#1066a61a8a–0 / 9346248,026
#102344d7e8T00070 / 9346919,410
#105f7142d6T000858 / 93486811,595
#108030fba4–58 / 93486811,595
#109c1d4d4b–58 / 93486811,595
#11006012c6–58 / 93487011,595
#112f479e06–58 / 93487011,595
#113049b205T0010413 / 93489111,823
#117da7c6f7T0025413 / 93490411,995
#118c091d85T0036413 / 93490911,995
#1199b78e6e–413 / 93490911,995
#120d949942–413 / 93490911,995
#1210bf76ffT0037413 / 93490911,995
#124e302465–413 / 93490911,995
#125662762cT0039413 / 93492012,778
#127b168c86–413 / 93492012,778
#126f36dc04T0040413 / 93492012,778
#93b92db53–413 / 93492012,778
#12853f49fe–413 / 93492012,778
#12988b3f7c–413 / 93492812,778
#135e42616d–413 / 93493012,778
#136391ed2aT0012413 / 93494512,828
#137ac436dbT0011435 / 93495912,899
#140215aa6eT0043435 / 93496512,899
#138b587e09–435 / 93496512,899
#1448388a3c–435 / 93496512,899
#142300d2cf–435 / 93496612,899
#1430cbee45T0044447 / 93497612,940
#147643512aT0018488 / 9341,09514,115
#152ebcf4bb–488 / 9341,09514,115
#153e341dd8–488 / 9341,10314,115