Skip to content

Add Parmana as a TRACE external evidence source - #294

Merged
imran-siddique merged 2 commits into
agentrust-io:mainfrom
pavancharak:add-parmana-server
Oct 12, 2026
Merged

imran-siddique merged 2 commits into
agentrust-io:mainfrom
pavancharak:add-parmana-server

Conversation

@pavancharak

Copy link
Copy Markdown
Contributor

Parmana as a TRACE external evidence source
Follows #286. Adds integrations/parmana-server/: Parmana's signed authorization decisions mapped to TRACE references, with an offline checker and the fixtures from one evaluation run.
Per your answers on #286 (trace-spec at db95328):
Role: external-evidence-source, no conformance level. No TRACE Trust Record is issued, so no placeholder subject, model, data_class or build_provenance.
Signing: Parmana keeps its own canonical form and signatures. A runtime's Trust Record points at them: authorized-intent to the Execution Trust Record or Refusal Record, and approval-outcome to the signed approval (retained inside the Trust Record, at #/transaction/signals/approvalArtifact).
Unit: one Parmana record per decision, refusals included.
Mocks: nothing is referenced as observed-effect. The mock label stays in fixtures/report.json, the README and a test.
Re-pinned: the fixtures are one unedited run at pavancharak/parmana commit ac22a7ed594b4a527504ce43841595c1a62f3046. That commit includes the Refusal Record policy content hash (all three records carry it) and the release workflow that publishes the server image with SLSA provenance.
Reproduction

cd integrations/parmana-server
pip install -e ".[test]"
python examples/emit_references.py
python -m pytest tests

18 tests check:
every signature, with Parmana's public key only;
that a changed amount, outcome or approval limit fails;
that the approval is the one the Trust Record was signed over;
that all three decisions name one policy content hash;
that references.json is exactly what the records produce and validates as agentrust_trace.Reference (0.11.0).
To regenerate the fixtures from Parmana itself: npm run evaluate:agentrust-refund at that commit (no network, keys or accounts).
Licence
I, Pavan Dev Singh Charak, for Parmana Systems Private Limited, the copyright holder, license everything in integrations/parmana-server/ under the Apache License 2.0: the code, the README and the fixtures, which are records generated by Parmana in that run. The parmana Python SDK it depends on is Apache-2.0 on PyPI.
Not claimed:
Any downstream effect: the connector in the run is a mock.
That the two caller-declared facts were checked: they can only refuse.
That the policy was approved through governance in the run: the governance anchor reads NO_APPROVAL_RECORD.
The README says the same.

@pavancharak

Copy link
Copy Markdown
Contributor Author

The server image with SLSA provenance is published: ghcr.io/pavancharak/parmana-api@sha256:f82c0076ebff847c5ae0afb5f9e3728e49c9dd819f8e52ba0d8659a960753865 (release server-v1.0.0, built at f95f786e).

slsa-verifier verify-image ghcr.io/pavancharak/parmana-api@sha256:f82c0076ebff847c5ae0afb5f9e3728e49c9dd819f8e52ba0d8659a960753865 --source-uri github.com/pavancharak/parmana --source-tag server-v1.0.0

returns PASSED, builder generator_container_slsa3.yml@v2.1.0. f95f786e is the fixtures’ commit ac22a7ed plus only the commit that records the evaluation report and fixtures, so the image runs the same code that produced the fixtures. The hosted API is built by Vercel and carries no provenance.

imran-siddique
imran-siddique previously approved these changes Oct 11, 2026

@imran-siddique imran-siddique left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Matches the #286 answers: external-evidence-source with no conformance level, Parmana's own signatures, authorized-intent and approval-outcome references, refusals as their own unit. Checked at b5d91ec in a clean venv: all 18 tests pass, examples/emit_references.py reproduces the committed references.json exactly, and both key fixtures are public keys only. I did not run slsa-verifier against the image.

One blocker: validate fails because the README index is missing the new row. Run python scripts/generate_integration_index.py from the repo root and commit the result; the only change should be the Parmana line. I will merge once validate is green.

Adds the Parmana row that scripts/generate_integration_index.py produces
from integrations/parmana-server/integration.yaml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019v3V53gvHYxvLqP74uAmgF
@pavancharak

Copy link
Copy Markdown
Contributor Author

Thanks for the review. I ran scripts/generate_integration_index.py and committed the result (59ce64f); the only change is the Parmana line in the README index. Could you approve the workflows and re-approve when validate is green?

@imran-siddique imran-siddique left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-approving at 59ce64f: the only change since my review is the Parmana row in the README index, and validate passes.

@imran-siddique
imran-siddique merged commit 6de4cb9 into agentrust-io:main Oct 12, 2026
34 of 35 checks passed
pavancharak pushed a commit to pavancharak/parmana that referenced this pull request Oct 12, 2026
…ged)

The refund evaluation package was prepared as a proposal to the
AgenTrust integrations repository. The proposal was merged on
2026-10-12 as integrations/parmana-server, a TRACE external evidence
source with no conformance level. Record what was merged, what the
maintainer checked and what they did not, and that the listing is not
a certification.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019v3V53gvHYxvLqP74uAmgF
pavancharak pushed a commit to pavancharak/parmana that referenced this pull request Oct 12, 2026
…and evaluation

agentrust-io/integrations#294 was merged on 2026-10-12. Adds CLAIMS.md
3.23 (scoped: a community listing of an evidence mapping, no conformance
level, not a certification; what the maintainer checked and did not), a
CURRENT-STATE section, a changelog entry for 2026-10-12 (the listing,
the Essays tab, and the limitations and comparison corrections) and a
link from the evaluation page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019v3V53gvHYxvLqP74uAmgF
@pavancharak
pavancharak deleted the add-parmana-server branch October 12, 2026 23:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants