Arxo Core Evaluation Result and Proof Graph
Reference page for the evaluation.schema.json JSON schema.
Versions
Section titled “Versions”Accepted schemaVersion: law.core.evaluation/0.1, law.core.evaluation/0.2, law.core.evaluation/0.3.
Top-level fields
Section titled “Top-level fields”| name | type-or-$ref | required | description |
|---|---|---|---|
conflicts | array | no | — |
issues | array | no | — |
manifest | #/$defs/EvaluationManifest | yes | — |
positions | array | no | — |
proofGraph | #/$defs/ProofGraph | yes | — |
resultHash | #/$defs/Digest | yes | — |
results | array | yes | — |
schemaVersion | enum (3) | yes | — |
executionReceipt | #/$defs/ExecutionReceipt | no | — |
evidenceAcceptance | #/$defs/EvidenceAcceptanceReport | no | — |
admissionReport | admission-report.schema.json | no | — |
Enumerations
Section titled “Enumerations”| location | values |
|---|---|
$defs/ApplicabilityStatus | "APPLICABLE", "NOT_APPLICABLE", "UNDETERMINED", "CONFLICTED" |
$defs/ConflictReport/properties/unresolvedReason | "INCOMPARABLE", "EQUAL_PRIORITY", "STRICT_CONFLICT", "PRIORITY_CYCLE", "MISSING_PRIORITY_FACT", "INTERPRETATION_DIVERGENCE" |
$defs/EvaluationManifest/properties/mode | "advisory", "compliance", "regulatory", "simulation", "audit" |
$defs/EvaluationManifest/properties/derivedAdmission/properties/profile | "admission.ground-reexecution/0.1" |
$defs/EvaluationManifest/allOf/0/if/properties/semantics | "law.core/0.1.0" |
$defs/EvaluationResult/allOf/0/if/properties/resultKind | "PROPOSITION" |
$defs/EvaluationResult/allOf/1/if/properties/resultKind | "RULE_APPLICATION" |
$defs/EvaluationResult/allOf/2/if/properties/resultKind | "NORM_POSITION" |
$defs/EvaluationResult/allOf/3/if/properties/resultKind | "COMPLIANCE" |
$defs/EvaluationResult/allOf/4/if/properties/resultKind | "CONSTRAINT" |
$defs/EvaluationStatus | "COMPUTED", "MISSING_INPUT", "MISSING_POLICY", "REQUIRES_JUDGMENT", "NON_EXECUTABLE", "EXTERNAL_UNAVAILABLE", "INTERPRETATION_REQUIRED", "SOURCE_RESOLUTION_FAILED", "PRIORITY_CONFLICT", "UNRESOLVED_NORMATIVE_CONFLICT", "CONFLICTED_INPUTS", "TYPE_ERROR", "RUNTIME_ERROR", "RESOURCE_LIMIT" |
$defs/Issue/properties/severity | "info", "warning", "error", "fatal" |
$defs/NormativeStatus | "CREATED", "PENDING", "ACTIVE", "SATISFIED", "VIOLATED", "WAIVED", "SUSPENDED", "TERMINATED", "EXPIRED", "UNDETERMINED", "AVAILABLE", "EXERCISED", "VALIDLY_EXERCISED", "INVALIDLY_EXERCISED", "CONFLICTED", "DEFEATED" |
$defs/PositionInstance/properties/modality | "duty", "liberty", "power", "immunity" |
$defs/ProofNode/allOf/0/if/properties/kind | "rule_application" |
$defs/ProofNode/allOf/1/if/properties/kind | "norm_creation", "norm_status_transition", "defeat", "source_resolution", "candidate_closure", "constraint_check", "judgment", "external_snapshot_read", "evidence_projection", "support_admission", "procedure_step", "procedure_history", "derived_admission" |
$defs/ProofNode/allOf/2/if/properties/kind | "derived_admission" |
$defs/ProofNode/allOf/2/then/properties/attributes/properties/profile | "admission.ground-reexecution/0.1" |
$defs/ProofNode/allOf/2/then/properties/attributes/properties/semantics | "law.core/0.2.6" |
$defs/ProofNode/properties/kind | "assertion", "rule_application", "function_evaluation", "priority_decision", "defeat", "source_resolution", "interpretation_selection", "norm_creation", "norm_status_transition", "query_evaluation", "external_snapshot_read", "judgment", "candidate_closure", "constraint_check", "evidence_projection", "support_admission", "procedure_step", "procedure_history", "cone_completion", "derived_admission" |
$defs/ProofNode/properties/outcome | "DEFEATED" |
$defs/TemporalInterval/properties/end/oneOf/2 | "infinity" |
$defs/TemporalInterval/properties/start/oneOf/2 | "-infinity" |
$defs/TriggerStatus | "SATISFIED", "NOT_SATISFIED", "UNDETERMINED", "CONFLICTED" |
$defs/TruthStatus | "TRUE_ONLY", "FALSE_ONLY", "BOTH", "NEITHER" |
$defs/ResultKind | "DATA", "COLLECTION", "PROPOSITION", "RULE_APPLICATION", "NORM_POSITION", "COMPLIANCE", "CONSTRAINT", "GRAPH" |
$defs/EvidenceDecisionReason | "AUTHENTICATION_HASH_MISMATCH", "AUTHENTICATION_MISSING", "AUTHENTICATION_NOT_AVAILABLE", "AUTHENTICATION_UNBOUND", "EDGE_NOT_CURRENT", "EDGE_POLICY_MISMATCH", "EVIDENCE_NOT_AVAILABLE", "EVIDENCE_NOT_CURRENT", "EVIDENCE_NOT_DECLARED", "FIELD_NOT_BOUND", "FIELD_TYPE_MISMATCH", "NEGATED_PROPOSITION", "NO_ACCEPTANCE_RULE_APPLIED", "RELATION_NOT_EXECUTABLE" |
$defs/EvidenceDecision/properties/polarity | "positive", "negative" |
$defs/EvidenceDecision/properties/decision | "accepted", "rejected" |
$defs/EvidenceFactProvenance/properties/origin | "case_input", "source_asserted", "external_snapshot", "derived", "adjudicated", "assumed_for_simulation" |
$defs/EvidenceBlockedAssertion/properties/reason | "PROTECTED_PREDICATE_REQUIRES_EVIDENCE" |
$defs/EvidenceBlockerConjunct/properties/trigger | "SATISFIED", "NOT_SATISFIED", "UNDETERMINED", "CONFLICTED" |
$defs/BlockerHeadArgument/properties/status | "UNEVALUATED" |
$defs/BlockerContinuation/properties/trigger | "SATISFIED", "NOT_SATISFIED", "UNDETERMINED", "CONFLICTED" |
$defs/BlockerDefeat/properties/reason | "strict-opposition", "priority", "defeater" |
$defs/WhyNotStage/properties/outsideDomain | true |
$defs/EvidenceBlocker/properties/applicability | "APPLICABLE", "NOT_APPLICABLE", "UNDETERMINED" |
$defs/EvidenceBlocker/properties/trigger | "SATISFIED", "NOT_SATISFIED", "UNDETERMINED", "CONFLICTED" |
$defs/EvidenceBlocker/properties/strength | "strict", "defeasible", "defeater" |
$defs/EvidenceBlocker/properties/truncated | true |
properties/schemaVersion | "law.core.evaluation/0.1", "law.core.evaluation/0.2", "law.core.evaluation/0.3" |
allOf/0/if/properties/schemaVersion | "law.core.evaluation/0.2" |
allOf/0/then/properties/proofGraph/properties/nodes/items/if/properties/kind | "defeat" |
allOf/1/if/properties/schemaVersion/not | "law.core.evaluation/0.3" |
allOf/1/then/not/anyOf/2/properties/proofGraph/properties/nodes/contains/properties/kind | "derived_admission" |
allOf/2/then/properties/schemaVersion | "law.core.evaluation/0.3" |
allOf/3/if/properties/proofGraph/properties/nodes/contains/properties/kind | "derived_admission" |
allOf/3/then/properties/schemaVersion | "law.core.evaluation/0.3" |
Raw schema
Section titled “Raw schema”ApplicabilityStatus
Section titled “ApplicabilityStatus”Values: "APPLICABLE", "NOT_APPLICABLE", "UNDETERMINED", "CONFLICTED".
ConflictReport
Section titled “ConflictReport”Type: object.
Required: id, positive, negative, positiveCandidates, negativeCandidates, unresolvedReason.
| name | type-or-$ref | description |
|---|---|---|
defeatedCandidates | array | — |
id | #/$defs/StableId | — |
interpretations | array | — |
negative | #/$defs/JsonValue | — |
negativeCandidates | array | — |
positive | #/$defs/JsonValue | — |
positiveCandidates | array | — |
priorityEdges | array | — |
sourceAnchors | array | — |
unresolvedReason | enum (6) | — |
Type: string.
Digest
Section titled “Digest”Type: string.
EvaluationManifest
Section titled “EvaluationManifest”Type: object.
Required: id, semantics, programHash, lockfileHash, caseHash, legalTime, decisionTime, knowledgeTime, resolvedEditions, externalSnapshots, semanticHash.
| name | type-or-$ref | description |
|---|---|---|
calendarSnapshot | string | — |
caseHash | #/$defs/Digest | — |
decisionTime | anyOf (2) | — |
evidenceSnapshotHash | #/$defs/Digest | — |
externalSnapshots | object | — |
id | #/$defs/StableId | — |
interpretations | array | — |
jurisdictionProfile | string | Canon profile in the unified grammar <id>/<version>#sha256:<64 hex>. Present only for a computation over a package with a named profile. For documents of the 0.1 line (semantics = law.core/0.1.0, the vendored release), the field keeps its former free-form string. |
knowledgeTime | anyOf (2) | — |
editionsAsPresented | #/$defs/LegalTime | The date as of which the set of editions was presented by the caller. Present only for a computation with this transport field in the request; without it the field is absent and the document is byte-identical to before. |
legalTime | anyOf (2) | In 0.2 and later, null means a computation without a temporal slice; a consumer of the date requires an explicit legal time. |
lockfileHash | #/$defs/Digest | — |
mode | enum (5) | — |
policies | object | — |
programHash | #/$defs/Digest | — |
theoryHash | #/$defs/Digest | — |
artifactHash | #/$defs/Digest | — |
resolvedEditions | object | — |
semantics | string | — |
timezone | string or null | — |
timezoneDbSnapshot | string | — |
temporalResolutionPolicy | #/$defs/StableId | — |
solverProfile | string | — |
evidencePolicy | #/$defs/StableId | — |
evidencePolicyProfile | string | — |
evidencePolicyHash | #/$defs/Digest | — |
semanticHash | #/$defs/Digest | — |
derivedAdmission | object | — |
EvaluationResult
Section titled “EvaluationResult”Type: object.
Required: id, query, resultKind, evaluationStatus, proof, normativeStatusSupports.
| name | type-or-$ref | description |
|---|---|---|
applicabilityStatus | #/$defs/ApplicabilityStatus | — |
conflicts | array | — |
evaluationStatus | #/$defs/EvaluationStatus | — |
evidence | array | — |
id | #/$defs/StableId | — |
judgmentRequests | array | — |
manifest | #/$defs/StableId | — |
missingInputs | array | — |
normativeStatus | #/$defs/NormativeStatus | — |
proof | #/$defs/StableId | — |
query | #/$defs/StableId | — |
sourceAnchors | array | — |
target | #/$defs/StableId | — |
triggerStatus | #/$defs/TriggerStatus | — |
truthStatus | #/$defs/TruthStatus | — |
value | #/$defs/JsonValue | — |
normativeStatusSupports | array | — |
resultKind | #/$defs/ResultKind | — |
EvaluationStatus
Section titled “EvaluationStatus”Values: "COMPUTED", "MISSING_INPUT", "MISSING_POLICY", "REQUIRES_JUDGMENT", "NON_EXECUTABLE", "EXTERNAL_UNAVAILABLE", "INTERPRETATION_REQUIRED", "SOURCE_RESOLUTION_FAILED", "PRIORITY_CONFLICT", "UNRESOLVED_NORMATIVE_CONFLICT", "CONFLICTED_INPUTS", "TYPE_ERROR", "RUNTIME_ERROR", "RESOURCE_LIMIT".
InputRequirement
Section titled “InputRequirement”Type: object.
Required: id, kind, description.
| name | type-or-$ref | description |
|---|---|---|
description | string | — |
expectedType | string | — |
id | #/$defs/StableId | — |
kind | string | — |
relatedNode | #/$defs/StableId | — |
Instant
Section titled “Instant”Type: string.
Type: object.
Required: code, severity, message.
| name | type-or-$ref | description |
|---|---|---|
code | string | — |
details | #/$defs/JsonValue | — |
message | string | — |
relatedNodes | array | — |
severity | enum (4) | — |
JsonObject
Section titled “JsonObject”Type: object.
JsonValue
Section titled “JsonValue”Definition JsonValue.
JudgmentRequest
Section titled “JudgmentRequest”Type: object.
Required: id, predicate, authority, request.
| name | type-or-$ref | description |
|---|---|---|
authority | #/$defs/StableId | — |
evidence | array | — |
id | #/$defs/StableId | — |
predicate | #/$defs/StableId | — |
proof | #/$defs/StableId | — |
request | #/$defs/JsonValue | — |
requestSchema | #/$defs/JsonValue | — |
NormativeStatus
Section titled “NormativeStatus”Lifecycle states of a legal position. AVAILABLE, EXERCISED, VALIDLY_EXERCISED and INVALIDLY_EXERCISED are reserved and not produced in 0.2: the power, liberty and immunity lifecycle is created, active, suspended, terminated or expired only. Exercise validity is an event property, read via the POWER_INVALID_EXERCISE issue and the std literal invalidly_exercised(position), not via this enum.
Values: "CREATED", "PENDING", "ACTIVE", "SATISFIED", "VIOLATED", "WAIVED", "SUSPENDED", "TERMINATED", "EXPIRED", "UNDETERMINED", "AVAILABLE", "EXERCISED", "VALIDLY_EXERCISED", "INVALIDLY_EXERCISED", "CONFLICTED", "DEFEATED".
PositionInstance
Section titled “PositionInstance”Type: object.
Required: id, template, modality, holder, status, createdBy, manifest.
| name | type-or-$ref | description |
|---|---|---|
activationEvent | #/$defs/StableId | — |
beneficiary | #/$defs/StableId | — |
counterparty | #/$defs/StableId | — |
createdBy | #/$defs/StableId | — |
holder | #/$defs/StableId | — |
id | #/$defs/StableId | — |
manifest | #/$defs/StableId | — |
modality | enum (4) | — |
payload | #/$defs/JsonValue | — |
proof | #/$defs/StableId | — |
status | #/$defs/NormativeStatus | — |
statusHistory | array | — |
template | #/$defs/StableId | — |
ProofGraph
Section titled “ProofGraph”Type: object.
Required: nodes, roots, proofHash.
| name | type-or-$ref | description |
|---|---|---|
nodes | array | — |
proofHash | #/$defs/Digest | — |
roots | array | — |
PriorityPathStep
Section titled “PriorityPathStep”Type: object.
Required: priorityRule, higher, lower, conditionWitnesses.
| name | type-or-$ref | description |
|---|---|---|
priorityRule | #/$defs/StableId | — |
higher | #/$defs/StableId | — |
lower | #/$defs/StableId | — |
conditionWitnesses | array | — |
ProofNode
Section titled “ProofNode”Type: object.
Required: id, kind, conclusion, premises.
| name | type-or-$ref | description |
|---|---|---|
applicabilityStatus | #/$defs/ApplicabilityStatus | — |
attributes | object | — |
conclusion | #/$defs/JsonValue | — |
evidence | array | — |
id | #/$defs/StableId | — |
interpretation | #/$defs/StableId | — |
kind | enum (20) | — |
outcome | "DEFEATED" | — |
premises | array | — |
priorityPath | array | — |
rule | #/$defs/StableId | — |
sourceAnchors | array | — |
substitution | object | — |
triggerStatus | #/$defs/TriggerStatus | — |
StableId
Section titled “StableId”Type: string.
StatusTransition
Section titled “StatusTransition”Type: object.
Required: status, at, proof.
| name | type-or-$ref | description |
|---|---|---|
at | #/$defs/Instant | — |
proof | #/$defs/StableId | — |
reason | string | — |
status | #/$defs/NormativeStatus | — |
TemporalInterval
Section titled “TemporalInterval”Type: object.
Required: startInclusive, endInclusive.
| name | type-or-$ref | description |
|---|---|---|
axis | string | — |
end | oneOf (3) | — |
endInclusive | boolean | — |
start | oneOf (3) | — |
startInclusive | boolean | — |
TriggerStatus
Section titled “TriggerStatus”Values: "SATISFIED", "NOT_SATISFIED", "UNDETERMINED", "CONFLICTED".
TruthStatus
Section titled “TruthStatus”Values: "TRUE_ONLY", "FALSE_ONLY", "BOTH", "NEITHER".
NormativeStatusSupport
Section titled “NormativeStatusSupport”Type: object.
Required: status, truthStatus, proof.
| name | type-or-$ref | description |
|---|---|---|
status | #/$defs/NormativeStatus | — |
truthStatus | #/$defs/TruthStatus | — |
valid | #/$defs/TemporalInterval | — |
proof | array | — |
LegalTime
Section titled “LegalTime”Definition LegalTime.
ResultKind
Section titled “ResultKind”Values: "DATA", "COLLECTION", "PROPOSITION", "RULE_APPLICATION", "NORM_POSITION", "COMPLIANCE", "CONSTRAINT", "GRAPH".
EvidenceAcceptanceReport
Section titled “EvidenceAcceptanceReport”Report of the acceptance phase. Present only when an evidence policy is selected; without a policy the document is byte-identical to before.
Type: object.
Required: policy, profile, closureHash, decisions, documents, blocked.
| name | type-or-$ref | description |
|---|---|---|
policy | #/$defs/StableId | — |
profile | string | — |
closureHash | #/$defs/Digest | — |
decisions | array | — |
documents | array | — |
blocked | array | — |
EvidenceDecisionReason
Section titled “EvidenceDecisionReason”Closed dictionary of acceptance reasons.
Values: "AUTHENTICATION_HASH_MISMATCH", "AUTHENTICATION_MISSING", "AUTHENTICATION_NOT_AVAILABLE", "AUTHENTICATION_UNBOUND", "EDGE_NOT_CURRENT", "EDGE_POLICY_MISMATCH", "EVIDENCE_NOT_AVAILABLE", "EVIDENCE_NOT_CURRENT", "EVIDENCE_NOT_DECLARED", "FIELD_NOT_BOUND", "FIELD_TYPE_MISMATCH", "NEGATED_PROPOSITION", "NO_ACCEPTANCE_RULE_APPLIED", "RELATION_NOT_EXECUTABLE".
EvidenceDecision
Section titled “EvidenceDecision”Type: object.
Required: edge, evidence, relation, literal, decision, reasons.
| name | type-or-$ref | description |
|---|---|---|
edge | #/$defs/StableId | — |
evidence | #/$defs/StableId | — |
relation | string | — |
literal | #/$defs/JsonValue | — |
polarity | enum (2) | — |
decision | enum (2) | — |
reasons | array | — |
proof | #/$defs/StableId | — |
blockers | array | Present for support that reached the rules and was not accepted. |
provenance | #/$defs/EvidenceFactProvenance | — |
EvidenceFactProvenance
Section titled “EvidenceFactProvenance”Provenance of the case assertion whose literal equals the literal of the support (the smallest assertion id wins). Present only when that assertion was produced by an extractor (a was_generated_by provenance edge carrying an extractor) or carries a quote; earlier reports do not get the field.
Type: object.
Required: origin.
| name | type-or-$ref | description |
|---|---|---|
origin | enum (6) | Origin of the assertion; extraction is not a new origin. |
evidence | #/$defs/StableId | First id of the assertion’s evidence[], otherwise the target of its was_derived_from edge. |
quote | #/$defs/JsonValue | attributes.quote of the provenance edge, carried verbatim. |
confidence | #/$defs/JsonValue | Confidence of the extractor edge, carried verbatim; the core does not read it (the package evidence policy does, via its confidence field). |
EvidenceDocumentReport
Section titled “EvidenceDocumentReport”Type: object.
Required: evidence, available, current, notes.
| name | type-or-$ref | description |
|---|---|---|
evidence | #/$defs/StableId | — |
available | boolean | — |
current | boolean | — |
notes | array | — |
authentications | array | — |
EvidenceBlockedAssertion
Section titled “EvidenceBlockedAssertion”Assertion of a protected predicate that did not enter the support: the policy cannot be bypassed.
Type: object.
Required: assertion, predicate, origin, reason.
| name | type-or-$ref | description |
|---|---|---|
assertion | #/$defs/StableId | — |
predicate | #/$defs/StableId | — |
origin | string | — |
reason | "PROTECTED_PREDICATE_REQUIRES_EVIDENCE" | — |
ExecutionReceipt
Section titled “ExecutionReceipt”Type: object.
Required: implementation, implementationConformance, receiptHash.
| name | type-or-$ref | description |
|---|---|---|
implementation | string | — |
implementationConformance | string | — |
startedAt | #/$defs/Instant | — |
finishedAt | #/$defs/Instant | — |
resourceUsage | #/$defs/JsonObject | — |
signature | #/$defs/JsonObject | — |
receiptHash | #/$defs/Digest | — |
EvidenceBlockerConjunct
Section titled “EvidenceBlockerConjunct”One conjunct of a policy rule’s body and its state: an evaluation over the phase store.
Type: object.
Required: kind, literal, trigger.
| name | type-or-$ref | description |
|---|---|---|
literal | #/$defs/JsonValue | — |
trigger | enum (4) | — |
detail | string | — |
kind | string | Kind of conjunct: established | not_known | supported | monotone | refuted | unknown | guard. |
stage | #/$defs/WhyNotStage | — |
BlockerHeadArgument
Section titled “BlockerHeadArgument”Computed argument of a candidate rule’s head (call, arithmetic, let). Equality with the goal argument is not checked: the value must not be treated as established in the explanation; term is the head term itself as in the CLIR.
Type: object.
Required: position, term, status.
| name | type-or-$ref | description |
|---|---|---|
position | integer | — |
term | #/$defs/JsonValue | — |
status | enum (1) | — |
detail | string | — |
BlockerContinuation
Section titled “BlockerContinuation”Continuation of the goal substitution by store witnesses in a why_not rule blocker: bindings are the variables bound by witnesses (not by the goal) with their values; conjuncts mark every body conjunct under the continuation; trigger and detail summarise this continuation only — there is no verdict over continuations.
Type: object.
Required: bindings, trigger, detail, conjuncts.
| name | type-or-$ref | description |
|---|---|---|
bindings | object | — |
trigger | enum (4) | — |
detail | string | — |
conjuncts | array | — |
BlockerDefeat
Section titled “BlockerDefeat”Defeat of the blocker rule’s application concluding the goal, read from the proof graph of the same document: application and defeat are proof node ids; reason is the defeat node’s attributes.reason; opponentRules are the rules of opponent applications among the defeat node’s premises (sorted, unique); priorityRules are the priorityRule of the defeat node’s priorityPath steps in written order.
Type: object.
Required: application, defeat, reason, opponentRules, priorityRules.
| name | type-or-$ref | description |
|---|---|---|
application | #/$defs/StableId | — |
defeat | #/$defs/StableId | — |
reason | enum (3) | — |
opponentRules | array | — |
priorityRules | array | — |
WhyNotStage
Section titled “WhyNotStage”Round of an executable stage named by a why_not report: same shape as attributes.stage of a rule_application node (the index is the index value — integer or ISO date — not a term) when the index lies in the domain, and {name, index, outsideDomain: true} outside it. On a rule blocker it names the round of the goal; on a conjunct, the round of the conjunct literal after substitution. Written by why_not only, and only in programs with an executable stage.
Type: object.
Required: name, index.
| name | type-or-$ref | description |
|---|---|---|
name | string | — |
index | integer or string | — |
rank | integer | — |
outsideDomain | true | — |
EvidenceBlocker
Section titled “EvidenceBlocker”Breakdown of the NO_ACCEPTANCE_RULE_APPLIED reason for one policy rule. Same shape as why_not blockers; headArguments appears only for a rule with a computed head argument, and is written non-empty. strength, continuations, truncated and defeats belong to why_not rule blockers only: policy blockers and transition blockers never carry them; continuations and defeats are written non-empty, truncated only as true. stage is likewise why_not-only and appears only in programs with an executable stage.
Type: object.
Required: rule, applicability, trigger, conjuncts.
| name | type-or-$ref | description |
|---|---|---|
rule | #/$defs/StableId | — |
headArguments | array | — |
stage | #/$defs/WhyNotStage | — |
applicability | enum (3) | — |
trigger | enum (4) | — |
detail | string | — |
conjuncts | array | — |
strength | enum (3) | — |
continuations | array | — |
truncated | true | — |
defeats | array | — |
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.