From shadow to light

The other half of the argument

The passport lets an object with contested provenance be registered without exposing the person holding it. That solves half the problem. The other half is that such an object still cannot be seen — no institution will exhibit what might be seized, and no holder will ship what might not come back. So it stays in a warehouse, unstudied, unclaimed and unreturned.

A digital exhibit breaks that deadlock. The object goes nowhere. The insurance exposure is zero. The source community, the scholar and the public all get access on the same day — and the disclosure envelope that governs the record governs the room.

Loading exhibit…

What is real here

  • The point-of-interest model, the tier gating and the haptic profiles are the real contract, in apps/web/lib/exhibit.ts.
  • The role filter is the same envelope the passport uses. Withheld points of interest are not rendered, not dimmed.
  • The coverage narration is generated from the passport, so the room and the record cannot say different things.

What is a stand-in

  • The geometry is procedural. A real exhibit loads a photogrammetry mesh through modelUrl; committing a scan of a contested object to a public repository is not a neutral act.
  • Haptics degrade to the browser Vibration API, which is a crude proxy for what HopeOS can do on real hardware.
  • Voice is button-driven with speech synthesis for output. Intent recognition is not wired.

The HopeOS boundary

Why the adapter is written before the integration

HopeOS — Hannah Zhao’s immersive runtime — supplies 3D presentation with haptic feedback and a voice interface. This page does not depend on it. It defines an ExhibitRuntime contract the exhibit needs and ships a three.js implementation of that contract, so the scene model, the intent grammar and the tier gating can be built, demonstrated and argued about before any hardware is in the room.

If HopeOS exposes a different API surface, the adapter is the only thing that changes. That is the entire reason for writing it this way round: the interesting decisions here are about disclosure and narration, and none of them should be waiting on a device.

Voice intent grammar

IntentTierExample utteranceWhat it surfaces
identifypublicwhat am i looking atTitle, culture, period, material — the public tier.
locatepublicwhere is it fromRegion of origin and acquisition mode. Never the current location, which is enforcement tier.
damagemuseumshow me the damageCondition and repair. Museum tier, because condition drives valuation.
provenanceenforcementwho owned thisThe full event timeline. Enforcement tier — it names people and places.
claimssource-communitywho claims thisClaim status and custodianship terms.
source-voicesource-communitywhat does the community sayA statement contributed by the community of origin, played only where they have consented to it.
coveragepublichow much do we knowThe coverage class, in plain language. The single most important thing a visitor can be told about a quiet result.

Note that locate is public but never returns the current location — that is enforcement tier. An exhibit that answers “where is it now?” in a public gallery has told a thief where to go.

Why this object

No register has ever been able to name this object. A quiet result here is a measure of the reach of the registers, not of the object's innocence — which is why the coverage class must be read before the score.

The Benin bronze would make an easier exhibit. It is already in collections, already photographed, already argued over in public. The Bura askos is the object nobody can see: no register can name it, no institution will show it, and the instrument written to protect it — the 1970 UNESCO Convention — presumes an inventory that was never made. If the exhibit works for this object it works for the hard case.