ci-server-engineer/knowledge/issues.md
cliu ef543cde20 Add phase 5 Engineering Module summary, authorization skill, item tests
- Summary of IM 36K10C10 (Engineering Module - I/O Processes), checked
  against dssana.sup, itm.sup and the default datasets
- New skill authorization: users and authorization groups by quick load
- item-engineering: string item limits (1-200, holds length - 1) and the
  integration granule (itm_int_secs), both tested on CI-Eng-Sample
- CI-Eng-Sample: read-only authorization group CIENG_VIEWER
- Closed ISS-001 (uoff/ublk option bits), ISS-010, ISS-019; new ISS-018, ISS-020

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 17:09:45 +10:00

14 KiB
Raw Blame History

Issue register

Open questions and problems found while building the repo.

Status: open · investigating · closed

Item and station names such as AID.* come from the author's own test project on the development system (see "Test system" in progress.md); they do not exist on other systems.

How to close an issue

  1. Confirm the answer with the user (practiced on the test system where possible).
  2. Update every file in the issue's "Update on close" column with the answer.
  3. Update the matching row in knowledge/progress.md (status and notes).
  4. Set the issue to closed and write the resolution and date in "Next step / resolution". Keep closed issues in the table as history.

Issues

ID Date Area Issue Status Next step / resolution Update on close
ISS-001 2026-09-30 ITEM (itmval) Writing an item with itmval -p -n AID.WRPS.SIM.INFLOW -v 400 added the uoff option flag (options 0x…8a → 0x…8e). The flag stayed after writing the original value back. Meaning of uoff unknown; not found in the EN manuals by text search. closed 2026-09-30 (phase 5): IM 36K10C10 §3.5 gives the option bits: 1 blocked, 2 offline, 4 updated offline (written by an application while offline), 8 acknowledged, 16 updated blocked, 32 direct alarm, 64 delayed alarm. 0x8a = offline + acknowledged (+0x80, not documented); +4 = 0x8e, so uoff = updated offline and ublk = updated blocked. Matches all observations. Not yet found: how to clear the flags (probably on the next update from the station). Closed 2026-09-30 (confirmed by user). Earlier notes: writing internal sample items (CI-Eng-Sample.*, no station) does not set uoff (options stay 0x…88), so it is tied to station-connected items (the AID item was already off, its station not communicating). Still to find: meaning and how to clear it (ITEM Service IM 36K10L35/L36, Engineering Module I/O Processes IM 36K10C10). Revisit in phase 5 with a station item. 2026-09-30 later: unblocking a sample item left the flag ublk (after blk was cleared), so u… flags may mean "was …" (un-blocked / un-offline). Still unconfirmed. .claude/skills/system-management/tasks/read-write-item.md (replace the uoff note under "Read the current value"); knowledge/progress.md row "Write an item with itmval -p"
ISS-002 2026-09-30 DATABASE (dsschk) dsschk -d ITEM_DF -v (check only) exits 0 with no console output and nothing new in umhlog.log. Where results are reported is unknown. closed Closed 2026-09-30 (confirmed by user). 2026-09-30: dsschk -e -v prints a start/end line per dataset (228 checked, no problems) and logs to umhlog.log. Plain dsschk only compares copies between nodes, so it prints nothing on a single-node system. ismchk needs a database file name (usage: ismchk data_base_name), not run yet. Create .claude/skills/system-management/tasks/consistency-check.md and add it to that skill's SKILL.md; knowledge/manuals/IM36K10J10-01EN.md §4.1.1 consistency tools (add where output goes); knowledge/progress.md row "Consistency check"
ISS-003 2026-09-30 DATABASE (dssqld) Filtered export (dssqld -e <out> <filter>.qli) failed with a guessed filter syntax (@ITEM_DF, @FIELD, @SELECT). closed Closed 2026-09-30 (confirmed by user). 2026-09-30: the quick load data format is now known and verified (@LANGUAGE, @VERSION, @FIELDS, @<DATASET>, quoted CSV records, \ continuation, ! comments; IM 36K10L45 §9.11). Filter syntax found (IM 36K10L50 §3.6) and practiced, awaiting confirmation: a file with @SELECT, then the filter in single quotes (strings in double quotes), then @<DATASET>; run dssqld -e <out> <filter>.qli. ITEM_HISTORY returns nothing unless the filter names ITEM_NAME and a SAMPLE_TIME range (SAMPLE_TIME > "dd-mm-yyyy hh:mm:ss" and SAMPLE_TIME < ...). .claude/skills/system-management/tasks/export-dataset.md section "Filtered exports"; knowledge/manuals/IM36K10J10-01EN.md §5.6 step 1; knowledge/progress.md row "Export a dataset"
ISS-004 2026-09-30 ITEM (itmval) itmval -g -a <1..5> returns ITM-E-WRONG_ATT on AID.WRPS.* items, so reading limits is unproven. closed Closed 2026-09-30 (confirmed by user). On CI-Eng-Sample.TANK1.LEVEL (limits set) -a 1..5 returned deadband 0, low 20, high 80, low-low 10, high-high 90. The error only occurs on items without limits. .claude/skills/system-management/tasks/read-write-item.md (limits section); knowledge/progress.md row "Read an item with itmval -g"
ISS-005 2026-09-30 DATABASE (dssqld) Loading 04_item_his_df.qli straight after creating the storage group gave 2 errors once; three other runs were clean. Error text not captured. open Added a 5 s pause in load.cmd. If it happens again, capture 04_item_his_df.qlo. examples/CI-Eng-Sample/load.cmd; .claude/skills/system-management/tasks/load-remove-records.md
ISS-006 2026-09-30 HISTORY (ithloahis) Samples dated before the start of the current storage unit were not stored (no error shown); samples after it were. Also, a new storage group stored nothing until CI Server was restarted. open Confirm with History Management (IM 36K10L20) in phase 9: how to load into older units, and whether a restart is really required. .claude/skills/system-management/tasks/load-history.md; examples/CI-Eng-Sample/README.md; knowledge/manuals/IM36K10J10-01EN.md command-line tools
ISS-007 2026-09-30 INTEGRATION (monitoring) intdskmon wrote 61.9 for a C: drive that is 61.9 % used / 38.1 % free, although the manual says it monitors the disk free space rate. intspawn did nothing when the command path was ~130 characters; a short path worked (limit unknown). open Confirm the disk value meaning and the path limit. .claude/skills/system-management/tasks/monitoring-processes.md; knowledge/manuals/IM36K10J10-01EN.md §4.1.6; examples/CI-Eng-Sample/monitoring/
ISS-008 2026-09-30 ACCESS (web/OPC UA server?) ci_start.log on the test system shows CppServerAPI::Run() failed: InitializeSslCtx(): SSL_CTX_use_certificate_chain_file() failed. right after ACCESS Service starts. Which component and certificate is not known. open Identify in phase 7 (OPC Interface IM 36K10E20, Data Access IM 36K10L45). .claude/skills/installation-security/tasks/setup-check.md; the phase 7 skill
ISS-009 2026-09-30 Security Guide DCOM port range printed as 20500–20550 in the firewall table but "2500–20550" in the OPC configuration table. Taken as a typo for 20500–20550. open Confirm on a system with IT security applied. knowledge/manuals/IM36K01C30-01EN.md §4

