ci-server-engineer/knowledge/issues.md
cliu a2fdaae6ac Record phase 6 progress and issues ISS-025 to ISS-029
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 17:49:49 +10:00

51 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. 2026-09-30 (phase 5): IM 36K10L35 §1.3/§5 explains the first part: event storage picks the unit by time stamp, never older than 60 units, and within the storage process's `gap_time` (ITHEEX/ITHEIX 2880 min) and, for EVENT/ITEM, `max_sample_delay` (ITHEIX 14400 min); older data needs earlier unit files (`hisdbg`, `hisrecover`, `isfrename`), `ithrecover <group> -p` and a restart. Practice in phase 9. | `.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` |
| ISS-021 | 2026-09-30 | EQUIPMENT (`eqpiostat`) | IM 36K10L40 §2 says `eqpiostat` stores hourly I/O statistics per station line in "history group STATION_STAT". On the test system `eqpiostat` runs (started by `equipment_start.cmd` on the host node) and `STATION_STAT` is a dataset, but `dssqld -e` returned 0 records, also with filters on `TIME_STAMP` and `STATION` (AID Modbus stations, which send requests). | open | Check whether records appear after a full hour with a communicating station, or whether the dataset is read another way (e.g. Engineering Module, report). | `knowledge/manuals/IM36K10L40-01EN.md` §2 |
| ISS-022 | 2026-09-30 | ITEM (`itmval -f`) | `itmval -f <file> vs -n CI-Eng-Sample.TANK1.LEVEL` (IM 36K10L36 §1.4, write a restore command) crashes with a segmentation fault (bash) / access violation 0xC0000005 (PowerShell) and writes no file; also with `-l`. The manual's space-separated form `-n <inst> <unit> <tag>` is rejected with `FSL-E-NARG_ALL`. `itmval -g`/`-p` work. | open | Workaround: build restore lines from `itmval -g` output. Report to Yokogawa support if needed. | `knowledge/manuals/IM36K10L36-01EN.md` §3; `.claude/skills/system-management/tasks/read-write-item.md` |
| ISS-023 | 2026-09-30 | ITEM / ITH (manual vs install) | Installed ITEM Service differs from IM 36K10L35/L36: `item_start.cmd` starts `itheix` (EVENT/ITEM storage, not described), aggregation `ithsag`/`ithrag`, two instances of each retrieve process, and `itmtim 100 1000 1 200 1` (five arguments, three documented); `itm.sup` item pool is 650000 KB (manual default 50000) and has `not_regained` (not described); `itheix.sup` has `max_sample_delay`, `max_samples_queued`, `max_open_files`. | closed | Closed 2026-09-30 (user decision: the installed software is the reference). Summaries describe the installed values. | `knowledge/manuals/IM36K10L35-01EN.md`; `knowledge/manuals/IM36K10L36-01EN.md` |
| ISS-024 | 2026-09-30 | EQUIPMENT (Modbus slave) | IM 36K10L41 §3.7 says `EQPMDCSLVTCP` waits for "MODBUS RTU requests via TCP/IP" and the CI Server master should use "MODBUS RTU via TCP/IP". A Modbus master station with `PROTOCOL = RTU` to `eqpmdcslvtcp` (port 5020) got no answer (`EQP-E-TCPRCVTMO`, 4 requests, 0 valid); with `Open Modbus/TCP` it worked at once. | closed | Closed 2026-09-30 (user decision: installed software is the reference). Use `Open Modbus/TCP` towards `eqpmdcslvtcp`. | `knowledge/manuals/IM36K10L41-01EN.md` §3.7; `.claude/skills/equipment/tasks/modbus-station.md` |
| ISS-025 | 2026-09-30 | PROCESS (PRINT) | A Traditional `PRINT "… 80 %, volume ", VOLUME;` logged `OPC-I-INFO, UMH Message Text Error: Message number 083A001B (… level reached 80 )`: the text is cut at the `%` and the rest is lost. Without `%` the full text is logged. | open | Avoid `%` in PRINT/ERROR text (sample uses "pct"). Check whether `%%` or `\%` gives a literal percent sign. | `knowledge/manuals/IM36K10P10-01EN.md` §4; `.claude/skills/class-object-engineering/tasks/traditional-class.md` |
| ISS-026 | 2026-09-30 | PROCESS (`opc.sup`) | Installed PROCESS setup differs from IM 36K10L10 §2: `IMMED-EVENTS = NO` (manual: default on); `FLOW-CONTROL = 30,60` (manual 300/360 s); four executors `OPCEXE1`–`4` with fixed priority ranges (manual examples `OPCEXE01`…) and `opcdbg` still defaults to `OPCEXE`; keyword `VARTAB-SIZE` (manual `VARITAB-SIZE`); hidden keywords `FLDSEP`, `IGNEXI` not described; `ALARM-ITEMS` not set; class source file `opc_clssrc.dat` (manual `opc_clasrc.dat`); `opcini.sup` (licence line) not described. | open | Installed software is the reference (standing user decision); summary written from the installed files. Close when the user confirms. | `knowledge/manuals/IM36K10L10-01EN.md` §2, §5 |
| ISS-027 | 2026-09-30 | PROCESS (`opcdbg`) | IM 36K10L10 §4 says the `opcdbg` *Dump classes/objects* files can be read by `dssqld`. The files have no `@LANGUAGE`/`@FIELDS`/`@<dataset>` headers (`NAME,"desc",prio` + source lines prefixed `- `); `dssqld -i` on the object dump gave `DSS-E-UNK_DS_NM, Unknown data set name`. | open | Use `dssqld -e CLASS_DF` / `OBJECT_DF` for transfers. Maybe an old tool reads the dump format; not found. | `knowledge/manuals/IM36K10L10-01EN.md` §4; `.claude/skills/class-object-engineering/tasks/opcdbg-checks.md` |
| ISS-028 | 2026-09-30 | PROCESS (class reset) | After recompiling a class with objects (`RESET_REQUIRED` 1), `dssqld -m` with `CLASS_DF` `RESET` = 1 (also with `RESET_NODE` = host node name) is accepted with 0 errors but does not reset; `OBJECT_DF` `RESET` = 1 is refused (`OPC-E-OBJ_RSTREQ`). `opcdbg` Classes → 8 *Reset class* works; it asks for a reset report file, which the manual does not list. | open | Use `opcdbg`. Still to try: `CLASS_RESET_COMMAND` (system-wide) and the Engineering Module's reset. | `.claude/skills/class-object-engineering/tasks/change-reset-class.md`; `knowledge/manuals/IM36K10L10-01EN.md` §4 |
| ISS-029 | 2026-09-30 | PROCESS (Java) | IM 36K10P11 §10.4 says a new Java class must be reset before objects are added, otherwise the code does not take effect. A Java class inserted with `COMPILE` 1 by `dssqld` ran its first object correctly without any reset (twice, including a full sample reload). | open | Installed behaviour is the reference; keep "reset after changing a class that has objects". Check whether the Engineering Module path (compile without quick load) behaves differently. | `knowledge/manuals/IM36K10P11-01EN.md` §7; `.claude/skills/class-object-engineering/tasks/java-class.md` |