Record confirmed tutorial tasks in item and class/object skills

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Clio Liu 2026-09-30 15:56:49 +10:00
parent c619ca9e5f
commit edb9948891
6 changed files with 187 additions and 3 deletions

View file

@ -0,0 +1,20 @@
---
name: class-object-engineering
description: >-
CI Server R1.03 PROCESS Service classes, objects and trigger groups. Use when the user wants
to create a trigger group, write or compile a class (traditional language), create objects
from a class, or load classes and objects with quick load files. Sources IM 36K10G10-01EN
(Tutorial) and IM 36K10J10-01EN; to be extended with IM 36K10L10, P10 and P11 in phase 6.
---
# Class and object engineering (R1.03)
Background: `knowledge/manuals/IM36K10G10-01EN.md` (chapter 5) and
`knowledge/manuals/IM36K10J10-01EN.md` (sections 2.4 and 5.3). Known issues for PROCESS
Service: `knowledge/manuals/IM36K01A50-01EN.md`.
Rules: run `system-check` first; creating classes and objects changes the running system.
| Task | File | Status |
|---|---|---|
| Trigger group, class (compiled on load) and object via quick load | `tasks/load-class-object.md` | verified |

View file

@ -0,0 +1,68 @@
---
task: Create a trigger group, class and object with quick load files
version: R1.03
source: IM 36K10G10-01EN §5.1–5.3; IM 36K10J10-01EN §5.6; practiced with CI-Eng-Sample 2026-09-30
status: verified
---
# Trigger group, class and object via quick load
Load in this order (each with `dssqld -i <file>.qli -l <file>.qlo`, check `Errors` = 0);
remove in reverse (object, class, trigger group) with `NAME`-only files and `dssqld -r`.
**1. Trigger group** (`TRIGGER_DF`, name max 16 characters):
```
@FIELDS
NAME,DESCRIPTION,TRIGGER_INTERVAL
@TRIGGER_DF
"CIENG_1S","CI-Eng-Sample one second trigger","1 seconds"
```
**2. Class** (`CLASS_DF`, name max 16 characters). The source goes in the `METHOD` memo field,
between `@"` and `"@` on their own lines; `COMPILE` 1 compiles it on load; `TRIGGER_1`
attaches a trigger group:
```
@FIELDS
NAME,DESCRIPTION,PF_LANGUAGE,TRIGGER_1,COMPILE,LISTING_WANTED,METHOD
@CLASS_DF
"CIENG_INCR","Count CI-Eng-Sample.DEMO.COUNTER 1..100","Traditional","CIENG_1S",1,1,\
@"
CLASS CIENG_INCR;
PROLOG
SIGNAL INPUT := "CI-Eng-Sample.DEMO.COUNTER";
BODY
METHOD UP_AND_DOWN;
BODY
IF (INPUT >= 100) THEN
INPUT := 0;
ENDIF;
INPUT := INPUT + 1;
ENDMETHOD UP_AND_DOWN;
ENDCLASS CIENG_INCR;
"@
```
The item a `SIGNAL` names must exist first (or be created by the class with `FROM … MAKE`).
**3. Object** (`OBJECT_DF`): full name in its section, and the class:
```
@FIELDS
NAME,DESCRIPTION,CLASS
@OBJECT_DF
"CI-Eng-Sample.DEMO.INCR1","Counts DEMO.COUNTER every second","CIENG_INCR"
```
## Check
Run `itmval -g -n CI-Eng-Sample.DEMO.COUNTER` a few seconds apart: the value rises by one per
second. To inspect a class, export it with a filter file (`@SELECT`, then
`'NAME = "<class>"'`, then `@CLASS_DF`).
Example files: `examples/CI-Eng-Sample/05_trigger_df.qli`, `06_class_df.qli`, `07_object_df.qli`,
`86_` to `88_remove_*.qli`.

View file

@ -0,0 +1,23 @@
---
name: item-engineering
description: >-
CI Server R1.03 sections, items and sub-items. Use when the user wants to create or change
sections, items or sub-items (integrator, min-max, pulse, rate-of-change), set limits,
scale or value format, block or unblock items or sections, or understand item status and
option flags. Sources IM 36K10G10-01EN (Tutorial); to be extended with IM 36K10C10 in phase 5.
---
# Item engineering (R1.03)
Background: `knowledge/manuals/IM36K10G10-01EN.md` (chapter 3). Bulk creation of sections and
items uses quick load files: skill `system-management`, task `load-remove-records.md`.
Reading and writing values: `system-management` task `read-write-item.md`.
Rules:
- Run the `system-check` skill first; follow the user's chosen way of working for any change.
- Names: `Section.Sub-section.Item`, max 255 bytes, no `:` or `.` inside a name, case insensitive.
| Task | File | Status |
|---|---|---|
| Sub-items (integrator, min-max) | `tasks/sub-items.md` | verified |
| Block / unblock an item; write to a blocked item | `tasks/block-item.md` | verified |

View file

@ -0,0 +1,36 @@
---
task: Block / unblock an item and write to a blocked item
version: R1.03
source: IM 36K10G10-01EN §3.3, §3.4; practiced with CI-Eng-Sample 2026-09-30
status: verified
---
# Block / unblock an item
A blocked item is not updated (e.g. during device maintenance). Blocking can be done per item,
sub-item or section; sub-items of a blocked item keep working. **Changes live behaviour:**
follow the user's chosen way of working.
Block (`BLOCKED` 1) or unblock (`BLOCKED` 0) with an update file and `dssqld -m`:
```
@FIELDS
NAME,BLOCKED
@ITEM_DF
"<Section>.<Tag>",1
```
```
dssqld -m block.qli -l block.qlo
```
(Engineering Module: right-click the item or section › *Block/Unblock*.)
## Behaviour (verified on `CI-Eng-Sample.TANK1.INFLOW`)
- Blocked: option flag `blk` appears in `itmval -g`; the status number is unchanged (stayed 9).
- `itmval -p -n <item> -v <value>` on a blocked item is **silently ignored** (no error, value
unchanged; `knowledge/issues.md` ISS-011). Add `-o` to overwrite:
`itmval -p -n <item> -v <value> -o`.
- After unblocking, `blk` is replaced by `ublk` (meaning not yet confirmed, see ISS-001).

