6. Verification Object Schema and Qualification Semantics
6.1 Verification Object Schema
A Verification Object is the atomic output of Baseline. It is a content-addressed, immutable record of a single claim evaluation.
{
"voId": "string // Keccak-256 hash of canonically encoded contents",
"lineStatus": "LINE_STATUS // 'ABOVE' | 'BELOW'",
"claim": "Claim // Full claim definition (Section 2.1)",
"engine": {
"version": "string // Engine version used"
},
"predicate": {
"predicateId": "string // Predicate identifier (Section 2.4)",
"version": "string // Predicate version used (from engine's Predicate Manifest, Section 2.5)"
},
"methods": [{
"name": "string // Method identifier",
"version": "string // Method version"
}],
"result": {
"qualification": "QualificationType",
"confidence": "number // 0-100 (100 = fully deterministic)",
"bounds": {
"low": "number | null",
"high": "number | null"
},
"verdictText": "string // Human-readable summary",
"reasons": "string[] // Supporting/undermining factors"
},
"evidence": "EvidenceReference[] // References to evidence units used",
"evidenceGraph": {
"graphId": "string",
"summary": "string // Textual summary of graph structure",
"previewUrl": "string | null // URL to visual graph rendering"
},
"attestations": {
"count": "number",
"validatorIds": "string[]",
"signatures": [{
"validatorId": "string",
"sig": "string // Ed25519 or secp256k1 signature"
}]
},
"baselineChain": {
"anchoringStatus": "ANCHORING_STATUS // 'PRE_ANCHORING' | 'PENDING' | 'ANCHORED' | 'FAILED'",
"txHash": "string | null // FirmaChain transaction hash",
"anchoredAt": "string | null // ISO 8601 timestamp",
"anchoringPhase": "string | null // Migration phase: 'SHADOW' | 'TESTNET' | 'MAINNET' | null (full production)"
},
"timestamps": {
"createdAt": "string // ISO 8601",
"updatedAt": "string // ISO 8601"
}
}
Content-Addressing:
voId = Keccak-256(BCE_ENCODE(VerificationObject excluding voId, attestations, baselineChain, timestamps))
This ensures:
- Any modification to the claim, result, evidence, or method produces a detectably different
voId - Attestations and anchoring metadata are excluded from the hash (they are added after initial creation)
- Timestamps are excluded to allow identical evaluations to produce identical
voIds
Anchoring Status Semantics:
| Status | Meaning | Independent Verification Possible? |
|---|---|---|
PRE_ANCHORING |
No on-chain anchoring infrastructure is operational. The VO exists only in the operator's database. Corresponds to migration Phase 1-2 (Section 8.8). | No. Consumer must trust the operator entirely. |
PENDING |
On-chain anchoring infrastructure is operational but this VO has not yet been included in an anchored batch. Typically resolves to ANCHORED within the batch interval (60-300 seconds). |
No (but imminent). |
ANCHORED |
VO content hash is committed to FirmaChain via a Merkle batch. A Merkle inclusion proof is available. | Yes. Any party can verify voId membership in the anchored Merkle root. |
FAILED |
Anchoring was attempted but the FirmaChain transaction failed. The VO will be retried in a subsequent batch. | No. |
The anchoringPhase field provides additional context during the migration period (Section 8.8):
| Phase | Description | Attestations Available? |
|---|---|---|
SHADOW |
Phase 1: Merkle batches are computed but not submitted on-chain. | No |
TESTNET |
Phase 2: Batches are anchored on FirmaChain testnet only. | Testnet only |
MAINNET |
Phase 3: Batches are anchored on FirmaChain mainnet with conservative intervals. | Yes (limited validator set) |
null |
Phase 4+: Full production. This field is omitted. | Yes |
Trust transparency rule: API responses MUST include anchoringStatus and anchoringPhase for every VO. Consumers SHOULD treat PRE_ANCHORING VOs as operator-asserted (not independently verifiable) and display this distinction in their UIs.
6.2 Qualification State Determination
Qualification is determined mechanically based on evaluation results.
VERIFIED
Entry Conditions:
evaluationClass = DETERMINISTICfor ALL predicates evaluated- ALL relevant predicates were evaluated (none skipped)
- ALL results are conclusive and consistent
- No inference was required
- ALL evidence units are ONCHAIN class (independently re-fetchable). VOs that depend on any OFFCHAIN_DECLARED evidence cannot reach VERIFIED qualification, because the observational correctness of off-chain evidence cannot be independently confirmed (Section 3.3).
Confidence: 100
INFERRED
Entry Conditions:
- At least one inference method was used, OR at least one evidence unit is OFFCHAIN_DECLARED class
- Primary hypothesis confidence exceeds the method's reporting threshold (default: 50)
- Alternative hypotheses are attached
Confidence: As reported by inference method. When OFFCHAIN_DECLARED evidence is present, a confidence ceiling applies (see below).
Off-chain evidence confidence ceiling:
When a VO depends on OFFCHAIN_DECLARED evidence, the reported confidence is capped:
effective_confidence = min(method_confidence, offchain_ceiling)
| Off-chain evidence class | Ceiling | Rationale |
|---|---|---|
| OFFCHAIN_PINNED only | 90 | Source may have changed since snapshot; content hash verifiable |
| OFFCHAIN_EPHEMERAL present | 75 | Source may be deleted; replay relies entirely on stored snapshot |
This ceiling reflects that off-chain evidence is replay-verified (computational correctness) but not observation-verified (the snapshot was actually correct at collection time). The ceiling is applied BEFORE the confidence is stored in the VO, so it affects voId computation.
OBSERVED
Entry Conditions:
- Evidence graph was constructed successfully
- Structural properties were described
- The specific predicate could not be meaningfully evaluated within this context
- Structure was found and recorded, but the claim itself remains unevaluated
Confidence: N/A (structure was observed but claim not evaluated)
INCONCLUSIVE
Entry Conditions:
- Evidence supports multiple incompatible interpretations
- No primary hypothesis has confidence above the reporting threshold
- Scope was NOT exhausted (sufficient evidence was available, it was just ambiguous)
Confidence: Below threshold
UNQUALIFIED
Entry Conditions:
- Evidence is insufficient to construct a meaningful evaluation
- Evidence retrieval failed, subject was not found, or scope was entirely empty
- This is distinct from a negative result
Confidence: N/A
CONSTRUCTION_FAILED
Entry Conditions:
- Graph construction was aborted due to an operational timeout (Section 4.4) or infrastructure failure
- No deterministic graph was produced — the evidence graph does not exist for this attempt
- This is distinct from UNQUALIFIED: UNQUALIFIED means evidence was retrieved but insufficient; CONSTRUCTION_FAILED means the graph was never completed
Confidence: N/A (no evaluation was performed)
Replay: CONSTRUCTION_FAILED VOs are not submitted for attestation or replay. They are recorded for operational monitoring only and MUST NOT influence any deterministic output.
CONTESTED (extension)
Entry Conditions:
- Multiple qualified evaluations exist for the same claim under the same context
- These evaluations produce different qualifications or significantly different results
- Used by products to surface dispute status
Confidence: Varies per evaluation
6.3 Memecoin Evaluation Output (Product View)
The Memecoin Intel Portal renders multiple Verification Objects as a composite evaluation:
{
"coinId": "string",
"observedAt": "string // ISO 8601",
"overallScore": "number // 0-100",
"categoryScores": {
"onchain": "number // 0-100",
"social": "number // 0-100",
"project": "number // 0-100"
},
"scoringModel": {
"type": "string // 'SIMPLE_AVG' | 'WEIGHTED'",
"version": "string"
},
"supportingVOs": "string[] // voIds that back this evaluation",
"detail": [{
"metricKey": "string",
"status": "METRIC_STATUS // 'PASS' | 'WARN' | 'FAIL' | 'NA'",
"score": "number // 0-100",
"linkedVOs": "string[] // voIds"
}]
}
Scoring Categories (12 categories, 100 max points):
| Category | Weight | Max Points | Evaluation Class |
|---|---|---|---|
| Liquidity | 15% | 15 | DETERMINISTIC |
| Holdings | 15% | 15 | DETERMINISTIC + INFERENTIAL |
| Trading Activity | 15% | 15 | DETERMINISTIC + INFERENTIAL |
| Security & Contract | 15% | 15 | DETERMINISTIC |
| Price Move | 10% | 10 | DETERMINISTIC |
| Timing | 5% | 5 | DETERMINISTIC |
| Manipulation (On-chain) | 10% | 10 | INFERENTIAL |
| Social Channels | 3% | 3 | DETERMINISTIC |
| Social Narrative | 5% | 5 | INFERENTIAL |
| Community | 4% | 4 | INFERENTIAL |
| Social Manipulation | 3% | 3 | INFERENTIAL |
| Project Narrative | 5% | 5 | INFERENTIAL |
Score Tiers:
| Range | Tier | Description |
|---|---|---|
| 80-100 | Gem | Strong structural integrity |
| 65-79 | Solid | Standard risks apply |
| 50-64 | Caution | Flags present |
| 35-49 | Sketchy | High probability of structural issues |
| 0-34 | Avoid | Critical flags or insufficient data |
Critical FAIL Overrides (instant red flags regardless of score):
- Honeypot confirmed
- Hidden mint function active
- Single non-CEX holder > 20%
- LP unlocked with concentrated holder
- Known deployer rug history