Phase 12: Audit trail #13

Merged
cliu merged 5 commits from docs/phase-12-audit-trail into main 2026-10-01 17:38:25 +10:00
5 changed files with 11 additions and 8 deletions
Showing only changes of commit f016f516b8 - Show all commits

View file

@ -24,7 +24,7 @@ NAME,STORAGE
"<SUBJECT>.<ATTRIBUTE>.<ACTION>.<SOURCE>",0 "<SUBJECT>.<ATTRIBUTE>.<ACTION>.<SOURCE>",0
``` ```
`dssqld -m` (the change itself is audited: `AUDIT_EVENT_CLAS_DF` `STORAGE` `MODIFY`). `dssqld -m`, or in the Engineering Module *Configuration › Audit trail › Event classifiers* (the change itself is audited: `AUDIT_EVENT_CLAS_DF` `STORAGE` `MODIFY`).
**Not immediate:** the processes that report events (e.g. `DSSSDA`) cache the storage flags and **Not immediate:** the processes that report events (e.g. `DSSSDA`) cache the storage flags and
re-read them every `ECL_REFRESH` seconds (default 1800). In the test a switched-off classifier was re-read them every `ECL_REFRESH` seconds (default 1800). In the test a switched-off classifier was
still recorded right after the change (ISS-050). Confirm with the user before still recorded right after the change (ISS-050). Confirm with the user before

View file

@ -82,4 +82,6 @@ report `CIENG_AUDIT` (`examples/CI-Eng-Sample/19_audit_df.qli`) lists the last h
`CI-Eng-Sample.*`; generate it like any ad-hoc report (`define-reports.md` §2). Generated from `CI-Eng-Sample.*`; generate it like any ad-hoc report (`define-reports.md` §2). Generated from
`dssqld` it is stored but not printed (`FSL-E-PRT_UNKUSER`, ISS-045). `dssqld` it is stored but not printed (`FSL-E-PRT_UNKUSER`, ISS-045).
The Engineering Module also has the system report `AUDIT_TRAIL` (IM 36K10C30 App. 1). In the Engineering Module, *Configuration › Reporting › Reports* holds the system reports
`AUDIT_TRAIL` and `UA_SERVER_AUDIT` (IM 36K10C30 App. 1). Generated there (as the logged-in
user) `CIENG_AUDIT` printed to `CIENG_FILE` and showed in the report viewer (checked by the user).

View file

@ -66,8 +66,9 @@ NAME,PARAM_VALUE_1,GENERATE
``` ```
`dssqld -m`. `GENERATE` returns to 0 when finished (a second or two for small reports). The run is `dssqld -m`. `GENERATE` returns to 0 when finished (a second or two for small reports). The run is
made as user `FULL AUTHORIZATION` by `DSSQLD<pid>`; without `ADHOC_DEST` the manager then logs made as user `FULL AUTHORIZATION` by `DSSQLD<pid>`; the manager then logs `FSL-E-PRT_UNKUSER` and
`FSL-E-PRT_UNKUSER` (the report is still stored, ISS-045). prints nothing, even with `ADHOC_DEST` set (the report is still stored, ISS-045). To get printed
output, generate from the Engineering Module.
## 3. Read generated reports ## 3. Read generated reports

View file

