Repository navigation
Add Parmana as a TRACE external evidence source - #294
Conversation
|
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
left a comment
There was a problem hiding this comment.
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
|
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
left a comment
There was a problem hiding this comment.
Re-approving at 59ce64f: the only change since my review is the Parmana row in the README index, and validate passes.
…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
…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
Parmana as a TRACE external evidence source
Follows #286. Adds
integrations/parmana-server/: Parmana's signed authorization decisions mapped to TRACEreferences, 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 placeholdersubject,model,data_classorbuild_provenance.Signing: Parmana keeps its own canonical form and signatures. A runtime's Trust Record points at them:
authorized-intentto the Execution Trust Record or Refusal Record, andapproval-outcometo 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 infixtures/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
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.jsonis exactly what the records produce and validates asagentrust_trace.Reference(0.11.0).To regenerate the fixtures from Parmana itself:
npm run evaluate:agentrust-refundat 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. TheparmanaPython 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.