View file

@ -0,0 +1,37 @@
---
task: Create sub-items (integrator, min-max)
version: R1.03
source: IM 36K10G10-01EN §3.1.5, §3.2.3; practiced with CI-Eng-Sample 2026-09-30
status: verified
---
# Sub-items
A sub-item hangs under an item (`<Section>.<Tag>.<Sub>`) and processes the main item's value.
Types: `Integrator`, `Min-Max`, `Pulse`, `Rate-of-Change`, `Typeless`. Sub-items cannot connect
to equipment, cannot have sub-items, and are **not** blocked when the main item is blocked.
Quick load (`SUB_ITEM_DF`; the main item must exist):
```
@FIELDS
NAME,DESCRIPTION,SUB_TYPE,TIME_UNIT,MIN_MAX
@SUB_ITEM_DF
"CI-Eng-Sample.PUMP1.RUNNING.RUN_SECONDS","Pump 1 running time (seconds)","Integrator","",""
"CI-Eng-Sample.TANK1.LEVEL.MAX","Tank 1 maximum level","Min-Max","","Maximum"
```
Load with `dssqld -i <file>.qli -l <file>.qlo`; remove with a `NAME`-only file and `dssqld -r`
(before removing the main item).
## Behaviour (verified)
- **Integrator** adds *value × seconds*: with the main item at 1 it grows by 1 per second.
`TIME_UNIT` (e.g. `Hour`) made no difference (`knowledge/issues.md` ISS-010); to show hours,
divide by 3600 where the value is used.
- **Min-Max** with `MIN_MAX` = `Maximum` (or `Minimum`) keeps the highest (lowest) value
written to the main item: writing 30, 70, 50 gave 70.
- `TIME_UNIT` (Second, Minute, Hour, Day) belongs to Rate-of-Change (from docs, not practiced).
Example files: `examples/CI-Eng-Sample/02b_sub_item_df.qli`, `90b_remove_sub_item_df.qli`.

View file

@ -97,9 +97,9 @@ now come before classes and objects (phase 6), and the other interfaces follow a
| C10 | Windows settings changes (power, virtual memory, Defender, updates, …) | not practiced | n/a | Test PC kept as a development PC (user decision 2026-09-30); not applied. | | C10 | Windows settings changes (power, virtual memory, Defender, updates, …) | not practiced | n/a | Test PC kept as a development PC (user decision 2026-09-30); not applied. |
| C10 | Vnet/IP drivers / Vnet/IP Interface Package | not practiced | n/a | No Vnet/IP card; not supported on Windows 10 Pro. | | C10 | Vnet/IP drivers / Vnet/IP Interface Package | not practiced | n/a | No Vnet/IP card; not supported on Windows 10 Pro. |
| C30 | IT Security Tool, Domain Link Management, account utilities | not practiced | n/a | Not installed and not supported on Windows 10 Pro. | | C30 | IT Security Tool, Domain Link Management, account utilities | not practiced | n/a | Not installed and not supported on Windows 10 Pro. |
| G10 | Sub-items: Integrator, Min-Max (`SUB_ITEM_DF`) | practiced, awaiting confirmation | added (awaiting confirmation) | Integrator adds value × seconds; `TIME_UNIT` ignored. | | G10 | Sub-items: Integrator, Min-Max (`SUB_ITEM_DF`) ([task](../.claude/skills/item-engineering/tasks/sub-items.md)) | passed | passed | Integrator adds value × seconds; `TIME_UNIT` ignored. |
| G10 | Block / unblock an item (`ITEM_DF.BLOCKED` via `dssqld -m`); write with `itmval -o` | practiced, awaiting confirmation | passed (awaiting confirmation) | `blk` flag, writes without `-o` silently ignored; `ublk` after unblock ([ISS-001](issues.md)). | | G10 | Block / unblock an item (`ITEM_DF.BLOCKED` via `dssqld -m`); write with `itmval -o` ([task](../.claude/skills/item-engineering/tasks/block-item.md)) | passed | passed | `blk` flag, writes without `-o` silently ignored; `ublk` after unblock ([ISS-001](issues.md)). |
| G10 | Trigger group, class (compile on load), object via quick load | practiced, awaiting confirmation | added (awaiting confirmation) | `DEMO.COUNTER` counts every second; full remove/load cycle clean. | | G10 | Trigger group, class (compile on load), object via quick load ([task](../.claude/skills/class-object-engineering/tasks/load-class-object.md)) | passed | passed | `DEMO.COUNTER` counts every second; full remove/load cycle clean. |
| G10 | Authorization group and user creation | not practiced | n/a | Creates CI Server login accounts; left for the user or phase 5. | | G10 | Authorization group and user creation | not practiced | n/a | Creates CI Server login accounts; left for the user or phase 5. |
| G10 | Displays, symbols, Operator Interface test | not practiced | pending | GUI (Edit Module); phase 10. | | G10 | Displays, symbols, Operator Interface test | not practiced | pending | GUI (Edit Module); phase 10. |
| G10 | Lines / stations / points, alarms, reports, audit, RDBMS, history | not practiced | pending | Covered in their own phases (5–12). | | G10 | Lines / stations / points, alarms, reports, audit, RDBMS, history | not practiced | pending | Covered in their own phases (5–12). |