@ -64,7 +64,7 @@ development system (see "Test system" in `progress.md`); they do not exist on ot
| ISS-042 | 2026-10-01 | GRAPHICS (layouts) | Installed vs `Layouts.readme`: the factory layouts use status line item types `displayName`, `playbackIndicator` and `dateTime` and the commands `reload <frame>` / `reload all`, none of which the readme lists (readme: `statusText`, `userName`, `progresBar`, `graphicsQueueLevel`, `connectionState`); the readme also writes `zooom` for the zoom command (factory files use `zoom`). | open | Installed software is the reference (standing user decision). Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §2 | | ISS-042 | 2026-10-01 | GRAPHICS (layouts) | Installed vs `Layouts.readme`: the factory layouts use status line item types `displayName`, `playbackIndicator` and `dateTime` and the commands `reload <frame>` / `reload all`, none of which the readme lists (readme: `statusText`, `userName`, `progresBar`, `graphicsQueueLevel`, `connectionState`); the readme also writes `zooom` for the zoom command (factory files use `zoom`). | open | Installed software is the reference (standing user decision). Close when the user confirms. | `.claude/skills/graphics/tasks/layouts.md` §2 |
| ISS-043 | 2026-10-01 | REPORT (system reports) | IM 36K10C30 App. 1.3 names two system reports `ALM_ATTS_CUR` and `ALM_ATRS_HIS`; the installed reports are `ALM_ATTRS_CUR` and `ALM_ATTRS_HIS`. The other 26 names match. | open | Installed software is the reference (standing user decision). Close when the user confirms. | `knowledge/manuals/IM36K10C30-01EN.md` §8 (done) | | ISS-043 | 2026-10-01 | REPORT (system reports) | IM 36K10C30 App. 1.3 names two system reports `ALM_ATTS_CUR` and `ALM_ATRS_HIS`; the installed reports are `ALM_ATTRS_CUR` and `ALM_ATTRS_HIS`. The other 26 names match. | open | Installed software is the reference (standing user decision). Close when the user confirms. | `knowledge/manuals/IM36K10C30-01EN.md` §8 (done) |
| ISS-044 | 2026-10-01 | REPORT (scheduling) | Behaviour not in the manuals, found by quick load: a generation interval below 10 minutes is refused (`HIS-E-ROLLTOFAST`, the interval is the rollover of the report's storage group); a scheduled report cannot be deleted (`RPT-E-ACTIVE`) until `ACTIVATION_TIME` and `GENERATION_INTERVAL` are cleared; `CORRECT_DAYLIGHT` 0 counts intervals in UTC (06:00 set for January ran at 05:00 in October); a past activation time moves to the next slot - once (modify, past time within the lifetime) a single report labelled with the old time was generated, at insert with an older time none. | open | Documented as verified behaviour; the one-off generation for a past activation time is not fully understood. Close when the user confirms. | `.claude/skills/reporting/tasks/define-reports.md` §1, §5, §6; `knowledge/manuals/IM36K10C30-01EN.md` §2; `examples/CI-Eng-Sample/83a_stop_report_df.qli`, `18_report_df.qli` | | ISS-044 | 2026-10-01 | REPORT (scheduling) | Behaviour not in the manuals, found by quick load: a generation interval below 10 minutes is refused (`HIS-E-ROLLTOFAST`, the interval is the rollover of the report's storage group); a scheduled report cannot be deleted (`RPT-E-ACTIVE`) until `ACTIVATION_TIME` and `GENERATION_INTERVAL` are cleared; `CORRECT_DAYLIGHT` 0 counts intervals in UTC (06:00 set for January ran at 05:00 in October); a past activation time moves to the next slot - once (modify, past time within the lifetime) a single report labelled with the old time was generated, at insert with an older time none. | open | Documented as verified behaviour; the one-off generation for a past activation time is not fully understood. Close when the user confirms. | `.claude/skills/reporting/tasks/define-reports.md` §1, §5, §6; `knowledge/manuals/IM36K10C30-01EN.md` §2; `examples/CI-Eng-Sample/83a_stop_report_df.qli`, `18_report_df.qli` |
| ISS-045 | 2026-10-01 | REPORT (ad hoc from `dssqld`) | Generating ad hoc with `REPORT_DF.GENERATE` = 1 from `dssqld` (user `FULL AUTHORIZATION`) on a report without `ADHOC_DEST` logs `FSL-E-PRT_UNKUSER, Job submitted by unknown user (FULL AUTHORIZATION)` and `RPT-I-TRYPRINT` in `umhlog.log`; the generated report is stored normally. With `ADHOC_DEST` set no error appears and the device gets the output. Related to the R1.03 known issue on report generation and default printers (IM 36K01A50, REPORT 1.11). | open | Workaround documented (set `ADHOC_DEST`). 2026-10-01: generating from the Engineering Module as user `ADMIN` with destination `CIENG_FILE` printed without errors, so it only affects runs from `dssqld`. Close when the user confirms. | `.claude/skills/reporting/tasks/define-reports.md` §2; `knowledge/manuals/IM36K10C30-01EN.md` §6 | | ISS-045 | 2026-10-01 | REPORT (ad hoc from `dssqld`) | Generating ad hoc with `REPORT_DF.GENERATE` = 1 from `dssqld` (user `FULL AUTHORIZATION`) on a report without `ADHOC_DEST` logs `FSL-E-PRT_UNKUSER, Job submitted by unknown user (FULL AUTHORIZATION)` and `RPT-I-TRYPRINT` in `umhlog.log`; the generated report is stored normally. Phase 12 correction (2026-10-01): with `ADHOC_DEST` set the same error appears and nothing is printed (`CIENG_AUDIT`, `CIENG_TANK1` after a sample reload); the same report generated from the Engineering Module as `ADMIN` printed to `CIENG_FILE`. Related to the R1.03 known issue on report generation and default printers (IM 36K01A50, REPORT 1.11). | open | Workaround documented (set `ADHOC_DEST`). 2026-10-01: generating from the Engineering Module as user `ADMIN` with destination `CIENG_FILE` printed without errors, so it only affects runs from `dssqld`. Close when the user confirms. | `.claude/skills/reporting/tasks/define-reports.md` §2; `knowledge/manuals/IM36K10C30-01EN.md` §6 |
| ISS-046 | 2026-10-01 | DATABASE (`dssqld` memo) | A memo field loaded from a file (`@"<file>"@`, IM 36K10L50 §3.10) fails with a relative name (`CRL-E-ENOENT`, the file is read on the server side) and with a long absolute path (`DSSG-E-STRBUFSMAL`, buffer 83); a short absolute path works. The manual gives no limits. | open | Documented: use inline memos, or an absolute path ≤ 82 characters. Close when the user confirms. | `.claude/skills/system-management/tasks/dss-tools.md` §2; `knowledge/manuals/IM36K10L50-01EN.md` §4 | | ISS-046 | 2026-10-01 | DATABASE (`dssqld` memo) | A memo field loaded from a file (`@"<file>"@`, IM 36K10L50 §3.10) fails with a relative name (`CRL-E-ENOENT`, the file is read on the server side) and with a long absolute path (`DSSG-E-STRBUFSMAL`, buffer 83); a short absolute path works. The manual gives no limits. | open | Documented: use inline memos, or an absolute path ≤ 82 characters. Close when the user confirms. | `.claude/skills/system-management/tasks/dss-tools.md` §2; `knowledge/manuals/IM36K10L50-01EN.md` §4 |
| ISS-047 | 2026-10-01 | REPORT (RQL manuals) | The manuals disagree: default `@WORKSPACE` 500 KB (IM 36K10R40 §2.2.2) vs 16 KB (IM 36K10C30 table 2.1-1, IM 36K10P20 §9.6); maximum `@WIDTH` 512 (R40, P20 §4) vs 5000 (P20 §9.6); `@FORMFEED` described with opposite meanings (C30: not 1 = form feed; P20: 0 = blank lines, default 1). Installed set-up files set `@workspace` explicitly (500 in `rptge1.rpt`, 100 in `rptgen.rpt`) and `@formfeed 0` for the interactive generator. | open | Not tested (no printer); the set-up files make the defaults irrelevant in practice. | `knowledge/manuals/IM36K10R40-01EN.md` §2; `knowledge/manuals/IM36K10P20-01EN.md` §3 | | ISS-047 | 2026-10-01 | REPORT (RQL manuals) | The manuals disagree: default `@WORKSPACE` 500 KB (IM 36K10R40 §2.2.2) vs 16 KB (IM 36K10C30 table 2.1-1, IM 36K10P20 §9.6); maximum `@WIDTH` 512 (R40, P20 §4) vs 5000 (P20 §9.6); `@FORMFEED` described with opposite meanings (C30: not 1 = form feed; P20: 0 = blank lines, default 1). Installed set-up files set `@workspace` explicitly (500 in `rptge1.rpt`, 100 in `rptgen.rpt`) and `@formfeed 0` for the interactive generator. | open | Not tested (no printer); the set-up files make the defaults irrelevant in practice. | `knowledge/manuals/IM36K10R40-01EN.md` §2; `knowledge/manuals/IM36K10P20-01EN.md` §3 |
| ISS-048 | 2026-10-01 | REPORT (ad-hoc parameters) | The prompt `[ITEM:NAME like "CI-Eng-Sample.TANK1.*"]Item for statistics:` (filter form as in IM 36K10C30 §2.1) gives an item tree browser in the Engineering Module generate dialog, but the tree shows all sections, not only `TANK1` items (checked by the user). | open | Try other filter forms (`%` wildcard, `SECTION = …`, `[ITEM:TAG="…"]`) and the display report component. | `.claude/skills/reporting/tasks/define-reports.md`; `knowledge/manuals/IM36K10C30-01EN.md` §2; `examples/CI-Eng-Sample/18_report_df.qli` comment | | ISS-048 | 2026-10-01 | REPORT (ad-hoc parameters) | The prompt `[ITEM:NAME like "CI-Eng-Sample.TANK1.*"]Item for statistics:` (filter form as in IM 36K10C30 §2.1) gives an item tree browser in the Engineering Module generate dialog, but the tree shows all sections, not only `TANK1` items (checked by the user). | open | Try other filter forms (`%` wildcard, `SECTION = …`, `[ITEM:TAG="…"]`) and the display report component. | `.claude/skills/reporting/tasks/define-reports.md`; `knowledge/manuals/IM36K10C30-01EN.md` §2; `examples/CI-Eng-Sample/18_report_df.qli` comment |

