Skip to content

Rewrite the documentation with Sentry Maven Skin 8 and a full page set (#113) - #124

Merged
bertysentry merged 13 commits into
mainfrom
113-update-the-documentation-latest-maven-site-plugin-sentry-maven-skin-8-with-all-its-features-and-a-full-documentation-set-as-done-in-winrm-java
Oct 8, 2026
Merged

bertysentry merged 13 commits into
mainfrom
113-update-the-documentation-latest-maven-site-plugin-sentry-maven-skin-8-with-all-its-features-and-a-full-documentation-set-as-done-in-winrm-java

Conversation

@bertysentry

@bertysentry bertysentry commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Closes #113.

Build

  • oss-parent 4 → 5.
  • maven-site-plugin 4.0.0-M16 with maven-skin-tools 1.8.01, pinned in <build><plugins>. The 3.12.1 inherited from the parent put Velocity 1.7 next to the Velocity 2.x tools of maven-skin-tools, which caused the random AbstractMethodError seen on Don't abort the SDR repository walk on OEM or undecodable records #112.
  • sentry-maven-skin 6.4.01 → 8.0.01. site.xml uses the SITE 2.0.0 descriptor, with menus, top links, social link and footer links as in winrm-java.
  • Reports: the Surefire report is added and the SpotBugs report is pinned to 4.10.4.1 (the parent's 4.9.3.0 cannot read JDK 21+ class files). The changelog report, which predates Doxia 2, is disabled. project.reporting.outputEncoding is set to UTF-8. Project info, JXR, Checkstyle, PMD/CPD and Javadoc (at apidocs/) are unchanged and still inherited or configured as before.
  • mvn clean verify site passes on JDK 17 (33 tests). Search, dark mode, copy-to-clipboard and llms.txt were checked on the locally served site. A link checker over the 14 generated pages found no broken internal links or anchors.

Documentation

14 pages, replacing the single page:

  • Getting Started: Overview, Installation (Java 8, SLF4J, logging levels), Preparing the BMC (IPMI over LAN, account and privilege, the cipher suite table and how IpmiClient picks a suite by position, Kg, firewall, ipmitool/ipmiutil checks).
  • Usage: Chassis Status, FRU Inventory, Sensors (readings, thresholds, states, and the full text output format of IpmiResultConverter), Configuration (every IpmiClientConfiguration option; skipAuth actually forces cipher suite 3 and does not skip authentication), Timeouts and Errors (overall vs per-message timeout, retries, connection.properties defaults, exceptions), Low-Level API (IpmiConnector, SEL reading, chassis control, custom commands, async API), Serial over LAN.
  • Reference: Supported Commands (commands with NetFn/Cmd, cipher suites, SDR record types and OEM handling, FRU areas), Troubleshooting, Upgrading (the former "Upgrading from 1.2.02" content of index.md, plus 1.2.01 and org.sentrysoftware:ipmi), Migrating from Verax.

README (short description and example, links to the new pages) and AGENTS.md (doc conventions, SpotBugs note) are updated.

Notes for reviewers

🤖 Generated with Claude Code

#113)

Build: oss-parent 5, maven-site-plugin 4.0.0-M16 with maven-skin-tools
1.8.01 (the inherited 3.12.1 randomly failed with a Velocity
AbstractMethodError), sentry-maven-skin 8.0.01, UTF-8 report encoding,
surefire report, SpotBugs report pinned to 4.10.4.1, changelog report
disabled. Search, dark mode, copy-to-clipboard and llms.txt come with the
skin.

Documentation: 14 pages in Getting Started / Usage / Reference menus
(overview, installation, preparing the BMC, chassis status, FRU inventory,
sensors and the text output format, configuration, timeouts and errors,
low-level API, Serial over LAN, supported commands, troubleshooting,
upgrading, migrating from Verax), written from the code. The examples and
error messages were checked against a Lenovo IMM; Serial over LAN is
documented from the code only. site.css fixes the IMPORTANT callouts in
dark mode. README and AGENTS.md updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-08T11:11:57.900646Z 039cd2e New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8558e4cadd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/site/markdown/timeouts-and-errors.md
Comment thread src/site/markdown/low-level-api.md Outdated
Comment thread src/site/markdown/fru-inventory.md Outdated
Comment thread src/site/markdown/serial-over-lan.md Outdated
Comment thread src/site/markdown/troubleshooting.md Outdated
- Low-Level API: the example falls back to suite 3 instead of the BMC's
  last suite, which can be an xRC4 or MD5-128 suite the library does not
  implement (verified on a Lenovo IMM: picks 17, opens the session).
- FRU Inventory, Timeouts and Errors: a FRU read error does not fail the
  call, except Get FRU Inventory Area Info on FRU 0, which propagates.
- Serial over LAN: warn about the data loss of writes longer than two
  packets until #123 is fixed.
- System.exit(0), not System.exit().

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bc8f017211

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/site/markdown/serial-over-lan.md Outdated
Comment thread src/site/markdown/serial-over-lan.md Outdated
Comment thread src/site/markdown/low-level-api.md Outdated
Comment thread src/site/markdown/index.md Outdated
Comment thread src/site/markdown/supported-commands.md Outdated
Comment thread src/site/markdown/low-level-api.md Outdated
- Serial over LAN: the example selects 17 or 3 from the suites the BMC
  offers (SpecificCipherSuiteSelector ignores them), and tears down the
  connector in a finally block, since a failed constructor closes nothing
  (a second tearDown() is harmless, checked).
- Low-Level API: skip the SEL walk on an empty SEL, and warn that OEM SEL
  entries are decoded with the system event layout, types C0h and E0h
  throwing IllegalArgumentException.
- Supported Commands: OemRecord has a manufacturer ID for type C0h only.
- Overview, Sensors, README: the client reads the Full and Compact sensor
  records, not every sensor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0fb47dcb43

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/site/markdown/low-level-api.md Outdated
Comment thread src/site/markdown/supported-commands.md Outdated
Comment thread src/site/markdown/fru-inventory.md
Comment thread src/site/markdown/fru-inventory.md
Comment thread src/site/markdown/preparing-the-bmc.md Outdated
bertysentry and others added 2 commits October 8, 2026 11:27
Walking the whole SEL of the test BMCs showed OEM timestamped entries on
both (358 of 643 on a Lenovo IMM), which the decoder reports with
meaningless sensor and event fields: the example printed three of them as
"Voltage LimitNotExceeded". It now prints the event fields of system
event records only, its output is the real one, and the warning links
#125.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Low-Level API: close the session in a finally block, since tearDown()
  does not log out and BMCs have few session slots.
- Supported Commands: a Get SDR reply without any record byte is not
  skipped: the decoder rejects it and the walk fails.
- FRU Inventory: FRU 0 is attached to the system board only when it has a
  Board Info area; the MultiRecord decoder drops the last record (#85).
- Preparing the BMC: the firewall rules use the configured port, and
  Serial over LAN may use the payload port announced by the BMC.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3aaeb10d9c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/site/markdown/serial-over-lan.md Outdated
Comment thread src/site/markdown/sensors.md
Comment thread src/site/markdown/supported-commands.md
Comment thread src/site/markdown/configuration.md
- Low-Level API: DCMI, group extension and OEM commands need a request
  with a raw network function, since NetworkFunction only lists 00h-0Bh;
  the example (Get DCMI Capabilities Info) was run on a Lenovo IMM and a
  GIGABYTE BMC.
- Serial over LAN: close() does not log out when deactivating the payload
  fails.
- Sensors: an empty threshold also means a threshold of exactly 0, and
  every threshold is 0.0 on BMCs affected by #83.
- Configuration: credentials and the BMC key go through the platform
  charset; non-ASCII Kg bytes break the login (#90).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c187ecfc0f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/site/markdown/timeouts-and-errors.md Outdated
Comment thread src/site/markdown/fru-inventory.md Outdated
Comment thread src/site/markdown/serial-over-lan.md
Comment thread src/site/markdown/fru-inventory.md Outdated
- Timeouts and Errors: a Get SDR reply without any record byte fails the
  call, it is not skipped.
- FRU Inventory: a Read FRU Data chunk without a reply only truncates the
  FRU, while Get FRU Inventory Area Info fails the call for FRU 0 on any
  error and for the other FRUs on no reply; word-addressed FRUs are read
  at wrong offsets (#85, by the spec, not seen on the test BMCs).
- Serial over LAN: the constructors that open their own session take no
  BMC key; use a low-level session on two-key BMCs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2702c69e7c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/site/markdown/sensors.md Outdated
Sensors and Troubleshooting no longer promise 0.0 for an unavailable
reading: the library ignores the reading-unavailable and
scanning-disabled flags and converts whatever raw byte the BMC returns
(#110). The readings example now checks isSensorStateValid(), which flags
the three unavailable sensors of the GIGABYTE test BMC and leaves the
Lenovo sample output unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8d38034722

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/site/markdown/configuration.md
Comment thread src/site/markdown/low-level-api.md Outdated
Comment thread src/site/markdown/serial-over-lan.md
bertysentry and others added 2 commits October 8, 2026 12:22
- Configuration, Timeouts and Errors, Low-Level API: the default
  pingPeriod of -1 disables the keep-alive. ConnectionManager(port,
  pingPeriod) reads the 30 s property in this(port), then overwrites it
  with -1, so only IpmiConnector(int) and IpmiConnector(int, InetAddress)
  get the 30 s period. Recommend setting pingPeriod explicitly.
- Low-Level API: the SEL example uses reservation 0, since whole-entry
  reads need none (IPMI 2.0 section 31.5) and Reserve SEL is optional;
  checked on a Lenovo IMM and a GIGABYTE BMC, same output.
- Serial over LAN: on a BMC that serves SOL on another port, close()
  leaves the first session open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 553e0b3db9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/site/markdown/sensors.md
Comment thread src/site/markdown/sensors.md
Comment thread src/site/markdown/fru-inventory.md Outdated
Comment thread src/site/markdown/sensors.md
Comment thread src/site/markdown/fru-inventory.md Outdated
Sensors: a record owned by a satellite controller or another LUN is read
from the BMC by its number alone and can get an unrelated reading (#84);
OEM sensors whose reply has a single state byte get no state; Full records
with no analog reading still produce a reading line.
FRU Inventory: FRU 0 can be returned twice (locator and system board),
and a failed chunk in the middle of a FRU shifts the following data.
All by the specification and the code, not seen on the test BMCs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fa0809a64c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/site/markdown/sensors.md Outdated
Comment thread src/site/markdown/fru-inventory.md Outdated
Comment thread src/site/markdown/fru-inventory.md
Comment thread src/site/markdown/sensors.md Outdated
bertysentry and others added 2 commits October 8, 2026 13:03
The pages document how the library is meant to work: the bugs that the
Codex reviews of #124 found in the library are tracked as issues #127
to #132 (and #123, #125, #126) and are no longer described in the pages.
The corrections of the documentation itself stay (cipher suite selection,
closing the session in a finally block, the SEL example, the firewall
port, System.exit(0), the scope of the sensors read).

AGENTS.md: file library bugs found while writing documentation as issues
instead of describing them in the pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 16-byte FRU chunks are small, not guaranteed small enough for every
BMC, and getStates() only returns the states that have an ipmiutil
description. The library sides are added to #128 and #129.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 039cd2e19d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +77 to +78
Data longer than the BMC's SOL payload size (announced when the payload is activated) is sent in
several packets.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid promising lossless multi-packet SOL writes

When a write requires more than two SOL packets, this promise is false: SerialOverLan.writeBytes() creates each loop chunk with Arrays.copyOfRange(remainingBytes, currentIndex, maxBufferSize), so the second chunk is empty and the bytes at that position are dropped; writes needing still more chunks can throw when the start exceeds that fixed end index. Callers following this documentation can silently lose part of a long command or transfer, so fix the chunk boundary or avoid claiming that arbitrary-length data is sent correctly.

AGENTS.md reference: AGENTS.md:L35-L35

Useful? React with 👍 / 👎.


| `pingPeriod` | Behavior |
| --- | --- |
| `-1` (default) | The `pingPeriod` of [`connection.properties`](timeouts-and-errors.html#library-wide-defaults): 30 000 ms |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restore the actual default keep-alive behavior

Fresh evidence after the earlier fix is that the final tree restores the claim that -1 uses the 30-second property value, while AbstractIpmiRunner passes -1 to the two-argument connector and ConnectionManager(int, long) overwrites the property-derived value with -1; Connection.connect() then starts a timer only for positive values. Thus the default sends no keep-alive, and a collection longer than the BMC's inactivity timeout can lose its session unless callers explicitly set a positive period; either fix the constructor or document the effective behavior.

AGENTS.md reference: AGENTS.md:L35-L35

Useful? React with 👍 / 👎.

@bertysentry
bertysentry merged commit 7d8ffad into main Oct 8, 2026
4 checks passed
@bertysentry
bertysentry deleted the 113-update-the-documentation-latest-maven-site-plugin-sentry-maven-skin-8-with-all-its-features-and-a-full-documentation-set-as-done-in-winrm-java branch October 8, 2026 11:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update the documentation: latest Maven Site Plugin, Sentry Maven Skin 8 with all its features, and a full documentation set (as done in winrm-java)

1 participant