@smile-digital-health/crl 5.4.2 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -0
- package/dist/ast/builder.js +3 -3
- package/dist/ast/builder.js.map +1 -1
- package/dist/authoring-kit/audit.json +4 -4
- package/dist/authoring-kit/index.js +41 -24
- package/dist/authoring-kit/index.js.map +1 -1
- package/dist/authoring-kit/intakeExample.d.ts +6 -0
- package/dist/authoring-kit/intakeExample.js +53 -0
- package/dist/authoring-kit/intakeExample.js.map +1 -0
- package/dist/authoring-kit/navigation.js +6 -2
- package/dist/authoring-kit/navigation.js.map +1 -1
- package/dist/authoring-kit/reference.d.ts +2 -2
- package/dist/authoring-kit/reference.js +5 -14
- package/dist/authoring-kit/reference.js.map +1 -1
- package/dist/authoring-kit/requirements.js +1 -1
- package/dist/authoring-kit/requirements.js.map +1 -1
- package/dist/cel/emitter/emitFhir.js +23 -1
- package/dist/cel/emitter/emitFhir.js.map +1 -1
- package/dist/cel/emitter/writer.js +5 -2
- package/dist/cel/emitter/writer.js.map +1 -1
- package/dist/cel/validator/types.d.ts +1 -1
- package/dist/cel/validator/validator.js +13 -0
- package/dist/cel/validator/validator.js.map +1 -1
- package/dist/cli/nativeSignals.d.ts +3 -0
- package/dist/cli/nativeSignals.js +17 -0
- package/dist/cli/nativeSignals.js.map +1 -0
- package/dist/cli/run-emit-results.js +17 -6
- package/dist/cli/run-emit-results.js.map +1 -1
- package/dist/cli/run-emitter.js +4 -47
- package/dist/cli/run-emitter.js.map +1 -1
- package/dist/cli/run-regression.js +42 -34
- package/dist/cli/run-regression.js.map +1 -1
- package/dist/cql-emitter/emitCQL.js +18 -6
- package/dist/cql-emitter/emitCQL.js.map +1 -1
- package/dist/cql-emitter/renderPublicationProducer.d.ts +2 -1
- package/dist/cql-emitter/renderPublicationProducer.js +24 -1
- package/dist/cql-emitter/renderPublicationProducer.js.map +1 -1
- package/dist/cql-emitter/renderPublicationSelection.d.ts +3 -1
- package/dist/cql-emitter/renderPublicationSelection.js +6 -2
- package/dist/cql-emitter/renderPublicationSelection.js.map +1 -1
- package/dist/cre/run.js +10 -1
- package/dist/cre/run.js.map +1 -1
- package/dist/emit/publicationHasValue.d.ts +13 -0
- package/dist/emit/publicationHasValue.js +55 -0
- package/dist/emit/publicationHasValue.js.map +1 -0
- package/dist/emit/publicationProducer.js +1 -1
- package/dist/emit/publicationProducer.js.map +1 -1
- package/dist/emit/publicationProgram.d.ts +13 -2
- package/dist/emit/publicationProgram.js +62 -8
- package/dist/emit/publicationProgram.js.map +1 -1
- package/dist/emit-writers.d.ts +2 -1
- package/dist/emit-writers.js +24 -37
- package/dist/emit-writers.js.map +1 -1
- package/dist/fhir-emitter/closureOrchestrator.js +10 -7
- package/dist/fhir-emitter/closureOrchestrator.js.map +1 -1
- package/dist/fhir-emitter/decision.d.ts +3 -2
- package/dist/fhir-emitter/decision.js +25 -12
- package/dist/fhir-emitter/decision.js.map +1 -1
- package/dist/fhir-emitter/writer.d.ts +1 -0
- package/dist/fhir-emitter/writer.js +12 -15
- package/dist/fhir-emitter/writer.js.map +1 -1
- package/dist/fhir-model/fhirValueModel.js +1 -1
- package/dist/fhir-model/fhirValueModel.js.map +1 -1
- package/dist/flags/buildFlagDraft.js +25 -1
- package/dist/flags/buildFlagDraft.js.map +1 -1
- package/dist/flags/flagVocab.d.ts +2 -0
- package/dist/flags/flagVocab.js +6 -1
- package/dist/flags/flagVocab.js.map +1 -1
- package/dist/flags/mvFlagAnchor.d.ts +2 -0
- package/dist/flags/mvFlagAnchor.js +8 -11
- package/dist/flags/mvFlagAnchor.js.map +1 -1
- package/dist/generated-output.d.ts +11 -0
- package/dist/generated-output.js +63 -0
- package/dist/generated-output.js.map +1 -0
- package/dist/grammar/generated/antlr/CRLLexer.js +2 -0
- package/dist/grammar/generated/antlr/CRLLexer.js.map +1 -1
- package/dist/grammar/generated/types/conceptValueTypes.json +1 -0
- package/dist/grammar/generated/types/parameterTypes.json +1 -0
- package/dist/language-services/catalog.d.ts +2 -2
- package/dist/language-services/catalog.js +1 -0
- package/dist/language-services/catalog.js.map +1 -1
- package/dist/mcp/server.js +29 -27
- package/dist/mcp/server.js.map +1 -1
- package/dist/meta/conceptIdentity.d.ts +10 -0
- package/dist/meta/conceptIdentity.js +20 -0
- package/dist/meta/conceptIdentity.js.map +1 -0
- package/dist/meta/generated/registry.generated.d.ts +1 -1
- package/dist/meta/generated/registry.generated.js +1 -1
- package/dist/meta/generated/registry.generated.js.map +1 -1
- package/dist/provenance/correspondenceCheck.js +5 -7
- package/dist/provenance/correspondenceCheck.js.map +1 -1
- package/dist/provenance/crlConceptLayer.d.ts +2 -0
- package/dist/provenance/crlConceptLayer.js +4 -0
- package/dist/provenance/crlConceptLayer.js.map +1 -1
- package/dist/provenance/generate.js +24 -14
- package/dist/provenance/generate.js.map +1 -1
- package/dist/provenance/runPath.d.ts +18 -0
- package/dist/provenance/runPath.js +47 -0
- package/dist/provenance/runPath.js.map +1 -1
- package/dist/results/driver/ApplyDriver.class +0 -0
- package/dist/results/driver/ApplyDriver.java +21 -1
- package/dist/results/driver/windows-owned-process.ps1 +130 -0
- package/dist/results/manifest.d.ts +6 -0
- package/dist/results/manifest.js.map +1 -1
- package/dist/results/orphans.d.ts +1 -1
- package/dist/results/orphans.js +2 -10
- package/dist/results/orphans.js.map +1 -1
- package/dist/results/ownedProcess.d.ts +14 -0
- package/dist/results/ownedProcess.js +128 -0
- package/dist/results/ownedProcess.js.map +1 -0
- package/dist/results/produce.d.ts +7 -2
- package/dist/results/produce.js +128 -16
- package/dist/results/produce.js.map +1 -1
- package/dist/results/retry.d.ts +10 -0
- package/dist/results/retry.js +161 -0
- package/dist/results/retry.js.map +1 -0
- package/dist/results/runProducer.d.ts +2 -1
- package/dist/results/runProducer.js +14 -10
- package/dist/results/runProducer.js.map +1 -1
- package/dist/results/runtimeFingerprint.d.ts +7 -0
- package/dist/results/runtimeFingerprint.js +31 -0
- package/dist/results/runtimeFingerprint.js.map +1 -0
- package/dist/results/spawn.d.ts +2 -0
- package/dist/results/spawn.js +31 -1
- package/dist/results/spawn.js.map +1 -1
- package/dist/template-match/matcher.js +6 -0
- package/dist/template-match/matcher.js.map +1 -1
- package/dist/template-match/patternCatalog.js +1 -0
- package/dist/template-match/patternCatalog.js.map +1 -1
- package/dist/validator/reductionShapeValidator.js +5 -0
- package/dist/validator/reductionShapeValidator.js.map +1 -1
- package/dist/validator/useSiteTypeValidator.js +8 -0
- package/dist/validator/useSiteTypeValidator.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -572,3 +572,48 @@ For installation instructions and full details, see [crl-vscode/README.md](https
|
|
|
572
572
|
|
|
573
573
|
This project is licensed under the Apache License 2.0.
|
|
574
574
|
See the LICENSE file for details.
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
### Native execution bounds
|
|
578
|
+
|
|
579
|
+
`crl-emit-results --case-timeout-ms 900000` and MCP `emit_results` with
|
|
580
|
+
`caseTimeoutMs: 900000` allow fifteen minutes per case. The default is 600000
|
|
581
|
+
milliseconds. Values must be positive integers no larger than 2147483647.
|
|
582
|
+
`crl-run-regression --native` accepts the same CLI option.
|
|
583
|
+
|
|
584
|
+
Native runs remain isolated by case. On Windows, process ownership requires
|
|
585
|
+
Windows 10 / Windows Server 2016 or newer and Windows PowerShell. CRL assigns the
|
|
586
|
+
launcher and descendants to an owned Job Object before they run, and confirms
|
|
587
|
+
that the job is empty when stopping it. An unconfirmed cleanup stops the queue,
|
|
588
|
+
records unreached cases as `not-run`, and prevents another run in that server.
|
|
589
|
+
Only one native producer invocation runs at a time in a server process.
|
|
590
|
+
|
|
591
|
+
Package callers must now **await `produceRegressionResults(...)`**. Its return is
|
|
592
|
+
`Promise<ProduceOutcome>`. The internal `produceResults` and `runOneCase` helpers
|
|
593
|
+
are asynchronous too. Exported synchronous `resolveJava` remains available;
|
|
594
|
+
`resolveJavaAsync` supports bounded discovery. `bounds.batchTimeoutMs` is retained
|
|
595
|
+
as a compatibility field and denotes a per-case timeout; `caseTimeoutMs` takes
|
|
596
|
+
precedence when supplied.
|
|
597
|
+
|
|
598
|
+
### Retrying native cases
|
|
599
|
+
|
|
600
|
+
Use CLI `crl-emit-results --retry-failed` or MCP `emit_results` with
|
|
601
|
+
`retryFailed: true` to retain compatible successful outputs and retry other cases.
|
|
602
|
+
Changed case inputs or missing/damaged result files also rerun. A changed model,
|
|
603
|
+
engine, driver, CRL producer, or effective Java runtime requires a full run.
|
|
604
|
+
Older manifests without retry fingerprints require one full run first.
|
|
605
|
+
|
|
606
|
+
For regression, use `crl-run-regression --native --retry-from <manifest>`
|
|
607
|
+
(or `produceRegressionResults({ ..., retryFrom })`). This reuses the earlier
|
|
608
|
+
regression scratch destination; it cannot target the policy's MV results.
|
|
609
|
+
|
|
610
|
+
Retry replays the original CEL input clock. Retained successes remain historical
|
|
611
|
+
results, with their original `producedAt`; rerun cases use the live engine clock.
|
|
612
|
+
The manifest reports the current invocation in `generatedAt`, the CEL clock in
|
|
613
|
+
`provenance.inputClock`, and retained rows as `reused: true`. Run without retry
|
|
614
|
+
when a fresh evaluation of every case is required. This is result retention, not
|
|
615
|
+
compiled-CQL caching.
|
|
616
|
+
|
|
617
|
+
CLI SIGINT/SIGTERM and MCP shutdown await owned-process cleanup. On POSIX,
|
|
618
|
+
forcibly killing the Node owner (for example SIGKILL) cannot run that cleanup;
|
|
619
|
+
Windows additionally detects owner loss through the Job Object supervisor.
|
package/dist/ast/builder.js
CHANGED
|
@@ -466,7 +466,7 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
|
|
|
466
466
|
try {
|
|
467
467
|
const tok = vtl.CONCEPT_VALUE_TYPE();
|
|
468
468
|
if (tok)
|
|
469
|
-
valueTypes.push(tok.text);
|
|
469
|
+
valueTypes.push((tok.text === "text" ? "string" : tok.text));
|
|
470
470
|
}
|
|
471
471
|
catch {
|
|
472
472
|
}
|
|
@@ -689,7 +689,7 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
|
|
|
689
689
|
try {
|
|
690
690
|
const tok = vtl.CONCEPT_VALUE_TYPE();
|
|
691
691
|
if (tok)
|
|
692
|
-
valueTypes.push(tok.text);
|
|
692
|
+
valueTypes.push((tok.text === "text" ? "string" : tok.text));
|
|
693
693
|
}
|
|
694
694
|
catch {
|
|
695
695
|
}
|
|
@@ -736,7 +736,7 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
|
|
|
736
736
|
const typeLine = body?.parameterTypeLine?.();
|
|
737
737
|
const typeToken = typeLine?.PARAMETER_TYPE?.();
|
|
738
738
|
const rawText = typeToken?.text ?? "";
|
|
739
|
-
let parameterType = rawText;
|
|
739
|
+
let parameterType = rawText === "text" ? "string" : rawText;
|
|
740
740
|
try {
|
|
741
741
|
const parsed = JSON.parse(rawText);
|
|
742
742
|
if (parsed && parsed.errorType === "InvalidParameterType") {
|
package/dist/ast/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ast/builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ast/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"auditedRevision": "
|
|
3
|
-
"auditedSchemaVersion": "2.
|
|
4
|
-
"auditedContentHash": "
|
|
5
|
-
"scope": "Kit schema 2.
|
|
2
|
+
"auditedRevision": "3bf25ef2420f7d52d39161292973333860827f26",
|
|
3
|
+
"auditedSchemaVersion": "2.9",
|
|
4
|
+
"auditedContentHash": "46d007bb22697b3ae67ebff58ed74157b9e48b785a95c7ab17c7151c314af826",
|
|
5
|
+
"scope": "Kit schema 2.9 release 6.3.0 maintenance from 510c931f2323c89f9822592e01668112dd6ff795 through 3bf25ef2420f7d52d39161292973333860827f26. Complete changed-path inventory and dispositions in coverage.md. Typed text/dateTime selected values, generic presence guards, exact policy entry-point identities, full generated-directory replacement, Description creation contract, MV-only launch and KE Accept/Reject are mapped to owning tests. Full core5059 and extension1285 pass, real MCP and typechecks pass. Native plan/code coverage converged; external Description plan and release code initial round completed, follow-up blocked by automatic approval review. Prior semantic sessions remain separately identified; installed delivery is still a release gate. No clinical certification or migration of existing flags is asserted.",
|
|
6
6
|
"evidence": "packages/crl/src/authoring-kit/tests/coverage.md"
|
|
7
7
|
}
|
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getAuthoringKit = getAuthoringKit;
|
|
7
7
|
const answerExample_1 = require("./answerExample");
|
|
8
|
+
const intakeExample_1 = require("./intakeExample");
|
|
8
9
|
const selectionExample_1 = require("./selectionExample");
|
|
9
10
|
const quantityExample_1 = require("./quantityExample");
|
|
10
11
|
const decisionExamples_1 = require("./decisionExamples");
|
|
@@ -19,7 +20,7 @@ const conceptTypes_1 = require("../grammar/conceptTypes");
|
|
|
19
20
|
const conceptValueTypes_1 = require("../grammar/conceptValueTypes");
|
|
20
21
|
const spawn_1 = require("../results/spawn");
|
|
21
22
|
const reference_1 = require("./reference");
|
|
22
|
-
const SCHEMA_VERSION = "2.
|
|
23
|
+
const SCHEMA_VERSION = "2.9";
|
|
23
24
|
const FEEDBACK_URL = "https://github.com/alphora/clinical-reasoning-language/issues/new";
|
|
24
25
|
const SUMMARY = "Local decision support: express clinical intent through coded answers, supported source representations and explicit computed publications. Author decision/criterion structure for distinct criteria, named terminology for coded answer choices, and presentations for question wording. Validate and compare CRE predictions with emitted CQL/FHIR and native $apply. Supported age, request, qualification, threshold and finite-code BMI forms are in scope; broader #320 limitations are listed separately.";
|
|
25
26
|
const FORCE_MODEL = {
|
|
@@ -63,7 +64,7 @@ const FORCE_MODEL = {
|
|
|
63
64
|
const CONCEPT_LAYER_MODEL = [
|
|
64
65
|
{
|
|
65
66
|
form: "- value type is <shape>.",
|
|
66
|
-
meaning: "Declare value type explicitly on selected Observation publications: boolean for a finding used as a guard, Quantity for a measurement, CodeableConcept for a coded answer. The Case Feature expression returns the selected record; supported guards read its Boolean value. Do not relabel coded or numeric data as boolean to satisfy a guard: derive a separate qualification or
|
|
67
|
+
meaning: "Declare value type explicitly on selected Observation publications: boolean for a finding used as a guard, Quantity for a measurement, CodeableConcept for a coded answer, text for a free-text answer (normalized to FHIR string). The Case Feature expression returns the selected record; supported guards read its Boolean value. Do not relabel coded or numeric data as boolean to satisfy a guard: derive a separate qualification, threshold or has-value publication. Missing answers remain unknown; record presence does not establish a true answer. Selected publications are rejected in legacy aliases, sem composition, collection-existence reductions and per-action menu guards (publication-unsupported-context). Use supported publication producers and branch/criterion guards. Validation checks do not replace emitted CQL and native execution.",
|
|
67
68
|
scope: "in",
|
|
68
69
|
},
|
|
69
70
|
{
|
|
@@ -93,6 +94,18 @@ const CONCEPT_LAYER_MODEL = [
|
|
|
93
94
|
},
|
|
94
95
|
];
|
|
95
96
|
const RULES = [
|
|
97
|
+
{
|
|
98
|
+
id: "text-answers", applicability: "Authoring typed intake questions", category: "concept-model",
|
|
99
|
+
rule: "Use value type is text on an explicit Record/Observation with code is and shape reduction is most recent. text is the author-facing alias for FHIR string; existing string spelling remains accepted. Emission uses Observation.valueString and a string Questionnaire item whose response uses valueString. Preserve the answer text; has-value does not trim it or judge clinical sufficiency. For a Boolean decision guard, derive a separate uncoded Record/Observation/boolean concept with definition is \"Primary Diagnosis\" has a value and its own most-recent reduction. The uncoded guard contributes no question; its answerable operand is included in the form.",
|
|
100
|
+
clauses: [
|
|
101
|
+
{ text: "Has-value tests only the selected publication's value. No selected record or a selected valueless/extension-only primitive record produces false. Valid text, Boolean false and recognized Unknown/N/A codes produce true. Supported operands are selected Boolean, text/string, dateTime and domain-interpreted CodeableConcept publications. Quantity and other complex presence contracts are not supported. Invalid type, unrecognized coded domain and selection failures remain errors. This predicate does not establish whether a diagnosis exists clinically or whether a dataset is complete.", force: "validator-enforced" },
|
|
102
|
+
{ text: "CEL rejects empty text values. Native inputs must be valid FHIR: the pinned FHIR parser can normalize an invalid empty valueString to an absent primitive before CQL evaluates it, so has-value is not a raw JSON schema validator. Clear an answer by retaining its response item without an answer, not by sending an empty string.", force: "default" },
|
|
103
|
+
{ text: "A selected operand supplies the computed record's validity and provenance; no operand yields an undated computed false with no invented clinical timestamp or evidence reference. A newer valueless record can replace an earlier answer. Clearing is a client/request contract, not removal of historical records: prove actual Q/QR extraction and selection with older answers still present. Omitting a field is not an instruction to clear it.", force: "default" },
|
|
104
|
+
{ text: "Do not use first: sibling presence guards to enumerate optional questions: the first true guard can stop later questions. The synthetic intake reference uses one compound presence guard and the same review activity in otherwise. It exposes the dependencies and recommends review even with incomplete answers; it adds neither requiredness nor a submission milestone. Author source-required conditional questions separately and test the applicable question set. An intake result is not a clinical eligibility finding.", force: "default" },
|
|
105
|
+
{ text: "Use value type is dateTime for temporal answers. It emits Observation.valueDateTime, Questionnaire type dateTime and QuestionnaireResponse valueDateTime using the standard engine. CEL value is contains the answer; date is timestamps the assertion for selection. Valid calendar-only values and zoned timestamps are accepted without inventing missing time. Renderer input/export behavior must be verified separately; a dateTime picker need not preserve date-only precision. Radio versus dropdown presentation and Record/RecordSet multiple-selection extensions remain backlog #322. Do not post-process emitted CQL, profiles or CEL data to invent unsupported language behavior.", force: "default" }
|
|
106
|
+
],
|
|
107
|
+
ref: "docs/typed-intake-answers.md; src/emit/tests/publicationHasValue.test.ts; intake-reference.crl; intake-reference.cel"
|
|
108
|
+
},
|
|
96
109
|
{
|
|
97
110
|
id: "concept-form",
|
|
98
111
|
applicability: "All CRL authoring",
|
|
@@ -116,7 +129,7 @@ const RULES = [
|
|
|
116
129
|
id: "value-type",
|
|
117
130
|
applicability: "All CRL authoring",
|
|
118
131
|
category: "concept-model",
|
|
119
|
-
rule: "Declare value type explicitly on selected Observation publications: boolean for a finding used as a guard, Quantity for a measurement, CodeableConcept for a coded answer. The Case Feature expression returns the selected record; supported guards read its Boolean value. Do not relabel coded or numeric data as boolean to satisfy a guard: derive a separate qualification or
|
|
132
|
+
rule: "Declare value type explicitly on selected Observation publications: boolean for a finding used as a guard, Quantity for a measurement, CodeableConcept for a coded answer, text for a free-text answer (normalized to FHIR string). The Case Feature expression returns the selected record; supported guards read its Boolean value. Do not relabel coded or numeric data as boolean to satisfy a guard: derive a separate qualification, threshold or has-value publication. Missing answers remain unknown; record presence does not establish a true answer. Selected publications are rejected in legacy aliases, sem composition, collection-existence reductions and per-action menu guards (publication-unsupported-context). Use supported publication producers and branch/criterion guards. Validation checks do not replace emitted CQL and native execution.",
|
|
120
133
|
why: "The published value type is what makes a concept's result legible AND checkable at every use site; Declaring it explicitly and checking it against the supported producer output contract catches disagreements at validation rather than at apply time (the #231 lane bug the redesign closes). The guard⇒boolean check is the specific rule that catches the A.10b masking — a coded-resource determination mis-typed `CodeableConcept` but consumed as a guard. Separating normative doctrine from shipped enforcement keeps the kit honest: it teaches the model to author to without claiming coverage the validator does not yet have.",
|
|
121
134
|
ref: "src/emit/publicationProgram.ts; src/validator/useSiteTypeValidator.ts; named-answer-options",
|
|
122
135
|
clauses: [
|
|
@@ -311,7 +324,7 @@ const RULES = [
|
|
|
311
324
|
id: "chaining-necessity",
|
|
312
325
|
applicability: "All CRL authoring",
|
|
313
326
|
category: "decision-shape",
|
|
314
|
-
rule: "Use decision invokes action-bearing branch structure. Use it for a source-delegated determination, a genuinely shared determination, or a behavior-preserving internal continuation reached from several paths. A repeated remaining interview can be defined once in the same library and invoked from both callers; it need not have a separate clinical outcome or a name in the source. Preserve when it is reached, precedence, unknown/error behavior, action identity and multiplicity, and relevant question scope. Ordinary local nesting does not require a helper, and a Boolean condition reused in guards belongs in a criterion. Never couple independently owned policies merely because their criteria look alike. Current CRE publication preparation refuses foreign delegated decisions with publication-unsupported-scope; same-library continuations and imported concept operands are separate cases. Factoring existing CRL changes structural addresses and can change review attribution display: regenerate/check provenance and renew affected MV review; semantic equivalence does not mean identical node IDs. The worked inline-versus-shared comparison proves CRE activities and condition order only. Re-verify native action IDs, RequestGroup nesting and Questionnaire grouping for the actual policy; preservation is an obligation, not a guarantee supplied by factoring. Every helper emits an independently applicable PlanDefinition; no internal-only marker prevents direct invocation. Verify deployment and invocation paths expose the intended policy root, not the helper alone. For PA, also check the delegated closure under pa-disposition-set and verifyLoop:mutual-exclusivity-spans-closure, including callers that both delegate and recommend. Decisions contain branches, not bare top-level actions. Use a guarded action block for several roots only when the source has a real common applicability condition. Otherwise
|
|
327
|
+
rule: "Use decision invokes action-bearing branch structure. Use it for a source-delegated determination, a genuinely shared determination, or a behavior-preserving internal continuation reached from several paths. A repeated remaining interview can be defined once in the same library and invoked from both callers; it need not have a separate clinical outcome or a name in the source. Preserve when it is reached, precedence, unknown/error behavior, action identity and multiplicity, and relevant question scope. Ordinary local nesting does not require a helper, and a Boolean condition reused in guards belongs in a criterion. Never couple independently owned policies merely because their criteria look alike. Current CRE publication preparation refuses foreign delegated decisions with publication-unsupported-scope; same-library continuations and imported concept operands are separate cases. Factoring existing CRL changes structural addresses and can change review attribution display: regenerate/check provenance and renew affected MV review; semantic equivalence does not mean identical node IDs. The worked inline-versus-shared comparison proves CRE activities and condition order only. Re-verify native action IDs, RequestGroup nesting and Questionnaire grouping for the actual policy; preservation is an obligation, not a guarantee supplied by factoring. Every helper emits an independently applicable PlanDefinition; no internal-only marker prevents direct invocation. Verify deployment and invocation paths expose the intended policy root, not the helper alone. For PA, also check the delegated closure under pa-disposition-set and verifyLoop:mutual-exclusivity-spans-closure, including callers that both delegate and recommend. Decisions contain branches, not bare top-level actions. Use a guarded action block for several roots only when the source has a real common applicability condition. Otherwise place independently invoked roots in separate policy packages (one unreferenced root per package); no verified unconditional action-only coordinator is supplied, and an always-true question must not be invented. See shared-continuation-reference for the small ordered example and source-delegated-decision-reference for a separate determination.",
|
|
315
328
|
why: "Reuse should preserve source meaning and ownership. Factoring the same remaining actions differs from inventing an independent determination or coupling lookalike policies.",
|
|
316
329
|
ref: "decision-composition; criterion; shared-continuation-reference; source-delegated-decision-reference; docs/decision-shapes.md",
|
|
317
330
|
clauses: [
|
|
@@ -593,7 +606,7 @@ const RULES = [
|
|
|
593
606
|
id: "mv-case-authoring",
|
|
594
607
|
applicability: "Preparing cases for clinician Medical Validation",
|
|
595
608
|
category: "cel",
|
|
596
|
-
rule: "Prepare clinician-facing CEL cases to demonstrate the authored question routes, with only the data needed for the route being reviewed. Include earlier false answers required to reach a later branch; missing evidence is not No. Keep deliberate overlap, precedence, conflicting-evidence and pause/clear controls in engineering verification. Those controls remain necessary where required by cel-cases and native-outcome-verification; simplifying an MV demonstration must not remove their proof. Regression harnesses may reuse MV cases and add controls; CEL has no CEL-to-CEL fact import. Normal emit_cel, emit_results and MV discovery select the complete src/cel/mv suite, including when passed one MV file. Each policy needs its own package.json beside src, and every selected CEL file must cover the same CRL root. Unclassified CEL and explicit regression selections are refused by normal emission/MV. An existing empty mv folder means zero cases; a missing folder is a migration error. crl-run-regression evaluates MV plus regression once each without emitting; its --native option uses the existing native producer in an automatically created temporary directory. Files have independent fact namespaces; CEL library names and frozen case IDs must be unique across the union, while case display names may repeat across files. Explicit validate_cel on MV checks the MV set; on regression it checks the union. Normal emission does not evaluate regression. Project-relative provenance references include src/cel/mv or src/cel/regression; basename aliases work only when unambiguous. FINAL case correspondence checks MV only. Data/results manifests retain each case source and frozen ID. Normal command results and native case states report failures. Explicit MV emit/validation commands may warn about supplied local Boolean question facts used only by definitively skipped later CRE conditions; unknown, computed, source/selector, criterion and potentially shared dependencies suppress this conservative advice. No warning is proof that all data is necessary. A deliberately retained clinical alternative can be valid despite advice; judge it against the intended demonstration instead of automatically deleting it. Warnings neither remove facts nor establish native equivalence. Use Git for source and review-history changes. Preserve frozen IDs for unchanged examples and check review associations when moving cases. Changed case data or meaning requires renewed review; use a new frozen ID or explicitly reset its prior verdict. Use Git to retain the old review file before removing obsolete regression-only entries from the current MV review file; those stale entries otherwise prevent MV completion. The pinned Result Questionnaire walks the selected executed route and its answerable inputs. Extra data for a skipped condition does not add that question to this route; parallel produced routes remain separately inspectable. The retained CRL Questionnaire covers the complete reached case rather than just the pinned route. The FHIR Questionnaire shows the associated native output. These three views serve different purposes and can differ legitimately. Displayed answer labels and choice highlights are not a terminology-validation oracle; validate coding identity and native behavior independently. Tree execution does not depend on authored source correspondence; source-text highlighting still does. Neither viewer repairs authored CEL or replaces native verification. Shared continuations retain their full source definitions in the tree; the case view expands actual entered occurrences instead of repeatedly copying every possible unentered path. Off-path advice follows CRE traces and conservatively keeps possible shared uses. A CRE error in any sibling case suppresses advice for that entire CEL file. It remains advice, not a completeness proof. Keep assertion stress controls in regression; worked reference files marked engineering are not ready-made minimal MV suites.",
|
|
609
|
+
rule: "Prepare clinician-facing CEL cases to demonstrate the authored question routes, with only the data needed for the route being reviewed. Include earlier false answers required to reach a later branch; missing evidence is not No. Keep deliberate overlap, precedence, conflicting-evidence and pause/clear controls in engineering verification. Those controls remain necessary where required by cel-cases and native-outcome-verification; simplifying an MV demonstration must not remove their proof. Regression harnesses may reuse MV cases and add controls; CEL has no CEL-to-CEL fact import. Normal emit_cel, emit_results and MV discovery select the complete src/cel/mv suite, including when passed one MV file. Each policy needs its own package.json beside src, and every selected CEL file must cover the same CRL root. Unclassified CEL and explicit regression selections are refused by normal emission/MV. An existing empty mv folder means zero cases; a missing folder is a migration error. crl-run-regression evaluates MV plus regression once each without emitting; its --native option uses the existing native producer in an automatically created temporary directory (or retries that prior scratch run with --retry-from). Files have independent fact namespaces; CEL library names and frozen case IDs must be unique across the union, while case display names may repeat across files. Explicit validate_cel on MV checks the MV set; on regression it checks the union. Normal emission does not evaluate regression. Project-relative provenance references include src/cel/mv or src/cel/regression; basename aliases work only when unambiguous. FINAL case correspondence checks MV only. Data/results manifests retain each case source and frozen ID. Normal command results and native case states report failures. Explicit MV emit/validation commands may warn about supplied local Boolean question facts used only by definitively skipped later CRE conditions; unknown, computed, source/selector, criterion and potentially shared dependencies suppress this conservative advice. No warning is proof that all data is necessary. A deliberately retained clinical alternative can be valid despite advice; judge it against the intended demonstration instead of automatically deleting it. Warnings neither remove facts nor establish native equivalence. Use Git for source and review-history changes. Preserve frozen IDs for unchanged examples and check review associations when moving cases. Changed case data or meaning requires renewed review; use a new frozen ID or explicitly reset its prior verdict. Use Git to retain the old review file before removing obsolete regression-only entries from the current MV review file; those stale entries otherwise prevent MV completion. The pinned Result Questionnaire walks the selected executed route and its answerable inputs. Extra data for a skipped condition does not add that question to this route; parallel produced routes remain separately inspectable. The retained CRL Questionnaire covers the complete reached case rather than just the pinned route. The FHIR Questionnaire shows the associated native output. These three views serve different purposes and can differ legitimately. Displayed answer labels and choice highlights are not a terminology-validation oracle; validate coding identity and native behavior independently. Tree execution does not depend on authored source correspondence; source-text highlighting still does. Neither viewer repairs authored CEL or replaces native verification. Shared continuations retain their full source definitions in the tree; the case view expands actual entered occurrences instead of repeatedly copying every possible unentered path. Off-path advice follows CRE traces and conservatively keeps possible shared uses. A CRE error in any sibling case suppresses advice for that entire CEL file. It remains advice, not a completeness proof. Keep assertion stress controls in regression; worked reference files marked engineering are not ready-made minimal MV suites.",
|
|
597
610
|
why: "A clinician should be able to review a question route without interpreting an implementation stress test. Author intent, execution evidence and native result verification remain separate responsibilities.",
|
|
598
611
|
ref: "cel-cases; verify-loop; docs/cel-suites.md; docs/mv-component-view.md; docs/medical-validation-plan.md; crl-vscode/src/executionRoutes.test.mjs",
|
|
599
612
|
clauses: [
|
|
@@ -652,7 +665,7 @@ const RULES = [
|
|
|
652
665
|
id: "emit-output-root",
|
|
653
666
|
applicability: "All CRL authoring",
|
|
654
667
|
category: "process",
|
|
655
|
-
rule: "ONE OUTPUT ROOT for the writing emit tools. MCP `emit_cql` returns CQL inline and never writes. Normally omit MCP `out` / `outRoot`, CLI `--out-dir` (`--out` for crl-emit-results): the nearest package.json defines the project root. `emit_crl` (target fhir-def) writes `<root>/src/cql/` and `<root>/src/fhir/<ResourceType>/<id>.json`; target cql writes `<root>/src/cql/`. `emit_cel` writes `<root>/tests/data/fhir/patient/<compartmentId>/<lowercase-type>/<id>.json`; `emit_results` writes under `<root>/tests/results/fhir/patient/<compartmentId>/`. An explicit output argument replaces ROOT, retaining that entire layout. Never pass a leaf such as src or tests/data/fhir as the root: src would become src/src/cql. Omission WRITES for emit_crl and emit_cel; use an explicit scratch root for inspection. A scratch tree mirrors the project layout. For both-representation content use closure emit_crl, not the single-library emit_cql tool. Consume returned paths and manifests; tools own placement.
|
|
668
|
+
rule: "ONE OUTPUT ROOT for the writing emit tools. MCP `emit_cql` returns CQL inline and never writes. Normally omit MCP `out` / `outRoot`, CLI `--out-dir` (`--out` for crl-emit-results): the nearest package.json defines the project root. `emit_crl` (target fhir-def) writes `<root>/src/cql/` and `<root>/src/fhir/<ResourceType>/<id>.json`; target cql writes `<root>/src/cql/`. `emit_cel` writes `<root>/tests/data/fhir/patient/<compartmentId>/<lowercase-type>/<id>.json`; `emit_results` writes under `<root>/tests/results/fhir/patient/<compartmentId>/`. An explicit output argument replaces ROOT, retaining that entire layout. Never pass a leaf such as src or tests/data/fhir as the root: src would become src/src/cql. Omission WRITES for emit_crl and emit_cel; use an explicit scratch root for inspection. A scratch tree mirrors the project layout. For both-representation content use closure emit_crl, not the single-library emit_cql tool. Consume returned paths and manifests; tools own placement. Successful writes replace the complete generated directories after preflight: CRL src/cql and src/fhir, standalone CQL src/cql, CEL tests/data/fhir, normal results tests/results. Custom files there are removed too; use Git for recovery. Explicit failed-case retry retains verified successful results. The policy root PlanDefinition and generated Questionnaire use <canonicalBase>/<FHIR resource type>/<package.json name> exactly; decision names do not change entry-point URLs. Supporting definitions keep distinct IDs. Multiple root decisions are an emission error. Saved per-case MV review copies retain case-specific IDs and URLs; they are not policy entry-point definitions for deployment.",
|
|
656
669
|
ref: "packages/crl/TOOLING.md — the ROOT",
|
|
657
670
|
clauses: [
|
|
658
671
|
{
|
|
@@ -660,7 +673,7 @@ const RULES = [
|
|
|
660
673
|
"force": "default"
|
|
661
674
|
},
|
|
662
675
|
{
|
|
663
|
-
"text": "Verify that the selected root and complete returned paths are intended before publishing. Select a root above the documented generated layout, not a leaf that duplicates src or tests/data/fhir below itself. Account for CEL/results replacement
|
|
676
|
+
"text": "Verify that the selected root and complete returned paths are intended before publishing. Select a root above the documented generated layout, not a leaf that duplicates src or tests/data/fhir below itself. Account for complete CRL/CEL/results replacement, and verify the emitted path set after renames.",
|
|
664
677
|
"force": "invariant",
|
|
665
678
|
"test": "verifyLoop:artifact-integrity"
|
|
666
679
|
}
|
|
@@ -738,11 +751,11 @@ const RULES = [
|
|
|
738
751
|
id: "emitted-trees-are-ours",
|
|
739
752
|
applicability: "All CRL authoring",
|
|
740
753
|
category: "process",
|
|
741
|
-
rule: "Emitted trees are producer-owned.
|
|
754
|
+
rule: "Emitted trees are producer-owned. After complete preflight, CRL replaces src/cql and src/fhir, standalone CQL replaces src/cql, CEL replaces tests/data/fhir, and normal native results replace tests/results. Every old or custom file in those generated directories is removed; keep authored files elsewhere and use Git for recovery. Explicit failed-case retry retains verified successful outputs and retries the rest. Linked output boundaries are refused; links within a removed tree are never followed. Failed validation leaves prior output intact; a filesystem failure after replacement begins can leave partial output and is reported. CEL and native results write case manifests with paths and hashes. Re-hashing listed files proves integrity, not completeness: compare the complete path set too. Consume returned paths and manifests.",
|
|
742
755
|
ref: "verifyLoop",
|
|
743
756
|
clauses: [
|
|
744
757
|
{
|
|
745
|
-
"text": "Keep authored files outside producer-owned data/results trees. Compare the complete expected path/resource set with returned manifests as well as file hashes; inspect
|
|
758
|
+
"text": "Keep authored files outside producer-owned data/results trees. Compare the complete expected path/resource set with returned manifests as well as file hashes; inspect replacement, explicit-retry retention, symlink and removal diagnostics. Integrity of listed files alone does not prove completeness or absence of stale output.",
|
|
746
759
|
"force": "invariant",
|
|
747
760
|
"test": "verifyLoop:artifact-integrity"
|
|
748
761
|
}
|
|
@@ -752,11 +765,11 @@ const RULES = [
|
|
|
752
765
|
id: "produce-results",
|
|
753
766
|
applicability: "All CRL authoring",
|
|
754
767
|
category: "process",
|
|
755
|
-
rule: "Questionnaires are generated by `$apply`, never emitted from CRL: no Questionnaire appears in the CRL definition emit. After validation and CRE checks, call `emit_results(celPath, crlPath, useCase)` (useCase selects result-driver behavior, not kit content); it owns result placement, so never place `$apply` output yourself. Enable `crl.enableResults` in VS Code User settings and restart the MCP client. An absent setting preserves an existing opt-in; explicit false removes it. A JRE 17+ and the CRL-maintained complete CLI engine " + spawn_1.ENGINE_JAR_SOURCE.buildId + " are required. The tool gives the download command when missing, discovers <home>/" + spawn_1.ENGINE_JAR_SOURCE.cacheRelativePath + ", and verifies the pinned hash; normal use needs no manual hashing, extraction, or classpath. The original Maven jar is not the corrected default. `jarPath` and `jarSha256` are overrides. Normal emit_results selects the complete MV suite. Its schema-1 manifest is tests/results/questionnaire-manifest-mv.json; celLibrary labels the selected set and each entry retains sourceFile and caseId. Read every case state: generated / no-questionnaire / populate-degraded / failed / timeout / not-run. The unsuccessful-case count includes degradation and not-run while preserving their distinct states. A clean no-questionnaire result must be compared with the particular case expectations; inputs elsewhere in the definition closure do not prove this route should have a form.
|
|
768
|
+
rule: "Questionnaires are generated by `$apply`, never emitted from CRL: no Questionnaire appears in the CRL definition emit. After validation and CRE checks, call `emit_results(celPath, crlPath, useCase)` (useCase selects result-driver behavior, not kit content); it owns result placement, so never place `$apply` output yourself. Enable `crl.enableResults` in VS Code User settings and restart the MCP client. An absent setting preserves an existing opt-in; explicit false removes it. A JRE 17+ and the CRL-maintained complete CLI engine " + spawn_1.ENGINE_JAR_SOURCE.buildId + " are required. The tool gives the download command when missing, discovers <home>/" + spawn_1.ENGINE_JAR_SOURCE.cacheRelativePath + ", and verifies the pinned hash; normal use needs no manual hashing, extraction, or classpath. The original Maven jar is not the corrected default. `jarPath` and `jarSha256` are overrides. Normal emit_results selects the complete MV suite. Its schema-1 manifest is tests/results/questionnaire-manifest-mv.json; celLibrary labels the selected set and each entry retains sourceFile and caseId. Read every case state: generated / no-questionnaire / populate-degraded / failed / timeout / not-run. The unsuccessful-case count includes degradation and not-run while preserving their distinct states. A clean no-questionnaire result must be compared with the particular case expectations; inputs elsewhere in the definition closure do not prove this route should have a form. Normal runs replace the complete generated results directory, including old manifests, after source/runtime preflight. Custom files there are deleted; Git owns recovery. An absent file alone is not evidence that the policy asked nothing. generated means a Questionnaire was returned, not that the intended activity or pause was verified; compare those outcomes against each case oracle. Written MV pairs have stable per-case identities and omit QuestionnaireResponse.authored to avoid run-time churn. They are MV review artifacts; do not resubmit these normalized files unchanged as interactive responses. The results tree is producer-owned; use returned paths/manifests and keep hand-authored Q/QR elsewhere. Set caseTimeoutMs (CLI --case-timeout-ms) to increase the per-case deadline; default 600000 milliseconds. Native runs own their subprocesses and allow one active producer per server. On Windows they require Windows 10/Server 2016 or later and Windows PowerShell. If cleanup is unconfirmed, inspect the reported processes and restart that server before another native run. Output preserves UTF-8 question and answer text. Use retryFailed: true (CLI --retry-failed) to retain compatible successful results and rerun unsuccessful, changed, or damaged cases. A changed model or runtime, or an older manifest without compatibility fingerprints, requires a full run. Retry replays the original CEL input clock; retained rows are historical results with their original producedAt, while reruns evaluate at the live engine time. generatedAt identifies the current invocation and reused marks retained rows. For a fresh evaluation of all cases, run without retry. Native regression may retry its previous scratch run with --retry-from <manifest>; it cannot target MV output.",
|
|
756
769
|
ref: "verifyLoop",
|
|
757
770
|
clauses: [
|
|
758
771
|
{
|
|
759
|
-
"text": "Use emit_results after validation and CRE checks, enabling it through crl.enableResults in VS Code User settings and restarting the MCP client, and using the maintained verified engine. Consume returned paths and manifests; use explicit jar overrides only for a deliberate alternate engine.",
|
|
772
|
+
"text": "Use emit_results after validation and CRE checks, enabling it through crl.enableResults in VS Code User settings and restarting the MCP client, and using the maintained verified engine. Consume returned paths and manifests; use explicit jar overrides only for a deliberate alternate engine. Use caseTimeoutMs for a larger per-case native deadline and retryFailed to retain compatible historical successes. Inspect reused and producedAt; retry is not a fresh evaluation of every case. Changed model/runtime requires a full run. Use regression --retry-from only for the earlier regression scratch manifest.",
|
|
760
773
|
"force": "default"
|
|
761
774
|
},
|
|
762
775
|
{
|
|
@@ -775,14 +788,15 @@ const RULES = [
|
|
|
775
788
|
"silently choosing. A flag is NOT `.crl` content: it is a structured STORE RECORD you create with the `create_flag` " +
|
|
776
789
|
"MCP tool, which writes a `<policy>/src/medical-validation/flags/<id>.json` file — a per-flag record inside the tracked " +
|
|
777
790
|
"`medical-validation` entity (so `kelp save medical-validation` captures it), NOT a `- meta is` line. Anchor it at the NARROWEST faithful scope — `concept`, `decision`, or `library` — by passing that node's name. " +
|
|
791
|
+
"For concept flags, create_flag captures an authored `- meta is `@id: stable-concept-id`.` as anchor.entityId. Keep that unique ID when renaming or moving the same concept; tree badges, folded Criterion rollups and flag navigation resolve its current location without rewriting the saved anchor/history. A supplied ID that is absent or duplicated never falls back to a reused name. Older flags without entityId still require a unique library/name match and do not automatically gain rename safety. Empty or repeated target IDs are refused when creating a flag; malformed identity metadata prevents reliable ID resolution. Generated dedup keys use the stable ID when present; explicit supplied keys remain unchanged. After a rename, inspect unresolved flags and their original evidence; do not assign a different concept the old ID merely to move a flag. " +
|
|
778
792
|
"The four tags, by what went wrong: `@customer-confirmable` — an EXTERNAL-stakeholder ambiguity you resolved " +
|
|
779
793
|
"provisionally (carry the reading you took as the `assumption` field); `@internal-inconsistency` — the SOURCE " +
|
|
780
794
|
"contradicts itself (source-vs-source); `@open-fork` — an INTERNAL modeling fork you encoded one way but did not " +
|
|
781
795
|
"settle (`chosen`/`alternatives` fields); `@fidelity-defect` — a known encoding≠source defect, with a REQUIRED " +
|
|
782
796
|
"`direction` = `over-reach|criterion-drop` (over-reach = you ADDED logic the source doesn't support; criterion-drop = " +
|
|
783
|
-
"you OMITTED a source-required criterion).
|
|
784
|
-
"
|
|
785
|
-
"
|
|
797
|
+
"you OMITTED a source-required criterion). Use a short `gist` title and put the source detail, options, reasoning, consequences and MV question in top-level `description`. " +
|
|
798
|
+
"Description is plain text displayed in MV; `fields.description` is rejected: use the top-level parameter. Description is trimmed at the edges, omitted when blank, and permits newlines, semicolons and backticks. Description does not participate in retry identity; retrying with changed detail returns the existing record without overwriting it. There is no MCP amend operation for an existing Description; fix it through the KE-owned record workflow, not by filing a duplicate with a changed gist. An optional issue link belongs in `fields.ref` (e.g. `#207`). " +
|
|
799
|
+
"Accept flag moves an open KE flag into MV with the same ID/content/anchor; Reject flag closes it without conversion. Author flags `status open` (the default). An open flag blocks Medical Validation " +
|
|
786
800
|
"completion. Separately, `@gap-filed` IS still a `.crl` meta tag (NOT a flag) — a durable `- meta is `@gap-filed: …; " +
|
|
787
801
|
"ref <issue>`.` pointer to an already-filed gap, REQUIRED `; ref`; it ships fine and does not gate. The four flag " +
|
|
788
802
|
"tags above belong to extraction (CRL versus narrative fidelity). The validation-phase vocabulary has four " +
|
|
@@ -800,7 +814,7 @@ const RULES = [
|
|
|
800
814
|
{
|
|
801
815
|
text: "When you cannot cleanly resolve a source/encoding problem during extraction, author a flag (via `create_flag`) " +
|
|
802
816
|
"at the narrowest faithful scope rather than silently choosing; the flag record is LEAN (gist + fields + `status " +
|
|
803
|
-
"open`), the
|
|
817
|
+
"open`), with a short title in `gist` and the source detail, reasoning, consequences and review question in `description`; an optional tracker issue can be linked with `ref`. (`assumption`/" +
|
|
804
818
|
"`chosen`/`alternatives` are the semantic fields to include when they apply — not required.)",
|
|
805
819
|
force: "default",
|
|
806
820
|
},
|
|
@@ -826,15 +840,15 @@ const RULES = [
|
|
|
826
840
|
},
|
|
827
841
|
{
|
|
828
842
|
text: "How to WRITE flags — use the `crl` MCP tools; they write the store directly. `create_flag` authors a flag on a " +
|
|
829
|
-
"concept, decision, or library (pass `kind`, `name`, the `tag`, a
|
|
843
|
+
"concept, decision, or library (pass `kind`, `name`, the `tag`, a short `gist`, optional plain-text `description`, and required extra `fields` " +
|
|
830
844
|
"like `direction`, and the optional issue link as `fields.ref`); `set_flag_status` flips one flag " +
|
|
831
|
-
'`open`<->`resolved` by selector. Pass `tag` as the BARE tag id — `"open-fork"`, `"fidelity-defect"` (the `@` ' +
|
|
845
|
+
'`open`<->`resolved` by selector. This KE automation API remains distinct from human MV Accept/Reject: resolving an extraction flag leaves it KE-owned and creates no MV flag. Pass `tag` as the BARE tag id — `"open-fork"`, `"fidelity-defect"` (the `@` ' +
|
|
832
846
|
'prefix is display-only prose; `tag: "@open-fork"` is an `unknown-tag`). Both REQUIRE a `path` to a `.crl` file ' +
|
|
833
847
|
"in the policy (inline `code` is NOT accepted — a store can't be located without a filesystem path); `create_flag` " +
|
|
834
848
|
"uses it to VALIDATE the anchor target exists AND to locate the store, while `set_flag_status` uses it ONLY to " +
|
|
835
849
|
"locate the store (it does no `.crl` content read). They WRITE the `medical-validation/flags/<id>.json` record (they do NOT " +
|
|
836
850
|
"return `.crl` source for you to apply, and they never edit `.crl` files). `create_flag` is idempotent while open " +
|
|
837
|
-
"(a same-content retry returns the existing record). PRECONDITION: the store is located by walking up to the " +
|
|
851
|
+
"(a same-content retry returns the existing record; Description is excluded from generated keys and does not overwrite existing detail on retry; explicit keys remain caller-owned). PRECONDITION: the store is located by walking up to the " +
|
|
838
852
|
'policy\'s `src/` dir, identified by `provenance/` or by both `crl/` and `cel/`; if the tool errors "not inside a discoverable policy", check that layout. ' +
|
|
839
853
|
"Source correspondence is still required for source highlighting and the provenance/promotion workflow, but not to locate this flag store. (`@validation-concern`'s optional " +
|
|
840
854
|
"`kind` triage enum + any occurrence `key` are carried as `fields` by the same tools.)",
|
|
@@ -871,13 +885,14 @@ const TYPE_ALLOWLIST = {
|
|
|
871
885
|
note: "conceptTypes / conceptValueTypes / activityTypes are the full grammar-legal " +
|
|
872
886
|
"vocabularies, not a promise that every type works in every declaration. The " +
|
|
873
887
|
"selected-publication contract taught here uses Observation with boolean, " +
|
|
874
|
-
"CodeableConcept or Quantity values. Patient and ServiceRequest can be source " +
|
|
888
|
+
"text (FHIR string), dateTime, CodeableConcept or Quantity values. Patient and ServiceRequest can be source " +
|
|
875
889
|
"representation types under their supported projection contracts; they are " +
|
|
876
890
|
"not substitutes for the concept's Observation type. Other grammar types " +
|
|
877
891
|
"need their own supported emission and execution contract. `recommended` " +
|
|
878
892
|
"lists this kit's current concept and activity guidance.",
|
|
879
893
|
};
|
|
880
894
|
const EXAMPLES = [
|
|
895
|
+
{ id: "datetime-answer", title: "Date/time answer", language: "crl", valid: true, snippet: intakeExample_1.DATETIME_ANSWER, note: "Selected Observation dateTime answer. Add to a CRL library with crl.canonicalBase for emission; pair with a has-value predicate when a Boolean guard is needed. Native intake acceptance verifies the actual generated dateTime question, calendar precision, timestamps and clear. Client picker behavior is a separate boundary." },
|
|
881
896
|
{ id: "source-field-order", title: "source-field-order", language: "crl", valid: true, snippet: sourceOrderExample_1.SOURCE_ORDER_EXAMPLE, note: "Exact declaration shared with concept-body-order-independence.test.ts: all concept fields precede the trailing source block. The owning test checks AST ownership and publication preparation, not native execution." },
|
|
882
897
|
{ id: "quantity-declaration", title: "quantity-declaration", language: "crl", valid: true, snippet: quantityExample_1.QUANTITY_EXAMPLE_DECLARATION, note: "Exact current Quantity declaration from the owning CEL numeric-literal test. Supply package.json crl.canonicalBase for emission. This example defines a measurement, not a Boolean decision guard." },
|
|
883
898
|
{ id: "quantity-answer", title: "quantity-answer", language: "cel", valid: true, snippet: quantityExample_1.QUANTITY_EXAMPLE_FACT, note: "Fact excerpt shared verbatim with numericValueRules.test.ts. Use within a CEL library covering L with a Patient subject and case referencing F. The owning test checks numeric-literal diagnostics; this excerpt does not establish BMI, unit conversion or native execution." },
|
|
@@ -940,11 +955,11 @@ const EXAMPLES = [
|
|
|
940
955
|
note: "Fictional source: every in-scope request is single or combined. Resolve that request type first; then either finding qualifies, and only combined requests need documentation. Qualifying Evidence is reused twice. The four inputs are selected Boolean Record/Observation concepts, not presence tests; missing is unknown. Complete declarations and engineering cases are in reused-condition-reference. Other or overlapping request categories need their own source-faithful model. Neither this excerpt nor its CRE checks certify native question visibility.",
|
|
941
956
|
},
|
|
942
957
|
{
|
|
943
|
-
id: "open-fork-flag", title: "Review flag: an @open-fork on the concept it concerns (via create_flag —
|
|
958
|
+
id: "open-fork-flag", title: "Review flag: an @open-fork on the concept it concerns (via create_flag — short title, detail in Description)",
|
|
944
959
|
language: "text",
|
|
945
|
-
snippet: 'create_flag(\n path: "<policy>/src/crl/coverage-policy.crl",\n kind: "concept", name: "BMI Threshold",\n tag: "open-fork",\n gist: "
|
|
960
|
+
snippet: 'create_flag(\n path: "<policy>/src/crl/coverage-policy.crl",\n kind: "concept", name: "BMI Threshold",\n tag: "open-fork",\n gist: "Eligibility threshold",\n description: "Encoded BMI-40-only provisionally. The source also allows 35-plus-comorbidity. This changes who qualifies; which reading should apply?",\n fields: { chosen: "bmi-40-only", alternatives: "bmi-35-plus-comorbidity", ref: "#207" }\n)\n→ writes <policy>/src/medical-validation/flags/<id>.json (status defaults to open)',
|
|
946
961
|
valid: true,
|
|
947
|
-
note: "The flag is a STORE record, not a `.crl` line: a
|
|
962
|
+
note: "The flag is a STORE record, not a `.crl` line: a short gist + detailed `description` + `chosen`/`alternatives` (semantic, optional) + an optional issue `ref`. `create_flag` writes `medical-validation/flags/<id>.json`; it does NOT touch the `.crl`. An open flag blocks Medical Validation completion.",
|
|
948
963
|
},
|
|
949
964
|
{
|
|
950
965
|
id: "fidelity-defect-flag", title: "Review flag: an @fidelity-defect on a DECISION (required `direction` field)",
|
|
@@ -971,11 +986,11 @@ const EXAMPLES = [
|
|
|
971
986
|
const VERIFY_LOOP_NOTE_BASE = "Questionnaires are generated by `$apply`, never emitted from CRL. Use emit_results and its returned paths; do not place engine output yourself. For definition/data emission use emit-output-root: omitted output arguments write under the project root, and explicit arguments replace that root. " +
|
|
972
987
|
"AFTER this loop is clean, `emit_results` produces the Questionnaire/QuestionnaireResponse a medical reviewer " +
|
|
973
988
|
"reads (see the `produce-results` rule): it is DISABLED by default, needs an engine jar you supply, and it " +
|
|
974
|
-
"
|
|
989
|
+
"REPLACES the generated `tests/results/` directory on normal runs — do not hand-author artifacts there. " +
|
|
975
990
|
"validate_cel and run_decision require FILES under a project root (a package.json); they do not accept inline code. In a content project's artifact-package layout, author <artifact>.crl and <artifact>.cel under the artifact's package and pass absolute paths. " +
|
|
976
991
|
"PROJECT CONFIG — the project's `package.json` MUST declare `crl.canonicalBase` (e.g. `\"crl\": { \"canonicalBase\": \"http://example.org/crl/<project>\" }`): the analytical local CodeSystem url is `<canonicalBase>/CodeSystem/<domain>-local`; owned answer vocabularies have separate logical-owner CodeSystem identities, so emit fails with `missing-canonical-url-base` without it (no urn fallback). Projects that emit FHIR already require it; `emit_cql` for local-`code is` content likewise needs a `path` (not inline `code`) so it can read the base from the nearest package.json. " +
|
|
977
992
|
"PROVENANCE / PROMOTION (beyond the run_decision proof): canonicalize the source, inspect excluded/dropped-text warnings against the original, and resolve meaningful omissions before attributing its anchor. Successful canonicalization and matching hashes do not prove the anchor includes every source criterion. Generate the scaffold with `generate_provenance` " +
|
|
978
|
-
'clusterBy:"disposition-path" — it clusters per grounded RUN PATH (decision-node refs only). Correspondence requires frozen, uniquely identified cases, successful rendering and
|
|
993
|
+
'clusterBy:"disposition-path" — it clusters per grounded RUN PATH (decision-node refs only). Correspondence requires frozen, uniquely identified cases, successful rendering and grounded execution paths. Reached unknown conditions contribute pause endpoints; produced actions contribute action endpoints. A partial path with both retains both and is labeled Awaiting input. A pause expectation alone is not execution evidence: no-output runs without a reached unknown, unresolved entered decisions, evaluation errors and discarded unknown evidence remain unchecked. Check generation diagnostics and FINAL validate_provenance results; generation success alone is insufficient. The check compares actual CRE paths with cockpit lighting and detects missing or extra rows, including on pause paths. It neither proves native equivalence nor completes source attribution. Keep useful pause tests; never invent a disposition to clear a diagnostic. ' +
|
|
979
994
|
'The default clusterBy:"decision" is the per-decision concept-attribution VIEW (it cites ' +
|
|
980
995
|
"concept refs that fan out / over-light the gate) — inspect with it, do NOT promote with it. " +
|
|
981
996
|
"DERIVEDFROM PORTABILITY (#250): the anchorSource.derivedFrom back-pointer must be CARRIER-RELATIVE + POSIX — " +
|
|
@@ -1194,6 +1209,8 @@ const VERIFICATION_LEGEND = [
|
|
|
1194
1209
|
},
|
|
1195
1210
|
];
|
|
1196
1211
|
const REFERENCE_ARTIFACTS = [
|
|
1212
|
+
{ name: "intake-reference.crl", language: "crl", applicability: "Authoring typed intake questions", verification: ["cre-run", "fhir-emit"], purpose: "Synthetic text, Boolean false and explicit has-value guards. Both branches recommend Human Review, including with incomplete answers; no clinical eligibility or submission-timing rule. Use the paired CEL and supplied project requirements. Question reachability is tested independently of outcome equality.", source: intakeExample_1.INTAKE_CRL },
|
|
1213
|
+
{ name: "intake-reference.cel", language: "cel", applicability: "Authoring typed intake questions", verification: ["cre-run"], purpose: "Empty and answered engineering examples. Place beside the paired CRL in the served project context, under src/cel/regression for full regression. Exactly one review recommendation is checked; Boolean false remains an answered field. Separate native Q/QR session checks cover change and clear.", source: intakeExample_1.INTAKE_CEL },
|
|
1197
1214
|
{ name: "selection-reference.crl", language: "crl", applicability: "All CRL authoring", verification: ["cre-run", "fhir-emit"], purpose: "Actual input of the CRE newer-false selection test. A selected Boolean answer preserves false and follows the otherwise branch. Missing presentation is a legal warning with concept-name fallback. Use with selection-reference.cel in a project with crl.canonicalBase = http://example.org/publication. This is CRE and emission evidence, not native $apply execution.", source: selectionExample_1.SELECTION_REFERENCE_CRL },
|
|
1198
1215
|
{ name: "selection-reference.cel", language: "cel", applicability: "All CRL authoring", verification: ["cre-run"], purpose: "The existing test's two dated answers: the newer false answer produces Deny. Both input orders are checked in the owning CRE test.", source: selectionExample_1.SELECTION_REFERENCE_CEL },
|
|
1199
1216
|
{ name: "named-answer-reference.crl", language: "crl", applicability: "All CRL authoring", verification: ["cre-run", "fhir-emit"], purpose: "Selected coded answers, explicit negative exceptions and question presentation. Use with named-answer-terms.crl and named-answer-reference.cel; package.json crl.canonicalBase = " + answerExample_1.ANSWER_EXAMPLE_BASE + ". The owning test also checks CQL emission and emitted presentation extensions; it does not execute native $apply.", source: (0, answerExample_1.answerExampleSource)() },
|