TCK Results
===========

As required by the
[Eclipse Foundation Technology Compatibility Kit License](https://www.eclipse.org/legal/tck.php),
following is a summary of the TCK results for releases of Jakarta Annotations.

# 5.1 Certification Request

- [x] Organization Name ("Organization") and, if applicable, URL\
  Eclipse Foundation
- [x] Product Name, Version and download URL (if applicable)\
  [Eclipse Annotations](../index.html)
- [x] Specification Name, Version and download URL\
   [Jakarta Annotations 1.3](https://jakarta.ee/specifications/annotations/1.3/)
- [x] TCK Version, digital SHA-256 fingerprint and download URL\
  [Jakarta XML RPC TCK 1.1.0](http://download.eclipse.org/ee4j/jakartaee-tck/jakartaee8-eftl/promoted/eclipse-annotations-tck-1.3.0.zip), SHA-256: ba89425dfc799bcc72ec29f6ca535051cf9c5e892778033bcb3cbbe1793e0f9b
- [x] Public URL of TCK Results Summary\
  [TCK results summary](jakarta-annotations-1.3.html)
- [x] Any Additional Specification Certification Requirements\
  None
- [x] Java runtime used to run the implementation\
  Oracle JDK 1.8.0_191
- [x] Summary of the information for the certification environment, operating system, cloud, ...\
  Linux
- [x] By checking this box I acknowledge that the Organization I represent accepts the terms of the [EFTL](https://www.eclipse.org/legal/tck.php).
- [x] By checking this box I attest that all TCK requirements have been met, including any compatibility rules.

Test results:

```
[javatest.batch] Number of Tests Passed      = 1
[javatest.batch] Number of Tests Failed      = 0
[javatest.batch] Number of Tests with Errors = 0
```
