Issues: actions, holds, queries and changes¶
A plant's open work is tracked as GitHub issues, the way an engineering project keeps an action
tracker, a hold list and a technical-query log. plant.yaml says where:
issues:
repository: ChemE-as-Code/process-library
label: "process:asu-1"
forms: {action: 1-action-item.yml, hold: 2-engineering-hold.yml,
tq: 3-technical-query.yml, change: 4-design-change.yml}
cheme issues lists them by the gate they must be closed before. GET /api/issues serves the
same data to the viewer, and the gates of kind issues (checks.yaml) fail while one is open for
the stage. Code: project/issues.py, integrations/github.py.
The labels¶
The labels are the contract between the issue forms, core, the viewer and the Process Atlas.
| label | meaning |
|---|---|
type:action |
an action item from a review, a HAZOP or a design meeting |
type:hold |
an engineering hold: a value or decision the design does not have yet (vendor data, a client decision), with what is assumed meanwhile |
type:tq |
a technical query to another discipline, a vendor or the client, with a proposed answer |
type:change |
a design change (management of change): what changes, the documents affected, the re-reviews needed |
gate:concept, gate:basic, gate:detail |
the stage gate it must be closed before. An item still open for an earlier stage blocks the later gates too |
discipline:<d> |
process, control, piping, mechanical, electrical, layout, safety, civil |
source:<s> |
design-review, hazop, layout-review, control-review, vendor, client, internal |
status:in-progress, status:for-verification |
being worked on; done and waiting for verification by the originator or reviewer. An open issue without either is open; a closed one is closed, i.e. verified |
waiting:input, waiting:work |
on hold for vendor, client or HAZOP / LOPA input; for another issue or branch |
process:<id> |
the plant (one repository may hold several) |
An issue is closed only once its close-out evidence (files changed, a review record, a decision) is verified, as an action tracker's close-out.
The gate¶
- id: issues-basic
title: No open item to close before the basic engineering gate
stage: basic
kind: issues
types: [] # all types; e.g. [action, hold]
It fails while an issue of the plant with gate:basic (or gate:concept) is open. It is n/a
when plant.yaml declares no issues:. It reads GitHub live, with GITHUB_TOKEN, GH_TOKEN
or the GitHub CLI's login. Without one, or without network, it fails as "not evaluated": a
stage is never signed off on items nobody could see.
A label never lets a gate slip: an issue with two gate: labels (one left over from an edit)
counts at the earlier gate, and a gate: that is no stage of the plant (gate:Basic) blocks
every gate until it is corrected. The issues are read once per run and kept for two minutes, a
failure too, so cheme check and the server ask GitHub once, not once per gate.
The token is only ever sent to api.github.com, and redirects are not followed: the endpoint
is not configurable in plant.yaml, so a plant someone else wrote cannot send your token to
another host. web: (default https://github.com) sets the base of the links only.
New issues¶
GET /api/issues returns new: a link per type that opens the repository's issue form with
the plant's label and the form's process field filled in. The viewer adds the sheet or tag it
is showing to the form's refs field. Without forms: the link opens the template chooser.
Not modelled¶
Due dates, owners as persons, priorities beyond the gate, and notifications stay with GitHub. cheme-as-code only reads issues, never writes them.