Audit and Reproducibility#
AuditTrail API#
Use Infocyph\Draw\Audit\AuditTrail to create and verify deterministic artifacts.
Create Audit#
<?php
use Infocyph\Draw\Audit\AuditTrail;
$audit = AuditTrail::create(
configuration: $configuration,
result: $result,
seedFingerprint: $seedFingerprint,
secret: 'shared-secret',
);
Verify Audit#
<?php
$isValid = AuditTrail::verify(
audit: $audit,
configuration: $configuration,
result: $result,
seedFingerprint: $seedFingerprint,
secret: 'shared-secret',
);
Audit Fields#
The audit object contains:
generatedAt
configHash
resultHash
seedFingerprint
signatureAlgorithm
signaturePayload
signature
Signature Behavior#
If secret is provided, signature uses hmac-sha256.
If no secret is provided, signature uses sha256.
Request Fingerprinting#
Generate canonical request fingerprints:
<?php
use Infocyph\Draw\Draw;
$fingerprint = Draw::requestFingerprint($request);
This is useful for:
idempotency keys,
replay correlation,
simulation grouping,
audit indexing.
Reproducible Workflow Example#
<?php
$seed = 1907;
$requestFingerprint = Draw::requestFingerprint($request);
$result = $draw->execute([
...$request,
'options' => [...($request['options'] ?? []), 'seed' => $seed],
]);
$audit = $result['raw']['audit'] ?? null;