Generated from smart-base/skills/content/authoring-who-smart-guidelines/l2-component-edit-review.md — do not edit here.

✎ Edit this page’s source

l2-component-edit-review

Skill id: l2-component-edit-review · Package: authoring-who-smart-guidelines · Process: l2-component-edit-review.bpmn (Process_L2ComponentEditReview), called by every authoring track of l2-dak-authoring.bpmn

Owner, 2026-10-14: “make sure all L2 agent edit-human review process for DMN and BPMN, glossary/data dictionary, user stories and personas for the DAK are documented as part of subprocess and tools/skills where necessary.”

This skill adds one table and no mechanism. Every step of the subprocess runs a skill that already exists. Review is cat-harness’s Process_Review. The verdict is a qa-review/v1 QaReview. The links follow staging-review’s deep-link rule, and the preview follows before-after-preview. What differs between components is only which renderer, checker, diff and reviewer a pass uses, and the table below records that.

The shape: edit, check, render, then fork

edit ─► check ─► render + stage ─┬─► hand on (adjudication: pending)   the track continues
                                 └─► ask for review ─► Process_Review ─► verdict
                                       approve          ─► done
                                       request-changes  ─► edit again
                                       reject           ─► reopen upstream, flag derived assets

Adjudication is QA, not a gate (owner, 2026-10-14). The track that called the subprocess carries on as soon as the component is staged, and nothing waits for the verdict. But not waiting is not skipping: the call ends only when both branches have ended, and the DAK is not adjudicated until every component’s verdict is recorded. These are rules 1 to 4 of smart-guideline-end-to-end, applied to one component.

The inputs, per component

The calling activity in l2-dak-authoring.bpmn names the authoring skill. Its documentation names the rest.

component (DAK #)track in Process_L2Dakauthoring skillchecker (Task_Check)renderer and diff (Task_RenderStage)reviewing rolethe reviewer judges
Generic personas (2), user scenarios (3)Task_Personasl2-dak-authoringEach persona maps to a swimlane and each lane to a persona (dak-swimlanes.ts). Each scenario traces to an L1 recommendation through implementedBy (recommendation-extraction; candidates from l1-recommendation-scenarios.ts).The persona card (role, goal, setting) and the scenario as a prose diff: the word or inline DiffRenderer (before-after-preview).Clinical SMEIs this who does the work, and is this what they do, as the guideline says?
Business processes, BPMN (4)Task_Bpmnbpmn-authoringbpmn-js imports it with no warnings and every shape has diagram interchange. Lanes map to personas (dak-swimlanes.ts). Reachability (artefact-reachability).The diagram drawn by render:bpmn, before and after, with a visual-diff picture and its changed-pixel count.Clinical SMEDoes the flow match practice, and does each lane name a persona?
Decision-support logic (6), scheduling logic (7), DMNTask_Dmndmn-authoringThe table loads within the FEEL subset dmn-authoring names. Its decisions are reachable from a gateway (artefact-reachability, audit:reachability). Its test cases run (content-test).The decision table as HTML (smart-base-transform.py dmn2html), before and after, each rule beside the L1 recommendation it cites, with the test-case results.Clinical SMEDoes each rule say what its recommendation says, and do the test cases show it?
Core data elements, data dictionary, glossary (5)Task_DataDictl2-dak-authoringIds are unique, every row is complete, and references resolve in the artefact index (check-dak-annexes.ts).The term diff (dak-data-dictionary-diff.ts: added, removed, changed cell by cell, moved). The chosen wireframe of each form that captures the elements (wireframe-design-review; the L3 Questionnaire later follows fhir-questionnaire-wireframe).Clinical SME (meaning), terminologist (codes)Is each element the right concept, labelled and typed as a clinician would record it?
Terminology bindingsTask_Terminologyterminology-managementEvery binding resolves and unmappedConcepts is reported, not hidden (terminology-management; check-dak-annexes.ts references).The same term diff, restricted to the code columns, with the unmapped concepts listed.Terminologist other than the one who bound it, with the clinical SME for meaningIs each code the concept, not its nearest neighbour?
Indicators (8), functional and non-functional requirements (9)Task_Indicatorsl2-dak-authoringEach indicator and requirement names the persona and process it serves, and traces to L1.Prose diff (word or inline DiffRenderer).Business analyst with the programme manager. The clinical SME for clinical requirements.Is each one testable, and does it serve a named persona and process?

An adaptation is a diff against its pinned upstream, not against an empty file. At L2 that diff is the renderer’s own. At L3 it is fhir-harness’s ig-ast-delta. A changed component with no L1 justification is a finding in its own right.

Asking for review

Task_RequestReview follows staging-review’s deep-link rule:

  • the request carries one deep link per changed page, to the anchor (…/STAGING/<slug>/<path>#<anchor>), beside the same page on main as before;
  • the pages come from the change (rendered-impact), not from judgement;
  • if there is no preview yet, the request says so.

smart-base content reaches staging by a folio-assistant staging re-pin (bun run cat mount:remote --staging). It never goes through /deploy.

Where the request goes is a judgement, and more than one place may be right. Ask where the person will look: this conversation, the issue the work came from, the pull request. Each place carries the same links. The question follows interaction-modality. A tagged PR comment becomes a todo (review-comments). Feedback on published content goes through content-feedback.

Recording the verdict

Process_Review records a QaReview whose subject is the component and whose Decision.role is the reviewing role:

  • approve: the derived edges’ adjudication: pending becomes the outcome;
  • request-changes: the agent edits again (a fix written in an AuditNote is applied as given), re-stages, and asks again;
  • reject: Task_ReopenUpstream files a bean against the stage that chose the source or dependency, and flags every derived asset rejected-upstream.

The agent never records a verdict.

Tools that are still missing

These are named so that nobody fills the gap with a description. Each belongs to the layer shown.

gapuntil it existslayer
Rule-level DMN diff (rows and outputs added, removed or changed)visual-diff of the two dmn2html tablescat-harness-tools, with a DiffRenderer in cat-harness schemas/diff-renderers.ts
DMN test-case runner for the full FEEL a DAK usestest cases run by hand under content-test, and said to becat-harness-tools, by widening decision-table.ts (artefact-reachability)
Structural BPMN diff (activities, lanes, flows)visual-diff of the two render:bpmn picturescat-harness-tools; it is the “DAK structural diff” child bean that diff-renderers.ts names
L1 traceability check over authored personas, scenarios and requirementsthe reviewer reads the implementedBy edgessmart-base, once an authored-L2 reader exists

Processes that run this skill

This skill has its own process: L2 component edit and review.

BPMN diagram: L2 component edit and review

processstep(s) that name it
L2 component edit and reviewEdit the component; Review the staged component (calls a sub-process); Reopen upstream, flag derived assets
L2 DAK authoringPersonas and scenarios (calls a sub-process); Business processes · BPMN 2.0 (calls a sub-process); Decision logic · DMN tables (calls a sub-process); Data dictionary and core data elements (calls a sub-process); Indicators and requirements (calls a sub-process); Terminology bindings (calls a sub-process)

folio-assistant — code under the Apache License 2.0, documentation under CC BY 3.0. Generated schema and API references are rebuilt from source on every push to main.

deployed dev