Skip to content

Add a deterministic Task Processing test provider for LibreSign AI flows #9055

Open

Description

@vitormattos

Goal

Provide a fast, deterministic Task Processing provider/test double that lets LibreSign exercise AI-assisted flows in CI without paid APIs, external network access or probabilistic output.

This issue is part of the AI foundation epic and must follow the capability contract defined by the foundation work.

Why

AI-assisted features need normal regression coverage. Unit mocks alone are not enough to prove that LibreSign integrates correctly with the Nextcloud Task Processing path, while real LLM calls are too slow, costly and nondeterministic for ordinary pull-request CI.

The test provider should make AI behavior as testable as other LibreSign application services.

Scope

Implement the minimum provider/task types needed by the currently defined LibreSign AI capability contract.

The provider should support deterministic scenarios such as:

  • successful task with known output;
  • malformed/invalid output;
  • provider/task unavailable;
  • task failure;
  • cancellation where the supported contract requires it;
  • delayed/asynchronous completion where relevant;
  • intermediate/progress behavior only when an implemented LibreSign feature depends on it.

Do not implement fake capabilities that have no current LibreSign consumer.

Test-fixture design

Outputs must be fixture-driven and stable.

Tests should be able to request a named behavior instead of depending on prompt wording or model-like heuristics.

Examples:

  • summary fixture returns a known summary payload;
  • structured suggestion fixture returns a known valid payload;
  • hostile fixture returns a known invalid/unsafe payload;
  • failure fixture returns a controlled Task Processing failure.

Keep the test provider clearly separated from production providers and impossible to activate accidentally in a normal production installation.

Security

The deterministic provider exists to test the same trust boundaries as a real provider.

It must make it possible to verify that LibreSign:

  • validates output rather than trusting it;
  • does not use prompts as authorization;
  • handles provider failure safely;
  • rejects hostile generated markup/structured output at the correct LibreSign boundary;
  • does not expose one user's task result to another actor.

CI expectations

The deterministic provider should be suitable for normal pull-request CI and focused local development.

Keep it:

  • network-free;
  • free of paid APIs;
  • fast enough for normal CI;
  • deterministic across runs;
  • compatible with the supported Nextcloud test environment.

Done when

  • A deterministic Task Processing provider/test double can expose the required foundation task types.
  • Tests can select stable success and failure fixtures.
  • It cannot be confused with or enabled as a production provider.
  • It supports backend/integration and browser tests without external services.
  • Security/error cases can be reproduced deterministically.
  • Focused automated tests cover the provider itself.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendBackend workphpWork involving PHP code

    Type

    Fields

    Priority

    None yet

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions