Skip to content

Split the Security and Threat Model pages - #83

Merged
garydgregory merged 4 commits into
apache:mainfrom
ppkarwasz:docs/split-security-pages
Sep 1, 2026
Merged

Split the Security and Threat Model pages#83
garydgregory merged 4 commits into
apache:mainfrom
ppkarwasz:docs/split-security-pages

Conversation

@ppkarwasz

Copy link
Copy Markdown
Member

The threat model page opened with the stock Commons security boilerplate and closed with a vulnerability list and a deserialization pointer, all of which the Security page already carried. On a page whose whole job is the model, the repetition dilutes it for a reader and feeds irrelevant context to an agent consuming it.

  • Threat model page: the three repeated sections and the Threat Model wrapper heading are gone, and everything moved up a level. The bold pseudo-headings became real subsections, and so did the fourteen cases under "What is out of scope" and "Settings you may modify" — several ran seven to twelve lines with their own paragraphs and nested lists. "Reserved settings" and "Settings you may modify" moved out of "Assumptions about the environment", which now holds only what is genuinely environmental.
  • Security page: migrated from xdoc to Markdown, the last hand-written xdoc on this site; the other xdocs are commons-build-plugin output. Doxia derives heading ids the same way for both formats, so the anchors carry over unchanged. The supported release line, previously stated only in SECURITY.md, is now on the site too.
  • Links: every intra-page link on the threat model page used a GitHub slug (#what-is-in-scope) where the rendered page has What_is_in_Scope, so all 23 were dead. The Javadoc overview's links to the threat model and to the Maven coordinates resolved inside apidocs/ and 404ed. The site descriptor still named the project Apache Commons Text, which the skin printed in every page title.

Verified with mvn clean site: 83 project links across the five pages resolve, in-page anchors and relative links alike; security.html keeps its four anchors and gains Supported_Versions; threat_model.html carries 30, all reachable.

Reviewing: compare with whitespace ignored — Files changed → the gear icon → Hide whitespace, or append ?w=1 to the URL. Promoting the list items required de-indenting their bodies out of list continuation and rewrapping them in semantic line breaks, which otherwise shows up as a rewrite of prose that did not change.

🤖 Generated with Claude Code

The page opened with the stock Commons security boilerplate and closed with a
vulnerability list and a deserialization pointer, all of which the Security
page already carries. Repeated on a page whose whole job is the model, they
dilute it for a reader and feed irrelevant context to an agent consuming it.

Drop the three repeated sections and the "Threat Model" wrapper heading, and
promote what is left one level: the nine sections become top-level, and the
bold pseudo-headings inside "Assumptions about the environment" become real
subsections. "Reserved Settings (must not be loosened)" loses the
parenthetical from its title, which would otherwise land in the anchor, and
carries it in the opening sentence instead.

Point the intra-page links at the anchors Doxia actually emits. They used
GitHub slugs (#what-is-in-scope) where the rendered page has What_is_in_Scope,
so all 23 were dead on the site. The subsections are addressable now, so the
references that read "see **Supported runtimes** under [Assumptions about the
environment]" become direct links.

Retarget the "Supported runtimes" link that pointed at index.html, which has
no such section, to the Javadoc overview section that does.

Assisted-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XVaEa2R2sHtBgJh8Mhv841
Every hand-written page on this site is Markdown; the security page was the
last hand-written xdoc, the other xdocs being commons-build-plugin output.
Doxia derives heading ids the same way for both formats, so the section titles
carry the anchors over unchanged.

Add the supported release line while converting: it was stated only in the
repository's SECURITY.md and nowhere on the site.

Assisted-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XVaEa2R2sHtBgJh8Mhv841
The Javadoc overview renders as apidocs/index.html, so its relative links to
the threat model and to the Maven coordinates resolved inside apidocs/ and
404ed; they need to climb one level. The coordinates sentence also carried a
leftover Markdown link after the working anchor.

The site descriptor still named the project Apache Commons Text, which the
skin printed in every page title.

Assisted-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XVaEa2R2sHtBgJh8Mhv841
The bullets under "What is out of scope" and "Settings you may modify" were
subsections in disguise: several run seven to twelve lines with their own
paragraphs and nested lists, held together only by list indentation, and
nothing outside could link to one. Promote all fourteen to headings. The
bullet with no bold lead-in becomes "Non-conforming JAXP implementations",
matching the disposition the triage table already names, and "Android, on any
API level" loses its comma, which would otherwise land in the anchor.

Lift "Reserved settings" and "Settings you may modify" out of "Assumptions
about the environment" first, so their cases sit at the same level as the
out-of-scope ones. Neither is an assumption about the environment: supported
runtimes, honored JAXP contracts, XInclude resolution and system properties
are, while those two state the contract with the caller. Doxia derives ids
from heading text, so both keep the anchors they had.

With every case addressable, the last two-hop references collapse, and the
triage table points at the specific case a disposition maps to instead of at
the whole section.

Assisted-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XVaEa2R2sHtBgJh8Mhv841
@garydgregory
garydgregory merged commit e0e1f16 into apache:main Sep 1, 2026
17 checks passed
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.

2 participants