ci-server-engineer/.claude/skills/system-check/SKILL.md
cliu 0bff3698c2 Record the Engineering Module check of the phase 11 reports
User checked the report forms, the generate dialog and viewing text and
HTML reports. The [ITEM:...] prompt filter does not limit the item
browser (ISS-048). system-check: Stop-Service error while CI Server
still restarts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 16:47:49 +10:00

113 lines
6.5 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.

---
name: system-check
description: >-
Read-only check of a CI Server machine, run before any CI Server work. Use when
the user asks which CI Server version is installed, whether CI Server is running, where it is
installed, whether time is synchronized, or before starting any task in another skill.
Also covers starting CI Server (needs administrator rights). Target version R1.03.
version: R1.03
source: IM 36K10J10-01EN §1.2, §1.4, §3.6, §3.7; practiced on the test system 2026-09-29/30
status: verified (2026-09-30)
---
# System check
Run this read-only check before any CI Server work. It changes nothing.
## 1. Installed version
PowerShell:
```powershell
$keys = @('HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*','HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*')
foreach ($k in $keys) { foreach ($i in (Get-ItemProperty $k -ErrorAction SilentlyContinue)) { if ($i.DisplayName -match 'CI Server') { "{0} | {1}" -f $i.DisplayName, $i.DisplayVersion } } }
```
Expected for this repo: `CI Server R1.03.00 (r10200M) | 1.03.00`. Anything else: warn the
user that the repo targets R1.03.
**From the running system** (preferred when CI Server is running): export the local node
dataset and read `VERSION_MAJOR`, `VERSION_MINOR`, `VERSION_PACK` (1, 3, 0 = R1.03.00).
```
dssqld -e local_node.qli -d LOCAL_NODE_DF -c -l local_node.lst
```
Run it in a scratch folder; it only reads. The same row shows the node name, node number and
licence state (`NAME`/`NODE_NAME` = `UNLICENCED` means no licence is registered).
`dssqld -f -l dict.lst` dumps the full data dictionary (all datasets and fields) if you need
to find another dataset.
**Per-component versions** (rewritten at every start): `%TLS_ALLUSERS_PATH%\lst\tls_versions.lst`,
one line per component: `<file>,<version>,<size>,<build date>`. On the test system all 110
lines read `R1.03.00`; a different version on some lines means a patch is installed.
**Message log**: `%TLS_LOG_PATH%\umhlog.log` holds CI Server messages
(`--> From: <PROCESS> (<node>) on <time>` then `<FAC>-<I|W|E>-<CODE>, <text>`). Read it after
starting CI Server to spot errors (e.g. `EQP-E-SLV_COM_BAD` = no communication with a
station). It can contain connection strings with passwords; never copy those into the repo.
## 2. Install paths (environment variables)
| Variable | Typical value | Holds |
|---|---|---|
| `TLS_ROOT_PATH` / `TLS_ITROOT_PATH` | `C:\Program Files (x86)\Yokogawa\CIServer` | Program: `tls\com` (start scripts), `tls\exe` (tools), `tls\sup` (setup files) |
| `TLS_ALLUSERS_PATH` | `C:\Users\Public\Yokogawa\tls` | Data root |
| `TLS_DAT_PATH` | `…\tls\dat` | Database |
| `TLS_HIS_PATH` | `…\tls\his` | History |
| `TLS_SAV_PATH` | `…\tls\sav` | Saved data |
| `TLS_LOG_PATH`, `TLS_LST_PATH` | `…\tls\log`, `…\tls\lst` | Logs and listings |
| `TLS_WAP_PATH` | `…\tls\wap` | Web application files |
`tls\com` and `tls\exe` are on `PATH`, so tools such as `dssqld` and `itmval` run from any
prompt. Setup files (`*.sup`) are plain text (CRLF); edit them with the Setup File Editor.
## 3. Is CI Server running?
- Windows service `StartCIServer` ("CI Service"), start type Manual on the test system.
- Running processes live under `…\Yokogawa\CIServer\tls\exe`. None running = CI Server stopped.
- Most tools (`dssqld`, `itmval`, …) need CI Server running.
- Starting it needs administrator rights (the service runs as `.\CIX_PROCESS`, binary
`tls\exe\ciserv.exe`). From a non-elevated shell `Start-Service StartCIServer` fails with
"Cannot open StartCIServer service". Start it from an elevated prompt:
`Start-Service StartCIServer` (or Services › CI Service › Start).
- **Unlicensed systems shut down after about 1 hour.** All CI Server processes exit, the
`StartCIServer` service still shows *Running*, and every tool fails with
`umh_panic: <tool>, license expired`. To recover, **stop then start** the CI Service
(elevated): `Stop-Service StartCIServer` then `Start-Service StartCIServer`. Before a long
task on an unlicensed system, note the start time (`(Get-Process ciserv).StartTime`) and
restart first if the hour is nearly up.
Time left is in the health snapshots: `License time left : <s>` in
`%TLS_LOG_PATH%\smd_<node>_LOW_smdsnp_general.log` (3600 s after a start, −600 per 10 min);
`*** license problem : 3 ***` once it has run out. The count pauses while the PC sleeps
(observed 2026-10-01: a run started 17:25 ran out at 09:52 the next morning after a sleep);
some processes (e.g. `umh`) stay attached, but `dssqld`/`itmval` fail and the log shows
`ISF-F-LIC_PROB, DATABASE Service is not licensed`.
- `Stop-Service StartCIServer` can fail with *Cannot stop StartCIServer service* although CI
Server does restart (seen 2026-10-01: the error was shown, the service stayed *Running*, and all
processes had new PIDs and a new `STARTUP_TIME` in `LOCAL_NODE_DF` within a minute). Check
`STARTUP_TIME` before retrying.
- **Close the Edit Module (and Engineering Module) before stopping CI Server.** A local Edit
Module is attached to the BUS Service (`JWUIGED<pid>`, a `java.exe` in the user's session) and
does not stop with the service. The next start then aborts at once; `%TLS_LOG_PATH%\ci_start.log`
shows `CI Server is already running` / `umh_panic: durwfp, CI Server has not been properly
stopped, kill the following processes …` with the list (seen 2026-10-01: `JWUIGED12760` kept
UMH, DURTIM, UMHLOG … listed). Fix: close the Edit Module (or end that `java.exe`), then start
again. Avoid `durstp -k -p *` unless the user approves. The Operator Interface (desktop) and the
HTML display connect through the web server and were not in the list.
## 4. Time synchronization
`w32tm /query /status` and `w32tm /query /configuration` (Windows Time must be running).
Check the source matches the design (domain controller, NTP server or `NOSYNC` on Vnet/IP).
## Test system results (2026-09-29)
- Version R1.03.00 (r10200M). Matches the repo.
- Environment variables and folders as in the table; all tools and setup files named in
IM 36K10J10 are present except `tmtime` (a Vnet/IP station tool, not expected here).
- CI Service stopped on 2026-09-29; started 2026-09-30 from an elevated session. About 100
processes then run (e.g. `ciserv`, `dssman`, `itm`, `alm`, `his`, `rptgen`, `opcexe`,
`durm_udp`, `eqpmdc`, `eqpmqtt`, `wfl*`).
- `LOCAL_NODE_DF`: version 1.3.0 (R1.03.00), node 1, **UNLICENCED**, router type Endpoint.
- Windows Time running, source `time.windows.com`; synchronized on 2026-09-30 (stratum 5).