You've already forked generic-industrial-process
Import UAPF package
This commit is contained in:
24
.github/workflows/validate.yml
vendored
Normal file
24
.github/workflows/validate.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
name: Validate OIPF Library
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
jobs:
|
||||||
|
validate-yaml:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Check YAML syntax
|
||||||
|
run: |
|
||||||
|
python - <<'PY'
|
||||||
|
import pathlib, sys, yaml
|
||||||
|
errors = []
|
||||||
|
for p in pathlib.Path('.').rglob('*.yaml'):
|
||||||
|
try:
|
||||||
|
yaml.safe_load(p.read_text(encoding='utf-8'))
|
||||||
|
except Exception as e:
|
||||||
|
errors.append(f'{p}: {e}')
|
||||||
|
if errors:
|
||||||
|
print('\n'.join(errors))
|
||||||
|
sys.exit(1)
|
||||||
|
print('YAML OK')
|
||||||
|
PY
|
||||||
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
.DS_Store
|
||||||
|
*.tmp
|
||||||
|
*.log
|
||||||
10
.processgit/repository.yaml
Normal file
10
.processgit/repository.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
repository:
|
||||||
|
owner: "OIPF"
|
||||||
|
name: "generic-industrial-process"
|
||||||
|
title: "Generic Industrial Process Library"
|
||||||
|
classification:
|
||||||
|
repo_type: "process"
|
||||||
|
uapf_level: "0-4"
|
||||||
|
status: "draft"
|
||||||
|
reference_kind: "n/a"
|
||||||
|
recommended_route: "/OIPF/generic-industrial-process"
|
||||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2026 OIPF contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
113
README.md
Normal file
113
README.md
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
# OIPF / generic-industrial-process
|
||||||
|
|
||||||
|
**Generic Industrial Process Library** is the first ProcessGit library for OIPF — the Operational Intelligence Packaging Format.
|
||||||
|
|
||||||
|
It is not a normal software repository and not a general documentation site. It is a **ProcessGit process library** intended to be published as:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://processgit.org/OIPF/generic-industrial-process
|
||||||
|
```
|
||||||
|
|
||||||
|
The library provides a reusable, industry-neutral production process skeleton for AI-native operational intelligence projects. It defines the common process pattern by which an industrial site is observed, contextualised, modelled, recommended, acted upon, recorded, and improved.
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
Most industrial AI deployments become bespoke because every plant has different tags, historians, maintenance records, recipes, operator workflows, and local terminology.
|
||||||
|
|
||||||
|
This ProcessGit library provides a neutral starting point for repeatable industrial intelligence packages:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Observe → Contextualise → Infer → Check → Recommend → Approve → Act → Record → Learn
|
||||||
|
```
|
||||||
|
|
||||||
|
It is designed to support future OIPF packages such as:
|
||||||
|
|
||||||
|
- cleaning optimisation;
|
||||||
|
- fouling detection;
|
||||||
|
- energy-loss detection;
|
||||||
|
- predictive maintenance;
|
||||||
|
- quality drift detection;
|
||||||
|
- downtime root-cause analysis.
|
||||||
|
|
||||||
|
## What this repository contains
|
||||||
|
|
||||||
|
```text
|
||||||
|
.processgit/ ProcessGit metadata hints
|
||||||
|
processgit.yaml ProcessGit library descriptor
|
||||||
|
processgit.viewer.json Viewer/editor hints for ProcessGit
|
||||||
|
library.yaml OIPF process library manifest
|
||||||
|
levels/ UAPF-style L0-L4 process decomposition
|
||||||
|
bpmn/ BPMN model for the generic industrial process
|
||||||
|
/dmn Decision model example
|
||||||
|
process-cards/ Process cards for the library
|
||||||
|
algorithm-cards/ Algorithm cards referenced by process tasks
|
||||||
|
packages/ First OIPF package skeletons
|
||||||
|
resources/schemas/ OIPF schemas used by packages
|
||||||
|
resources/examples/ Minimal deployable examples
|
||||||
|
docs/ Concept, architecture and publishing notes
|
||||||
|
```
|
||||||
|
|
||||||
|
## ProcessGit classification
|
||||||
|
|
||||||
|
Recommended ProcessGit repository metadata:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
repo_type: process
|
||||||
|
uapf_level: 0-4
|
||||||
|
status: draft
|
||||||
|
reference_kind: n/a
|
||||||
|
```
|
||||||
|
|
||||||
|
If your ProcessGit instance stores classification at platform level, set these values in the repository settings rather than treating this file as the source of truth.
|
||||||
|
|
||||||
|
## Core idea
|
||||||
|
|
||||||
|
The library treats production operations as versioned process assets:
|
||||||
|
|
||||||
|
- assets and lines;
|
||||||
|
- industrial tags;
|
||||||
|
- operating states;
|
||||||
|
- events;
|
||||||
|
- constraints;
|
||||||
|
- model contracts;
|
||||||
|
- recommendations;
|
||||||
|
- human approvals;
|
||||||
|
- outcomes;
|
||||||
|
- feedback loops.
|
||||||
|
|
||||||
|
It does not replace OPC UA, ISA-88, ISA-95, MQTT/Sparkplug, MES, CMMS, ERP, SCADA, DCS, or historians. It defines an AI-native process layer above them.
|
||||||
|
|
||||||
|
## First package
|
||||||
|
|
||||||
|
The first concrete package is:
|
||||||
|
|
||||||
|
```text
|
||||||
|
packages/cleaning-optimisation/
|
||||||
|
```
|
||||||
|
|
||||||
|
It is intentionally simple. It is meant to become the first real OIPF package that can be evolved into a deployable production-intelligence process.
|
||||||
|
|
||||||
|
## Publishing
|
||||||
|
|
||||||
|
To publish to ProcessGit:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://processgit.org/OIPF/generic-industrial-process.git
|
||||||
|
cp -R generic-industrial-process/* generic-industrial-process/.processgit generic-industrial-process/.github <repo>/
|
||||||
|
cd <repo>
|
||||||
|
git add .
|
||||||
|
git commit -m "Initial OIPF generic industrial process library"
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
To mirror to GitHub, create a repository such as:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://github.com/OIPFormat/generic-industrial-process
|
||||||
|
```
|
||||||
|
|
||||||
|
and push the same contents.
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
Draft reference library. Not yet a normative OIPF specification.
|
||||||
18
algorithm-cards/model-inference.card.yaml
Normal file
18
algorithm-cards/model-inference.card.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
algorithm_card:
|
||||||
|
id: "oipf.algorithm.model-inference"
|
||||||
|
name: "Model Inference"
|
||||||
|
status: "draft"
|
||||||
|
purpose: "Run a declared ML, physics, statistical or rules model under a model contract."
|
||||||
|
algorithm_type: "external"
|
||||||
|
inputs:
|
||||||
|
- model contract
|
||||||
|
- contextualised time-series window
|
||||||
|
- operating state
|
||||||
|
- constraints
|
||||||
|
outputs:
|
||||||
|
- prediction
|
||||||
|
- confidence
|
||||||
|
- explanation payload
|
||||||
|
- recommended action candidate
|
||||||
|
implementation:
|
||||||
|
type: "external_model_runtime"
|
||||||
17
algorithm-cards/recommendation-generation.card.yaml
Normal file
17
algorithm-cards/recommendation-generation.card.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
algorithm_card:
|
||||||
|
id: "oipf.algorithm.recommendation-generation"
|
||||||
|
name: "Recommendation Generation"
|
||||||
|
status: "draft"
|
||||||
|
purpose: "Convert model outputs into a governed human-readable and machine-readable operational recommendation."
|
||||||
|
algorithm_type: "composite"
|
||||||
|
inputs:
|
||||||
|
- prediction
|
||||||
|
- confidence
|
||||||
|
- constraints
|
||||||
|
- economic parameters
|
||||||
|
- workflow policy
|
||||||
|
outputs:
|
||||||
|
- recommendation object
|
||||||
|
- approval requirement
|
||||||
|
- expected impact
|
||||||
|
- audit metadata
|
||||||
17
algorithm-cards/tag-contextualisation.card.yaml
Normal file
17
algorithm-cards/tag-contextualisation.card.yaml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
algorithm_card:
|
||||||
|
id: "oipf.algorithm.tag-contextualisation"
|
||||||
|
name: "Tag Contextualisation"
|
||||||
|
status: "draft"
|
||||||
|
purpose: "Map raw industrial tags to assets, variables, units, process states and semantic roles."
|
||||||
|
algorithm_type: "composite"
|
||||||
|
inputs:
|
||||||
|
- tag list
|
||||||
|
- asset hierarchy
|
||||||
|
- historian metadata
|
||||||
|
- engineering documents
|
||||||
|
outputs:
|
||||||
|
- canonical tag mapping
|
||||||
|
- validation warnings
|
||||||
|
implementation:
|
||||||
|
type: "external_or_runtime"
|
||||||
|
note: "Implementation is runtime-specific; this card describes the governed algorithm object."
|
||||||
65
bpmn/generic-industrial-process.bpmn
Normal file
65
bpmn/generic-industrial-process.bpmn
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_OIPF_Generic_Industrial_Process" targetNamespace="https://oipf.uapf.dev/bpmn">
|
||||||
|
<bpmn:process id="OIPF_GenericIndustrialProcess" name="OIPF Generic Industrial Process" isExecutable="false">
|
||||||
|
<bpmn:startEvent id="Start_Observe" name="Operational signals available">
|
||||||
|
<bpmn:outgoing>Flow_1</bpmn:outgoing>
|
||||||
|
</bpmn:startEvent>
|
||||||
|
<bpmn:task id="Task_Observe" name="Observe production signals">
|
||||||
|
<bpmn:incoming>Flow_1</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_2</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:task id="Task_Contextualise" name="Contextualise tags and assets">
|
||||||
|
<bpmn:incoming>Flow_2</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_3</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:task id="Task_Infer" name="Run model contract">
|
||||||
|
<bpmn:incoming>Flow_3</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_4</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:businessRuleTask id="Task_Check" name="Check constraints and readiness">
|
||||||
|
<bpmn:incoming>Flow_4</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_5</bpmn:outgoing>
|
||||||
|
</bpmn:businessRuleTask>
|
||||||
|
<bpmn:task id="Task_Recommend" name="Generate recommendation">
|
||||||
|
<bpmn:incoming>Flow_5</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_6</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:userTask id="Task_Approve" name="Human review and approval">
|
||||||
|
<bpmn:incoming>Flow_6</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_7</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
<bpmn:exclusiveGateway id="Gateway_Approved" name="Approved?">
|
||||||
|
<bpmn:incoming>Flow_7</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_8</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>Flow_Reject</bpmn:outgoing>
|
||||||
|
</bpmn:exclusiveGateway>
|
||||||
|
<bpmn:task id="Task_Act" name="Execute approved action">
|
||||||
|
<bpmn:incoming>Flow_8</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_9</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:task id="Task_Record" name="Record outcome and audit event">
|
||||||
|
<bpmn:incoming>Flow_9</bpmn:incoming>
|
||||||
|
<bpmn:incoming>Flow_Reject</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_10</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:task id="Task_Learn" name="Feed outcome back to model">
|
||||||
|
<bpmn:incoming>Flow_10</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_11</bpmn:outgoing>
|
||||||
|
</bpmn:task>
|
||||||
|
<bpmn:endEvent id="End_Learned" name="Outcome captured">
|
||||||
|
<bpmn:incoming>Flow_11</bpmn:incoming>
|
||||||
|
</bpmn:endEvent>
|
||||||
|
<bpmn:sequenceFlow id="Flow_1" sourceRef="Start_Observe" targetRef="Task_Observe" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_2" sourceRef="Task_Observe" targetRef="Task_Contextualise" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_3" sourceRef="Task_Contextualise" targetRef="Task_Infer" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_4" sourceRef="Task_Infer" targetRef="Task_Check" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_5" sourceRef="Task_Check" targetRef="Task_Recommend" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_6" sourceRef="Task_Recommend" targetRef="Task_Approve" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_7" sourceRef="Task_Approve" targetRef="Gateway_Approved" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_8" name="yes" sourceRef="Gateway_Approved" targetRef="Task_Act" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_Reject" name="no" sourceRef="Gateway_Approved" targetRef="Task_Record" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_9" sourceRef="Task_Act" targetRef="Task_Record" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_10" sourceRef="Task_Record" targetRef="Task_Learn" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_11" sourceRef="Task_Learn" targetRef="End_Learned" />
|
||||||
|
</bpmn:process>
|
||||||
|
</bpmn:definitions>
|
||||||
29
dmn/action-readiness-decision.dmn
Normal file
29
dmn/action-readiness-decision.dmn
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" id="Definitions_ActionReadiness" name="Action Readiness Decision" namespace="https://oipf.uapf.dev/dmn">
|
||||||
|
<decision id="Decision_ActionReadiness" name="Action readiness decision">
|
||||||
|
<decisionTable id="DecisionTable_ActionReadiness" hitPolicy="FIRST">
|
||||||
|
<input id="Input_Confidence" label="model confidence">
|
||||||
|
<inputExpression id="InputExpression_Confidence" typeRef="number"><text>confidence</text></inputExpression>
|
||||||
|
</input>
|
||||||
|
<input id="Input_Constraint" label="constraint status">
|
||||||
|
<inputExpression id="InputExpression_Constraint" typeRef="string"><text>constraintStatus</text></inputExpression>
|
||||||
|
</input>
|
||||||
|
<output id="Output_Readiness" name="readiness" typeRef="string" />
|
||||||
|
<rule id="Rule_ApproveForReview">
|
||||||
|
<inputEntry id="Rule_ApproveForReview_Confidence"><text>>= 0.80</text></inputEntry>
|
||||||
|
<inputEntry id="Rule_ApproveForReview_Constraint"><text>"clear"</text></inputEntry>
|
||||||
|
<outputEntry id="Rule_ApproveForReview_Output"><text>"ready_for_human_review"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Rule_Hold">
|
||||||
|
<inputEntry id="Rule_Hold_Confidence"><text>-</text></inputEntry>
|
||||||
|
<inputEntry id="Rule_Hold_Constraint"><text>"blocked"</text></inputEntry>
|
||||||
|
<outputEntry id="Rule_Hold_Output"><text>"hold_do_not_recommend"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
<rule id="Rule_NeedMoreEvidence">
|
||||||
|
<inputEntry id="Rule_NeedMoreEvidence_Confidence"><text>< 0.80</text></inputEntry>
|
||||||
|
<inputEntry id="Rule_NeedMoreEvidence_Constraint"><text>-</text></inputEntry>
|
||||||
|
<outputEntry id="Rule_NeedMoreEvidence_Output"><text>"need_more_evidence"</text></outputEntry>
|
||||||
|
</rule>
|
||||||
|
</decisionTable>
|
||||||
|
</decision>
|
||||||
|
</definitions>
|
||||||
26
docs/00-charter.md
Normal file
26
docs/00-charter.md
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# OIPF Generic Industrial Process Library — Charter
|
||||||
|
|
||||||
|
## Mission
|
||||||
|
|
||||||
|
Create a reusable ProcessGit library for AI-native production operations. The library defines a generic industrial process pattern that can be adapted to factories, process plants, utilities, and industrial facilities.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
The first scope is the operational intelligence loop:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Observe → Contextualise → Infer → Check → Recommend → Approve → Act → Record → Learn
|
||||||
|
```
|
||||||
|
|
||||||
|
The library is neutral and not tied to any single vendor, plant, sector, or runtime.
|
||||||
|
|
||||||
|
## Out of scope
|
||||||
|
|
||||||
|
- Direct PLC/DCS control logic.
|
||||||
|
- Hard real-time safety functions.
|
||||||
|
- Replacement of OPC UA, ISA-88, ISA-95, MES, SCADA, historians, or ERP.
|
||||||
|
- A universal ML model for every factory.
|
||||||
|
|
||||||
|
## Design principle
|
||||||
|
|
||||||
|
The library should help turn industrial AI projects from bespoke consulting into reusable production-intelligence packages.
|
||||||
13
docs/01-library-model.md
Normal file
13
docs/01-library-model.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Library Model
|
||||||
|
|
||||||
|
The library is organised as a UAPF-style process decomposition.
|
||||||
|
|
||||||
|
| Level | Meaning | Folder |
|
||||||
|
|---|---|---|
|
||||||
|
| L0 | Production enterprise context | `levels/L0-production-enterprise` |
|
||||||
|
| L1 | Production domain | `levels/L1-production-domain` |
|
||||||
|
| L2 | Production line operations | `levels/L2-production-line-operations` |
|
||||||
|
| L3 | Operational intelligence loop | `levels/L3-operational-intelligence-loop` |
|
||||||
|
| L4 | Recommendation-to-outcome work task | `levels/L4-recommend-act-record-learn` |
|
||||||
|
|
||||||
|
The library is intended to be viewed in ProcessGit as a process repository, with BPMN/DMN and package viewers enabled through `processgit.viewer.json`.
|
||||||
38
docs/02-publishing-to-processgit.md
Normal file
38
docs/02-publishing-to-processgit.md
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# Publishing to ProcessGit
|
||||||
|
|
||||||
|
Target URL:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://processgit.org/OIPF/generic-industrial-process
|
||||||
|
```
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. Create organisation `OIPF` in ProcessGit if it does not already exist.
|
||||||
|
2. Create a new processpository named `generic-industrial-process`.
|
||||||
|
3. Set recommended metadata:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
repo_type: process
|
||||||
|
uapf_level: 0-4
|
||||||
|
status: draft
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Push this repository content:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://processgit.org/OIPF/generic-industrial-process.git
|
||||||
|
cd generic-industrial-process
|
||||||
|
# copy files from this package into the repo root
|
||||||
|
git add .
|
||||||
|
git commit -m "Initial OIPF generic industrial process library"
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Verify ProcessGit viewers:
|
||||||
|
|
||||||
|
- README markdown view;
|
||||||
|
- BPMN view: `bpmn/generic-industrial-process.bpmn`;
|
||||||
|
- DMN view: `dmn/action-readiness-decision.dmn`;
|
||||||
|
- YAML/package view: `packages/cleaning-optimisation/package.yaml`;
|
||||||
|
- JSON schema view: `resources/schemas/oipf-package.schema.json`.
|
||||||
15
docs/03-github-mirror.md
Normal file
15
docs/03-github-mirror.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# GitHub Mirror
|
||||||
|
|
||||||
|
Recommended GitHub mirror:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://github.com/OIPFormat/generic-industrial-process
|
||||||
|
```
|
||||||
|
|
||||||
|
This mirror should be secondary. The canonical process library should live in ProcessGit:
|
||||||
|
|
||||||
|
```text
|
||||||
|
https://processgit.org/OIPF/generic-industrial-process
|
||||||
|
```
|
||||||
|
|
||||||
|
The GitHub mirror can be used for public discoverability, issues, external contributions, and GitHub Actions validation.
|
||||||
11
levels/L0-production-enterprise/README.md
Normal file
11
levels/L0-production-enterprise/README.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# L0 — Production Enterprise
|
||||||
|
|
||||||
|
The top-level enterprise context for the production organisation.
|
||||||
|
|
||||||
|
Typical concerns:
|
||||||
|
|
||||||
|
- production portfolio;
|
||||||
|
- plants and sites;
|
||||||
|
- high-level KPIs;
|
||||||
|
- safety, quality, environmental and financial targets;
|
||||||
|
- enterprise data governance.
|
||||||
15
levels/L0-production-enterprise/process.yaml
Normal file
15
levels/L0-production-enterprise/process.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
process:
|
||||||
|
id: "oipf.l0.production-enterprise"
|
||||||
|
level: "L0"
|
||||||
|
name: "Production Enterprise"
|
||||||
|
purpose: "Represent the enterprise-level production context in which operational intelligence is deployed."
|
||||||
|
inputs:
|
||||||
|
- production strategy
|
||||||
|
- plant portfolio
|
||||||
|
- business KPIs
|
||||||
|
- compliance obligations
|
||||||
|
outputs:
|
||||||
|
- production intelligence scope
|
||||||
|
- enterprise-level operational objectives
|
||||||
|
children:
|
||||||
|
- "oipf.l1.production-domain"
|
||||||
12
levels/L1-production-domain/README.md
Normal file
12
levels/L1-production-domain/README.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# L1 — Production Domain
|
||||||
|
|
||||||
|
Defines the domain context for production operations. The generic library remains industry-neutral, but domain packages can specialise it.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
- food and beverage;
|
||||||
|
- chemicals;
|
||||||
|
- pulp and paper;
|
||||||
|
- water and wastewater;
|
||||||
|
- pharma;
|
||||||
|
- metals and materials.
|
||||||
16
levels/L1-production-domain/process.yaml
Normal file
16
levels/L1-production-domain/process.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
process:
|
||||||
|
id: "oipf.l1.production-domain"
|
||||||
|
level: "L1"
|
||||||
|
name: "Production Domain"
|
||||||
|
purpose: "Represent a domain such as food production, chemical processing, water treatment, pulp and paper, pharma, or metals."
|
||||||
|
inputs:
|
||||||
|
- plant scope
|
||||||
|
- domain-specific production constraints
|
||||||
|
- asset classes
|
||||||
|
- regulatory context
|
||||||
|
outputs:
|
||||||
|
- domain process model
|
||||||
|
- domain package selection
|
||||||
|
parent: "oipf.l0.production-enterprise"
|
||||||
|
children:
|
||||||
|
- "oipf.l2.production-line-operations"
|
||||||
13
levels/L2-production-line-operations/README.md
Normal file
13
levels/L2-production-line-operations/README.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# L2 — Production Line Operations
|
||||||
|
|
||||||
|
Represents a production line, unit operation, or operational area.
|
||||||
|
|
||||||
|
This level maps real plant systems into OIPF structures:
|
||||||
|
|
||||||
|
- asset hierarchy;
|
||||||
|
- tag mapping;
|
||||||
|
- material and energy flows;
|
||||||
|
- operating states;
|
||||||
|
- events;
|
||||||
|
- procedures;
|
||||||
|
- constraints.
|
||||||
18
levels/L2-production-line-operations/process.yaml
Normal file
18
levels/L2-production-line-operations/process.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
process:
|
||||||
|
id: "oipf.l2.production-line-operations"
|
||||||
|
level: "L2"
|
||||||
|
name: "Production Line Operations"
|
||||||
|
purpose: "Represent a line, unit operation, or production area where operational intelligence is applied."
|
||||||
|
inputs:
|
||||||
|
- asset hierarchy
|
||||||
|
- tag list
|
||||||
|
- historian data
|
||||||
|
- operating modes
|
||||||
|
- events
|
||||||
|
- procedures
|
||||||
|
outputs:
|
||||||
|
- mapped operational context
|
||||||
|
- selected optimisation use case
|
||||||
|
parent: "oipf.l1.production-domain"
|
||||||
|
children:
|
||||||
|
- "oipf.l3.operational-intelligence-loop"
|
||||||
9
levels/L3-operational-intelligence-loop/README.md
Normal file
9
levels/L3-operational-intelligence-loop/README.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# L3 — Operational Intelligence Loop
|
||||||
|
|
||||||
|
The reusable intelligence loop:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Observe → Contextualise → Infer → Check → Recommend → Approve → Act → Record → Learn
|
||||||
|
```
|
||||||
|
|
||||||
|
This is the central reusable process pattern of the library.
|
||||||
18
levels/L3-operational-intelligence-loop/process.yaml
Normal file
18
levels/L3-operational-intelligence-loop/process.yaml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
process:
|
||||||
|
id: "oipf.l3.operational-intelligence-loop"
|
||||||
|
level: "L3"
|
||||||
|
name: "Operational Intelligence Loop"
|
||||||
|
purpose: "Convert contextualised production data into governed recommendations and learning feedback."
|
||||||
|
pattern:
|
||||||
|
- observe
|
||||||
|
- contextualise
|
||||||
|
- infer
|
||||||
|
- check
|
||||||
|
- recommend
|
||||||
|
- approve
|
||||||
|
- act
|
||||||
|
- record
|
||||||
|
- learn
|
||||||
|
parent: "oipf.l2.production-line-operations"
|
||||||
|
children:
|
||||||
|
- "oipf.l4.recommend-act-record-learn"
|
||||||
5
levels/L4-recommend-act-record-learn/README.md
Normal file
5
levels/L4-recommend-act-record-learn/README.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# L4 — Recommendation-to-Outcome Work Task
|
||||||
|
|
||||||
|
This level describes the concrete work task by which an AI/ML/physics model recommendation becomes a governed operational action.
|
||||||
|
|
||||||
|
The key output is not only the action. It is the recorded outcome, because outcome feedback allows the intelligence loop to improve.
|
||||||
16
levels/L4-recommend-act-record-learn/process.yaml
Normal file
16
levels/L4-recommend-act-record-learn/process.yaml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
process:
|
||||||
|
id: "oipf.l4.recommend-act-record-learn"
|
||||||
|
level: "L4"
|
||||||
|
name: "Recommendation-to-Outcome Work Task"
|
||||||
|
purpose: "Execute a human-in-the-loop recommendation cycle and record the measurable outcome."
|
||||||
|
inputs:
|
||||||
|
- model output
|
||||||
|
- recommendation
|
||||||
|
- constraint result
|
||||||
|
- operator approval
|
||||||
|
outputs:
|
||||||
|
- action record
|
||||||
|
- measured outcome
|
||||||
|
- audit event
|
||||||
|
- feedback signal
|
||||||
|
parent: "oipf.l3.operational-intelligence-loop"
|
||||||
31
library.yaml
Normal file
31
library.yaml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
oipf_library:
|
||||||
|
id: "oipf.generic-industrial-process"
|
||||||
|
name: "Generic Industrial Process"
|
||||||
|
version: "0.1.0-draft"
|
||||||
|
status: "draft"
|
||||||
|
namespace: "OIPF"
|
||||||
|
kind: "process-library"
|
||||||
|
description: "Generic process library for repeatable factory-to-factory operational intelligence deployments."
|
||||||
|
process_pattern:
|
||||||
|
- observe
|
||||||
|
- contextualise
|
||||||
|
- infer
|
||||||
|
- check
|
||||||
|
- recommend
|
||||||
|
- approve
|
||||||
|
- act
|
||||||
|
- record
|
||||||
|
- learn
|
||||||
|
levels:
|
||||||
|
L0: "Production enterprise"
|
||||||
|
L1: "Production domain"
|
||||||
|
L2: "Production line operations"
|
||||||
|
L3: "Operational intelligence loop"
|
||||||
|
L4: "Recommendation-to-outcome work task"
|
||||||
|
packages:
|
||||||
|
- id: "oipf.package.cleaning-optimisation"
|
||||||
|
path: "packages/cleaning-optimisation/package.yaml"
|
||||||
|
- id: "oipf.package.energy-loss-detection"
|
||||||
|
path: "packages/energy-loss-detection/package.yaml"
|
||||||
|
- id: "oipf.package.predictive-maintenance"
|
||||||
|
path: "packages/predictive-maintenance/package.yaml"
|
||||||
5
packages/cleaning-optimisation/README.md
Normal file
5
packages/cleaning-optimisation/README.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Cleaning Optimisation Package
|
||||||
|
|
||||||
|
First concrete OIPF package skeleton.
|
||||||
|
|
||||||
|
It models the generic process by which cleaning-related production loss is observed, analysed, recommended, approved, executed and learned from.
|
||||||
11
packages/cleaning-optimisation/agentic_workflow.yaml
Normal file
11
packages/cleaning-optimisation/agentic_workflow.yaml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
agentic_workflow:
|
||||||
|
id: "oipf.workflow.cleaning-optimisation"
|
||||||
|
steps:
|
||||||
|
- observe_current_state
|
||||||
|
- evaluate_cleaning_need
|
||||||
|
- check_constraints
|
||||||
|
- generate_recommendation
|
||||||
|
- request_operator_approval
|
||||||
|
- record_decision
|
||||||
|
- record_measured_outcome
|
||||||
|
- feed_outcome_to_model
|
||||||
13
packages/cleaning-optimisation/audit_policy.yaml
Normal file
13
packages/cleaning-optimisation/audit_policy.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
audit_policy:
|
||||||
|
record:
|
||||||
|
- timestamp
|
||||||
|
- package_version
|
||||||
|
- model_contract_id
|
||||||
|
- input_data_window
|
||||||
|
- prediction
|
||||||
|
- confidence
|
||||||
|
- constraints_checked
|
||||||
|
- recommendation
|
||||||
|
- human_decision
|
||||||
|
- outcome
|
||||||
|
immutable: true
|
||||||
10
packages/cleaning-optimisation/constraints.yaml
Normal file
10
packages/cleaning-optimisation/constraints.yaml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
constraints:
|
||||||
|
- id: "quality_hold"
|
||||||
|
type: "quality"
|
||||||
|
rule: "do_not_delay_cleaning_if_quality_risk_is_high"
|
||||||
|
- id: "operator_approval_required"
|
||||||
|
type: "governance"
|
||||||
|
rule: "all_cleaning_delay_recommendations_require_human_approval"
|
||||||
|
- id: "read_only_first"
|
||||||
|
type: "safety"
|
||||||
|
rule: "package_must_not_write_to_plc_or_dcs_in_advisory_mode"
|
||||||
26
packages/cleaning-optimisation/model_contract.yaml
Normal file
26
packages/cleaning-optimisation/model_contract.yaml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
model_contract:
|
||||||
|
id: "oipf.model.cleaning-optimisation.v0"
|
||||||
|
model_type: "physics_ml_or_rules"
|
||||||
|
purpose: "Estimate cleaning need and avoidable cleaning/downtime loss."
|
||||||
|
inputs:
|
||||||
|
- tag: "tag.inlet_pressure"
|
||||||
|
role: "process_signal"
|
||||||
|
- tag: "tag.outlet_pressure"
|
||||||
|
role: "process_signal"
|
||||||
|
- tag: "tag.flow_rate"
|
||||||
|
role: "process_signal"
|
||||||
|
- event: "cleaning_event"
|
||||||
|
role: "historical_action"
|
||||||
|
outputs:
|
||||||
|
- name: "cleaning_need_score"
|
||||||
|
type: "number"
|
||||||
|
range: [0, 1]
|
||||||
|
- name: "recommendation_candidate"
|
||||||
|
type: "string"
|
||||||
|
- name: "confidence"
|
||||||
|
type: "number"
|
||||||
|
range: [0, 1]
|
||||||
|
- name: "estimated_saving"
|
||||||
|
type: "number"
|
||||||
|
unit: "EUR"
|
||||||
|
human_review_required: true
|
||||||
9
packages/cleaning-optimisation/operating_modes.yaml
Normal file
9
packages/cleaning-optimisation/operating_modes.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
operating_modes:
|
||||||
|
- id: "running"
|
||||||
|
description: "Normal production mode"
|
||||||
|
- id: "cleaning"
|
||||||
|
description: "Cleaning or CIP mode"
|
||||||
|
- id: "idle"
|
||||||
|
description: "No production"
|
||||||
|
- id: "degraded"
|
||||||
|
description: "Production mode with performance loss"
|
||||||
33
packages/cleaning-optimisation/package.yaml
Normal file
33
packages/cleaning-optimisation/package.yaml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
package:
|
||||||
|
id: "oipf.package.cleaning-optimisation"
|
||||||
|
name: "Cleaning Optimisation"
|
||||||
|
version: "0.1.0-draft"
|
||||||
|
kind: "production-intelligence-package"
|
||||||
|
status: "draft"
|
||||||
|
library: "oipf.generic-industrial-process"
|
||||||
|
target_pain:
|
||||||
|
- over-cleaning
|
||||||
|
- under-cleaning
|
||||||
|
- fouling-related efficiency loss
|
||||||
|
- avoidable downtime
|
||||||
|
- water and chemical waste
|
||||||
|
process_pattern:
|
||||||
|
- observe
|
||||||
|
- contextualise
|
||||||
|
- infer
|
||||||
|
- check
|
||||||
|
- recommend
|
||||||
|
- approve
|
||||||
|
- act
|
||||||
|
- record
|
||||||
|
- learn
|
||||||
|
files:
|
||||||
|
plant_graph: "plant_graph.yaml"
|
||||||
|
tag_mapping: "tag_mapping.yaml"
|
||||||
|
operating_modes: "operating_modes.yaml"
|
||||||
|
constraints: "constraints.yaml"
|
||||||
|
model_contract: "model_contract.yaml"
|
||||||
|
agentic_workflow: "agentic_workflow.yaml"
|
||||||
|
validation_tests: "validation_tests.yaml"
|
||||||
|
savings: "savings.yaml"
|
||||||
|
audit_policy: "audit_policy.yaml"
|
||||||
14
packages/cleaning-optimisation/plant_graph.yaml
Normal file
14
packages/cleaning-optimisation/plant_graph.yaml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
plant_graph:
|
||||||
|
plant: "example_plant"
|
||||||
|
line: "line_1"
|
||||||
|
unit: "cleaning_sensitive_unit"
|
||||||
|
assets:
|
||||||
|
- id: "asset.filter_1"
|
||||||
|
type: "filter_or_heat_exchanger"
|
||||||
|
tags:
|
||||||
|
- "tag.inlet_pressure"
|
||||||
|
- "tag.outlet_pressure"
|
||||||
|
- "tag.flow_rate"
|
||||||
|
- "tag.temperature"
|
||||||
|
procedures:
|
||||||
|
- "procedure.cleaning_cycle"
|
||||||
8
packages/cleaning-optimisation/savings.yaml
Normal file
8
packages/cleaning-optimisation/savings.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
savings:
|
||||||
|
currency: "EUR"
|
||||||
|
components:
|
||||||
|
- production_downtime_avoided
|
||||||
|
- water_usage_reduction
|
||||||
|
- chemical_usage_reduction
|
||||||
|
- energy_loss_reduction
|
||||||
|
formula: "estimated_saving = avoided_downtime_cost + avoided_resource_cost + avoided_energy_loss"
|
||||||
19
packages/cleaning-optimisation/tag_mapping.yaml
Normal file
19
packages/cleaning-optimisation/tag_mapping.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
tag_mapping:
|
||||||
|
- tag_id: "tag.inlet_pressure"
|
||||||
|
source: "historian"
|
||||||
|
source_name: "PT_001"
|
||||||
|
asset: "asset.filter_1"
|
||||||
|
variable: "inlet_pressure"
|
||||||
|
unit: "bar"
|
||||||
|
- tag_id: "tag.outlet_pressure"
|
||||||
|
source: "historian"
|
||||||
|
source_name: "PT_002"
|
||||||
|
asset: "asset.filter_1"
|
||||||
|
variable: "outlet_pressure"
|
||||||
|
unit: "bar"
|
||||||
|
- tag_id: "tag.flow_rate"
|
||||||
|
source: "historian"
|
||||||
|
source_name: "FT_001"
|
||||||
|
asset: "asset.filter_1"
|
||||||
|
variable: "flow_rate"
|
||||||
|
unit: "m3/h"
|
||||||
9
packages/cleaning-optimisation/validation_tests.yaml
Normal file
9
packages/cleaning-optimisation/validation_tests.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
validation_tests:
|
||||||
|
- id: "tag_mapping_complete"
|
||||||
|
description: "All required model input tags are mapped to real source tags."
|
||||||
|
- id: "units_consistent"
|
||||||
|
description: "Units match model contract expectations."
|
||||||
|
- id: "approval_required"
|
||||||
|
description: "Recommendation workflow includes human approval."
|
||||||
|
- id: "read_only_advisory"
|
||||||
|
description: "Package does not require PLC/DCS write-back."
|
||||||
3
packages/energy-loss-detection/README.md
Normal file
3
packages/energy-loss-detection/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Energy Loss Detection Package
|
||||||
|
|
||||||
|
Placeholder package for future OIPF energy optimisation work.
|
||||||
21
packages/energy-loss-detection/package.yaml
Normal file
21
packages/energy-loss-detection/package.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
package:
|
||||||
|
id: "oipf.package.energy-loss-detection"
|
||||||
|
name: "Energy Loss Detection"
|
||||||
|
version: "0.1.0-draft"
|
||||||
|
kind: "production-intelligence-package"
|
||||||
|
status: "placeholder"
|
||||||
|
library: "oipf.generic-industrial-process"
|
||||||
|
target_pain:
|
||||||
|
- abnormal energy consumption
|
||||||
|
- unexplained process efficiency loss
|
||||||
|
- energy cost increase
|
||||||
|
process_pattern:
|
||||||
|
- observe
|
||||||
|
- contextualise
|
||||||
|
- infer
|
||||||
|
- check
|
||||||
|
- recommend
|
||||||
|
- approve
|
||||||
|
- act
|
||||||
|
- record
|
||||||
|
- learn
|
||||||
3
packages/predictive-maintenance/README.md
Normal file
3
packages/predictive-maintenance/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Predictive Maintenance Package
|
||||||
|
|
||||||
|
Placeholder package for future OIPF predictive maintenance work.
|
||||||
21
packages/predictive-maintenance/package.yaml
Normal file
21
packages/predictive-maintenance/package.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
package:
|
||||||
|
id: "oipf.package.predictive-maintenance"
|
||||||
|
name: "Predictive Maintenance"
|
||||||
|
version: "0.1.0-draft"
|
||||||
|
kind: "production-intelligence-package"
|
||||||
|
status: "placeholder"
|
||||||
|
library: "oipf.generic-industrial-process"
|
||||||
|
target_pain:
|
||||||
|
- asset degradation
|
||||||
|
- unplanned downtime
|
||||||
|
- maintenance timing uncertainty
|
||||||
|
process_pattern:
|
||||||
|
- observe
|
||||||
|
- contextualise
|
||||||
|
- infer
|
||||||
|
- check
|
||||||
|
- recommend
|
||||||
|
- approve
|
||||||
|
- act
|
||||||
|
- record
|
||||||
|
- learn
|
||||||
20
process-cards/generic-industrial-process.card.yaml
Normal file
20
process-cards/generic-industrial-process.card.yaml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
process_card:
|
||||||
|
id: "oipf.card.generic-industrial-process"
|
||||||
|
title: "Generic Industrial Process"
|
||||||
|
level: "L3"
|
||||||
|
status: "draft"
|
||||||
|
description: "Reusable Observe-Contextualise-Infer-Check-Recommend-Approve-Act-Record-Learn pattern for industrial intelligence."
|
||||||
|
bpmn: "bpmn/generic-industrial-process.bpmn"
|
||||||
|
dmn: "dmn/action-readiness-decision.dmn"
|
||||||
|
algorithm_cards:
|
||||||
|
- "algorithm-cards/tag-contextualisation.card.yaml"
|
||||||
|
- "algorithm-cards/model-inference.card.yaml"
|
||||||
|
- "algorithm-cards/recommendation-generation.card.yaml"
|
||||||
|
inputs:
|
||||||
|
- contextualised operational data
|
||||||
|
- model contract
|
||||||
|
- constraints
|
||||||
|
outputs:
|
||||||
|
- governed recommendation
|
||||||
|
- outcome record
|
||||||
|
- audit trail
|
||||||
37
processgit.viewer.json
Normal file
37
processgit.viewer.json
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"schemaVersion": "0.1",
|
||||||
|
"repositoryType": "process",
|
||||||
|
"defaultView": "library-overview",
|
||||||
|
"viewers": [
|
||||||
|
{
|
||||||
|
"id": "library-overview",
|
||||||
|
"label": "Library Overview",
|
||||||
|
"type": "markdown",
|
||||||
|
"path": "README.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bpmn-process",
|
||||||
|
"label": "BPMN Process",
|
||||||
|
"type": "bpmn",
|
||||||
|
"path": "bpmn/generic-industrial-process.bpmn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dmn-decision",
|
||||||
|
"label": "DMN Decision",
|
||||||
|
"type": "dmn",
|
||||||
|
"path": "dmn/action-readiness-decision.dmn"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "oipf-package",
|
||||||
|
"label": "Cleaning Optimisation Package",
|
||||||
|
"type": "yaml",
|
||||||
|
"path": "packages/cleaning-optimisation/package.yaml"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "schema",
|
||||||
|
"label": "OIPF Package Schema",
|
||||||
|
"type": "json-schema",
|
||||||
|
"path": "resources/schemas/oipf-package.schema.json"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
23
processgit.yaml
Normal file
23
processgit.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
processgit:
|
||||||
|
schema_version: "0.1"
|
||||||
|
namespace: "OIPF"
|
||||||
|
repository: "generic-industrial-process"
|
||||||
|
title: "Generic Industrial Process Library"
|
||||||
|
type: "process-library"
|
||||||
|
repo_type: "process"
|
||||||
|
uapf_level: "0-4"
|
||||||
|
status: "draft"
|
||||||
|
visibility: "public"
|
||||||
|
description: >
|
||||||
|
A ProcessGit library for repeatable AI-native industrial operations.
|
||||||
|
Provides a generic Observe-Contextualise-Infer-Check-Recommend-Approve-Act-Record-Learn process model.
|
||||||
|
canonical_url: "https://processgit.org/OIPF/generic-industrial-process"
|
||||||
|
github_mirror: "https://github.com/OIPFormat/generic-industrial-process"
|
||||||
|
default_viewer: "oipf-package-viewer"
|
||||||
|
tags:
|
||||||
|
- OIPF
|
||||||
|
- production-as-code
|
||||||
|
- operational-intelligence
|
||||||
|
- industrial-ai
|
||||||
|
- process-library
|
||||||
|
- uapf-inspired
|
||||||
19
resources/examples/minimal_cleaning_optimisation.oipf.yaml
Normal file
19
resources/examples/minimal_cleaning_optimisation.oipf.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
package:
|
||||||
|
id: "oipf.example.cleaning-optimisation.minimal"
|
||||||
|
name: "Minimal Cleaning Optimisation"
|
||||||
|
version: "0.1.0-draft"
|
||||||
|
kind: "production-intelligence-package"
|
||||||
|
status: "draft"
|
||||||
|
process_pattern:
|
||||||
|
- observe
|
||||||
|
- contextualise
|
||||||
|
- infer
|
||||||
|
- check
|
||||||
|
- recommend
|
||||||
|
- approve
|
||||||
|
- act
|
||||||
|
- record
|
||||||
|
- learn
|
||||||
|
model_contract: "packages/cleaning-optimisation/model_contract.yaml"
|
||||||
|
bpmn: "bpmn/generic-industrial-process.bpmn"
|
||||||
|
dmn: "dmn/action-readiness-decision.dmn"
|
||||||
24
resources/schemas/oipf-package.schema.json
Normal file
24
resources/schemas/oipf-package.schema.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$id": "https://oipf.uapf.dev/schemas/oipf-package.schema.json",
|
||||||
|
"title": "OIPF Package",
|
||||||
|
"type": "object",
|
||||||
|
"required": ["package"],
|
||||||
|
"properties": {
|
||||||
|
"package": {
|
||||||
|
"type": "object",
|
||||||
|
"required": ["id", "name", "version", "kind", "status", "process_pattern"],
|
||||||
|
"properties": {
|
||||||
|
"id": {"type": "string"},
|
||||||
|
"name": {"type": "string"},
|
||||||
|
"version": {"type": "string"},
|
||||||
|
"kind": {"type": "string"},
|
||||||
|
"status": {"type": "string"},
|
||||||
|
"process_pattern": {"type": "array", "items": {"type": "string"}},
|
||||||
|
"model_contract": {"type": "string"},
|
||||||
|
"bpmn": {"type": "string"},
|
||||||
|
"dmn": {"type": "string"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user