Context
The project's quality tooling is solid where it exists — CI checks two platforms, fails a build
that dirties the tree, and runs both suites. A few gaps remain, all cheap to close, and all of
the same kind: they concern the ability to see the state of the project rather than the code
itself.
No coverage measurement. The table in TESTING.md gives test counts (282 Java, 57 JS),
which is already better than nothing, but a test count says nothing about which lines are
reached. That is exactly what let the core gap (see the dedicated issue) go unnoticed: the
global total looks healthy, the distribution much less so.
No static analysis. No SpotBugs, no Error Prone, no Checkstyle. On code that handles
streams, file descriptors and byte arrays, a SpotBugs pass is worth running once just to see
what it turns up.
The agent module has no tests at all (261 lines, 3 files). It is small and does bytecode
instrumentation, so this may well be deliberate — but it is not written down anywhere, whereas
TESTING.md documents everything else scrupulously.
One CI comment has gone stale. .github/workflows/ci.yml:42 states:
There is no JavaScript test suite to run
while four JS test files exist and run in the web-ui-tests job, in that same file. The
comment correctly explains why the Java job skips the frontend goals; its justification is
what stopped being true. A reader taking it at face value concludes the frontend is untested.
No CONTRIBUTING.md. The project has real and unusual conventions — the
characterization/specification distinction, the KNOWN GAP marking, the rule that a test
changes category only deliberately and never silently. They live in TESTING.md, which is not
where a contributor goes looking for them.
Description
Close these gaps. They are independent of each other and can ship as separate PRs; this issue
is a rallying point, not a unit of delivery.
The CI comment is a one-line fix and can be handled immediately, separately from the rest.
Affected files
pom.xml — JaCoCo plugin in pluginManagement
.github/workflows/ci.yml — publish the coverage report, fix line 42
web-ui/javascript/package.json — --coverage on the test script
CONTRIBUTING.md — to be created
TESTING.md — link to coverage, and state agent's status
Implementation plan
- Fix the
ci.yml:42 comment — independent, immediate.
- Add JaCoCo, publish the report as a CI artifact. Do not set a failing threshold at
first: measure, then decide. An arbitrary threshold on a project whose coverage is this
uneven would only block PRs.
- Add
--coverage on the JS side, same reasoning.
- Run SpotBugs once by hand over
core and driver, triage the output, and decide then
whether it earns a place in CI. Adding it upfront would drown PRs in warnings inherited
from upstream.
- Decide about
agent: either tests, or a line in TESTING.md saying why there are none.
Either answer is fine; silence is not.
- Write
CONTRIBUTING.md: how to run both suites, the characterization/specification
distinction, the KNOWN GAP convention, and what is expected of a PR.
Acceptance criteria
Complexity
S per item taken alone, M for the whole.
Context
The project's quality tooling is solid where it exists — CI checks two platforms, fails a build
that dirties the tree, and runs both suites. A few gaps remain, all cheap to close, and all of
the same kind: they concern the ability to see the state of the project rather than the code
itself.
No coverage measurement. The table in
TESTING.mdgives test counts (282 Java, 57 JS),which is already better than nothing, but a test count says nothing about which lines are
reached. That is exactly what let the
coregap (see the dedicated issue) go unnoticed: theglobal total looks healthy, the distribution much less so.
No static analysis. No SpotBugs, no Error Prone, no Checkstyle. On code that handles
streams, file descriptors and byte arrays, a SpotBugs pass is worth running once just to see
what it turns up.
The
agentmodule has no tests at all (261 lines, 3 files). It is small and does bytecodeinstrumentation, so this may well be deliberate — but it is not written down anywhere, whereas
TESTING.mddocuments everything else scrupulously.One CI comment has gone stale.
.github/workflows/ci.yml:42states:while four JS test files exist and run in the
web-ui-testsjob, in that same file. Thecomment correctly explains why the Java job skips the frontend goals; its justification is
what stopped being true. A reader taking it at face value concludes the frontend is untested.
No
CONTRIBUTING.md. The project has real and unusual conventions — thecharacterization/specification distinction, the
KNOWN GAPmarking, the rule that a testchanges category only deliberately and never silently. They live in
TESTING.md, which is notwhere a contributor goes looking for them.
Description
Close these gaps. They are independent of each other and can ship as separate PRs; this issue
is a rallying point, not a unit of delivery.
The CI comment is a one-line fix and can be handled immediately, separately from the rest.
Affected files
pom.xml— JaCoCo plugin inpluginManagement.github/workflows/ci.yml— publish the coverage report, fix line 42web-ui/javascript/package.json—--coverageon the test scriptCONTRIBUTING.md— to be createdTESTING.md— link to coverage, and stateagent's statusImplementation plan
ci.yml:42comment — independent, immediate.first: measure, then decide. An arbitrary threshold on a project whose coverage is this
uneven would only block PRs.
--coverageon the JS side, same reasoning.coreanddriver, triage the output, and decide thenwhether it earns a place in CI. Adding it upfront would drown PRs in warnings inherited
from upstream.
agent: either tests, or a line inTESTING.mdsaying why there are none.Either answer is fine; silence is not.
CONTRIBUTING.md: how to run both suites, the characterization/specificationdistinction, the
KNOWN GAPconvention, and what is expected of a PR.Acceptance criteria
ci.yml:42comment reflects realityagent's testing status is explicitCONTRIBUTING.mdexists and covers both suites and the testing conventionsComplexity
S per item taken alone, M for the whole.