eclipse-timekeeper

Headless p2 provisioning acceptance

Checked October 11, 2026 on Eclipse Platform 4.41, Temurin 21.0.12.1 and macOS aarch64, using isolated installations and databases.

Failure and correction

Installing the optional Mylyn integration into an installation that already contained the base Timekeeper feature completed successfully, but logged Timekeeper startup failures. The immediate Declarative Services component loaded the database bundle during p2 director startup. Its activator then tried to use instance preferences and ResourcesPlugin.getWorkspace() before a workspace existed. This produced IllegalStateException, bundle activation failures and an unavailable embedded service.

The embedded service now uses Declarative Services’ delayed activation. It is advertised without constructing the persistence implementation until a client requests it. Headless provisioning does not need the application service or database; the normal UI service tracker still obtains it when the workbench starts.

The optional Mylyn synchronizer also waits for a successful client read before its initial reconciliation. Connecting is an expected state; initial dirty flags and provider changes remain pending until the client can read the model. This avoids a misleading synchronization warning while the database opens.

Installed-package evidence

Local evidence is retained under /private/tmp/timekeeper-2-release-runtime/: jira-install.log reproduces the original failure, jira-update.log records the update, and jira-headless-after.log records the clean headless launch. These temporary files are not distributed release assets.

To repeat the headless check after installing a candidate, run its Eclipse launcher with Java 21, -nosplash -consoleLog, -application org.eclipse.equinox.p2.director -listInstalledRoots, and an isolated -Duser.home after -vmargs. Do not supply -data; inspect the console and configuration log for the startup failures above. Then launch the workbench with an isolated workspace/database and exercise native CRUD and activity recording to check normal service activation.

Remaining release acceptance

This check does not resolve the Mylyn theme-parser finding in ERROR-LOG.md, certify Jira Cloud/Data Center behavior, or verify installation from the eventual published GitHub Pages release repository. Those checks remain separate release gates.