Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
e303687
ci(te): also expose dva-processing
MYRhouma Jul 24, 2026
7ea0f74
feat(vc): remove the ACA-Py controller svc
MYRhouma Jul 24, 2026
368900b
feat(api): remove ACA-Py coupling from dva-api
MYRhouma Jul 26, 2026
7f05201
test(karate): temporarily disable attestation tests
bzp99 Jul 29, 2026
bd09c72
feat(proc): remove ACA-Py coupling from dva-processing
bzp99 Jul 29, 2026
d1ed0a4
feat(vc): add new service skeleton
MYRhouma Jul 24, 2026
22ed572
feat(vc): verify whitelist before payload decode and handle signature…
MYRhouma Jul 27, 2026
a6aaf07
docs(vc): improve VC Manager API spec
bzp99 Jul 31, 2026
c242236
chore(vc): add ruff config and apply mechanical formatting
bzp99 Jul 31, 2026
47bccce
feat(vc): remove auth for now
bzp99 Jul 31, 2026
80ed341
refactor(vc): improve OpenAPI spec serving
bzp99 Jul 31, 2026
8a3050f
refactor(vc): remove dead code
bzp99 Jul 31, 2026
dc2505a
refactor(vc): hoist deferred imports to module level
bzp99 Jul 31, 2026
e4f9c78
feat(vc): use structlog for logging
bzp99 Jul 31, 2026
2659685
refactor(vc): build whitelist repo during app startup
bzp99 Jul 31, 2026
9737699
refactor(vc): resolve the signing key store via Depends
bzp99 Jul 31, 2026
cc5b59b
refactor(vc): read settings via pydantic-settings
bzp99 Aug 3, 2026
a105a8f
docs(vc): remove remaining refs to Kotlin modules
bzp99 Aug 3, 2026
9ed42c0
refactor(vc): improve DTO handling
bzp99 Aug 3, 2026
27c961b
fix(vc): reject non-object JWS payloads
bzp99 Aug 3, 2026
d055f66
refactor(vc): use VerifyKey in the did:key codec
bzp99 Aug 3, 2026
b7b519b
ci(vc): improve docker build setup
bzp99 Aug 6, 2026
78e921f
ci: add global dockerignore file
bzp99 Aug 6, 2026
cdcb152
refactor(vc): delegate did:key encoding to multiformats
bzp99 Aug 6, 2026
64fc557
refactor(vc): switch out httpx for httpx2
bzp99 Aug 6, 2026
8a89cf4
refactor(vc): persist only the ed25519 seed
bzp99 Aug 6, 2026
498b5ab
refactor(vc)!: replace hand-rolled JWS with joserfc
bzp99 Aug 6, 2026
7ae8317
Persist VC issuance and verification audit records
MYRhouma Aug 10, 2026
2b94952
feat(vla): add separate VLA manager backend
MYRhouma Jul 24, 2026
7b341a7
chore(vla): add ruff config and apply mechanical formatting
bzp99 Aug 12, 2026
5d432cc
feat(vla): remove auth for now
bzp99 Aug 17, 2026
631c11d
refactor(vla): remove dead code
bzp99 Aug 17, 2026
3c9c7b2
refactor(vla): hoist deferred imports to module level
bzp99 Aug 17, 2026
c68e4b6
refactor(vla): improve OpenAPI spec serving
bzp99 Aug 17, 2026
9c06e39
feat(vla): use structlog for logging
bzp99 Aug 18, 2026
8d65063
refactor(vla): read settings via pydantic-settings
bzp99 Aug 18, 2026
2995a87
refactor(vla): build repositories during app startup
bzp99 Aug 19, 2026
7cda12d
refactor(vla): improve DTO handling
bzp99 Aug 19, 2026
b814367
refactor(vla): split the repository module
bzp99 Aug 19, 2026
1af25fd
fix(vla): return spec-conformant error bodies
bzp99 Aug 19, 2026
9f3567e
docs(vla): improve VLA Manager API spec
bzp99 Aug 19, 2026
8c3aaa3
docs(vla): refresh the README
bzp99 Aug 19, 2026
e9e4447
ci(vla): improve docker build setup
bzp99 Aug 19, 2026
5d4f123
ci(vla): add build and test workflow
bzp99 Aug 19, 2026
3e6d10b
docs(vla): rm code comments referencing deprecated module
bzp99 Aug 19, 2026
6648edd
test(vla): add template endpoint unit tests
bzp99 Aug 19, 2026
6d0009c
feat(api)!: remove RMQ and VLA mgmt endpoints
MYRhouma Jul 24, 2026
4aedc8a
feat(proc)!: remove rmq integration
bzp99 Aug 21, 2026
9e69873
docs: define DVA failure taxonomy
MYRhouma Aug 28, 2026
bcdad94
docs: map feedback, recovery, and failure relationships
MYRhouma Aug 28, 2026
541bf36
docs: align failure documentation with RFC 9457
MYRhouma Sep 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Docker reads .dockerignore from the build-context root only. The service
# Dockerfiles reference ./<service>/... paths, so the context is this
# directory and per-service .dockerignore files have no effect.

# Generic
.git/
**/.gitignore
**/Dockerfile

# JVM projects
**/.gradle/
**/.idea/
**/.kotlin/
**/build/


# Python projects
**/.venv/
**/__pycache__/
**/*.pyc
**/.pytest_cache/
**/*.egg-info/

# Node projects
**/node_modules/
60 changes: 60 additions & 0 deletions .github/workflows/build-vla-manager-api.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
name: Build and Test VLA Manager API