View file

@ -112,9 +112,9 @@ Logbook on a display needs *Logbook Enabled* and *Visible* in the report. Not pr
`dssqld -r` (needs `REPORT_DELETE_GENERATED_REPORT`; users only delete their own ad-hoc ones). `dssqld -r` (needs `REPORT_DELETE_GENERATED_REPORT`; users only delete their own ad-hoc ones).
- `rptgen -s rptgen.rpt` for trying RQL (`IM36K10R40-01EN.md` §6). - `rptgen -s rptgen.rpt` for trying RQL (`IM36K10R40-01EN.md` §6).
**Verified:** ad-hoc runs from `dssqld` are made by user `FULL AUTHORIZATION`; without an ad-hoc **Verified:** ad-hoc runs from `dssqld` are made by user `FULL AUTHORIZATION`; `RPTMAN` then logs
destination `RPTMAN` then logs `FSL-E-PRT_UNKUSER, Job submitted by unknown user` (the report is `FSL-E-PRT_UNKUSER, Job submitted by unknown user` and prints nothing, with or without
still stored; ISS-045). With `ADHOC_DEST` set the output went to the device without errors. `ADHOC_DEST` (the report is still stored; ISS-045, corrected in phase 12).
Scheduled and triggered runs are made by `RPTMAN` and print to `DEST_NAME`. Generated from the Scheduled and triggered runs are made by `RPTMAN` and print to `DEST_NAME`. Generated from the
Engineering Module the run is made by the logged-in user (`ADMIN`, process `JHMISET…`) and printed Engineering Module the run is made by the logged-in user (`ADMIN`, process `JHMISET…`) and printed
to the chosen destination without errors; *View* lists generated reports by local time and has a to the chosen destination without errors; *View* lists generated reports by local time and has a