| ISS-010 | 2026-09-30 | ITEM (sub-items) | The Integrator sub-item adds value × seconds; setting TIME_UNIT = Hour made no difference (1 per second while the main item was 1). The Tutorial lists a time unit only for Rate-of-Change. | closed | 2026-09-30 (phase 5): IM 36K10C10 §3.2 and itm.sup answer it: the integral is divided by the integration granule itm_int_secs (label "Integration granule, sec.") in itm.sup — system-wide, installed value 1 (seconds); 60 = minutes, 3600 = hours. TIME_UNIT only applies to Rate-of-Change. Practiced 2026-09-30: set to 60 and restarted → CI-Eng-Sample.PUMP1.RUNNING.RUN_SECONDS rose exactly 1.0 in 60 s; restored to 1 (file identical to backup) → 8 in 8 s. Existing integrator values are not converted when the granule changes. Closed 2026-09-30 (confirmed by user). | examples/CI-Eng-Sample/02b_sub_item_df.qli; knowledge/manuals/IM36K10G10-01EN.md | | ISS-011 | 2026-09-30 | ITEM (blocking) | A write to a blocked item with itmval -p (without -o) is silently ignored: no error message, value unchanged. | open | Check in phase 5 whether any status/return code signals this. | .claude/skills/system-management/tasks/read-write-item.md | | ISS-012 | 2026-09-30 | CI Portal setup files | IM 36K10R10 §4.4 names the alarm item/display relation setup file wfla_displays.sup; the installed file is wfla_display.sup (no s). | closed | Closed 2026-09-30 (user decision: the installed software and files are the reference). The repo uses wfla_display.sup. | knowledge/manuals/IM36K10R10-01EN.md §4; .claude/skills/portal-setup/tasks/read-setup-file.md | | ISS-013 | 2026-09-30 | CI Portal setup files | Installed values differ from the defaults stated in IM 36K10R10 §4.4: wfla_display.sup DUR_QUEUE_SIZE = 1000 (manual 500 kB); wflgdi.sup DUR_QUEUE_SIZE = 252 (manual 1000 kB); wfla_display.sup and wflcdi.sup set TIMER_INTERVAL = 10 (manual: 1 s when not set). | closed | Closed 2026-09-30 (user decision: the installed software and files are the reference). The repo quotes the installed values as defaults. | knowledge/manuals/IM36K10R10-01EN.md §4 | | ISS-014 | 2026-09-30 | CI Portal setup files | jwuiisg.sup has a Security tab (SECURITY_ENABLED, CORS_ENTRY, HEADER_ENTRY) that IM 36K10R10 §4.3 does not describe. | closed | Closed 2026-09-30 (user decision: the installed software and files are the reference). Documented from the file's own !KEYWORD/!HELP text. Installed CORS allows all origins (allowedOrigins "*"); tightening it is a site security decision. | knowledge/manuals/IM36K10R10-01EN.md §4.3 | | ISS-015 | 2026-09-30 | Setup File Editor | In wfla_display.sup the seven main keywords (RELATION_LOCATION … TIMER_INTERVAL) come before the only tab line !TAB = Debug. By IM 36K10R20 §3.1, keywords before the first !TAB are not shown, yet IM 36K10R10 §4.4.1 shows them on a General tab. What the editor really shows is unknown. | closed | Closed 2026-09-30 (checked in the Setup File Editor by the user; installed software is the reference). The editor shows keywords placed before the first !TAB on a General tab, followed by the defined tabs: wfla_display.sup shows General (all 7 fields, values as in the file) and Debug. The manual's statement that such keywords are ignored does not hold in R1.03. | knowledge/manuals/IM36K10R20-01EN.md §3; knowledge/manuals/IM36K10R10-01EN.md §4; .claude/skills/portal-setup/tasks/change-setup-file.md | | ISS-016 | 2026-09-30 | Setup File Editor | The R1.03 editor has features IM 36K10R20 §2 does not describe: a Templates tab next to Setup Files; a Status column in the file list (e.g. "Default"); Undo Field and Reset Field buttons on the edit form besides OK/Cancel/Help; a status bar with the selected file's description and the time. | open | Installed software is the reference (user decision). 2026-09-30, tested on wfla_display.sup (DUR_QUEUE_SIZE 1000 → 2000): clicking OK writes the file immediately (only the active line changed; the manual says OK keeps the change in memory until Exit). Status becomes Changed when an active value differs from the file's !DEFAULT block; the changed field's label turns blue. Reset Field is enabled when the cursor is in a changed field; Reset Field + OK put the value back to the !DEFAULT value (2000 → 1000) and wrote the file at once (16:22:28); the rest of the file was unchanged. Still to find: what Templates holds and what Undo Field does. | knowledge/manuals/IM36K10R20-01EN.md §2; .claude/skills/portal-setup/tasks/change-setup-file.md | | ISS-017 | 2026-09-30 | CI Portal setup files | IM 36K10R10 §4 says the logon method is the one user-interface setting normally changed, but the R1.03 jwuiisg.sup Information tab says the login method and login control settings have moved to dssana.sup (authentication and authorization). dssana.sup is not described in R10. | open | Installed software is the reference. 2026-09-30: dssana.sup ("Authentication and authorization setup") has tabs General, User Interfaces, Clients System Trust, Login control (LOGIN_METHOD = <client>, <user interface>, <method>, …), Active Directory, Single Sign On, Password rules, Logging. Manuals mentioning it: IM 36K01A50 (5×), 36K10C10 (6×), 36K10J40 (13×), 36K10L45 (2×), 36K10L50 (3×). Cover it in phase 5 (C10) and phase 13 (J40). 2026-09-30: login methods (Automatic, Manual CI Server, Manual OS, No, SSO, Deny) now summarized from C10 §2.2 in knowledge/manuals/IM36K10C10-01EN.md; AD/SSO details remain for J40. | knowledge/manuals/IM36K10R10-01EN.md §4; .claude/skills/portal-setup/SKILL.md | | ISS-018 | 2026-09-30 | Authorization (dssana.sup) | IM 36K10C10 §2.2 says the No login method applies the user profile FT_NO_LOGIN; the installed dssana.sup names CI_NO_LOGIN (and CI_NO_LOGIN_OPCUAS for anonymous OPC UA) as the no-login profile. USER_DF on the test system has CI_NO_LOGIN_OPCUAS but no CI_NO_LOGIN. | open | Installed software is the reference: use CI_NO_LOGIN. Still to check: behaviour of a No login when that user does not exist (manual: no profile applied). Covered again in phase 13 (IM 36K10J40). | knowledge/manuals/IM36K10C10-01EN.md §2 | | ISS-019 | 2026-09-30 | ITEM (string items) | Maximum string item length differs by source: IM 36K10C10 §3.3.4 says default 80, max 100; the Tutorial summary says up to 168 without audit; the data dictionary (dssqld -f) gives ITEM_DF.STRING_LENGTH range 1–200, default 80. | closed | Tested 2026-09-30 on CI-Eng-Sample (dssqld -i, itmval -p/-g, non-elevated): STRING_LENGTH 100, 168 and 200 load with or without AUDIT_INFO; 201 fails with DSS-E-VAL_RANGE. An item holds length − 1 characters: a 99-character value in a length-100 item is stored with status 9 NORMAL; longer values are cut to length − 1 with status 12 OVERRANGED (100 → 99, 200 → 199, 201 → 199). So the data dictionary (1–200) is right. Test items removed. Closed 2026-09-30 (confirmed by user). | knowledge/manuals/IM36K10C10-01EN.md §3; knowledge/manuals/IM36K10G10-01EN.md (items); .claude/skills/item-engineering/SKILL.md | | ISS-020 | 2026-09-30 | DATABASE (dssqld) | dssqld -i "<long absolute path>\user.qli" failed with CRL-E-ENOENT / DSSQ-E-QLD_FILOPN: the path in the message was cut after 79 characters (…\73b3559a-12.). A relative file name from the same folder works. Similar to the intspawn path limit (ISS-007). | open | Find the exact limit (79/80 characters?) and whether -l and -e paths are also cut. Until then: cd to the folder and use short relative names. | .claude/skills/system-management/tasks/load-remove-records.md; .claude/skills/system-management/tasks/export-dataset.md |