on:
push:
paths:
- vla-manager-api/src/**
- vla-manager-api/tests/**
- vla-manager-api/pyproject.toml
- vla-manager-api/uv.lock
- .github/workflows/build-vla-manager-api.yml
pull_request:
paths:
- vla-manager-api/src/**
- vla-manager-api/tests/**
- vla-manager-api/pyproject.toml
- vla-manager-api/uv.lock
- .github/workflows/build-vla-manager-api.yml


permissions:
contents: read


concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}


defaults:
run:
working-directory: ./vla-manager-api


jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v7
- name: Install uv
uses: astral-sh/setup-uv@v9.0.0
with:
enable-cache: true
working-directory: ./vla-manager-api
- name: Install dependencies
run: uv sync --locked
- name: Check formatting
run: uv run --no-sync ruff format --check src tests
- name: Lint
run: uv run --no-sync ruff check src tests
- name: Run Pytest
run: uv run --no-sync pytest --junitxml=junit.xml
- name: Upload test artefacts
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v7
with:
name: pytest-results
path: vla-manager-api/junit.xml
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
# commitlint
node_modules/
__pycache__/
*.pyc
.DS_Store
*.egg-info/
46 changes: 2 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ At the moment, DVA has several subcomponents:
* **API server** in [`dva-api/`](dva-api/) – gateway / entry point / connector integration
* **Processing** in [`dva-processing/`](dva-processing/) – evaluates veracity requirements
* **RabbitMQ** from [`rabbitmq`](https://hub.docker.com/_/rabbitmq) – message queue facilitating communication between the API server and the processing module
* **ACA-Py Controller** in [`dva-acapy-controller/`](dva-acapy-controller/) – contains SSI/VC-related logic
* **ACA-Py Agent** from [`ghcr.io/hyperledger/aries-cloudagent-python`](https://github.com/orgs/hyperledger/packages/container/package/aries-cloudagent-python) – an SSI cloud agent (~ wallet)
* **PostgreSQL** from [`postgres`](https://hub.docker.com/_/postgres) – stores application state, events, and _logs_
* **Dashboard** in [`dva-dashboard/`](dva-dashboard/) – frontend application that displays database contents on a dashboard interface
* **VLA Manager** in [`vla-manager`](vla-manager/) – frontend application for VLAs management (creation, display, etc)
Expand All @@ -28,15 +26,13 @@ You can use the following commands to build / pull the images (from the reposito
docker buildx build -t dva-api:latest -f dva-api/Dockerfile ./
docker buildx build -t dva-processing:latest -f dva-processing/Dockerfile ./
docker pull rabbitmq:4-management-alpine
docker buildx build -t dva-aca-py-controller:latest -f dva-acapy-controller/Dockerfile ./
docker pull ghcr.io/hyperledger/aries-cloudagent-python:py3.9-0.12.6
docker pull postgres:17-alpine
docker buildx build -t dva-dashboard:latest ./dva-dashboard/
docker buildx build -t vla-manager:latest ./vla-manager/
```

> [!NOTE]
> Check the currently used RabbitMQ, PostgreSQL, and ACA-Py versions in [`test-env/common-services.yml`](test-env/common-services.yml).
> Check the currently used RabbitMQ and PostgreSQL versions in [`test-env/common-services.yml`](test-env/common-services.yml).

You normally do not have to do this however as you should be using Docker Compose to set up your DVA instance (see the [_test environment_](test-env/)).

Expand Down Expand Up @@ -88,7 +84,7 @@ Example requests to test functionality manually (non-exhaustive):
| `/vla/from-templates` | `POST` | *nothing* | a [VLA request using templates](test-env/test-data/vla-request/request-from-templates.json) | `201 CREATED` and [an ID](test-env/example-outputs/id.json) |
| `/vla/{id}` | `GET` | `id`: a VLA ID (eg `570b22e0-2e90-4e02-8c7b-1d6d274629f3`) | *empty* | `200 OK` and the VLA template ([example](test-env/example-outputs/vla-id-get.json)) |
| `/attestation` | `POST` | *nothing* | an [AoV request](test-env/test-data/aov/timestamp-in-range/request-good.json) | `200 OK` and [an ID](test-env/example-outputs/id.json) |
| `/attestation/verify` | `POST` | *nothing* | an [AoV verification request](test-env/test-data/aov/verif-req.json) | `200 OK` and an AoV JSON object from ACA-Py |
| `/attestation/verify` | `POST` | *nothing* | an [AoV verification request](test-env/test-data/aov/verif-req.json) | `200 OK` and an AoV JSON object |

> [!NOTE]
> AoV requests (`POST /attestation`) are processed asynchronously.
Expand Down Expand Up @@ -172,44 +168,6 @@ In the test output, you should see all PyTest tests passing.
```
</details>

### DVA ACA-Py Controller Module ([`dva-acapy-controller`](dva-acapy-controller/))

> [!NOTE]
> A nice way to run the tests from the repository root using Docker without having to touch your local environment:
> ```console
> docker run --rm -it -v ./dva-acapy-controller:/app ghcr.io/astral-sh/uv:debian-slim uv --directory /app/ run pytest
> ```

#### Setup test environment

Find a way to run [uv](https://docs.astral.sh/uv) → [installation instructions](https://docs.astral.sh/uv/getting-started/installation/)

#### Run tests

Set your working directory to `dva-acapy-controller/` and execute:
```console
uv run pytest
```

#### Expected results

In the test output, you should see all PyTest tests passing.

<details>
<summary>Example output segment (click to open)</summary>

```
============================================================ test session starts ============================================================
platform linux -- Python 3.12.8, pytest-8.4.1, pluggy-1.6.0
rootdir: /projects/uni/edge/data-veracity/dva-processing
configfile: pyproject.toml
plugins: anyio-4.9.0
collected 3 items

tests/test_controller.py .. [100%]
```
</details>


## Component-level testing

Expand Down
Loading
Loading