{"block_close_oss.c33fd1fe9c":"Community and ecosystem","core-extras.96d330537a":"Base IR","core-extras.bee831a169":"Substrate","core-extras.61a0822826":"Apps on Core","core-extras.15438cc098":"not supported","core-extras.ad565d9d01":"Feature","core-extras.0155bf03e5":"Segment legend","core-extras.8b7110078e":"Algorithm groups by data type","core-extras.25ab4276a6":"Scrollable capability matrix","open-source-twin.hero.brief":"Read the operational brief","open-source-twin.hero.businessLede":"Twin is an event-sourced digital twin platform. It keeps the operational record on your estate so you can replay history and answer questions after a change. It is open source under Apache-2.0, and it publishes in the ninth round of Dweve's foundation release programme, with its documentation at docs.dweve.com the same day.","open-source-twin.hero.consumerLede":"Twin is a digital twin for the things people rely on: every change gets a line and the old lines remain.","open-source-twin.hero.consumerTitleAccent":"the things you rely on","open-source-twin.hero.consumerTitleLead":"A careful notebook for","open-source-twin.hero.docs":"Read the documentation","open-source-twin.hero.eyebrow":"Twin","open-source-twin.hero.sourceAccess":"Ask about the release","open-source-twin.hero.ledgerHosting":"Self-hosted on operator-controlled infrastructure","open-source-twin.hero.ledgerHostingLabel":"Where it runs","open-source-twin.hero.ledgerLabel":"Project sheet","open-source-twin.hero.ledgerLicence":"Apache-2.0","open-source-twin.hero.ledgerLicenceLabel":"Licence","open-source-twin.hero.ledgerPill":"APACHE-2.0","open-source-twin.hero.ledgerRecord":"Immutable event log","open-source-twin.hero.ledgerRecordLabel":"System of record","open-source-twin.hero.notebook":"See the notebook","open-source-twin.hero.permission":"See permission checks","open-source-twin.hero.sovereignty":"See self-hosted operation","open-source-twin.hero.technicalLede":"An event-sourced digital twin where the log is the record and every current state is derived from history.","open-source-twin.hero.titleAccent":"Operational memory.","open-source-twin.hero.businessTitleLead":"The record stays with you.","open-source-twin.hero.businessTitleAccent":"The history stays replayable.","open-source-twin.hero.titleLead":"Nothing is overwritten.","open-source-twin.shell.breadcrumbRoot":"Open Source","open-source-twin.shell.breadcrumbTwin":"Twin","open-source-twin.shell.closeBody":"Twin is open source under Apache-2.0. It publishes in the ninth round of the foundation release programme; once it does, run it on infrastructure you control and ask the past directly.","open-source-twin.shell.closeHeadline":"Keep the record from the first event","open-source-twin.shell.closeLabel":"Get started","open-source-twin.shell.nextCategory":"OPEN SOURCE","open-source-twin.shell.nextDescription":"Structured operational records for accountable systems.","open-source-twin.shell.nextEyebrow":"Continue through the stack","open-source-twin.shell.nextFmiDescription":"Simulation models that connect to operational state.","open-source-twin.shell.nextFmiTitle":"Dweve FMI","open-source-twin.shell.nextProductCategory":"PRODUCT","open-source-twin.shell.nextProductDescription":"A policy surface for real operations.","open-source-twin.shell.nextProductTitle":"Dweve Spindle","open-source-twin.shell.nextTitle":"Dweve Ledger","open-source-twin.eng-query.banner.eyebrow":"The query boundary","open-source-twin.eng-query.banner.lead":"The answer is one view.","open-source-twin.eng-query.banner.accent":"The plan stays visible.","open-source-twin.eng-query.banner.paragraph1":"A temporal or relationship query does not replace the event history with a convenient answer. Twin derives the requested view from that history and keeps the route through projections, relationships and time explicit.","open-source-twin.eng-query.banner.paragraph2":"That separation matters when a projection is rebuilt or a late event arrives. The same question can run again against the amended history, while the earlier answer remains tied to what was known when it was produced.","open-source-twin.eng-query.banner.panelHeader":"Inspectable query route","open-source-twin.eng-query.banner.panelTag":"Derived, not copied","open-source-twin.eng-query.banner.check1":"name the temporal question","open-source-twin.eng-query.banner.check2":"inspect the execution plan","open-source-twin.eng-query.banner.check3":"derive the requested view","open-source-twin.eng-query.banner.check4":"retain its lineage to events","open-source-twin.eng-query.banner.verdict":"The view can change when history changes without becoming the record itself.","open-source-twin.eng-query.banner.footline":"A fast answer remains a reading of history, never a replacement for it.","open-source-twin.biz-access.banner.eyebrow":"The access decision","open-source-twin.biz-access.banner.lead":"A role is not enough.","open-source-twin.biz-access.banner.accent":"The moment matters too.","open-source-twin.biz-access.banner.paragraph1":"The same person may be allowed to see an asset while on shift and refused after the shift ends. Assignment, location and the state of the asset can matter alongside a role, so a static permission list cannot describe every legitimate decision.","open-source-twin.biz-access.banner.paragraph2":"Twin evaluates those conditions against the recorded operational state and keeps the decision with its inputs. A reviewer can see who asked, what they were assigned, which conditions applied and why access was allowed or refused at that time.","open-source-twin.biz-access.banner.panelHeader":"Access decision receipt","open-source-twin.biz-access.banner.panelTag":"At the time","open-source-twin.biz-access.banner.check1":"identity and role","open-source-twin.biz-access.banner.check2":"asset assignment","open-source-twin.biz-access.banner.check3":"time and location conditions","open-source-twin.biz-access.banner.check4":"allow or refuse with reason","open-source-twin.biz-access.banner.verdict":"Permission is an evaluated event, not a key that lasts forever.","open-source-twin.biz-access.banner.footline":"A later audit uses the conditions recorded with the original decision.","open-source-twin.eng-boundary.banner.eyebrow":"The standards boundary","open-source-twin.eng-boundary.banner.lead":"A standard brings a model in.","open-source-twin.eng-boundary.banner.accent":"The adapter names what changes.","open-source-twin.eng-boundary.banner.paragraph1":"Twin keeps its event and relationship model separate from any one industry standard. Adapters can read and write the models already in use, while the kernel retains one consistent account of time, provenance and change.","open-source-twin.eng-boundary.banner.paragraph2":"Not every construct has an exact counterpart. The handover therefore includes a loss report that identifies what was represented, what was transformed and what could not be carried across.","open-source-twin.eng-boundary.banner.panelHeader":"Inspectable adapter boundary","open-source-twin.eng-boundary.banner.panelTag":"Losses named","open-source-twin.eng-boundary.banner.check1":"read the source model","open-source-twin.eng-boundary.banner.check2":"map into the Twin kernel","open-source-twin.eng-boundary.banner.check3":"write the target model","open-source-twin.eng-boundary.banner.check4":"attach the loss report","open-source-twin.eng-boundary.banner.verdict":"Interoperability remains reviewable because translation evidence travels with the handover.","open-source-twin.eng-boundary.banner.footline":"The adapter makes the difference explicit instead of hiding it behind a successful export.","open-source-twin.biz-models.banner.eyebrow":"Existing domain models","open-source-twin.biz-models.banner.lead":"Keep the model already in use.","open-source-twin.biz-models.banner.accent":"Make the handover inspectable.","open-source-twin.biz-models.banner.paragraph1":"An asset, clinical or process model remains owned by its domain. Twin accepts it through an adapter and adds operational history without asking the organisation to replace every existing model first.","open-source-twin.biz-models.banner.paragraph2":"When information moves back out, the recipient gets the mapping and its limits. A reviewer can see what entered Twin, what changed form and what was left out before approving the handover.","open-source-twin.biz-models.banner.panelHeader":"Model handover route","open-source-twin.biz-models.banner.panelTag":"Existing model kept","open-source-twin.biz-models.banner.check1":"receive the domain model","open-source-twin.biz-models.banner.check2":"connect operational history","open-source-twin.biz-models.banner.check3":"review the mapping evidence","open-source-twin.biz-models.banner.check4":"release with limits named","open-source-twin.biz-models.banner.verdict":"The domain keeps its model while the handover gains a reviewable record.","open-source-twin.biz-models.banner.footline":"Adoption starts from the models already carrying the work.","oss-twin-access-attempts.chrome.path":"Twin","oss-twin-access-attempts.chrome.status":"two allowed, three refused with reasons","oss-twin-access-attempts.chrome.meta":"same identity, fresh decision, illustrative","oss-twin-access-attempts.identity.role":"Maintenance contractor","oss-twin-access-attempts.identity.assignment":"Assigned to the pump-4471 maintenance contract at one site","oss-twin-access-attempts.identity.note":"one identity, evaluated on every request","oss-twin-access-attempts.outcome.allowed":"allowed","oss-twin-access-attempts.outcome.refused":"refused","oss-twin-access-attempts.nav.previous":"Previous request","oss-twin-access-attempts.nav.next":"Next request","oss-twin-access-attempts.conditions.contract":"on the assigned contract","oss-twin-access-attempts.conditions.shift":"inside the rostered shift","oss-twin-access-attempts.conditions.site":"asset on the assigned site","oss-twin-access-attempts.conditions.location":"from an approved location","oss-twin-access-attempts.event.allowedHead":"decision recorded","oss-twin-access-attempts.event.deniedHead":"denied security event","oss-twin-access-attempts.event.subjectLabel":"subject","oss-twin-access-attempts.event.subject":"maintenance contractor","oss-twin-access-attempts.event.resourceLabel":"resource","oss-twin-access-attempts.event.resourcePump":"pump-4471 history","oss-twin-access-attempts.event.timeLabel":"time","oss-twin-access-attempts.event.sourceLabel":"source","oss-twin-access-attempts.event.failedPolicyLabel":"failed policy","oss-twin-access-attempts.event.severityLabel":"severity","oss-twin-access-attempts.event.severity":"warning","oss-twin-access-attempts.event.exportLabel":"structured export","oss-twin-access-attempts.attempts.tuesdayMorning.when":"Tuesday 09:40","oss-twin-access-attempts.attempts.tuesdayMorning.context":"from the site office, inside the shift","oss-twin-access-attempts.attempts.tuesdayMorning.source":"site office terminal","oss-twin-access-attempts.attempts.tuesdayMorning.summary":"Inside the contract, inside the shift and on the approved site: the pump history opens.","oss-twin-access-attempts.attempts.wednesdayAfternoon.when":"Wednesday 14:15","oss-twin-access-attempts.attempts.wednesdayAfternoon.context":"from the workshop terminal","oss-twin-access-attempts.attempts.wednesdayAfternoon.source":"workshop terminal","oss-twin-access-attempts.attempts.wednesdayAfternoon.summary":"A second visit under the same terms: the decision is made again and the answer is the same, because every condition still holds.","oss-twin-access-attempts.attempts.saturdayEvening.when":"Saturday 18:05","oss-twin-access-attempts.attempts.saturdayEvening.context":"outside the rostered shift","oss-twin-access-attempts.attempts.saturdayEvening.source":"site office terminal","oss-twin-access-attempts.attempts.saturdayEvening.failedPolicy":"next valid window","oss-twin-access-attempts.attempts.saturdayEvening.summary":"The same identity outside the rostered shift: refused. Nothing was revoked and nobody had to remember anything; the time condition failed, and the refusal names the next valid window.","oss-twin-access-attempts.attempts.saturdayEvening.exportCef":"CEF:0|Dweve|Twin|access|refused|warning|subject=maintenance contractor resource=pump-4471 history policy=next valid window","oss-twin-access-attempts.attempts.saturdayEvening.exportLeef":"LEEF:2.0|Dweve|Twin|access|refused|subject=maintenance contractor|resource=pump-4471 history|policy=next valid window","oss-twin-access-attempts.attempts.saturdayEvening.exportJson":"{ \"outcome\": \"refused\", \"policy\": \"next valid window\", \"severity\": \"warning\" }","oss-twin-access-attempts.attempts.otherSite.when":"Tuesday 11:20","oss-twin-access-attempts.attempts.otherSite.context":"asking for another site's pump history","oss-twin-access-attempts.attempts.otherSite.resource":"pump-2210 history, second site","oss-twin-access-attempts.attempts.otherSite.source":"site office terminal","oss-twin-access-attempts.attempts.otherSite.failedPolicy":"asset outside grant","oss-twin-access-attempts.attempts.otherSite.summary":"The neighbouring site's pump history sits outside the assigned contract: refused, with the boundary named rather than a silent empty result.","oss-twin-access-attempts.attempts.otherSite.exportCef":"CEF:0|Dweve|Twin|access|refused|warning|subject=maintenance contractor resource=pump-2210 history policy=asset outside grant","oss-twin-access-attempts.attempts.otherSite.exportLeef":"LEEF:2.0|Dweve|Twin|access|refused|subject=maintenance contractor|resource=pump-2210 history|policy=asset outside grant","oss-twin-access-attempts.attempts.otherSite.exportJson":"{ \"outcome\": \"refused\", \"policy\": \"asset outside grant\", \"severity\": \"warning\" }","oss-twin-access-attempts.attempts.unapprovedLocation.when":"Thursday 08:10","oss-twin-access-attempts.attempts.unapprovedLocation.context":"from an unapproved location","oss-twin-access-attempts.attempts.unapprovedLocation.source":"external gateway","oss-twin-access-attempts.attempts.unapprovedLocation.failedPolicy":"request origin rejected","oss-twin-access-attempts.attempts.unapprovedLocation.summary":"The request arrives from an unapproved location: refused, and the origin is recorded so the security team can correlate it with the asset history being accessed.","oss-twin-access-attempts.attempts.unapprovedLocation.exportCef":"CEF:0|Dweve|Twin|access|refused|warning|subject=maintenance contractor source=external gateway policy=request origin rejected","oss-twin-access-attempts.attempts.unapprovedLocation.exportLeef":"LEEF:2.0|Dweve|Twin|access|refused|subject=maintenance contractor|source=external gateway|policy=request origin rejected","oss-twin-access-attempts.attempts.unapprovedLocation.exportJson":"{ \"outcome\": \"refused\", \"policy\": \"request origin rejected\", \"severity\": \"warning\" }","oss-twin-access-attempts.band.left":"every refusal names the condition that failed","oss-twin-access-attempts.band.right":"permission expires by evaluation","oss-twin-access-conditions.denialLabel":"denial says","oss-twin-access-conditions.footline.left":"permission is evaluated","oss-twin-access-conditions.footline.right":"not handed over permanently","oss-twin-access-conditions.kicker.label":"A request may depend on","oss-twin-access-conditions.kicker.sub":"several attributes at once","oss-twin-access-conditions.rows.asset.attribute":"Asset or tenant","oss-twin-access-conditions.rows.asset.denial":"asset outside grant","oss-twin-access-conditions.rows.asset.example":"on assigned contract","oss-twin-access-conditions.rows.asset.meaning":"scope of responsibility","oss-twin-access-conditions.rows.classification.attribute":"Classification","oss-twin-access-conditions.rows.classification.denial":"classification exceeds authority","oss-twin-access-conditions.rows.classification.example":"clearance at or above value","oss-twin-access-conditions.rows.classification.meaning":"sensitivity control","oss-twin-access-conditions.rows.location.attribute":"Location","oss-twin-access-conditions.rows.location.denial":"request origin rejected","oss-twin-access-conditions.rows.location.example":"approved site or office","oss-twin-access-conditions.rows.location.meaning":"trusted context","oss-twin-access-conditions.rows.role.attribute":"Role","oss-twin-access-conditions.rows.role.denial":"role not permitted","oss-twin-access-conditions.rows.role.example":"maintenance contractor","oss-twin-access-conditions.rows.role.meaning":"baseline permission family","oss-twin-access-conditions.rows.time.attribute":"Time","oss-twin-access-conditions.rows.time.denial":"next valid window","oss-twin-access-conditions.rows.time.example":"inside rostered shift","oss-twin-access-conditions.rows.time.meaning":"temporary authority","oss-twin-access-conditions.shell.accent":"only for the assets assigned","oss-twin-access-conditions.shell.body":"Access depends on the request as well as the person. Twin evaluates role, assignment, time and location together, then records the reason when a request is refused. The same person can receive different answers as the shift, site or asset changes, without a permanent role mutation. The decision stays attached to the subject, resource and failed condition for later review. A granted crossing is bounded by the relationship and time window that justified it, rather than becoming a broad role that survives the original task. A refusal is useful evidence because it names the condition an operator can correct or challenge. No permanent role has to change for the answer to change.","oss-twin-access-conditions.shell.eyebrow":"Access evaluated each time","oss-twin-access-conditions.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-access-conditions.shell.lead":"Only on shift, only on site","oss-twin-access-conditions.shell.left":"Identity and role are only part of the question. Twin can also evaluate assignment, time, location, device and policy conditions when a person asks for a page or an asset history. Each of those conditions is checked at the moment of the request.","oss-twin-access-conditions.shell.leftKicker":"The request carries context","oss-twin-access-conditions.shell.pill1":"RBAC","oss-twin-access-conditions.shell.pill2":"ABAC","oss-twin-access-conditions.shell.pill3":"TIME AND LOCATION","oss-twin-access-conditions.shell.pill4":"EACH REQUEST","oss-twin-access-conditions.shell.right":"The same person can be allowed on shift and refused later without any permanent role changing. The decision records the subject, resource, time and failed rule, so a denied request does not become an unexplained dead end. A later reviewer can therefore see the shift that made the difference.","oss-twin-access-conditions.shell.rightKicker":"A refusal explains the failed condition","oss-twin-access-conditions.shell.secondaryKicker":"Access is a fresh decision","oss-twin-access-conditions.tag":"ACCESS","oss-twin-adapter-boundary.band.left":"history retained","oss-twin-adapter-boundary.band.meta":"Band / meta","oss-twin-adapter-boundary.band.right":"state derived","oss-twin-adapter-boundary.band.text":"Band / text","oss-twin-adapter-boundary.body":"The record keeps the change, its context and the decision that followed.","oss-twin-adapter-boundary.chrome.meta":"illustrative","oss-twin-adapter-boundary.chrome.path":"Twin","oss-twin-adapter-boundary.chrome.status":"reading complete","oss-twin-adapter-boundary.companions.bpmn":"Companions / bpmn","oss-twin-adapter-boundary.companions.fhir":"Companions / fhir","oss-twin-adapter-boundary.companions.ngsi":"Companions / ngsi","oss-twin-adapter-boundary.export.package":"Export / package","oss-twin-adapter-boundary.export.report":"Export / report","oss-twin-adapter-boundary.fence.label":"Fence / label","oss-twin-adapter-boundary.fence.name":"Fence / name","oss-twin-adapter-boundary.foot.left":"Record retained","oss-twin-adapter-boundary.foot.right":"State derived","oss-twin-adapter-boundary.inbound.sub":"Inbound / sub","oss-twin-adapter-boundary.inbound.title":"Inbound / title","oss-twin-adapter-boundary.kicker":"Twin instrument","oss-twin-adapter-boundary.nodes.one":"Record","oss-twin-adapter-boundary.nodes.three":"Decision","oss-twin-adapter-boundary.nodes.two":"State","oss-twin-adapter-boundary.outcomes.carried":"Outcomes / carried","oss-twin-adapter-boundary.outcomes.preserved":"Outcomes / preserved","oss-twin-adapter-boundary.outcomes.warning":"Outcomes / warning","oss-twin-adapter-boundary.parts.identification":"Parts / identification","oss-twin-adapter-boundary.parts.properties":"Parts / properties","oss-twin-adapter-boundary.parts.relationships":"Parts / relationships","oss-twin-adapter-boundary.parts.submodels":"Parts / submodels","oss-twin-adapter-boundary.parts.unitQualifier":"Parts / unit Qualifier","oss-twin-adapter-boundary.parts.vendorExtension":"Parts / vendor Extension","oss-twin-adapter-boundary.report.errors":"Report / errors","oss-twin-adapter-boundary.report.errorsNone":"Report / errors None","oss-twin-adapter-boundary.report.warningExtension":"Report / warning Extension","oss-twin-adapter-boundary.report.warningUnit":"Report / warning Unit","oss-twin-adapter-boundary.report.warnings":"Report / warnings","oss-twin-adapter-boundary.rows.four":"Question","oss-twin-adapter-boundary.rows.one":"Record","oss-twin-adapter-boundary.rows.three":"Decision","oss-twin-adapter-boundary.rows.two":"State","oss-twin-adapter-boundary.stages.export":"Stages / export","oss-twin-adapter-boundary.stages.map":"Stages / map","oss-twin-adapter-boundary.stages.parse":"Stages / parse","oss-twin-adapter-boundary.stages.validate":"Stages / validate","oss-twin-adapter-boundary.sub":"A reading made explicit","oss-twin-adapter-boundary.tag":"TWIN","oss-twin-adapter-boundary.title":"Operational memory","oss-twin-adapter-boundary.twin.sub":"A named exchange boundary","oss-twin-adapter-boundary.twin.title":"Adapter boundary","oss-twin-audit-route.chrome.path":"Twin","oss-twin-audit-route.chrome.status":"one query, complete interval","oss-twin-audit-route.chrome.meta":"history written on the day, illustrative","oss-twin-audit-route.upper.name":"the reconstruction route","oss-twin-audit-route.upper.note":"assembled afterwards, from whoever and whatever is left","oss-twin-audit-route.evidence.current-export":"Current export","oss-twin-audit-route.evidence.maintenance-sheet":"Maintenance sheet","oss-twin-audit-route.evidence.ticket-history":"Ticket history","oss-twin-audit-route.evidence.interviews":"Interviews","oss-twin-audit-route.upper.gap":"fifteen-minute gap","oss-twin-audit-route.upper.gapSub":"no source covers it","oss-twin-audit-route.upper.incomplete":"answer incomplete","oss-twin-audit-route.lower.name":"the twin route","oss-twin-audit-route.lower.note":"history written on the day","oss-twin-audit-route.lower.queryLabel":"one TQL question","oss-twin-audit-route.lower.queryText":"what did the asset do in march, and what was known then","oss-twin-audit-route.answer.event-time-state":"event-time state","oss-twin-audit-route.answer.processing-time-knowledge":"processing-time knowledge","oss-twin-audit-route.answer.validity":"validity","oss-twin-audit-route.answer.causation":"causation","oss-twin-audit-route.lower.command":"the operator’s command","oss-twin-audit-route.lower.outcome":"the equipment outcome","oss-twin-audit-route.lower.causeNote":"the same interval, command linked to outcome","oss-twin-audit-route.band.left":"two routes to the same question","oss-twin-audit-route.band.right":"one history, several temporal readings","oss-twin-audit-sources.foot.left":"the old route assembles","oss-twin-audit-sources.foot.right":"Twin reads","oss-twin-audit-sources.kicker.label":"What normally gets assembled","oss-twin-audit-sources.kicker.sub":"and what each source misses","oss-twin-audit-sources.rows.current-export.missing":"past values and timing","oss-twin-audit-sources.rows.current-export.name":"Current export","oss-twin-audit-sources.rows.current-export.replacement":"as-of reconstruction","oss-twin-audit-sources.rows.current-export.useful":"what is true now","oss-twin-audit-sources.rows.interviews.missing":"reliable temporal record","oss-twin-audit-sources.rows.interviews.name":"Interviews","oss-twin-audit-sources.rows.interviews.replacement":"processing-time evidence","oss-twin-audit-sources.rows.interviews.useful":"context","oss-twin-audit-sources.rows.maintenance-sheet.missing":"machine state and causation","oss-twin-audit-sources.rows.maintenance-sheet.name":"Maintenance sheet","oss-twin-audit-sources.rows.maintenance-sheet.replacement":"linked events and notes","oss-twin-audit-sources.rows.maintenance-sheet.useful":"human work notes","oss-twin-audit-sources.rows.ticket-history.missing":"what actually happened","oss-twin-audit-sources.rows.ticket-history.name":"Ticket history","oss-twin-audit-sources.rows.ticket-history.replacement":"intent and outcome","oss-twin-audit-sources.rows.ticket-history.useful":"who was asked","oss-twin-audit-sources.rows.twin-event-history.missing":"nothing must be reconstructed first","oss-twin-audit-sources.rows.twin-event-history.name":"Twin event history","oss-twin-audit-sources.rows.twin-event-history.replacement":"direct query","oss-twin-audit-sources.rows.twin-event-history.useful":"the full operational sequence","oss-twin-audit-sources.shell.accent":"the answer is in the record","oss-twin-audit-sources.shell.body":"When someone asks in July why a March decision was made, the answer must be the March record, not a reconstruction from today's exports. Twin preserves the relevant evidence set with the decision. The question can select what was known then, which rule applied then and which correction arrived later. That keeps a fair review from turning today's knowledge into yesterday's certainty. The response carries its source events and lineage beside the conclusion, so another reviewer can repeat the question instead of trusting the first explanation. A later correction remains visible without taking the March decision out of context.","oss-twin-audit-sources.shell.eyebrow":"Operational memory","oss-twin-audit-sources.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-audit-sources.shell.lead":"Asked in July about March","oss-twin-audit-sources.shell.left":"An audit question can ask for the state of March, the information known on a particular day, or the rule then in force. Twin rebuilds the appropriate reading from retained events instead of asking people to reconstruct it from exports.","oss-twin-audit-sources.shell.leftKicker":"A date selects the evidence","oss-twin-audit-sources.shell.pill1":"ONE HISTORY","oss-twin-audit-sources.shell.pill2":"NO RECONSTRUCTION","oss-twin-audit-sources.shell.pill3":"AS KNOWN THEN","oss-twin-audit-sources.shell.right":"The response keeps its temporal form, source events and lineage visible beside the conclusion. A reviewer can repeat the question and understand why a later correction belongs in one answer but not in another.","oss-twin-audit-sources.shell.rightKicker":"The answer can be examined later","oss-twin-audit-sources.shell.secondaryKicker":"The answer is already in the record","oss-twin-audit-sources.tag":"AUDIT","oss-twin-biz-close-banner.band.left":"history retained","oss-twin-biz-close-banner.band.right":"state derived","oss-twin-biz-close-banner.body":"The record keeps the change, its context and the decision that followed.","oss-twin-biz-close-banner.chrome.meta":"illustrative","oss-twin-biz-close-banner.chrome.path":"Twin","oss-twin-biz-close-banner.chrome.status":"reading complete","oss-twin-biz-close-banner.foot.left":"Record retained","oss-twin-biz-close-banner.foot.right":"State derived","oss-twin-biz-close-banner.kicker":"Twin instrument","oss-twin-biz-close-banner.nodes.one":"Record","oss-twin-biz-close-banner.nodes.three":"Decision","oss-twin-biz-close-banner.nodes.two":"State","oss-twin-biz-close-banner.rows.four":"Question","oss-twin-biz-close-banner.rows.one":"Record","oss-twin-biz-close-banner.rows.three":"Decision","oss-twin-biz-close-banner.rows.two":"State","oss-twin-biz-close-banner.shell.accent":"Keep it while it happens.","oss-twin-biz-close-banner.shell.body":"Twin keeps the event, its context and the decision it supported in one operational record.","oss-twin-biz-close-banner.shell.eyebrow":"The whole argument","oss-twin-biz-close-banner.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-biz-close-banner.shell.lead":"Do not rebuild the past.","oss-twin-biz-close-banner.shell.left":"The event log keeps the fact and the time at which it happened.","oss-twin-biz-close-banner.shell.leftKicker":"The distinction stays visible","oss-twin-biz-close-banner.shell.pill1":"ONE RECORD","oss-twin-biz-close-banner.shell.pill2":"FUTURE QUESTIONS","oss-twin-biz-close-banner.shell.pill3":"ALREADY ANSWERABLE","oss-twin-biz-close-banner.shell.right":"A derived view can stay fast while every historical answer remains traceable.","oss-twin-biz-close-banner.shell.rightKicker":"Why operators need it","oss-twin-biz-close-banner.shell.secondaryKicker":"What this proves","oss-twin-biz-close-banner.sub":"A reading made explicit","oss-twin-biz-close-banner.tag":"TWIN","oss-twin-biz-close-banner.title":"Operational memory","oss-twin-biz-close-banner.banner.eyebrow":"Future questions","oss-twin-biz-close-banner.banner.lead":"Do not rebuild the past.","oss-twin-biz-close-banner.banner.accent":"Keep it while it happens.","oss-twin-biz-close-banner.banner.paragraph1":"A stored event can answer a question nobody knew to ask on the day it was written. The answer still shows what happened, what was known at the time and who or which rule shaped the result.","oss-twin-biz-close-banner.banner.paragraph2":"The same operational memory supports a review, an access decision, a lineage check and a scenario. Those uses share the record; they do not rewrite it for each audience.","oss-twin-biz-close-banner.banner.panelHeader":"One record, several future questions","oss-twin-biz-close-banner.banner.panelTag":"already answerable","oss-twin-biz-close-banner.banner.check1":"What happened","oss-twin-biz-close-banner.banner.check2":"What was known","oss-twin-biz-close-banner.banner.check3":"What counted","oss-twin-biz-close-banner.banner.check4":"Who changed it","oss-twin-biz-close-banner.banner.check5":"Why it remains","oss-twin-biz-close-banner.banner.check6":"Who could read it","oss-twin-biz-close-banner.banner.check7":"Which relationship applied","oss-twin-biz-close-banner.banner.check8":"What produced a value","oss-twin-biz-close-banner.banner.check9":"What another decision would change","oss-twin-biz-close-banner.banner.verdict":"the past remains a query because it was never overwritten","oss-twin-biz-close-banner.banner.footline":"keep the record, derive the state, ask the past directly","oss-twin-biz-close-banner.instrument.question":"What was known when the contractor opened this pump history?","oss-twin-biz-close-banner.instrument.query.label":"TQL question","oss-twin-biz-close-banner.instrument.query.value":"the requested time window","oss-twin-biz-close-banner.instrument.evidence.label":"Evidence set","oss-twin-biz-close-banner.instrument.evidence.value":"the facts known then","oss-twin-biz-close-banner.instrument.lineage.label":"Lineage","oss-twin-biz-close-banner.instrument.lineage.value":"the source of each value","oss-twin-biz-close-banner.instrument.access.label":"Access decision","oss-twin-biz-close-banner.instrument.access.value":"the request and its policy","oss-twin-building-record.band.left":"runtime stays local","oss-twin-building-record.band.middle":"record remains searchable","oss-twin-building-record.band.right":"security export configured","oss-twin-building-record.body":"Twin can run on a single machine or a cluster in the operator's own environment. Its history remains there for as long as the operator needs it.","oss-twin-building-record.chrome.meta":"illustrative","oss-twin-building-record.chrome.path":"Twin","oss-twin-building-record.chrome.status":"local boundary active","oss-twin-building-record.eyebrow":"self-hosted Twin","oss-twin-building-record.title":"Keep the record in your building","oss-twin-building-record.site.label":"operator environment","oss-twin-building-record.site.status":"no outbound runtime","oss-twin-building-record.node.change":"work changes","oss-twin-building-record.node.runtime":"Twin runtime","oss-twin-building-record.node.history":"durable history","oss-twin-building-record.operator":"operator reads and governs locally","oss-twin-building-record.security.label":"security endpoint","oss-twin-building-record.security.note":"only the configured event leaves","oss-twin-building-record.form.single":"single machine","oss-twin-building-record.form.cluster":"cluster","oss-twin-building-record.sub":"A local record","oss-twin-building-record.tag":"TWIN","oss-twin-business-glyph.4632db5b51":"You self-host","oss-twin-business-glyph.837ce864ee":"Operator-controlled infrastructure","oss-twin-business-glyph.870c4d024a":"No vendor lock-in","oss-twin-business-glyph.a92831c31f":"Built in the Netherlands","oss-twin-business-glyph.c25e4733b7":"European by design","oss-twin-business-glyph.c82d1b09cf":"EU","oss-twin-business-glyph.1d197d39c5":"Where it runs","oss-twin-business-glyph.bfc832bb4a":"Less to fear","oss-twin-business-glyph.e2663d1037":"Less to pay","oss-twin-business-glyph.1fd05f076f":"The worry, settled","oss-twin-business-glyph.6b5eb5323e":"Replay ready","oss-twin-business-glyph.9be8668f1d":"Twin procurement board","oss-twin-business-glyph.28fdd72ec1":"Fully isolated","oss-twin-business-glyph.5df2ebe7c0":"Air-gapped","oss-twin-business-glyph.ae1457f05b":"A region you pin","oss-twin-business-glyph.f6fff7f33d":"EU cloud","oss-twin-business-glyph.7c5277c9c8":"Your building","oss-twin-business-glyph.ca84f59176":"On-prem","oss-twin-business-glyph.def21fd81d":"Replay any past moment","oss-twin-business-glyph.e0c5da507d":"Audit an incident","oss-twin-business-glyph.ceafc3f89c":"On-prem, EU cloud, or air-gapped","oss-twin-business-glyph.a4b2edef2b":"Where data lives","oss-twin-business-glyph.b912661c6d":"You self-host, no switch-off","oss-twin-business-glyph.1ef1565eea":"Vendor lock-in","oss-twin-business-glyph.551023f8d2":"Self-hosted, no meter","oss-twin-business-glyph.429e927ea8":"Cloud bill","oss-twin-business-glyph.5a320d9742":"Self-hosted, no seat meter","oss-twin-business-glyph.84246b551e":"Platform subscription","oss-twin-clock-meanings.band.left":"history retained","oss-twin-clock-meanings.band.right":"state derived","oss-twin-clock-meanings.body":"The record keeps the change, its context and the decision that followed.","oss-twin-clock-meanings.chrome.meta":"illustrative","oss-twin-clock-meanings.chrome.path":"Twin","oss-twin-clock-meanings.chrome.status":"reading complete","oss-twin-clock-meanings.col.answers":"Col / answers","oss-twin-clock-meanings.col.example":"Col / example","oss-twin-clock-meanings.col.setBy":"Col / set By","oss-twin-clock-meanings.foot.left":"Record retained","oss-twin-clock-meanings.foot.right":"State derived","oss-twin-clock-meanings.kicker":"Twin instrument","oss-twin-clock-meanings.kicker.label":"Twin","oss-twin-clock-meanings.kicker.sub":"operational record","oss-twin-clock-meanings.nodes.one":"Record","oss-twin-clock-meanings.nodes.three":"Decision","oss-twin-clock-meanings.nodes.two":"State","oss-twin-clock-meanings.rows.causation.answers":"Cause: questions answered","oss-twin-clock-meanings.rows.causation.example":"Cause: example","oss-twin-clock-meanings.rows.causation.name":"Cause: recorded value","oss-twin-clock-meanings.rows.causation.setBy":"Cause: set by","oss-twin-clock-meanings.rows.event.answers":"Event: questions answered","oss-twin-clock-meanings.rows.event.example":"Event: example","oss-twin-clock-meanings.rows.event.name":"Event: recorded value","oss-twin-clock-meanings.rows.event.setBy":"Event: set by","oss-twin-clock-meanings.rows.four":"Question","oss-twin-clock-meanings.rows.one":"Record","oss-twin-clock-meanings.rows.processing.answers":"Processing: questions answered","oss-twin-clock-meanings.rows.processing.example":"Processing: example","oss-twin-clock-meanings.rows.processing.name":"Processing: recorded value","oss-twin-clock-meanings.rows.processing.setBy":"Processing: set by","oss-twin-clock-meanings.rows.three":"Decision","oss-twin-clock-meanings.rows.two":"State","oss-twin-clock-meanings.rows.validity.answers":"Validity: questions answered","oss-twin-clock-meanings.rows.validity.example":"Validity: example","oss-twin-clock-meanings.rows.validity.name":"Validity: recorded value","oss-twin-clock-meanings.rows.validity.setBy":"Validity: set by","oss-twin-clock-meanings.shell.accent":"and when it counts","oss-twin-clock-meanings.shell.body":"A 09:05 reading, a 10:12 arrival and a Friday calibration answer different questions. Twin records all three, so one timestamp never hides the rule that makes the reading count. A late correction can change the current view without changing what was known at 09:05. That distinction gives an operator and a reviewer the same event without forcing either to infer the missing time.","oss-twin-clock-meanings.shell.eyebrow":"Temporal primitive","oss-twin-clock-meanings.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-clock-meanings.shell.lead":"When it happened, when it arrived","oss-twin-clock-meanings.shell.left":"Event time says when the world changed; processing time says when Twin learned it. Validity time says when the value should count, so a delayed report or later rule does not blur the original event. The record does not choose one as shorthand.","oss-twin-clock-meanings.shell.leftKicker":"Three meanings are stored","oss-twin-clock-meanings.shell.pill1":"EVENT TIME","oss-twin-clock-meanings.shell.pill2":"PROCESSING TIME","oss-twin-clock-meanings.shell.pill3":"VALIDITY TIME","oss-twin-clock-meanings.shell.right":"Those dimensions remain separate in storage, projections and analytics. AS_OF, AS_KNOWN and WHILE_VALID can distinguish a late fact, a correction and a future-effective rule without relying on a convention. The chosen clock is part of the query.","oss-twin-clock-meanings.shell.rightKicker":"Queries choose the clock","oss-twin-clock-meanings.shell.secondaryKicker":"Temporal truth is carried","oss-twin-clock-meanings.sub":"A reading made explicit","oss-twin-clock-meanings.tag":"TWIN","oss-twin-clock-meanings.title":"Operational memory","oss-twin-cluster-policy.band.left":"history retained","oss-twin-cluster-policy.band.meta":"placement checked","oss-twin-cluster-policy.band.right":"state derived","oss-twin-cluster-policy.band.text":"Policy follows the event","oss-twin-cluster-policy.body":"The record keeps the change, its context and the decision that followed.","oss-twin-cluster-policy.chrome.meta":"placement checked","oss-twin-cluster-policy.chrome.path":"Twin deployment","oss-twin-cluster-policy.chrome.status":"policy active","oss-twin-cluster-policy.decisions.move.detail":"Water telemetry is limited to the Netherlands.","oss-twin-cluster-policy.decisions.move.title":"Move shard to France","oss-twin-cluster-policy.decisions.move.verdict":"Refused","oss-twin-cluster-policy.decisions.queryGrant.detail":"The contract grant covers this request.","oss-twin-cluster-policy.decisions.queryGrant.title":"Query shared EU assets","oss-twin-cluster-policy.decisions.queryGrant.verdict":"Granted","oss-twin-cluster-policy.decisions.queryStop.detail":"No assignment is active for this asset.","oss-twin-cluster-policy.decisions.queryStop.title":"Read contractor history","oss-twin-cluster-policy.decisions.queryStop.verdict":"Refused","oss-twin-cluster-policy.foot.left":"Record retained","oss-twin-cluster-policy.foot.right":"State derived","oss-twin-cluster-policy.keys.current":"v5 is current","oss-twin-cluster-policy.keys.label":"Key version","oss-twin-cluster-policy.keys.readable":"v3 remains readable","oss-twin-cluster-policy.keys.written":"written under v3","oss-twin-cluster-policy.kicker":"Twin instrument","oss-twin-cluster-policy.nodes.one":"Record","oss-twin-cluster-policy.nodes.sub":"Node","oss-twin-cluster-policy.nodes.three":"Decision","oss-twin-cluster-policy.nodes.two":"State","oss-twin-cluster-policy.rows.four":"Question","oss-twin-cluster-policy.rows.one":"Record","oss-twin-cluster-policy.rows.three":"Decision","oss-twin-cluster-policy.rows.two":"State","oss-twin-cluster-policy.sub":"A reading made explicit","oss-twin-cluster-policy.tag":"TWIN","oss-twin-cluster-policy.tenants.dedicated.name":"Dedicated estate","oss-twin-cluster-policy.tenants.dedicated.rule":"Named nodes","oss-twin-cluster-policy.tenants.group.name":"Regional service","oss-twin-cluster-policy.tenants.group.rule":"EU data zone","oss-twin-cluster-policy.tenants.municipal.name":"Municipal fleet","oss-twin-cluster-policy.tenants.municipal.rule":"Netherlands only","oss-twin-cluster-policy.title":"Operational memory","oss-twin-cluster-policy.zones.nl":"Netherlands","oss-twin-cluster-policy.zones.de":"Germany","oss-twin-cluster-policy.zones.fr":"France","oss-twin-consumer-glyph.acd84b02fb":"You never open it. It just remembers, so things get looked after.","oss-twin-consumer-glyph.0168cc72da":"Quietly looked after","oss-twin-consumer-glyph.4a3d7efc30":"Nothing is ever rubbed out","oss-twin-consumer-glyph.0c75ba4e06":"The lift, today","oss-twin-consumer-glyph.b82c53fffb":"Your parcel","oss-twin-consumer-glyph.9264515cdb":"Your hospital","oss-twin-consumer-glyph.e3f2c52b49":"Your water","oss-twin-consumer-glyph.b008e22d59":"Your lift","oss-twin-consumer-glyph.d8b45ede5d":"Settled down for the night","oss-twin-consumer-glyph.44e5f582ac":"Busy hour, ran smoothly","oss-twin-consumer-glyph.7a828864e6":"A small judder, noted","oss-twin-consumer-glyph.5304007b1f":"Doors checked, all fine","oss-twin-consumer-glyph.08bf288e0f":"First trip of the morning","oss-twin-cycle.band.left":"history retained","oss-twin-cycle.band.right":"state derived","oss-twin-cycle.body":"The record keeps the change, its context and the decision that followed.","oss-twin-cycle.chrome.meta":"illustrative","oss-twin-cycle.chrome.path":"Twin","oss-twin-cycle.chrome.status":"reading complete","oss-twin-cycle.foot.left":"Record retained","oss-twin-cycle.foot.right":"State derived","oss-twin-cycle.kicker":"Twin instrument","oss-twin-cycle.nodes.one":"Record","oss-twin-cycle.nodes.three":"Decision","oss-twin-cycle.nodes.two":"State","oss-twin-cycle.rows.four":"Question","oss-twin-cycle.rows.one":"Record","oss-twin-cycle.rows.three":"Decision","oss-twin-cycle.rows.two":"State","oss-twin-cycle.shell.accent":"an event states what happened","oss-twin-cycle.shell.body":"A request is an intention, not a fact. Twin checks it against the aggregate, policy and expected version; only accepted commands append events, and state is rebuilt from those events. A refused command leaves no event behind.","oss-twin-cycle.shell.eyebrow":"Event-sourcing cycle","oss-twin-cycle.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-cycle.shell.lead":"A command asks","oss-twin-cycle.shell.left":"A command can be refused, remain unanswered or lead to a different accepted value. Only appended events change the aggregate, so the record does not invent a tidy causal link where one does not exist. A refused command appends nothing.","oss-twin-cycle.shell.leftKicker":"Intent is not fact","oss-twin-cycle.shell.pill1":"COMMAND","oss-twin-cycle.shell.pill2":"VALIDATION","oss-twin-cycle.shell.pill3":"EVENT","oss-twin-cycle.shell.pill4":"DERIVED STATE","oss-twin-cycle.shell.right":"Each command is checked against an expected aggregate version before it appends. A competing writer must reconstruct the newer state and try again, while replay applies the facts already recorded instead of judging them by today’s rules.","oss-twin-cycle.shell.rightKicker":"Versioning keeps writers honest","oss-twin-cycle.shell.secondaryKicker":"The write boundary is clear","oss-twin-cycle.sub":"A reading made explicit","oss-twin-cycle.tag":"TWIN","oss-twin-cycle.title":"Operational memory","oss-twin-decision-pack.band.left":"history retained","oss-twin-decision-pack.band.right":"state derived","oss-twin-decision-pack.body":"The record keeps the change, its context and the decision that followed.","oss-twin-decision-pack.chrome.meta":"illustrative","oss-twin-decision-pack.chrome.path":"Twin","oss-twin-decision-pack.chrome.status":"reading complete","oss-twin-decision-pack.foot.left":"Record retained","oss-twin-decision-pack.foot.right":"State derived","oss-twin-decision-pack.kicker":"Twin instrument","oss-twin-decision-pack.nodes.one":"Record","oss-twin-decision-pack.nodes.three":"Decision","oss-twin-decision-pack.nodes.two":"State","oss-twin-decision-pack.rows.four":"Question","oss-twin-decision-pack.rows.one":"Record","oss-twin-decision-pack.rows.three":"Decision","oss-twin-decision-pack.rows.two":"State","oss-twin-decision-pack.sub":"A reading made explicit","oss-twin-decision-pack.tag":"TWIN","oss-twin-decision-pack.title":"Operational memory","oss-twin-deployment-growth.band.left":"history retained","oss-twin-deployment-growth.band.right":"state derived","oss-twin-deployment-growth.body":"The record keeps the change, its context and the decision that followed.","oss-twin-deployment-growth.chrome.meta":"illustrative","oss-twin-deployment-growth.chrome.path":"Twin","oss-twin-deployment-growth.chrome.status":"reading complete","oss-twin-deployment-growth.foot.left":"Record retained","oss-twin-deployment-growth.foot.right":"State derived","oss-twin-deployment-growth.kicker":"Twin instrument","oss-twin-deployment-growth.nodes.one":"Record","oss-twin-deployment-growth.nodes.three":"Decision","oss-twin-deployment-growth.nodes.two":"State","oss-twin-deployment-growth.rows.four":"Question","oss-twin-deployment-growth.rows.one":"Record","oss-twin-deployment-growth.rows.three":"Decision","oss-twin-deployment-growth.rows.two":"State","oss-twin-deployment-growth.sub":"A reading made explicit","oss-twin-deployment-growth.tag":"TWIN","oss-twin-deployment-growth.title":"Operational memory","oss-twin-deployment-postures.band.left":"history retained","oss-twin-deployment-postures.band.right":"state derived","oss-twin-deployment-postures.body":"The record keeps the change, its context and the decision that followed.","oss-twin-deployment-postures.chrome.meta":"illustrative","oss-twin-deployment-postures.chrome.path":"Twin","oss-twin-deployment-postures.chrome.status":"reading complete","oss-twin-deployment-postures.foot.left":"Record retained","oss-twin-deployment-postures.foot.right":"State derived","oss-twin-deployment-postures.kicker":"Twin instrument","oss-twin-deployment-postures.nodes.one":"Record","oss-twin-deployment-postures.nodes.three":"Decision","oss-twin-deployment-postures.nodes.two":"State","oss-twin-deployment-postures.rows.four":"Question","oss-twin-deployment-postures.rows.one":"Record","oss-twin-deployment-postures.rows.three":"Decision","oss-twin-deployment-postures.rows.two":"State","oss-twin-deployment-postures.shell.accent":"from one machine to a cluster","oss-twin-deployment-postures.shell.body":"Keeping history on your own estate is a deployment choice, not a promise that infrastructure disappears. Twin can start on one machine and grow to a cluster under your release and residency controls. Growth is an operations decision rather than a migration: the same history, governance rules and query language travel from one machine to a cluster. Placement stays visible to the operator at every step.","oss-twin-deployment-postures.shell.eyebrow":"Self-hosted operation","oss-twin-deployment-postures.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-deployment-postures.shell.lead":"The history stays on your estate","oss-twin-deployment-postures.shell.left":"Twin can run on a local server, a site cluster or a wider distributed deployment that the operator controls. The organisation chooses the stores, regions, backups and security destinations around its own operational record. No provider account becomes the hidden control point.","oss-twin-deployment-postures.shell.leftKicker":"The estate defines the placement","oss-twin-deployment-postures.shell.pill1":"SELF-HOSTED","oss-twin-deployment-postures.shell.pill2":"ONE NODE TO CLUSTER","oss-twin-deployment-postures.shell.pill3":"YOU RELEASE","oss-twin-deployment-postures.shell.right":"Adding nodes, caches or shards does not require a new event schema, type registry or query language. The same history and governance rules travel from one machine to a cluster, with placement still visible to the operator. The operator still sees where each record sits.","oss-twin-deployment-postures.shell.rightKicker":"The model stays the same as it grows","oss-twin-deployment-postures.shell.secondaryKicker":"The record stays on the operator’s estate","oss-twin-deployment-postures.sub":"A reading made explicit","oss-twin-deployment-postures.tag":"TWIN","oss-twin-deployment-postures.title":"Operational memory","oss-twin-domain-value.band.left":"history retained","oss-twin-domain-value.band.right":"state derived","oss-twin-domain-value.body":"The record keeps the change, its context and the decision that followed.","oss-twin-domain-value.chrome.meta":"illustrative","oss-twin-domain-value.chrome.path":"Twin","oss-twin-domain-value.chrome.status":"reading complete","oss-twin-domain-value.foot.left":"Record retained","oss-twin-domain-value.foot.right":"State derived","oss-twin-domain-value.kicker":"Twin instrument","oss-twin-domain-value.nodes.one":"Record","oss-twin-domain-value.nodes.three":"Decision","oss-twin-domain-value.nodes.two":"State","oss-twin-domain-value.rows.four":"Question","oss-twin-domain-value.rows.one":"Record","oss-twin-domain-value.rows.three":"Decision","oss-twin-domain-value.rows.two":"State","oss-twin-domain-value.shell.accent":"not an empty twin canvas","oss-twin-domain-value.shell.body":"A twin earns its place by answering a real domain question, from a care pathway to a counter-UAS response. Twin starts with those behaviours and records the evidence behind the answer.","oss-twin-domain-value.shell.eyebrow":"Domain starting points","oss-twin-domain-value.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-domain-value.shell.lead":"Begin with domain behaviour","oss-twin-domain-value.shell.left":"A clinical observation, a counter-UAS assessment and an industrial command can carry their own types, relationships and refusal rules. Twin does not make those systems fit a blank generic canvas before it can preserve what happened. The refusal rules come with the domain too.","oss-twin-domain-value.shell.leftKicker":"Rules come with the domain","oss-twin-domain-value.shell.pill1":"MEDICAL","oss-twin-domain-value.shell.pill2":"COUNTER-UAS","oss-twin-domain-value.shell.pill3":"OPC UA","oss-twin-domain-value.shell.pill4":"LIVE TWIN","oss-twin-domain-value.shell.right":"Different domains still use the same events, provenance, temporal readings and scenario mechanics. That makes an accepted assessment, a refused medication and a simulated pump outcome comparable as accountable operational records.","oss-twin-domain-value.shell.rightKicker":"One record system joins the work","oss-twin-domain-value.shell.secondaryKicker":"The platform begins with real behaviour","oss-twin-domain-value.sub":"A reading made explicit","oss-twin-domain-value.tag":"TWIN","oss-twin-domain-value.title":"Operational memory","oss-twin-door-validation.band.left":"history retained","oss-twin-door-validation.band.right":"state derived","oss-twin-door-validation.body":"The record keeps the change, its context and the decision that followed.","oss-twin-door-validation.chrome.meta":"illustrative","oss-twin-door-validation.chrome.path":"Twin","oss-twin-door-validation.chrome.status":"reading complete","oss-twin-door-validation.foot.left":"Record retained","oss-twin-door-validation.foot.right":"State derived","oss-twin-door-validation.kicker":"Twin instrument","oss-twin-door-validation.nodes.one":"Record","oss-twin-door-validation.nodes.three":"Decision","oss-twin-door-validation.nodes.two":"State","oss-twin-door-validation.rows.four":"Question","oss-twin-door-validation.rows.one":"Record","oss-twin-door-validation.rows.three":"Decision","oss-twin-door-validation.rows.two":"State","oss-twin-door-validation.sub":"A reading made explicit","oss-twin-door-validation.tag":"TWIN","oss-twin-door-validation.title":"Operational memory","oss-twin-eng-close-banner.band.left":"history retained","oss-twin-eng-close-banner.band.right":"state derived","oss-twin-eng-close-banner.body":"The record keeps the change, its context and the decision that followed.","oss-twin-eng-close-banner.chrome.meta":"illustrative","oss-twin-eng-close-banner.chrome.path":"Twin","oss-twin-eng-close-banner.chrome.status":"reading complete","oss-twin-eng-close-banner.foot.left":"Record retained","oss-twin-eng-close-banner.foot.right":"State derived","oss-twin-eng-close-banner.kicker":"Twin instrument","oss-twin-eng-close-banner.nodes.one":"Record","oss-twin-eng-close-banner.nodes.three":"Decision","oss-twin-eng-close-banner.nodes.two":"State","oss-twin-eng-close-banner.rows.four":"Question","oss-twin-eng-close-banner.rows.one":"Record","oss-twin-eng-close-banner.rows.three":"Decision","oss-twin-eng-close-banner.rows.two":"State","oss-twin-eng-close-banner.shell.accent":"The state is a reading of it.","oss-twin-eng-close-banner.shell.body":"Twin keeps the event, its context and the decision it supported in one operational record.","oss-twin-eng-close-banner.shell.eyebrow":"The whole argument","oss-twin-eng-close-banner.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-eng-close-banner.shell.lead":"The record is not the state.","oss-twin-eng-close-banner.shell.left":"The event log keeps the fact and the time at which it happened.","oss-twin-eng-close-banner.shell.leftKicker":"The distinction stays visible","oss-twin-eng-close-banner.shell.pill1":"ONE RECORD","oss-twin-eng-close-banner.shell.pill2":"DERIVED STATE","oss-twin-eng-close-banner.shell.pill3":"ASK THE PAST","oss-twin-eng-close-banner.shell.right":"A derived view can stay fast while every historical answer remains traceable.","oss-twin-eng-close-banner.shell.rightKicker":"Why operators need it","oss-twin-eng-close-banner.shell.secondaryKicker":"What this proves","oss-twin-eng-close-banner.sub":"A reading made explicit","oss-twin-eng-close-banner.tag":"TWIN","oss-twin-eng-close-banner.title":"Operational memory","oss-twin-eng-close-banner.banner.eyebrow":"One event-sourced platform","oss-twin-eng-close-banner.banner.lead":"The record is not the state.","oss-twin-eng-close-banner.banner.accent":"The state is a reading of it.","oss-twin-eng-close-banner.banner.paragraph1":"The event log is the durable account of what changed and why. Projections, relationship views and APIs are useful readings of that account, each shaped for a particular question.","oss-twin-eng-close-banner.banner.paragraph2":"A view can be rebuilt, replaced or allowed to lag without rewriting the record beneath it. That keeps daily operations quick and leaves a state, decision or result explainable later.","oss-twin-eng-close-banner.banner.panelHeader":"One event-sourced platform","oss-twin-eng-close-banner.banner.panelTag":"operational memory","oss-twin-eng-close-banner.banner.check1":"Three-dimensional time","oss-twin-eng-close-banner.banner.check2":"Commands and events","oss-twin-eng-close-banner.banner.check3":"Derived state","oss-twin-eng-close-banner.banner.check4":"Typed relationships","oss-twin-eng-close-banner.banner.check5":"Branch and compare","oss-twin-eng-close-banner.banner.check6":"Provenance and retention","oss-twin-eng-close-banner.banner.check7":"Standards adapters","oss-twin-eng-close-banner.banner.check8":"Sandboxed plugins","oss-twin-eng-close-banner.banner.check9":"Policy-driven security","oss-twin-eng-close-banner.banner.check10":"Self-hosted distribution","oss-twin-eng-close-banner.banner.verdict":"current state stays fast because it is derived; history stays askable because it is kept","oss-twin-eng-close-banner.banner.footline":"keep the record, derive the state, ask the past directly","oss-twin-eng-close-banner.instrument.record":"One event stream","oss-twin-eng-close-banner.instrument.recordNote":"the only durable record","oss-twin-eng-close-banner.instrument.rebuild":"Delete and rebuild","oss-twin-eng-close-banner.instrument.walk":"Walk a relationship","oss-twin-eng-close-banner.instrument.query":"Ask a past question","oss-twin-eng-close-banner.instrument.replay":"Replay one result","oss-twin-existing-models.band.left":"history retained","oss-twin-existing-models.band.right":"state derived","oss-twin-existing-models.body":"The record keeps the change, its context and the decision that followed.","oss-twin-existing-models.chrome.meta":"illustrative","oss-twin-existing-models.chrome.path":"Twin","oss-twin-existing-models.chrome.status":"reading complete","oss-twin-existing-models.foot.left":"Record retained","oss-twin-existing-models.foot.right":"State derived","oss-twin-existing-models.kicker":"Twin instrument","oss-twin-existing-models.nodes.one":"Record","oss-twin-existing-models.nodes.three":"Decision","oss-twin-existing-models.nodes.two":"State","oss-twin-existing-models.rows.four":"Question","oss-twin-existing-models.rows.one":"Record","oss-twin-existing-models.rows.three":"Decision","oss-twin-existing-models.rows.two":"State","oss-twin-existing-models.sub":"A reading made explicit","oss-twin-existing-models.tag":"TWIN","oss-twin-existing-models.title":"Operational memory","oss-twin-fair-page.band.left":"history retained","oss-twin-fair-page.band.right":"state derived","oss-twin-fair-page.body":"The record keeps the change, its context and the decision that followed.","oss-twin-fair-page.chrome.meta":"illustrative","oss-twin-fair-page.chrome.path":"Twin","oss-twin-fair-page.chrome.status":"reading complete","oss-twin-fair-page.foot.left":"Record retained","oss-twin-fair-page.foot.right":"State derived","oss-twin-fair-page.footline.left":"Footline / left","oss-twin-fair-page.footline.right":"Footline / right","oss-twin-fair-page.kicker":"Twin instrument","oss-twin-fair-page.kicker.label":"Twin","oss-twin-fair-page.kicker.sub":"operational record","oss-twin-fair-page.nodes.one":"Record","oss-twin-fair-page.nodes.three":"Decision","oss-twin-fair-page.nodes.two":"State","oss-twin-fair-page.rows.four":"Question","oss-twin-fair-page.rows.one":"Record","oss-twin-fair-page.rows.three":"Decision","oss-twin-fair-page.rows.two":"State","oss-twin-fair-page.shell.accent":"on Wednesday’s page","oss-twin-fair-page.shell.body":"A person can only act on information that had reached them at the time. Twin keeps later facts, but it does not put Friday's news onto Wednesday's page. The Wednesday page holds only what had reached it by Wednesday, and the Friday line is added where it belongs instead of moving the earlier one. Both dates stay readable, so a reviewer can also see when the organisation learned it.","oss-twin-fair-page.shell.eyebrow":"No hindsight","oss-twin-fair-page.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-fair-page.shell.lead":"Wednesday's decision is judged","oss-twin-fair-page.shell.left":"Twin records when something happened and when it entered the page as separate dates. The Wednesday reading contains only information that had arrived by then, even if a Friday line later explains Tuesday more fully. The two dates are stored separately.","oss-twin-fair-page.shell.leftKicker":"Wednesday stops on Wednesday","oss-twin-fair-page.shell.pill1":"EVENT TIME","oss-twin-fair-page.shell.pill2":"ARRIVAL TIME","oss-twin-fair-page.shell.pill3":"NO HINDSIGHT","oss-twin-fair-page.shell.right":"The later fact improves the current account without rewriting the earlier decision. Showing both readings protects people from hindsight and can also reveal that important information reached the organisation too late. The page makes both dates readable.","oss-twin-fair-page.shell.rightKicker":"Friday stays visible too","oss-twin-fair-page.shell.secondaryKicker":"Two dates make the review fair","oss-twin-fair-page.stamp.bottom":"Stamp / bottom","oss-twin-fair-page.stamp.top":"Stamp / top","oss-twin-fair-page.sub":"A reading made explicit","oss-twin-fair-page.tag":"TWIN","oss-twin-fair-page.title":"Operational memory","oss-twin-fair-page.visual.stamp.top":"Tuesday / now","oss-twin-fair-page.visual.stamp.bottom":"Wednesday / then","oss-twin-fair-page.visual.kicker.label":"One decision","oss-twin-fair-page.visual.kicker.sub":"two honest pages","oss-twin-fair-page.visual.tag":"plain","oss-twin-fair-page.visual.field.includes":"Includes","oss-twin-fair-page.visual.field.excludes":"Excludes","oss-twin-fair-page.visual.field.answers":"Answers","oss-twin-fair-page.visual.footline.left":"decision fair as known then","oss-twin-fair-page.visual.footline.right":"later truth retained","oss-twin-fair-page.view.now.name":"Tuesday, understood now","oss-twin-fair-page.view.now.includes":"Wednesday page and Friday arrival","oss-twin-fair-page.view.now.excludes":"Nothing later","oss-twin-fair-page.view.now.answers":"What do we understand about Tuesday now?","oss-twin-fair-page.view.wednesday.name":"Wednesday, as known","oss-twin-fair-page.view.wednesday.includes":"Only the evidence present Wednesday","oss-twin-fair-page.view.wednesday.excludes":"Friday arrival","oss-twin-fair-page.view.wednesday.answers":"Was the sign-off fair at the time?","oss-twin-four-reasons.band.left":"history retained","oss-twin-four-reasons.band.right":"state derived","oss-twin-four-reasons.body":"The record keeps the change, its context and the decision that followed.","oss-twin-four-reasons.chrome.meta":"illustrative","oss-twin-four-reasons.chrome.path":"Twin","oss-twin-four-reasons.chrome.status":"reading complete","oss-twin-four-reasons.foot.left":"Record retained","oss-twin-four-reasons.foot.right":"State derived","oss-twin-four-reasons.kicker":"Twin instrument","oss-twin-four-reasons.nodes.one":"Record","oss-twin-four-reasons.nodes.three":"Decision","oss-twin-four-reasons.nodes.two":"State","oss-twin-four-reasons.rows.four":"Question","oss-twin-four-reasons.rows.one":"Record","oss-twin-four-reasons.rows.three":"Decision","oss-twin-four-reasons.rows.two":"State","oss-twin-four-reasons.sub":"A reading made explicit","oss-twin-four-reasons.tag":"TWIN","oss-twin-four-reasons.title":"Operational memory","oss-twin-hero-glyph.7d9bb5faca":"EventLog","oss-twin-hero-glyph.ad8919ace0":"Event","oss-twin-hero-glyph.b6ba0db1f8":"Fold","oss-twin-hero-glyph.932bc0bc1a":"// append-only log is the system of record","oss-twin-hero-glyph.cffa2af0a3":"Reading","oss-twin-hero-glyph.39efd18e0f":"seq #0005 committed","oss-twin-hero-glyph.53477cd8d5":"// current state is a fold over the log","oss-twin-hero-glyph.d800be0a29":"Chiller","oss-twin-hero-glyph.856a0120f8":"status: Running, v5","oss-twin-hero-glyph.3cc58bd4e4":"// replay a prefix to recover a past state","oss-twin-hero-glyph.754e70f565":"status: Cooling","oss-twin-hero-glyph.73989d9c59":"Running","oss-twin-hero-glyph.e2ae20d9ae":"Rust","oss-twin-hero-glyph.8baf2c1d74":"Folded state","oss-twin-hero-glyph.572fd6bf3a":"Event log","oss-twin-hero-glyph.aa802d717e":"append, fold, replay","oss-twin-hero-glyph.6b5eb5323e":"Append-only history","oss-twin-intent-outcome.band.left":"history retained","oss-twin-intent-outcome.band.right":"state derived","oss-twin-intent-outcome.body":"The record keeps the change, its context and the decision that followed.","oss-twin-intent-outcome.chrome.meta":"illustrative","oss-twin-intent-outcome.chrome.path":"Twin","oss-twin-intent-outcome.chrome.status":"reading complete","oss-twin-intent-outcome.foot.left":"Record retained","oss-twin-intent-outcome.foot.right":"State derived","oss-twin-intent-outcome.kicker":"Twin instrument","oss-twin-intent-outcome.nodes.one":"Record","oss-twin-intent-outcome.nodes.three":"Decision","oss-twin-intent-outcome.nodes.two":"State","oss-twin-intent-outcome.rows.four":"Question","oss-twin-intent-outcome.rows.one":"Record","oss-twin-intent-outcome.rows.three":"Decision","oss-twin-intent-outcome.rows.two":"State","oss-twin-intent-outcome.sub":"A reading made explicit","oss-twin-intent-outcome.tag":"TWIN","oss-twin-intent-outcome.title":"Operational memory","oss-twin-late-business.foot.left":"one event","oss-twin-late-business.foot.right":"several legitimate business questions","oss-twin-late-business.kicker.label":"What the two dates settle","oss-twin-late-business.kicker.sub":"without interpretation later","oss-twin-late-business.rows.correction-counts.clock":"validity time","oss-twin-late-business.rows.correction-counts.finding":"current accepted state","oss-twin-late-business.rows.correction-counts.owner":"data or policy owner","oss-twin-late-business.rows.correction-counts.question":"When should the correction count","oss-twin-late-business.rows.decision-fair.clock":"processing-time set","oss-twin-late-business.rows.decision-fair.finding":"no-hindsight review","oss-twin-late-business.rows.decision-fair.owner":"governance or assurance","oss-twin-late-business.rows.decision-fair.question":"Was Wednesday’s decision fair","oss-twin-late-business.rows.fault-happened.clock":"event time","oss-twin-late-business.rows.fault-happened.finding":"asset or process condition","oss-twin-late-business.rows.fault-happened.owner":"operations or engineering","oss-twin-late-business.rows.fault-happened.question":"When did the fault happen","oss-twin-late-business.rows.organisation-knew.clock":"processing time","oss-twin-late-business.rows.organisation-knew.finding":"reporting and response delay","oss-twin-late-business.rows.organisation-knew.owner":"control or communications","oss-twin-late-business.rows.organisation-knew.question":"When did the organisation know","oss-twin-late-business.shell.accent":"remains both facts at once","oss-twin-late-business.shell.body":"A Tuesday fault reported on Friday creates two facts: when it occurred and when the organisation learned it. Keeping both prevents fair review from becoming hindsight. The delay itself can become an operational signal without changing the incident date. A manager can ask what was knowable on Tuesday and what action was possible on Friday. Neither date is overwritten when the other arrives, so a review of one fault can also become evidence about the process that delivered it.","oss-twin-late-business.shell.eyebrow":"Late-data visibility","oss-twin-late-business.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-late-business.shell.lead":"A Tuesday fault reported Friday","oss-twin-late-business.shell.left":"A Tuesday fault reported on Friday is not a contradiction in the record. Twin keeps the time the fault happened and the time the organisation received it, so neither the incident nor the reporting delay is erased.","oss-twin-late-business.shell.leftKicker":"The fault and report differ","oss-twin-late-business.shell.pill1":"TUESDAY EVENT","oss-twin-late-business.shell.pill2":"FRIDAY ARRIVAL","oss-twin-late-business.shell.pill3":"BOTH RETAINED","oss-twin-late-business.shell.right":"The record can show what was known before Friday and what is understood now. It can also reveal patterns in late reporting, turning a review of one fault into evidence about the process that delivered it.","oss-twin-late-business.shell.rightKicker":"Delay is an operational signal","oss-twin-late-business.shell.secondaryKicker":"Two dates remain true","oss-twin-late-business.tag":"TEMPORAL","oss-twin-late-notification.band.left":"history retained","oss-twin-late-notification.band.right":"state derived","oss-twin-late-notification.body":"The record keeps the change, its context and the decision that followed.","oss-twin-late-notification.chrome.meta":"illustrative","oss-twin-late-notification.chrome.path":"Twin","oss-twin-late-notification.chrome.status":"reading complete","oss-twin-late-notification.faults.four":"Faults / four","oss-twin-late-notification.faults.one":"Faults / one","oss-twin-late-notification.faults.three":"Faults / three","oss-twin-late-notification.faults.two":"Faults / two","oss-twin-late-notification.foot.left":"Record retained","oss-twin-late-notification.foot.right":"State derived","oss-twin-late-notification.kicker":"Twin instrument","oss-twin-late-notification.late.chip":"Late / chip","oss-twin-late-notification.legend.arrived":"Legend / arrived","oss-twin-late-notification.legend.due":"Legend / due","oss-twin-late-notification.legend.happened":"Legend / happened","oss-twin-late-notification.nodes.one":"Record","oss-twin-late-notification.nodes.three":"Decision","oss-twin-late-notification.nodes.two":"State","oss-twin-late-notification.outputs.count.note":"Outputs / count / note","oss-twin-late-notification.outputs.count.title":"Outputs / count / title","oss-twin-late-notification.outputs.delay.note":"Outputs / delay / note","oss-twin-late-notification.outputs.delay.title":"Outputs / delay / title","oss-twin-late-notification.outputs.signoff.excludes":"Outputs / signoff / excludes","oss-twin-late-notification.outputs.signoff.includes":"Outputs / signoff / includes","oss-twin-late-notification.outputs.signoff.note":"Outputs / signoff / note","oss-twin-late-notification.outputs.signoff.title":"Outputs / signoff / title","oss-twin-late-notification.rows.four":"Question","oss-twin-late-notification.rows.one":"Record","oss-twin-late-notification.rows.three":"Decision","oss-twin-late-notification.rows.two":"State","oss-twin-late-notification.sub":"A reading made explicit","oss-twin-late-notification.tag":"TWIN","oss-twin-late-notification.title":"Operational memory","oss-twin-late-notification.weeks.four":"Weeks / four","oss-twin-late-notification.weeks.one":"Weeks / one","oss-twin-late-notification.weeks.three":"Weeks / three","oss-twin-late-notification.weeks.two":"Weeks / two","oss-twin-late-notification.windows.inside":"Windows / inside","oss-twin-late-placement.band.left":"history retained","oss-twin-late-placement.band.right":"state derived","oss-twin-late-placement.body":"The record keeps the change, its context and the decision that followed.","oss-twin-late-placement.chrome.meta":"illustrative","oss-twin-late-placement.chrome.path":"Twin","oss-twin-late-placement.chrome.status":"reading complete","oss-twin-late-placement.foot.left":"Record retained","oss-twin-late-placement.foot.right":"State derived","oss-twin-late-placement.kicker":"Twin instrument","oss-twin-late-placement.nodes.one":"Record","oss-twin-late-placement.nodes.three":"Decision","oss-twin-late-placement.nodes.two":"State","oss-twin-late-placement.rows.four":"Question","oss-twin-late-placement.rows.one":"Record","oss-twin-late-placement.rows.three":"Decision","oss-twin-late-placement.rows.two":"State","oss-twin-late-placement.shell.accent":"and still belongs to Tuesday","oss-twin-late-placement.shell.body":"A correction received on Friday can still describe Tuesday. Twin retains its arrival as evidence while placing it where event and validity questions need it: in Tuesday's history. The arrival date stays available as a measurable delay, and a historical answer deliberately excludes what was learned afterwards. That is what keeps a Friday correction from becoming a Friday event.","oss-twin-late-placement.shell.eyebrow":"Bitemporal placement","oss-twin-late-placement.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-late-placement.shell.lead":"The correction arrives on Friday","oss-twin-late-placement.shell.left":"A correction discovered on Friday can describe Tuesday without becoming a Friday event. Twin keeps the arrival date as processing time and places the fact where it belongs for event and validity questions.","oss-twin-late-placement.shell.leftKicker":"Friday is evidence too","oss-twin-late-placement.shell.pill1":"LATE DATA","oss-twin-late-placement.shell.pill2":"EVENT-TIME PLACEMENT","oss-twin-late-placement.shell.pill3":"DELAY KEPT","oss-twin-late-placement.shell.right":"Storage narrows by subject, type and time, but the selected temporal boundary still rules. A historical answer excludes future knowledge deliberately, while the reporting delay remains available as a measurable operational signal.","oss-twin-late-placement.shell.rightKicker":"Reconstruction has a boundary","oss-twin-late-placement.shell.secondaryKicker":"Late evidence stays useful","oss-twin-late-placement.sub":"A reading made explicit","oss-twin-late-placement.tag":"TWIN","oss-twin-late-placement.title":"Operational memory","oss-twin-lineage-fields.band.left":"history retained","oss-twin-lineage-fields.band.right":"state derived","oss-twin-lineage-fields.body":"The record keeps the change, its context and the decision that followed.","oss-twin-lineage-fields.chrome.meta":"illustrative","oss-twin-lineage-fields.chrome.path":"Twin","oss-twin-lineage-fields.chrome.status":"reading complete","oss-twin-lineage-fields.foot.left":"Record retained","oss-twin-lineage-fields.foot.right":"State derived","oss-twin-lineage-fields.kicker":"Twin instrument","oss-twin-lineage-fields.nodes.one":"Record","oss-twin-lineage-fields.nodes.three":"Decision","oss-twin-lineage-fields.nodes.two":"State","oss-twin-lineage-fields.rows.four":"Question","oss-twin-lineage-fields.rows.one":"Record","oss-twin-lineage-fields.rows.three":"Decision","oss-twin-lineage-fields.rows.two":"State","oss-twin-lineage-fields.shell.accent":"its own provenance graph","oss-twin-lineage-fields.shell.body":"A derived maintenance value is only useful when its source and transformation can be checked. Twin carries origin, classification and retention alongside the value. A provenance edge that would create a cycle is refused, so following a value backwards always reaches a real origin.","oss-twin-lineage-fields.shell.eyebrow":"Origins, transformations and touches","oss-twin-lineage-fields.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-lineage-fields.shell.lead":"A derived value keeps","oss-twin-lineage-fields.shell.left":"A derived value retains the sources, transformations and decisions that produced it. Twin refuses a provenance edge that would create a cycle, so following the value backward eventually reaches a real origin.","oss-twin-lineage-fields.shell.leftKicker":"Derivation is a graph","oss-twin-lineage-fields.shell.pill1":"ORIGIN","oss-twin-lineage-fields.shell.pill2":"TRANSFORMATION","oss-twin-lineage-fields.shell.pill3":"CLASSIFIED","oss-twin-lineage-fields.shell.pill4":"RETENTION","oss-twin-lineage-fields.shell.right":"Classification, retention and audit touches remain distinct from derivation but travel with the value. That lets a reviewer see both why a result exists and how it must be read, protected or retained.","oss-twin-lineage-fields.shell.rightKicker":"Handling follows along","oss-twin-lineage-fields.shell.secondaryKicker":"A value carries its handling","oss-twin-lineage-fields.sub":"A reading made explicit","oss-twin-lineage-fields.tag":"TWIN","oss-twin-lineage-fields.title":"Operational memory","oss-twin-maintenance-lineage.band.left":"history retained","oss-twin-maintenance-lineage.band.right":"state derived","oss-twin-maintenance-lineage.body":"The record keeps the change, its context and the decision that followed.","oss-twin-maintenance-lineage.chrome.meta":"illustrative","oss-twin-maintenance-lineage.chrome.path":"Twin","oss-twin-maintenance-lineage.chrome.status":"reading complete","oss-twin-maintenance-lineage.foot.left":"Record retained","oss-twin-maintenance-lineage.foot.right":"State derived","oss-twin-maintenance-lineage.kicker":"Twin instrument","oss-twin-maintenance-lineage.nodes.one":"Record","oss-twin-maintenance-lineage.nodes.three":"Decision","oss-twin-maintenance-lineage.nodes.two":"State","oss-twin-maintenance-lineage.rows.four":"Question","oss-twin-maintenance-lineage.rows.one":"Record","oss-twin-maintenance-lineage.rows.three":"Decision","oss-twin-maintenance-lineage.rows.two":"State","oss-twin-maintenance-lineage.sub":"A reading made explicit","oss-twin-maintenance-lineage.tag":"TWIN","oss-twin-maintenance-lineage.title":"Operational memory","oss-twin-notebook-day.band.left":"history retained","oss-twin-notebook-day.band.right":"state derived","oss-twin-notebook-day.body":"The record keeps the change, its context and the decision that followed.","oss-twin-notebook-day.chrome.meta":"illustrative","oss-twin-notebook-day.chrome.path":"Twin","oss-twin-notebook-day.chrome.status":"reading complete","oss-twin-notebook-day.current.keep":"Current / keep","oss-twin-notebook-day.current.kicker":"Current / kicker","oss-twin-notebook-day.current.note":"Current / note","oss-twin-notebook-day.current.state":"Current / state","oss-twin-notebook-day.foot.left":"Record retained","oss-twin-notebook-day.foot.right":"State derived","oss-twin-notebook-day.kicker":"Twin instrument","oss-twin-notebook-day.link.label":"Link / label","oss-twin-notebook-day.nodes.one":"Record","oss-twin-notebook-day.nodes.three":"Decision","oss-twin-notebook-day.nodes.two":"State","oss-twin-notebook-day.page.chip":"Page / chip","oss-twin-notebook-day.rows.four":"Question","oss-twin-notebook-day.rows.one":"Record","oss-twin-notebook-day.rows.three":"Decision","oss-twin-notebook-day.rows.two":"State","oss-twin-notebook-day.shell.accent":"Do not rebuild it from memory.","oss-twin-notebook-day.shell.body":"Twin keeps the event, its context and the decision it supported in one operational record.","oss-twin-notebook-day.shell.eyebrow":"Going back","oss-twin-notebook-day.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-notebook-day.shell.lead":"Read the day.","oss-twin-notebook-day.shell.left":"The event log keeps the fact and the time at which it happened.","oss-twin-notebook-day.shell.leftKicker":"The distinction stays visible","oss-twin-notebook-day.shell.pill1":"ONE NOTEBOOK","oss-twin-notebook-day.shell.pill2":"NO RECONSTRUCTION","oss-twin-notebook-day.shell.pill3":"WHOLE DAY","oss-twin-notebook-day.shell.right":"A derived view can stay fast while every historical answer remains traceable.","oss-twin-notebook-day.shell.rightKicker":"Why operators need it","oss-twin-notebook-day.shell.secondaryKicker":"What this proves","oss-twin-notebook-day.sub":"A reading made explicit","oss-twin-notebook-day.tag":"TWIN","oss-twin-notebook-day.title":"Operational memory","oss-twin-notebook-day.banner.eyebrow":"Read the day","oss-twin-notebook-day.banner.lead":"Read the day.","oss-twin-notebook-day.banner.accent":"Do not rebuild it from memory.","oss-twin-notebook-day.banner.paragraph1":"After a fault, people are often asked to rebuild one day from notes, exports and memory. Even a careful reconstruction can confuse what happened with what arrived later.","oss-twin-notebook-day.banner.paragraph2":"Twin keeps the day as it unfolds: the equipment's events, the information available at the time and later corrections remain joined but distinct. Reading Tuesday becomes a direct look at the record, not the first stage of an investigation.","oss-twin-notebook-day.banner.panelHeader":"Tuesday, read directly","oss-twin-notebook-day.banner.panelTag":"not reconstructed","oss-twin-notebook-day.banner.check1":"What the asset did","oss-twin-notebook-day.banner.check2":"What had been reported by then","oss-twin-notebook-day.banner.check3":"What arrived later","oss-twin-notebook-day.banner.check4":"Which action was requested","oss-twin-notebook-day.banner.check5":"Which outcome followed","oss-twin-notebook-day.banner.check6":"What anybody remembers not required","oss-twin-notebook-day.banner.verdict":"the day is handed back as a record, not a story assembled afterwards","oss-twin-notebook-day.banner.footline":"nothing was overwritten, so nothing has to be guessed back into place","oss-twin-notebook-day.visual.pageChip":"Lift, Tuesday","oss-twin-notebook-day.visual.linkLabel":"Observation → explanation","oss-twin-notebook-day.visual.currentKicker":"Current state only","oss-twin-notebook-day.visual.currentState":"working","oss-twin-notebook-day.visual.currentNote":"This is all an overwrite-only system would show.","oss-twin-notebook-day.visual.currentKeep":"The whole day remains readable.","oss-twin-notebook-day.line.wake.what":"Lift starts","oss-twin-notebook-day.line.wake.detail":"First trip recorded.","oss-twin-notebook-day.line.busy.what":"Morning traffic","oss-twin-notebook-day.line.busy.detail":"Doors open and close normally.","oss-twin-notebook-day.line.judder.what":"Door judders","oss-twin-notebook-day.line.judder.detail":"Observed at 11:04.","oss-twin-notebook-day.line.cause.what":"Engineer identifies the mechanism","oss-twin-notebook-day.line.cause.detail":"Later explanation; the earlier line remains.","oss-twin-notebook-day.line.night.what":"The day closes","oss-twin-notebook-day.line.night.detail":"The complete page is still there.","oss-twin-notebook-plain.band.left":"history retained","oss-twin-notebook-plain.band.right":"state derived","oss-twin-notebook-plain.body":"The record keeps the change, its context and the decision that followed.","oss-twin-notebook-plain.chrome.meta":"illustrative","oss-twin-notebook-plain.chrome.path":"Twin","oss-twin-notebook-plain.chrome.status":"reading complete","oss-twin-notebook-plain.foot.left":"Record retained","oss-twin-notebook-plain.foot.right":"State derived","oss-twin-notebook-plain.footline.left":"Footline / left","oss-twin-notebook-plain.footline.right":"Footline / right","oss-twin-notebook-plain.kicker":"Twin instrument","oss-twin-notebook-plain.kicker.label":"Twin","oss-twin-notebook-plain.kicker.sub":"operational record","oss-twin-notebook-plain.nodes.one":"Record","oss-twin-notebook-plain.nodes.three":"Decision","oss-twin-notebook-plain.nodes.two":"State","oss-twin-notebook-plain.rows.four":"Question","oss-twin-notebook-plain.rows.one":"Record","oss-twin-notebook-plain.rows.three":"Decision","oss-twin-notebook-plain.rows.two":"State","oss-twin-notebook-plain.shell.accent":"and the old lines remain","oss-twin-notebook-plain.shell.body":"Treat the record like a notebook: every change gets a new line, and corrections become later lines. You can read the latest page quickly without losing the earlier ones. Nothing is rubbed out, so the page you read last week still reads the same way.","oss-twin-notebook-plain.shell.eyebrow":"In plain words","oss-twin-notebook-plain.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-notebook-plain.shell.lead":"Every change gets a line","oss-twin-notebook-plain.shell.left":"A later explanation is added as a new line beside the first observation, not rubbed into it. The earlier line remains useful because it records what somebody knew when the equipment first behaved strangely.","oss-twin-notebook-plain.shell.leftKicker":"Each line belongs to the day","oss-twin-notebook-plain.shell.pill1":"ONE LINE PER CHANGE","oss-twin-notebook-plain.shell.pill2":"NOTHING OVERWRITTEN","oss-twin-notebook-plain.shell.right":"Reading to the end gives the current condition quickly, while stopping on an older page gives the state of that time. One notebook therefore serves ordinary work and a later investigation without a separate audit copy.","oss-twin-notebook-plain.shell.rightKicker":"The present does not erase the past","oss-twin-notebook-plain.shell.secondaryKicker":"The notebook keeps its earlier pages","oss-twin-notebook-plain.sub":"A reading made explicit","oss-twin-notebook-plain.tag":"TWIN","oss-twin-notebook-plain.title":"Operational memory","oss-twin-notebook-plain.visual.kicker.label":"Notebook habits","oss-twin-notebook-plain.visual.kicker.sub":"four ways the record stays useful","oss-twin-notebook-plain.visual.tag":"plain","oss-twin-notebook-plain.visual.footline.left":"one line per change","oss-twin-notebook-plain.visual.footline.right":"old lines remain","oss-twin-notebook-plain.habit.writeLine.name":"Write the change","oss-twin-notebook-plain.habit.writeLine.means":"Add a new line when something happens.","oss-twin-notebook-plain.habit.writeLine.useful":"Nothing is replaced.","oss-twin-notebook-plain.habit.noRubOut.name":"Keep the earlier line","oss-twin-notebook-plain.habit.noRubOut.means":"A later explanation sits beside it.","oss-twin-notebook-plain.habit.noRubOut.useful":"Both stay readable.","oss-twin-notebook-plain.habit.readToEnd.name":"Read to the end","oss-twin-notebook-plain.habit.readToEnd.means":"The current state comes from the full page.","oss-twin-notebook-plain.habit.readToEnd.useful":"Present and history agree.","oss-twin-notebook-plain.habit.stopOldPage.name":"Stop on an old page","oss-twin-notebook-plain.habit.stopOldPage.means":"Read only up to the chosen day.","oss-twin-notebook-plain.habit.stopOldPage.useful":"No hindsight.","oss-twin-one-log-many-views.band.left":"history retained","oss-twin-one-log-many-views.band.right":"state derived","oss-twin-one-log-many-views.body":"The record keeps the change, its context and the decision that followed.","oss-twin-one-log-many-views.chrome.meta":"illustrative","oss-twin-one-log-many-views.chrome.path":"Twin","oss-twin-one-log-many-views.chrome.status":"reading complete","oss-twin-one-log-many-views.foot.left":"Record retained","oss-twin-one-log-many-views.foot.right":"State derived","oss-twin-one-log-many-views.kicker":"Twin instrument","oss-twin-one-log-many-views.nodes.one":"Record","oss-twin-one-log-many-views.nodes.three":"Decision","oss-twin-one-log-many-views.nodes.two":"State","oss-twin-one-log-many-views.rows.four":"Question","oss-twin-one-log-many-views.rows.one":"Record","oss-twin-one-log-many-views.rows.three":"Decision","oss-twin-one-log-many-views.rows.two":"State","oss-twin-one-log-many-views.sub":"A reading made explicit","oss-twin-one-log-many-views.tag":"TWIN","oss-twin-one-log-many-views.title":"Operational memory","oss-twin-plain-access.band.left":"history retained","oss-twin-plain-access.band.right":"state derived","oss-twin-plain-access.body":"The record keeps the change, its context and the decision that followed.","oss-twin-plain-access.chrome.meta":"illustrative","oss-twin-plain-access.chrome.path":"Twin","oss-twin-plain-access.chrome.status":"reading complete","oss-twin-plain-access.foot.left":"Record retained","oss-twin-plain-access.foot.right":"State derived","oss-twin-plain-access.kicker":"Twin instrument","oss-twin-plain-access.nodes.one":"Record","oss-twin-plain-access.nodes.three":"Decision","oss-twin-plain-access.nodes.two":"State","oss-twin-plain-access.rows.four":"Question","oss-twin-plain-access.rows.one":"Record","oss-twin-plain-access.rows.three":"Decision","oss-twin-plain-access.rows.two":"State","oss-twin-plain-access.shell.accent":"is not a key kept for Sunday","oss-twin-plain-access.shell.body":"Permission is checked when someone asks to open a page, not granted forever. The same person may be allowed during a shift and refused later if the time, place or assignment changed. Each answer names the condition that failed, so a refusal is something a person can correct or challenge rather than a dead end. No permanent role has to change for the answer to differ.","oss-twin-plain-access.shell.eyebrow":"Permission asked again","oss-twin-plain-access.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-plain-access.shell.lead":"Tuesday's yes","oss-twin-plain-access.shell.left":"Twin checks who is asking, what they are assigned to, when they are on shift and where the request comes from. Permission is a fresh answer for this page now, not a notebook key handed over forever. The answer is given for this request alone.","oss-twin-plain-access.shell.leftKicker":"The request is a context question","oss-twin-plain-access.shell.pill1":"IS IT YOURS","oss-twin-plain-access.shell.pill2":"IS IT NOW","oss-twin-plain-access.shell.pill3":"WHERE ARE YOU","oss-twin-plain-access.shell.right":"An engineer allowed on Tuesday may be refused on Sunday because the time condition changed, or at another building because the asset is outside the assignment. Each refusal names the failed condition and is recorded as a security event.","oss-twin-plain-access.shell.rightKicker":"The same person can be refused","oss-twin-plain-access.shell.secondaryKicker":"Permission is asked again","oss-twin-plain-access.sub":"A reading made explicit","oss-twin-plain-access.tag":"TWIN","oss-twin-plain-access.title":"Operational memory","oss-twin-plain-local.band.left":"history retained","oss-twin-plain-local.band.right":"state derived","oss-twin-plain-local.body":"The record stays under the operator's control, with only a deliberately configured security export crossing the boundary.","oss-twin-plain-local.chrome.meta":"illustrative","oss-twin-plain-local.chrome.path":"Twin","oss-twin-plain-local.chrome.status":"boundary configured","oss-twin-plain-local.shell.accent":"or the operator's own data centre","oss-twin-plain-local.shell.body":"Twin can run where the organisation keeps the work it records: on its own equipment or in its own data centre. The history and the tools that read it stay under that operator's control.","oss-twin-plain-local.shell.eyebrow":"where the history lives","oss-twin-plain-local.shell.footer":"Self-host the runtime. Keep a defined export boundary.","oss-twin-plain-local.shell.lead":"The record can stay put","oss-twin-plain-local.shell.left":"The history, queries and access rules can remain on equipment controlled by the organisation responsible for the asset, ward, site or network. Asking a question about that history does not require an outside Twin account to be available.","oss-twin-plain-local.shell.leftKicker":"The operator holds the runtime","oss-twin-plain-local.shell.pill1":"SELF-HOSTED","oss-twin-plain-local.shell.pill2":"ONE MACHINE OR CLUSTER","oss-twin-plain-local.shell.pill3":"OPERATOR CONTROLLED","oss-twin-plain-local.shell.pill4":"DEFINED EXPORT","oss-twin-plain-local.shell.right":"A deployment can start on one machine and grow to several stores and a cluster without becoming a hosted service. Residency and the destination of any security export remain deliberate choices under the operator’s control. Nothing moves to a hosted account.","oss-twin-plain-local.shell.rightKicker":"Growth keeps the same boundary","oss-twin-plain-local.shell.secondaryKicker":"Local control stays visible","oss-twin-plain-local.side.eyebrow":"the local record","oss-twin-plain-local.side.tag":"plain","oss-twin-plain-local.side.intro":"The runtime and the durable record stay in the place the operator runs.","oss-twin-plain-local.side.boundary":"operator environment","oss-twin-plain-local.side.part.change":"change arrives","oss-twin-plain-local.side.part.runtime":"Twin runs here","oss-twin-plain-local.side.part.record":"history stays","oss-twin-plain-local.side.export":"configured security event","oss-twin-plain-local.side.foot.left":"one machine or cluster","oss-twin-plain-local.side.foot.right":"no required cloud","oss-twin-plain-local.sub":"A clear hosting boundary","oss-twin-plain-local.tag":"TWIN","oss-twin-plain-local.title":"The record can stay put","oss-twin-plain-retention.band.left":"history retained","oss-twin-plain-retention.band.right":"state derived","oss-twin-plain-retention.body":"The record keeps the change, its context and the decision that followed.","oss-twin-plain-retention.chrome.meta":"illustrative","oss-twin-plain-retention.chrome.path":"Twin","oss-twin-plain-retention.chrome.status":"reading complete","oss-twin-plain-retention.foot.left":"Record retained","oss-twin-plain-retention.foot.right":"State derived","oss-twin-plain-retention.kicker":"Twin instrument","oss-twin-plain-retention.nodes.one":"Record","oss-twin-plain-retention.nodes.three":"Decision","oss-twin-plain-retention.nodes.two":"State","oss-twin-plain-retention.rows.four":"Question","oss-twin-plain-retention.rows.one":"Record","oss-twin-plain-retention.rows.three":"Decision","oss-twin-plain-retention.rows.two":"State","oss-twin-plain-retention.shell.accent":"is written next to it","oss-twin-plain-retention.shell.body":"A sensitive page should say why it remains and how long that reason applies. Twin keeps the classification, retention rule and plain-language basis beside the record. The responsible person reads that basis where the page is, rather than hunting for a policy manual that may have changed since. When the reason expires or cannot be found, the page is marked for a decision rather than quietly kept or quietly deleted.","oss-twin-plain-retention.shell.eyebrow":"Reasons beside pages","oss-twin-plain-retention.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-plain-retention.shell.lead":"Why is this still here","oss-twin-plain-retention.shell.left":"A record can carry its classification, retention period and plain-language basis where a reader can see them. A patient observation, engineer note or telemetry record does not depend on someone finding an old policy manual.","oss-twin-plain-retention.shell.leftKicker":"Keeping has an explanation","oss-twin-plain-retention.shell.pill1":"WHAT KIND OF DATA","oss-twin-plain-retention.shell.pill2":"HOW LONG","oss-twin-plain-retention.shell.pill3":"WHY","oss-twin-plain-retention.shell.right":"When a basis expires or cannot be found, Twin marks the page for a decision rather than silently keeping or deleting it. Retention becomes a visible question for the responsible person, not background behaviour that no one owns.","oss-twin-plain-retention.shell.rightKicker":"Missing reasons remain visible","oss-twin-plain-retention.shell.secondaryKicker":"The reason is written beside the page","oss-twin-plain-retention.sub":"A reading made explicit","oss-twin-plain-retention.tag":"TWIN","oss-twin-plain-retention.title":"Operational memory","oss-twin-plain-validation.band.left":"history retained","oss-twin-plain-validation.band.right":"state derived","oss-twin-plain-validation.body":"The record keeps the change, its context and the decision that followed.","oss-twin-plain-validation.chrome.meta":"illustrative","oss-twin-plain-validation.chrome.path":"Twin","oss-twin-plain-validation.chrome.status":"reading complete","oss-twin-plain-validation.foot.left":"Record retained","oss-twin-plain-validation.foot.right":"State derived","oss-twin-plain-validation.kicker":"Twin instrument","oss-twin-plain-validation.nodes.one":"Record","oss-twin-plain-validation.nodes.three":"Decision","oss-twin-plain-validation.nodes.two":"State","oss-twin-plain-validation.rows.four":"Question","oss-twin-plain-validation.rows.one":"Record","oss-twin-plain-validation.rows.three":"Decision","oss-twin-plain-validation.rows.two":"State","oss-twin-plain-validation.shell.accent":"does not become history","oss-twin-plain-validation.shell.body":"Before a change becomes part of the record, Twin checks whether it can be true. It can stop an impossible value with a clear reason while still flagging an unusual but possible one. The person entering the value is told which rule failed, so it can be corrected there and then. Nothing has to be filed first and cleaned up weeks later.","oss-twin-plain-validation.shell.eyebrow":"Validation at the door","oss-twin-plain-validation.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-plain-validation.shell.lead":"An impossible reading","oss-twin-plain-validation.shell.left":"The person entering a value is told which domain rule failed and why. An impossible or forbidden entry is stopped before it becomes ordinary history, rather than being filed and cleaned up weeks later. The explanation remains available to the person entering it.","oss-twin-plain-validation.shell.leftKicker":"The reason is part of refusal","oss-twin-plain-validation.shell.pill1":"CHECKED FIRST","oss-twin-plain-validation.shell.pill2":"REASON NAMED","oss-twin-plain-validation.shell.pill3":"NOT CLEANED LATER","oss-twin-plain-validation.shell.right":"A possible but concerning value can be accepted with a review flag, while a reversed blood-pressure reading or dangerous medication pair is refused. The distinction comes from the registered domain model, not a generic red cross. The domain model decides which is which.","oss-twin-plain-validation.shell.rightKicker":"Unusual is not automatically impossible","oss-twin-plain-validation.shell.secondaryKicker":"The rule acts before the record grows","oss-twin-plain-validation.sub":"A reading made explicit","oss-twin-plain-validation.tag":"TWIN","oss-twin-plain-validation.title":"Operational memory","oss-twin-plugin-capabilities.band.left":"history retained","oss-twin-plugin-capabilities.band.right":"state derived","oss-twin-plugin-capabilities.body":"The record keeps the change, its context and the decision that followed.","oss-twin-plugin-capabilities.cells.controls":"Cells / controls","oss-twin-plugin-capabilities.cells.replay":"Cells / replay","oss-twin-plugin-capabilities.chrome.meta":"illustrative","oss-twin-plugin-capabilities.chrome.path":"Twin","oss-twin-plugin-capabilities.chrome.status":"reading complete","oss-twin-plugin-capabilities.foot.left":"Record retained","oss-twin-plugin-capabilities.foot.right":"State derived","oss-twin-plugin-capabilities.head.label":"Head / label","oss-twin-plugin-capabilities.head.sub":"Head / sub","oss-twin-plugin-capabilities.head.tag":"Head / tag","oss-twin-plugin-capabilities.kicker":"Twin instrument","oss-twin-plugin-capabilities.nodes.one":"Record","oss-twin-plugin-capabilities.nodes.three":"Decision","oss-twin-plugin-capabilities.nodes.two":"State","oss-twin-plugin-capabilities.rows.emit.controls":"Emission","oss-twin-plugin-capabilities.rows.emit.name":"Emission: recorded value","oss-twin-plugin-capabilities.rows.emit.refusal":"Emission","oss-twin-plugin-capabilities.rows.emit.replay":"Emission","oss-twin-plugin-capabilities.rows.four":"Question","oss-twin-plugin-capabilities.rows.one":"Record","oss-twin-plugin-capabilities.rows.random.controls":"Randomness","oss-twin-plugin-capabilities.rows.random.name":"Randomness: recorded value","oss-twin-plugin-capabilities.rows.random.refusal":"Randomness","oss-twin-plugin-capabilities.rows.random.replay":"Randomness","oss-twin-plugin-capabilities.rows.read.controls":"Read","oss-twin-plugin-capabilities.rows.read.name":"Read: recorded value","oss-twin-plugin-capabilities.rows.read.refusal":"Read","oss-twin-plugin-capabilities.rows.read.replay":"Read","oss-twin-plugin-capabilities.rows.resources.controls":"Resources","oss-twin-plugin-capabilities.rows.resources.name":"Resources: recorded value","oss-twin-plugin-capabilities.rows.resources.refusal":"Resources","oss-twin-plugin-capabilities.rows.resources.replay":"Resources","oss-twin-plugin-capabilities.rows.three":"Decision","oss-twin-plugin-capabilities.rows.time.controls":"Time","oss-twin-plugin-capabilities.rows.time.name":"Time: recorded value","oss-twin-plugin-capabilities.rows.time.refusal":"Time","oss-twin-plugin-capabilities.rows.time.replay":"Time","oss-twin-plugin-capabilities.rows.two":"State","oss-twin-plugin-capabilities.rows.write.controls":"Write","oss-twin-plugin-capabilities.rows.write.name":"Write: recorded value","oss-twin-plugin-capabilities.rows.write.refusal":"Write","oss-twin-plugin-capabilities.rows.write.replay":"Write","oss-twin-plugin-capabilities.shell.accent":"a metered, replayable interface","oss-twin-plugin-capabilities.shell.body":"Third-party code should extend a twin without gaining the host by accident. Twin runs plugins behind explicit capabilities, virtual time and a metered execution boundary. The host grants only the resources named for that run, and the receipt records fuel, time and refused calls. A plugin can add behaviour without becoming an unbounded second operator.","oss-twin-plugin-capabilities.shell.eyebrow":"WebAssembly extension boundary","oss-twin-plugin-capabilities.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-plugin-capabilities.shell.lead":"Third-party logic runs inside","oss-twin-plugin-capabilities.shell.left":"A component receives only the state, events, time, randomness or logging capabilities that the host grants. It does not inherit the host process, filesystem or network merely because it is useful to a twin. The host records which limits applied to the run.","oss-twin-plugin-capabilities.shell.leftKicker":"Plugins receive permissions","oss-twin-plugin-capabilities.shell.pill1":"WASM","oss-twin-plugin-capabilities.shell.pill2":"CAPABILITY GRANTS","oss-twin-plugin-capabilities.shell.pill3":"HOST TIME","oss-twin-plugin-capabilities.shell.pill4":"FUEL","oss-twin-plugin-capabilities.shell.right":"Twin supplies virtual time and randomness, then meters fuel, memory and other resources. A stopped or failed plugin leaves a named outcome, and the same controlled inputs can be replayed without guessing what the host did. A refused call is named in the receipt.","oss-twin-plugin-capabilities.shell.rightKicker":"Execution stays repeatable","oss-twin-plugin-capabilities.shell.secondaryKicker":"Code runs inside a narrow boundary","oss-twin-plugin-capabilities.sub":"A reading made explicit","oss-twin-plugin-capabilities.tag":"TWIN","oss-twin-plugin-capabilities.title":"Operational memory","oss-twin-plugin-fence.band.left":"history retained","oss-twin-plugin-fence.band.meta":"Band / meta","oss-twin-plugin-fence.band.right":"state derived","oss-twin-plugin-fence.band.text":"Band / text","oss-twin-plugin-fence.body":"The record keeps the change, its context and the decision that followed.","oss-twin-plugin-fence.boundary.label":"Boundary / label","oss-twin-plugin-fence.chrome.meta":"illustrative","oss-twin-plugin-fence.chrome.path":"Twin","oss-twin-plugin-fence.chrome.status":"reading complete","oss-twin-plugin-fence.event.fields.artefact":"Event / fields / artefact","oss-twin-plugin-fence.event.fields.deterministic":"Event / fields / deterministic","oss-twin-plugin-fence.event.fields.duration":"Event / fields / duration","oss-twin-plugin-fence.event.fields.input":"Event / fields / input","oss-twin-plugin-fence.event.fields.memory":"Event / fields / memory","oss-twin-plugin-fence.event.fields.output":"Event / fields / output","oss-twin-plugin-fence.event.fields.transcript":"Event / fields / transcript","oss-twin-plugin-fence.event.title":"Event / title","oss-twin-plugin-fence.event.values.deterministic":"Event / values / deterministic","oss-twin-plugin-fence.event.values.inBudget":"Event / values / in Budget","oss-twin-plugin-fence.event.values.recorded":"Event / values / recorded","oss-twin-plugin-fence.foot.left":"Record retained","oss-twin-plugin-fence.foot.right":"State derived","oss-twin-plugin-fence.host.note":"Host / note","oss-twin-plugin-fence.kicker":"Twin instrument","oss-twin-plugin-fence.nodes.one":"Record","oss-twin-plugin-fence.nodes.three":"Decision","oss-twin-plugin-fence.nodes.two":"State","oss-twin-plugin-fence.plugin.name":"Plugin / name","oss-twin-plugin-fence.plugin.sub":"Plugin / sub","oss-twin-plugin-fence.replay.sub":"Replay / sub","oss-twin-plugin-fence.replay.title":"Replay / title","oss-twin-plugin-fence.replay.verdict":"Replay / verdict","oss-twin-plugin-fence.rows.four":"Question","oss-twin-plugin-fence.rows.one":"Record","oss-twin-plugin-fence.rows.three":"Decision","oss-twin-plugin-fence.rows.two":"State","oss-twin-plugin-fence.runs.edge":"Runs / edge","oss-twin-plugin-fence.runs.heavier.label":"Runs / heavier / label","oss-twin-plugin-fence.runs.heavier.result":"Runs / heavier / result","oss-twin-plugin-fence.runs.hostContinues":"Runs / host Continues","oss-twin-plugin-fence.runs.looping.label":"Runs / looping / label","oss-twin-plugin-fence.runs.looping.result":"Runs / looping / result","oss-twin-plugin-fence.runs.normal.label":"Runs / normal / label","oss-twin-plugin-fence.runs.normal.result":"Runs / normal / result","oss-twin-plugin-fence.runs.title":"Runs / title","oss-twin-plugin-fence.services.command":"Services / command","oss-twin-plugin-fence.services.event":"Services / event","oss-twin-plugin-fence.services.random":"Services / random","oss-twin-plugin-fence.services.state":"Services / state","oss-twin-plugin-fence.services.time":"Services / time","oss-twin-plugin-fence.sub":"A reading made explicit","oss-twin-plugin-fence.tag":"TWIN","oss-twin-plugin-fence.title":"Operational memory","oss-twin-projection-rebuild.band.left":"history retained","oss-twin-projection-rebuild.band.right":"state derived","oss-twin-projection-rebuild.body":"The record keeps the change, its context and the decision that followed.","oss-twin-projection-rebuild.chrome.meta":"illustrative","oss-twin-projection-rebuild.chrome.path":"Twin","oss-twin-projection-rebuild.chrome.status":"reading complete","oss-twin-projection-rebuild.foot.left":"Record retained","oss-twin-projection-rebuild.foot.right":"State derived","oss-twin-projection-rebuild.kicker":"Twin instrument","oss-twin-projection-rebuild.nodes.one":"Record","oss-twin-projection-rebuild.nodes.three":"Decision","oss-twin-projection-rebuild.nodes.two":"State","oss-twin-projection-rebuild.rows.four":"Question","oss-twin-projection-rebuild.rows.one":"Record","oss-twin-projection-rebuild.rows.three":"Decision","oss-twin-projection-rebuild.rows.two":"State","oss-twin-projection-rebuild.sub":"A reading made explicit","oss-twin-projection-rebuild.tag":"TWIN","oss-twin-projection-rebuild.title":"Operational memory","oss-twin-query-shapes.band.left":"history retained","oss-twin-query-shapes.band.right":"state derived","oss-twin-query-shapes.body":"The record keeps the change, its context and the decision that followed.","oss-twin-query-shapes.chrome.meta":"illustrative","oss-twin-query-shapes.chrome.path":"Twin","oss-twin-query-shapes.chrome.status":"reading complete","oss-twin-query-shapes.foot.left":"five query forms","oss-twin-query-shapes.foot.right":"execution route visible","oss-twin-query-shapes.kicker":"Twin instrument","oss-twin-query-shapes.kicker.label":"TQL query shapes","oss-twin-query-shapes.kicker.sub":"Each form declares its temporal or graph intent before storage is read.","oss-twin-query-shapes.kicker.tag":"schema checked","oss-twin-query-shapes.nodes.one":"Record","oss-twin-query-shapes.nodes.three":"Decision","oss-twin-query-shapes.nodes.two":"State","oss-twin-query-shapes.rows.four":"Question","oss-twin-query-shapes.rows.one":"Record","oss-twin-query-shapes.rows.three":"Decision","oss-twin-query-shapes.rows.two":"State","oss-twin-query-shapes.shape.aggregate.focus":"range pushdown","oss-twin-query-shapes.shape.aggregate.name":"Aggregate a period","oss-twin-query-shapes.shape.aggregate.question":"What was the hourly mean pressure?","oss-twin-query-shapes.shape.aggregate.store":"analytics store","oss-twin-query-shapes.shape.fetch.focus":"subject and aspect","oss-twin-query-shapes.shape.fetch.name":"Fetch current aspect","oss-twin-query-shapes.shape.fetch.question":"What pressure is recorded for pump P-07 now?","oss-twin-query-shapes.shape.fetch.store":"current projection","oss-twin-query-shapes.shape.history.focus":"event-time range","oss-twin-query-shapes.shape.history.name":"Read a past state","oss-twin-query-shapes.shape.history.question":"What did P-07 show at 09:05?","oss-twin-query-shapes.shape.history.store":"event history","oss-twin-query-shapes.shape.lineage.focus":"origin traversal","oss-twin-query-shapes.shape.lineage.name":"Trace a derived value","oss-twin-query-shapes.shape.lineage.question":"Which readings produced the maintenance score?","oss-twin-query-shapes.shape.lineage.store":"lineage graph","oss-twin-query-shapes.shape.walk.focus":"typed edges","oss-twin-query-shapes.shape.walk.name":"Walk a relationship","oss-twin-query-shapes.shape.walk.question":"Which pumps feed the south loop?","oss-twin-query-shapes.shape.walk.store":"relationship index","oss-twin-query-shapes.shell.accent":"then inspect how it will run","oss-twin-query-shapes.shell.body":"Operational questions cross time, relationships, values and lineage. TQL makes those shapes explicit, then shows the plan that will answer them. The visible plan gives an operator a place to challenge a broad scan, missing index or unexpected relationship before the query runs. The answer and the route used to reach it stay inspectable together. A temporal filter, graph hop or aggregate is therefore part of the explanation, not an implementation detail that disappears after execution. A malformed or over-broad question is explained at the semantic boundary rather than answered with a plausible but wrong result.","oss-twin-query-shapes.shell.eyebrow":"Twin Query Language","oss-twin-query-shapes.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-query-shapes.shell.lead":"Ask in the language of twins","oss-twin-query-shapes.shell.left":"TQL validates types, aspects, fields, relationships and time forms before it reaches storage. A malformed or over-broad question can be explained at the semantic boundary instead of returning a plausible but wrong result.","oss-twin-query-shapes.shell.leftKicker":"Meaning is checked first","oss-twin-query-shapes.shell.pill1":"TEMPORAL","oss-twin-query-shapes.shell.pill2":"GRAPH","oss-twin-query-shapes.shell.pill3":"AGGREGATE","oss-twin-query-shapes.shell.pill4":"LINEAGE","oss-twin-query-shapes.shell.pill5":"PLAN SHOWN","oss-twin-query-shapes.shell.right":"Optimisation can narrow ranges, push filters and choose indexes, but it reports the route it took. Results carry selected stores, rows scanned and applied or declined rules, so a stable question never hides a changing execution path.","oss-twin-query-shapes.shell.rightKicker":"The plan is inspectable","oss-twin-query-shapes.shell.secondaryKicker":"The question and route stay separate","oss-twin-query-shapes.sub":"A reading made explicit","oss-twin-query-shapes.tag":"TWIN","oss-twin-query-shapes.title":"Operational memory","oss-twin-read-layers.band.left":"history retained","oss-twin-read-layers.band.right":"state derived","oss-twin-read-layers.body":"The record keeps the change, its context and the decision that followed.","oss-twin-read-layers.chrome.meta":"illustrative","oss-twin-read-layers.chrome.path":"Twin","oss-twin-read-layers.chrome.status":"reading complete","oss-twin-read-layers.foot.left":"Record retained","oss-twin-read-layers.foot.right":"State derived","oss-twin-read-layers.kicker":"Twin instrument","oss-twin-read-layers.nodes.one":"Record","oss-twin-read-layers.nodes.three":"Decision","oss-twin-read-layers.nodes.two":"State","oss-twin-read-layers.rows.four":"Question","oss-twin-read-layers.rows.one":"Record","oss-twin-read-layers.rows.three":"Decision","oss-twin-read-layers.rows.two":"State","oss-twin-read-layers.shell.accent":"and can still be rebuilt","oss-twin-read-layers.shell.body":"Current state needs to be fast, but it must not replace the record. Twin serves projections and snapshots for operational reads while the event stream remains the rebuildable source. Each view carries its checkpoint and health state, so a delayed projection cannot quietly present itself as current. Rebuilding a view is a maintenance operation, not a change to history. Snapshots shorten hydration and projections keep current questions quick, but neither becomes the record. A critical read can wait or warn rather than serve a view that has fallen behind.","oss-twin-read-layers.shell.eyebrow":"Fast reads over immutable history","oss-twin-read-layers.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-read-layers.shell.lead":"The present is kept ready","oss-twin-read-layers.shell.left":"Snapshots shorten aggregate hydration and projections keep current questions quick. Neither becomes the record: both can be rebuilt from the ordered events that produced the state.","oss-twin-read-layers.shell.leftKicker":"Views are disposable","oss-twin-read-layers.shell.pill1":"SNAPSHOT","oss-twin-read-layers.shell.pill2":"PROJECTION","oss-twin-read-layers.shell.pill3":"REBUILDABLE","oss-twin-read-layers.shell.pill4":"FAST CURRENT","oss-twin-read-layers.shell.right":"Every projection carries a checkpoint and health state, so a delayed view is not silently presented as current. Critical reads can wait or warn, while historical questions reconstruct from the event range they actually need.","oss-twin-read-layers.shell.rightKicker":"Freshness stays visible","oss-twin-read-layers.shell.secondaryKicker":"Fast reads do not replace history","oss-twin-read-layers.sub":"A reading made explicit","oss-twin-read-layers.tag":"TWIN","oss-twin-read-layers.title":"Operational memory","oss-twin-reasons-on-pages.band.left":"history retained","oss-twin-reasons-on-pages.band.right":"state derived","oss-twin-reasons-on-pages.body":"The record keeps the change, its context and the decision that followed.","oss-twin-reasons-on-pages.chrome.meta":"illustrative","oss-twin-reasons-on-pages.chrome.path":"Twin","oss-twin-reasons-on-pages.chrome.status":"reading complete","oss-twin-reasons-on-pages.foot.left":"Record retained","oss-twin-reasons-on-pages.foot.right":"State derived","oss-twin-reasons-on-pages.kicker":"Twin instrument","oss-twin-reasons-on-pages.nodes.one":"Record","oss-twin-reasons-on-pages.nodes.three":"Decision","oss-twin-reasons-on-pages.nodes.two":"State","oss-twin-reasons-on-pages.rows.four":"Question","oss-twin-reasons-on-pages.rows.one":"Record","oss-twin-reasons-on-pages.rows.three":"Decision","oss-twin-reasons-on-pages.rows.two":"State","oss-twin-reasons-on-pages.sub":"A reading made explicit","oss-twin-reasons-on-pages.tag":"TWIN","oss-twin-reasons-on-pages.title":"Operational memory","oss-twin-relationship-history.band.left":"history retained","oss-twin-relationship-history.band.meta":"Band / meta","oss-twin-relationship-history.band.right":"state derived","oss-twin-relationship-history.band.text":"Band / text","oss-twin-relationship-history.body":"The record keeps the change, its context and the decision that followed.","oss-twin-relationship-history.chrome.meta":"illustrative","oss-twin-relationship-history.chrome.path":"Twin","oss-twin-relationship-history.chrome.status":"reading complete","oss-twin-relationship-history.edge.contains":"Edge / contains","oss-twin-relationship-history.edge.covers":"Edge / covers","oss-twin-relationship-history.edge.feeds":"Edge / feeds","oss-twin-relationship-history.edge.newValidity":"Edge / new Validity","oss-twin-relationship-history.edge.oldValidity":"Edge / old Validity","oss-twin-relationship-history.foot.left":"Record retained","oss-twin-relationship-history.foot.right":"State derived","oss-twin-relationship-history.graph.aria":"Graph / aria","oss-twin-relationship-history.kicker":"Twin instrument","oss-twin-relationship-history.node.contract":"Node / contract","oss-twin-relationship-history.node.line2":"Node / line2","oss-twin-relationship-history.node.line3":"Node / line3","oss-twin-relationship-history.node.pump":"Node / pump","oss-twin-relationship-history.node.pumpMove":"Node / pump Move","oss-twin-relationship-history.node.sensor":"Node / sensor","oss-twin-relationship-history.node.site":"Node / site","oss-twin-relationship-history.node.valve":"Node / valve","oss-twin-relationship-history.nodes.one":"Record","oss-twin-relationship-history.nodes.three":"Decision","oss-twin-relationship-history.nodes.two":"State","oss-twin-relationship-history.reads.after.date":"Reads / after / date","oss-twin-relationship-history.reads.after.note":"Reads / after / note","oss-twin-relationship-history.reads.after.result":"Reads / after / result","oss-twin-relationship-history.reads.before.date":"Reads / before / date","oss-twin-relationship-history.reads.before.note":"Reads / before / note","oss-twin-relationship-history.reads.before.result":"Reads / before / result","oss-twin-relationship-history.reads.label":"Reads / label","oss-twin-relationship-history.rows.four":"Question","oss-twin-relationship-history.rows.one":"Record","oss-twin-relationship-history.rows.three":"Decision","oss-twin-relationship-history.rows.two":"State","oss-twin-relationship-history.sub":"A reading made explicit","oss-twin-relationship-history.tag":"TWIN","oss-twin-relationship-history.title":"Operational memory","oss-twin-relationship-history.walk.downstream":"Walk / downstream","oss-twin-relationship-history.walk.label":"Walk / label","oss-twin-relationship-history.walk.note":"Walk / note","oss-twin-relationship-record.band.left":"history retained","oss-twin-relationship-record.band.right":"state derived","oss-twin-relationship-record.body":"The record keeps the change, its context and the decision that followed.","oss-twin-relationship-record.chrome.meta":"illustrative","oss-twin-relationship-record.chrome.path":"Twin","oss-twin-relationship-record.chrome.status":"reading complete","oss-twin-relationship-record.field.properties.example":"Properties: example","oss-twin-relationship-record.field.properties.name":"Properties: recorded value","oss-twin-relationship-record.field.properties.temporal":"Properties: time reading","oss-twin-relationship-record.field.properties.why":"Properties: why it matters","oss-twin-relationship-record.field.source.example":"Source: example","oss-twin-relationship-record.field.source.name":"Source: recorded value","oss-twin-relationship-record.field.source.temporal":"Source: time reading","oss-twin-relationship-record.field.source.why":"Source: why it matters","oss-twin-relationship-record.field.target.example":"Target: example","oss-twin-relationship-record.field.target.name":"Target: recorded value","oss-twin-relationship-record.field.target.temporal":"Target: time reading","oss-twin-relationship-record.field.target.why":"Target: why it matters","oss-twin-relationship-record.field.type.example":"Type: example","oss-twin-relationship-record.field.type.name":"Type: recorded value","oss-twin-relationship-record.field.type.temporal":"Type: time reading","oss-twin-relationship-record.field.type.why":"Type: why it matters","oss-twin-relationship-record.field.validity.example":"Validity: example","oss-twin-relationship-record.field.validity.name":"Validity: recorded value","oss-twin-relationship-record.field.validity.temporal":"Validity: time reading","oss-twin-relationship-record.field.validity.why":"Validity: why it matters","oss-twin-relationship-record.foot.left":"Record retained","oss-twin-relationship-record.foot.right":"State derived","oss-twin-relationship-record.kicker":"Twin instrument","oss-twin-relationship-record.kicker.label":"Twin","oss-twin-relationship-record.kicker.sub":"operational record","oss-twin-relationship-record.kicker.tag":"Twin","oss-twin-relationship-record.nodes.one":"Record","oss-twin-relationship-record.nodes.three":"Decision","oss-twin-relationship-record.nodes.two":"State","oss-twin-relationship-record.rows.four":"Question","oss-twin-relationship-record.rows.one":"Record","oss-twin-relationship-record.rows.three":"Decision","oss-twin-relationship-record.rows.two":"State","oss-twin-relationship-record.shell.accent":"a target, a type and a history","oss-twin-relationship-record.shell.body":"A pump, room, patient or vehicle is defined partly by its links to other things. Twin records those links as typed, changing state instead of burying them in fields. An edge can start, change or end without erasing the earlier relationship. A query can then ask which device belonged to a patient before responsibility moved, rather than reading only today's field. An edge carries its source, target, type, properties and validity, and adding, changing or ending it produces events like any other change. The graph can then be walked in either direction and at a chosen date.","oss-twin-relationship-record.shell.eyebrow":"Twin graph","oss-twin-relationship-record.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-relationship-record.shell.lead":"A relationship has a source","oss-twin-relationship-record.shell.left":"A relationship records its source, target, type, properties and validity rather than hiding meaning in a field. Adding, changing or ending that edge produces events just as a change to an aspect would.","oss-twin-relationship-record.shell.leftKicker":"Edges change as facts","oss-twin-relationship-record.shell.pill1":"TYPED EDGES","oss-twin-relationship-record.shell.pill2":"BIDIRECTIONAL","oss-twin-relationship-record.shell.pill3":"HISTORICAL GRAPH","oss-twin-relationship-record.shell.right":"Twin can walk a named relationship in either direction and at a chosen date. It can show what fed a line before a move, or which device belonged to a patient before responsibility changed.","oss-twin-relationship-record.shell.rightKicker":"The graph is queryable in time","oss-twin-relationship-record.shell.secondaryKicker":"Topology has a history","oss-twin-relationship-record.sub":"A reading made explicit","oss-twin-relationship-record.tag":"TWIN","oss-twin-relationship-record.title":"Operational memory","oss-twin-residency-placement.band.left":"history retained","oss-twin-residency-placement.band.right":"state derived","oss-twin-residency-placement.body":"The record keeps the change, its context and the decision that followed.","oss-twin-residency-placement.chrome.meta":"illustrative","oss-twin-residency-placement.chrome.path":"Twin","oss-twin-residency-placement.chrome.status":"reading complete","oss-twin-residency-placement.foot.left":"Record retained","oss-twin-residency-placement.foot.right":"State derived","oss-twin-residency-placement.kicker":"Twin instrument","oss-twin-residency-placement.nodes.one":"Record","oss-twin-residency-placement.nodes.three":"Decision","oss-twin-residency-placement.nodes.two":"State","oss-twin-residency-placement.rows.four":"Question","oss-twin-residency-placement.rows.one":"Record","oss-twin-residency-placement.rows.three":"Decision","oss-twin-residency-placement.rows.two":"State","oss-twin-residency-placement.sub":"A reading made explicit","oss-twin-residency-placement.tag":"TWIN","oss-twin-residency-placement.title":"Operational memory","oss-twin-residency-rules.band.left":"history retained","oss-twin-residency-rules.band.right":"state derived","oss-twin-residency-rules.body":"The record keeps the change, its context and the decision that followed.","oss-twin-residency-rules.chrome.meta":"illustrative","oss-twin-residency-rules.chrome.path":"Twin","oss-twin-residency-rules.chrome.status":"reading complete","oss-twin-residency-rules.foot.left":"Record retained","oss-twin-residency-rules.foot.right":"State derived","oss-twin-residency-rules.kicker":"Twin instrument","oss-twin-residency-rules.nodes.one":"Record","oss-twin-residency-rules.nodes.three":"Decision","oss-twin-residency-rules.nodes.two":"State","oss-twin-residency-rules.rows.four":"Question","oss-twin-residency-rules.rows.one":"Record","oss-twin-residency-rules.rows.three":"Decision","oss-twin-residency-rules.rows.two":"State","oss-twin-residency-rules.shell.accent":"a rule that can refuse a move","oss-twin-residency-rules.shell.body":"A residency clause matters only if it can stop an impermissible move. Twin turns countries, regions and local rules into placement policy that the runtime can enforce. Countries, regions and operator-defined boundaries all become the same kind of rule, so a placement decision has one place to look.","oss-twin-residency-rules.shell.eyebrow":"Where the record lives","oss-twin-residency-rules.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-residency-rules.shell.lead":"A residency clause becomes","oss-twin-residency-rules.shell.left":"A policy can name a country, region or operator-defined boundary for a tenant and its records. Twin evaluates that rule when data is placed, replicated or moved rather than asking a team to remember it later.","oss-twin-residency-rules.shell.leftKicker":"Placement is checked before a move","oss-twin-residency-rules.shell.pill1":"EU AND NATIONAL","oss-twin-residency-rules.shell.pill2":"CUSTOM REGIONS","oss-twin-residency-rules.shell.pill3":"MOVE REFUSED","oss-twin-residency-rules.shell.right":"A disallowed move stops with the policy and version that refused it, while permitted placements remain visible. This keeps residency readable to operators and makes the evidence useful during an audit or service change.","oss-twin-residency-rules.shell.rightKicker":"Refusal names the reason","oss-twin-residency-rules.shell.secondaryKicker":"Location becomes an executable rule","oss-twin-residency-rules.sub":"A reading made explicit","oss-twin-residency-rules.tag":"TWIN","oss-twin-residency-rules.title":"Operational memory","oss-twin-retention-business.band.left":"history retained","oss-twin-retention-business.band.right":"state derived","oss-twin-retention-business.body":"The record keeps the change, its context and the decision that followed.","oss-twin-retention-business.chrome.meta":"illustrative","oss-twin-retention-business.chrome.path":"Twin","oss-twin-retention-business.chrome.status":"reading complete","oss-twin-retention-business.foot.left":"Record retained","oss-twin-retention-business.foot.right":"State derived","oss-twin-retention-business.kicker":"Twin instrument","oss-twin-retention-business.nodes.one":"Record","oss-twin-retention-business.nodes.three":"Decision","oss-twin-retention-business.nodes.two":"State","oss-twin-retention-business.rows.four":"Question","oss-twin-retention-business.rows.one":"Record","oss-twin-retention-business.rows.three":"Decision","oss-twin-retention-business.rows.two":"State","oss-twin-retention-business.shell.accent":"is answered beside the record","oss-twin-retention-business.shell.body":"Retention decisions should be explainable from the record itself. Twin attaches classification, duration and written basis when the rule applies, so a later review does not begin with policy archaeology. A record can show which trigger started the clock and which later event extended or ended it. The operator can then distinguish a deliberate hold from an unexamined archive.","oss-twin-retention-business.shell.eyebrow":"Classification and written basis","oss-twin-retention-business.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-retention-business.shell.lead":"Why do you still hold this","oss-twin-retention-business.shell.left":"Classification, retention period and written reason can be attached when a record enters Twin. A future reviewer sees why it remains without searching a separate policy schedule that may have changed since. The basis travels with the record.","oss-twin-retention-business.shell.leftKicker":"Keeping has a stated basis","oss-twin-retention-business.shell.pill1":"CLASSIFIED","oss-twin-retention-business.shell.pill2":"RETENTION ATTACHED","oss-twin-retention-business.shell.pill3":"BASIS IN WORDS","oss-twin-retention-business.shell.right":"The platform can mark an expired or absent basis as unresolved instead of quietly retaining data forever. That makes deletion, a hold and further review accountable decisions with evidence beside the affected record. The next owner sees the exception before acting.","oss-twin-retention-business.shell.rightKicker":"A missing reason is a decision","oss-twin-retention-business.shell.secondaryKicker":"The reason remains with the record","oss-twin-retention-business.sub":"A reading made explicit","oss-twin-retention-business.tag":"TWIN","oss-twin-retention-business.title":"Operational memory","oss-twin-retention-business.banner.eyebrow":"Retention","oss-twin-retention-business.banner.lead":"Store the answer now.","oss-twin-retention-business.banner.accent":"When the rule is set.","oss-twin-retention-business.banner.paragraph1":"When a retention rule is set, the record carries its classification, duration and written basis. A review can see whether the basis is current, expiring or missing without reconstructing policy from email and exports.","oss-twin-retention-business.banner.paragraph2":"That does not make every retention outcome automatic. It makes the next governance decision visible beside the record, with the reason and owner that need to be checked.","oss-twin-retention-business.banner.panelHeader":"Five named records","oss-twin-retention-business.banner.panelTag":"five stored reasons","oss-twin-retention-business.banner.check1":"Technician note","oss-twin-retention-business.banner.check2":"Water telemetry","oss-twin-retention-business.banner.check3":"Patient observation","oss-twin-retention-business.banner.check4":"Contractor access","oss-twin-retention-business.banner.check5":"Incident report","oss-twin-retention-business.banner.check6":"Classification","oss-twin-retention-business.banner.check7":"Retention","oss-twin-retention-business.banner.check8":"Basis and requirement","oss-twin-retention-business.banner.verdict":"the reply is assembled from stored reasons, not reconstructed policy interpretation","oss-twin-retention-business.banner.footline":"the basis was written before the request arrived","oss-twin-same-person-two-times.band.left":"history retained","oss-twin-same-person-two-times.band.right":"state derived","oss-twin-same-person-two-times.body":"The record keeps the change, its context and the decision that followed.","oss-twin-same-person-two-times.chrome.meta":"illustrative","oss-twin-same-person-two-times.chrome.path":"Twin","oss-twin-same-person-two-times.chrome.status":"reading complete","oss-twin-same-person-two-times.foot.left":"Record retained","oss-twin-same-person-two-times.foot.right":"State derived","oss-twin-same-person-two-times.kicker":"Twin instrument","oss-twin-same-person-two-times.nodes.one":"Record","oss-twin-same-person-two-times.nodes.three":"Decision","oss-twin-same-person-two-times.nodes.two":"State","oss-twin-same-person-two-times.rows.four":"Question","oss-twin-same-person-two-times.rows.one":"Record","oss-twin-same-person-two-times.rows.three":"Decision","oss-twin-same-person-two-times.rows.two":"State","oss-twin-same-person-two-times.sub":"A reading made explicit","oss-twin-same-person-two-times.tag":"TWIN","oss-twin-same-person-two-times.title":"Operational memory","oss-twin-scenario-business.band.left":"history retained","oss-twin-scenario-business.band.right":"state derived","oss-twin-scenario-business.boardLabel":"Board Label","oss-twin-scenario-business.body":"The record keeps the change, its context and the decision that followed.","oss-twin-scenario-business.chrome.meta":"illustrative","oss-twin-scenario-business.chrome.path":"Twin","oss-twin-scenario-business.chrome.status":"reading complete","oss-twin-scenario-business.foot.left":"Record retained","oss-twin-scenario-business.foot.right":"State derived","oss-twin-scenario-business.footline.left":"Footline / left","oss-twin-scenario-business.footline.right":"Footline / right","oss-twin-scenario-business.kicker":"Twin instrument","oss-twin-scenario-business.kicker.label":"Twin","oss-twin-scenario-business.kicker.sub":"operational record","oss-twin-scenario-business.nodes.one":"Record","oss-twin-scenario-business.nodes.three":"Decision","oss-twin-scenario-business.nodes.two":"State","oss-twin-scenario-business.rows.changedInputs.board":"Changed inputs: board view","oss-twin-scenario-business.rows.changedInputs.item":"Changed inputs: change","oss-twin-scenario-business.rows.changedInputs.verification":"Changed inputs: verification","oss-twin-scenario-business.rows.changedInputs.why":"Changed inputs: why it matters","oss-twin-scenario-business.rows.four":"Question","oss-twin-scenario-business.rows.mergePolicy.board":"Merge policy: board view","oss-twin-scenario-business.rows.mergePolicy.item":"Merge policy: change","oss-twin-scenario-business.rows.mergePolicy.verification":"Merge policy: verification","oss-twin-scenario-business.rows.mergePolicy.why":"Merge policy: why it matters","oss-twin-scenario-business.rows.one":"Record","oss-twin-scenario-business.rows.parentSplit.board":"Parent split: board view","oss-twin-scenario-business.rows.parentSplit.item":"Parent split: change","oss-twin-scenario-business.rows.parentSplit.verification":"Parent split: verification","oss-twin-scenario-business.rows.parentSplit.why":"Parent split: why it matters","oss-twin-scenario-business.rows.three":"Decision","oss-twin-scenario-business.rows.two":"State","oss-twin-scenario-business.rows.typedDifferences.board":"Typed differences: board view","oss-twin-scenario-business.rows.typedDifferences.item":"Typed differences: change","oss-twin-scenario-business.rows.typedDifferences.verification":"Typed differences: verification","oss-twin-scenario-business.rows.typedDifferences.why":"Typed differences: why it matters","oss-twin-scenario-business.rows.unchangedCount.board":"Unchanged values: board view","oss-twin-scenario-business.rows.unchangedCount.item":"Unchanged values: change","oss-twin-scenario-business.rows.unchangedCount.verification":"Unchanged values: verification","oss-twin-scenario-business.rows.unchangedCount.why":"Unchanged values: why it matters","oss-twin-scenario-business.shell.accent":"see what actually changes","oss-twin-scenario-business.shell.body":"A proposed rule should be compared with the same starting conditions, not an improvised spreadsheet. Twin runs the alternative as a scenario and returns a typed difference for the decision. Favourable, unfavourable and unchanged outcomes remain separate, so one headline number cannot hide downtime or risk. The parent operation stays available beside the proposal until an explicit merge decision is made. The branch keeps its start point, controlled inputs and execution receipt, so a second option can be run without pretending it was observed in production. A decision-maker can reject the proposal while retaining the comparison that explained why.","oss-twin-scenario-business.shell.eyebrow":"Decision alternatives","oss-twin-scenario-business.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-scenario-business.shell.lead":"Change one rule","oss-twin-scenario-business.shell.left":"A maintenance or policy alternative branches from a named current state, then changes one controlled input. The parent remains intact, making it possible to compare an option with the operation it would actually replace. The operating record remains visible beside the proposal.","oss-twin-scenario-business.shell.leftKicker":"Every proposal starts at the same point","oss-twin-scenario-business.shell.pill1":"SAME START","oss-twin-scenario-business.shell.pill2":"RUN THE ALTERNATIVE","oss-twin-scenario-business.shell.pill3":"TYPED DIFF","oss-twin-scenario-business.shell.right":"Typed differences show favourable, unfavourable and unchanged outcomes together. Overtime, downtime, production and risk do not collapse into one headline number, and a merge still requires an explicit decision. The decision can be reviewed against both versions.","oss-twin-scenario-business.shell.rightKicker":"The difficult result stays visible","oss-twin-scenario-business.shell.secondaryKicker":"Alternatives retain the trade-off","oss-twin-scenario-business.sub":"A reading made explicit","oss-twin-scenario-business.tag":"TWIN","oss-twin-scenario-business.title":"Operational memory","oss-twin-scenario-business.verifyLabel":"Verify Label","oss-twin-scenario-contract.band.left":"history retained","oss-twin-scenario-contract.band.right":"state derived","oss-twin-scenario-contract.body":"The record keeps the change, its context and the decision that followed.","oss-twin-scenario-contract.chrome.meta":"illustrative","oss-twin-scenario-contract.chrome.path":"Twin","oss-twin-scenario-contract.chrome.status":"reading complete","oss-twin-scenario-contract.field.merge.later":"what needed a decision?","oss-twin-scenario-contract.field.merge.name":"Merge outcome","oss-twin-scenario-contract.field.merge.records":"resolved conflicts and approver","oss-twin-scenario-contract.field.merge.usedFor":"controlled return","oss-twin-scenario-contract.field.parent.later":"where did it start?","oss-twin-scenario-contract.field.parent.name":"Parent record","oss-twin-scenario-contract.field.parent.records":"aggregate and version at the split","oss-twin-scenario-contract.field.parent.usedFor":"replay point","oss-twin-scenario-contract.field.providers.later":"which assumptions moved?","oss-twin-scenario-contract.field.providers.name":"Controlled inputs","oss-twin-scenario-contract.field.providers.records":"rules, providers and their versions","oss-twin-scenario-contract.field.providers.usedFor":"bounded execution","oss-twin-scenario-contract.field.trace.later":"why did it differ?","oss-twin-scenario-contract.field.trace.name":"Execution trace","oss-twin-scenario-contract.field.trace.records":"inputs, outputs and ordered steps","oss-twin-scenario-contract.field.trace.usedFor":"inspect the result","oss-twin-scenario-contract.field.version.later":"which result is this?","oss-twin-scenario-contract.field.version.name":"Scenario version","oss-twin-scenario-contract.field.version.records":"branch identity and typed change","oss-twin-scenario-contract.field.version.usedFor":"compare variants","oss-twin-scenario-contract.foot.left":"isolated run","oss-twin-scenario-contract.foot.right":"named return","oss-twin-scenario-contract.kicker":"Twin instrument","oss-twin-scenario-contract.kicker.label":"scenario contract","oss-twin-scenario-contract.kicker.sub":"what survives the branch","oss-twin-scenario-contract.kicker.tag":"scenario","oss-twin-scenario-contract.nodes.one":"Record","oss-twin-scenario-contract.nodes.three":"Decision","oss-twin-scenario-contract.nodes.two":"State","oss-twin-scenario-contract.rows.four":"Question","oss-twin-scenario-contract.rows.one":"Record","oss-twin-scenario-contract.rows.three":"Decision","oss-twin-scenario-contract.rows.two":"State","oss-twin-scenario-contract.shell.accent":"and keep what it forked from","oss-twin-scenario-contract.shell.body":"A scenario is a bounded alternative, not a copy with an uncertain origin. Twin joins its parent state, inputs, outcome and merge decision in one traceable branch. The parent remains unchanged while the alternative runs under controlled time and resources. A reviewer can therefore repeat the proposal and see exactly which input produced the typed difference. Controlled time, randomness and checkpoints make the run repeatable, and a merge names its rule or its conflicts. The branch is isolated from the operating record but never detached from the version of reality it started from.","oss-twin-scenario-contract.shell.eyebrow":"Deterministic what-if execution","oss-twin-scenario-contract.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-scenario-contract.shell.lead":"Fork the state","oss-twin-scenario-contract.shell.left":"A scenario retains its parent, split point, state version and changed inputs before it runs. The alternative is isolated from the operating record, but never detached from the version of reality it started from.","oss-twin-scenario-contract.shell.leftKicker":"The starting point is named","oss-twin-scenario-contract.shell.pill1":"FORK","oss-twin-scenario-contract.shell.pill2":"CONTROLLED TIME","oss-twin-scenario-contract.shell.pill3":"TYPED DIFF","oss-twin-scenario-contract.shell.pill4":"MERGE","oss-twin-scenario-contract.shell.right":"Controlled time, randomness and checkpoints make an execution repeatable. Comparison retains both sides of a typed difference, and a merge names its rule or conflicts instead of letting a later write quietly win.","oss-twin-scenario-contract.shell.rightKicker":"Diffs and merges stay explicit","oss-twin-scenario-contract.shell.secondaryKicker":"A branch can be repeated","oss-twin-scenario-contract.sub":"A reading made explicit","oss-twin-scenario-contract.tag":"TWIN","oss-twin-scenario-contract.title":"Operational memory","oss-twin-scenario-fork.chrome.path":"Twin","oss-twin-scenario-fork.chrome.status":"three alternatives, two merge conflicts","oss-twin-scenario-fork.chrome.meta":"illustrative","oss-twin-scenario-fork.stage.aria":"A versioned plant scenario with alternatives","oss-twin-scenario-fork.parent.label":"Parent state","oss-twin-scenario-fork.parent.value":"plant / version 415","oss-twin-scenario-fork.parent.note":"pressure warning recorded","oss-twin-scenario-fork.fork.label":"same starting version","oss-twin-scenario-fork.branches.aria":"Choose a scenario branch","oss-twin-scenario-fork.branches.parent.label":"Continue parent","oss-twin-scenario-fork.branches.parent.note":"no alternative applied","oss-twin-scenario-fork.branches.parent.title":"Parent continues","oss-twin-scenario-fork.branches.parent.summary":"The parent remains intact while alternatives run beside it. No scenario silently replaces an operational decision.","oss-twin-scenario-fork.branches.inspection.label":"Inspect earlier","oss-twin-scenario-fork.branches.inspection.note":"move the window forward","oss-twin-scenario-fork.branches.inspection.title":"Inspection before the next shift","oss-twin-scenario-fork.branches.inspection.summary":"This branch records a specific maintenance proposal and keeps the trade-off alongside the parent state.","oss-twin-scenario-fork.branches.throughput.label":"Reduce throughput","oss-twin-scenario-fork.branches.throughput.note":"lower load until inspection","oss-twin-scenario-fork.branches.throughput.title":"Reduced-throughput alternative","oss-twin-scenario-fork.branches.throughput.summary":"The operational effect is visible with the production consequence. The parent keeps running under its original rule.","oss-twin-scenario-fork.branches.threshold.label":"Change threshold","oss-twin-scenario-fork.branches.threshold.note":"raise the alarm trigger","oss-twin-scenario-fork.branches.threshold.title":"Changed warning threshold","oss-twin-scenario-fork.branches.threshold.summary":"A changed rule is a distinct branch, so the later reviewer can see exactly which threshold produced the result.","oss-twin-scenario-fork.comparison.label":"Typed diff against parent","oss-twin-scenario-fork.diff.favourable.label":"Favourable","oss-twin-scenario-fork.diff.favourable.item1":"Fault probability falls","oss-twin-scenario-fork.diff.favourable.detail":"shown against the same parent version","oss-twin-scenario-fork.diff.unfavourable.label":"Unfavourable","oss-twin-scenario-fork.diff.unfavourable.item2":"Downtime and overtime rise","oss-twin-scenario-fork.diff.unfavourable.detail":"the trade-off is not hidden","oss-twin-scenario-fork.diff.unchanged.label":"Unchanged","oss-twin-scenario-fork.diff.unchanged.item1":"Parent values retained","oss-twin-scenario-fork.diff.unchanged.item2":"Production remains as planned","oss-twin-scenario-fork.diff.unchanged.item3":"Spare-part use unchanged","oss-twin-scenario-fork.diff.unchanged.detail":"a change is shown only where it exists","oss-twin-scenario-fork.merge.label":"Manual merge back to parent","oss-twin-scenario-fork.merge.value":"two conflicts keep both values","oss-twin-scenario-fork.band.left":"same parent version","oss-twin-scenario-fork.band.right":"decision and diff retained together","oss-twin-sovereign-controls.band.left":"history retained","oss-twin-sovereign-controls.band.right":"state derived","oss-twin-sovereign-controls.body":"The record keeps the change, its context and the decision that followed.","oss-twin-sovereign-controls.chrome.meta":"illustrative","oss-twin-sovereign-controls.chrome.path":"Twin","oss-twin-sovereign-controls.chrome.status":"reading complete","oss-twin-sovereign-controls.foot.left":"Declared boundaries","oss-twin-sovereign-controls.foot.right":"Evaluated at request time","oss-twin-sovereign-controls.head.label":"Sovereignty controls","oss-twin-sovereign-controls.head.sub":"Each boundary is declared and evaluated.","oss-twin-sovereign-controls.head.tag":"explicit policy","oss-twin-sovereign-controls.kicker":"Twin instrument","oss-twin-sovereign-controls.nodes.one":"Record","oss-twin-sovereign-controls.nodes.three":"Decision","oss-twin-sovereign-controls.nodes.two":"State","oss-twin-sovereign-controls.rows.access.artefact":"Access policy","oss-twin-sovereign-controls.rows.access.failure":"request denied","oss-twin-sovereign-controls.rows.access.name":"Request access","oss-twin-sovereign-controls.rows.access.question":"May this actor read this record now?","oss-twin-sovereign-controls.rows.encryption.artefact":"Key record","oss-twin-sovereign-controls.rows.encryption.failure":"unreadable blocked","oss-twin-sovereign-controls.rows.encryption.name":"Key history","oss-twin-sovereign-controls.rows.encryption.question":"Which key version protects this value?","oss-twin-sovereign-controls.rows.four":"Question","oss-twin-sovereign-controls.rows.isolation.artefact":"Tenant policy","oss-twin-sovereign-controls.rows.isolation.failure":"crossing denied","oss-twin-sovereign-controls.rows.isolation.name":"Tenant isolation","oss-twin-sovereign-controls.rows.isolation.question":"Which records may this tenant see?","oss-twin-sovereign-controls.rows.one":"Record","oss-twin-sovereign-controls.rows.replication.artefact":"Replication policy","oss-twin-sovereign-controls.rows.replication.failure":"replica denied","oss-twin-sovereign-controls.rows.replication.name":"Replica scope","oss-twin-sovereign-controls.rows.replication.question":"Which nodes may receive this event?","oss-twin-sovereign-controls.rows.residency.artefact":"Placement rule","oss-twin-sovereign-controls.rows.residency.failure":"move denied","oss-twin-sovereign-controls.rows.residency.name":"Data residency","oss-twin-sovereign-controls.rows.residency.question":"Where may this shard be placed?","oss-twin-sovereign-controls.rows.three":"Decision","oss-twin-sovereign-controls.rows.two":"State","oss-twin-sovereign-controls.shell.accent":"refuse every undeclared move","oss-twin-sovereign-controls.shell.body":"Scale and isolation are deployment decisions with data consequences. Twin keeps shard placement, tenancy and residency as enforceable policy rather than operator memory. A move is evaluated before data crosses a store, region or tenant boundary, and a refusal names the rule that stopped it. Adding capacity therefore does not silently widen access to the record. The same policy travels with a replay and a restore, so an operator cannot repair capacity by moving history outside its declared estate. Growth remains a governed change with evidence attached.","oss-twin-sovereign-controls.shell.eyebrow":"Sovereign distributed operation","oss-twin-sovereign-controls.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-sovereign-controls.shell.lead":"Keep the record inside policy","oss-twin-sovereign-controls.shell.left":"Shards, tenants, isolation levels and residency rules are named choices rather than deployment folklore. A request or move can be refused at the boundary because the permitted placement and relationship are known.","oss-twin-sovereign-controls.shell.leftKicker":"Placement is policy","oss-twin-sovereign-controls.shell.pill1":"SHARDING","oss-twin-sovereign-controls.shell.pill2":"ISOLATION LEVELS","oss-twin-sovereign-controls.shell.pill3":"RESIDENCY RULES","oss-twin-sovereign-controls.shell.right":"A deployment can add nodes, stores and regions while keeping the same event model and policies. The operator can inspect where data belongs, which crossings are granted and why an undeclared move did not proceed.","oss-twin-sovereign-controls.shell.rightKicker":"Growth does not weaken control","oss-twin-sovereign-controls.shell.secondaryKicker":"Scale is governed deliberately","oss-twin-sovereign-controls.sub":"A reading made explicit","oss-twin-sovereign-controls.tag":"TWIN","oss-twin-sovereign-controls.title":"Operational memory","oss-twin-standard-business.band.left":"history retained","oss-twin-standard-business.band.right":"state derived","oss-twin-standard-business.body":"The record keeps the change, its context and the decision that followed.","oss-twin-standard-business.chrome.meta":"illustrative","oss-twin-standard-business.chrome.path":"Twin","oss-twin-standard-business.chrome.status":"reading complete","oss-twin-standard-business.foot.left":"Record retained","oss-twin-standard-business.foot.right":"State derived","oss-twin-standard-business.kicker":"Twin instrument","oss-twin-standard-business.nodes.one":"Record","oss-twin-standard-business.nodes.three":"Decision","oss-twin-standard-business.nodes.two":"State","oss-twin-standard-business.rows.four":"Question","oss-twin-standard-business.rows.one":"Record","oss-twin-standard-business.rows.three":"Decision","oss-twin-standard-business.rows.two":"State","oss-twin-standard-business.shell.accent":"rather than remodelling them","oss-twin-standard-business.shell.body":"A new twin programme should not require remodelling every system already in service. Twin works with existing standards and makes any translation loss visible before it becomes operational risk.","oss-twin-standard-business.shell.eyebrow":"Standards interoperability","oss-twin-standard-business.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-standard-business.shell.lead":"Use the models you already have","oss-twin-standard-business.shell.left":"Departments can continue using the AAS, FHIR, DTDL, NGSI-LD, SAPIENT or BPMN models they already operate. Twin maps them through an adapter rather than demanding a replacement model before work can begin. The domain team keeps its own model.","oss-twin-standard-business.shell.leftKicker":"The model stays owned by its domain","oss-twin-standard-business.shell.pill1":"AAS","oss-twin-standard-business.shell.pill2":"NGSI-LD","oss-twin-standard-business.shell.pill3":"DTDL","oss-twin-standard-business.shell.pill4":"FHIR","oss-twin-standard-business.shell.pill5":"SAPIENT","oss-twin-standard-business.shell.pill6":"BPMN","oss-twin-standard-business.shell.right":"A translation records the supported content, preserved extensions and any warnings or losses. That leaves teams with a usable route now and a clear list of the remaining mapping work, rather than an integration success claim nobody can inspect.","oss-twin-standard-business.shell.rightKicker":"The handover carries evidence","oss-twin-standard-business.shell.secondaryKicker":"Existing models keep their value","oss-twin-standard-business.sub":"A reading made explicit","oss-twin-standard-business.tag":"TWIN","oss-twin-standard-business.title":"Operational memory","oss-twin-standard-roles.band.left":"history retained","oss-twin-standard-roles.band.right":"state derived","oss-twin-standard-roles.body":"The record keeps the change, its context and the decision that followed.","oss-twin-standard-roles.chrome.meta":"illustrative","oss-twin-standard-roles.chrome.path":"Twin","oss-twin-standard-roles.chrome.status":"reading complete","oss-twin-standard-roles.flow.enters":"Flow / enters","oss-twin-standard-roles.flow.leaves":"Flow / leaves","oss-twin-standard-roles.foot.left":"Record retained","oss-twin-standard-roles.foot.right":"State derived","oss-twin-standard-roles.head.label":"Head / label","oss-twin-standard-roles.head.sub":"Head / sub","oss-twin-standard-roles.head.tag":"Head / tag","oss-twin-standard-roles.kicker":"Twin instrument","oss-twin-standard-roles.nodes.one":"Record","oss-twin-standard-roles.nodes.three":"Decision","oss-twin-standard-roles.nodes.two":"State","oss-twin-standard-roles.rows.aas.domain":"AAS: domain","oss-twin-standard-roles.rows.aas.enters":"AAS: accepted input","oss-twin-standard-roles.rows.aas.leaves":"AAS: returned output","oss-twin-standard-roles.rows.aas.mark":"AAS: adapter","oss-twin-standard-roles.rows.bpmn.domain":"BPMN: domain","oss-twin-standard-roles.rows.bpmn.enters":"BPMN: accepted input","oss-twin-standard-roles.rows.bpmn.leaves":"BPMN: returned output","oss-twin-standard-roles.rows.bpmn.mark":"BPMN: adapter","oss-twin-standard-roles.rows.dtdl.domain":"DTDL: domain","oss-twin-standard-roles.rows.dtdl.enters":"DTDL: accepted input","oss-twin-standard-roles.rows.dtdl.leaves":"DTDL: returned output","oss-twin-standard-roles.rows.dtdl.mark":"DTDL: adapter","oss-twin-standard-roles.rows.fhir.domain":"FHIR: domain","oss-twin-standard-roles.rows.fhir.enters":"FHIR: accepted input","oss-twin-standard-roles.rows.fhir.leaves":"FHIR: returned output","oss-twin-standard-roles.rows.fhir.mark":"FHIR: adapter","oss-twin-standard-roles.rows.four":"Question","oss-twin-standard-roles.rows.ngsi.domain":"NGSI-LD: domain","oss-twin-standard-roles.rows.ngsi.enters":"NGSI-LD: accepted input","oss-twin-standard-roles.rows.ngsi.leaves":"NGSI-LD: returned output","oss-twin-standard-roles.rows.ngsi.mark":"NGSI-LD: adapter","oss-twin-standard-roles.rows.one":"Record","oss-twin-standard-roles.rows.sapient.domain":"SAPIENT: domain","oss-twin-standard-roles.rows.sapient.enters":"SAPIENT: accepted input","oss-twin-standard-roles.rows.sapient.leaves":"SAPIENT: returned output","oss-twin-standard-roles.rows.sapient.mark":"SAPIENT: adapter","oss-twin-standard-roles.rows.three":"Decision","oss-twin-standard-roles.rows.two":"State","oss-twin-standard-roles.shell.accent":"write it back with losses named","oss-twin-standard-roles.shell.body":"Existing standards already describe important domain models. Twin reads and writes them through declared adapter roles, including the information that cannot survive a round trip. An adapter reports what it carried, mapped, preserved, warned about or could not export, so a unit qualifier or vendor extension is visible evidence rather than a silent loss. The original representation stays identifiable.","oss-twin-standard-roles.shell.eyebrow":"Interoperability across domains","oss-twin-standard-roles.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-standard-roles.shell.lead":"Read the model already in use","oss-twin-standard-roles.shell.left":"An adapter reports what it carried, mapped, preserved, warned about or could not export. A unit qualifier or vendor extension is visible evidence, not a silent loss hidden behind a successful import. The original representation remains identifiable.","oss-twin-standard-roles.shell.leftKicker":"Translation reports difference","oss-twin-standard-roles.shell.pill1":"AAS","oss-twin-standard-roles.shell.pill2":"NGSI-LD","oss-twin-standard-roles.shell.pill3":"DTDL","oss-twin-standard-roles.shell.pill4":"FHIR","oss-twin-standard-roles.shell.pill5":"SAPIENT","oss-twin-standard-roles.shell.pill6":"BPMN","oss-twin-standard-roles.shell.right":"Parsers and mappers understand each standard while Twin keeps one typed event model underneath. AAS, FHIR or NGSI-LD can evolve at their own pace, with mapping versions and warnings retained for later provenance. The mapping version travels with the record.","oss-twin-standard-roles.shell.rightKicker":"The kernel stays neutral","oss-twin-standard-roles.shell.secondaryKicker":"Interoperability keeps its evidence","oss-twin-standard-roles.sub":"A reading made explicit","oss-twin-standard-roles.tag":"TWIN","oss-twin-standard-roles.title":"Operational memory","oss-twin-stores-and-surfaces.band.left":"history retained","oss-twin-stores-and-surfaces.band.right":"state derived","oss-twin-stores-and-surfaces.body":"The record keeps the change, its context and the decision that followed.","oss-twin-stores-and-surfaces.chrome.meta":"illustrative","oss-twin-stores-and-surfaces.chrome.path":"Twin","oss-twin-stores-and-surfaces.chrome.status":"reading complete","oss-twin-stores-and-surfaces.foot.left":"Record retained","oss-twin-stores-and-surfaces.foot.right":"State derived","oss-twin-stores-and-surfaces.kicker":"Twin instrument","oss-twin-stores-and-surfaces.nodes.one":"Record","oss-twin-stores-and-surfaces.nodes.three":"Decision","oss-twin-stores-and-surfaces.nodes.two":"State","oss-twin-stores-and-surfaces.rows.four":"Question","oss-twin-stores-and-surfaces.rows.one":"Record","oss-twin-stores-and-surfaces.rows.three":"Decision","oss-twin-stores-and-surfaces.rows.two":"State","oss-twin-stores-and-surfaces.shell.accent":"every view is derived from it","oss-twin-stores-and-surfaces.shell.body":"One event history can serve several storage and API shapes. Twin keeps the log authoritative, then derives projections, relationship views and interfaces from it. A surface can be replaced or rebuilt without changing the evidence behind a past answer. The API shape is therefore a reading choice, not a second source of truth. Rebuilding a view does not touch the ordered facts underneath it.","oss-twin-stores-and-surfaces.shell.eyebrow":"Operational surface","oss-twin-stores-and-surfaces.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-stores-and-surfaces.shell.lead":"The log remains the record","oss-twin-stores-and-surfaces.shell.left":"The event store preserves ordered facts while projections, relationship indexes and analytics stores prepare different ways to read them. Each surface is derived for a purpose, not promoted into a competing source of truth.","oss-twin-stores-and-surfaces.shell.leftKicker":"The log remains the record","oss-twin-stores-and-surfaces.shell.pill1":"EVENT STORE","oss-twin-stores-and-surfaces.shell.pill2":"PROJECTIONS","oss-twin-stores-and-surfaces.shell.pill3":"RELATIONSHIPS","oss-twin-stores-and-surfaces.shell.pill4":"APIS","oss-twin-stores-and-surfaces.shell.right":"APIs, TQL and tool surfaces can expose current, temporal, graph and lineage readings from the same record. A view can be replaced or rebuilt without losing the evidence needed to explain a past result.","oss-twin-stores-and-surfaces.shell.rightKicker":"Interfaces do not own history","oss-twin-stores-and-surfaces.shell.secondaryKicker":"One history serves several jobs","oss-twin-stores-and-surfaces.sub":"A reading made explicit","oss-twin-stores-and-surfaces.tag":"TWIN","oss-twin-stores-and-surfaces.title":"Operational memory","oss-twin-tenant-boundary.band.left":"history retained","oss-twin-tenant-boundary.band.right":"state derived","oss-twin-tenant-boundary.body":"The record keeps the change, its context and the decision that followed.","oss-twin-tenant-boundary.chrome.meta":"illustrative","oss-twin-tenant-boundary.chrome.path":"Twin","oss-twin-tenant-boundary.chrome.status":"reading complete","oss-twin-tenant-boundary.foot.left":"Record retained","oss-twin-tenant-boundary.foot.right":"State derived","oss-twin-tenant-boundary.kicker":"Twin instrument","oss-twin-tenant-boundary.nodes.one":"Record","oss-twin-tenant-boundary.nodes.three":"Decision","oss-twin-tenant-boundary.nodes.two":"State","oss-twin-tenant-boundary.rows.four":"Question","oss-twin-tenant-boundary.rows.one":"Record","oss-twin-tenant-boundary.rows.three":"Decision","oss-twin-tenant-boundary.rows.two":"State","oss-twin-tenant-boundary.sub":"A reading made explicit","oss-twin-tenant-boundary.tag":"TWIN","oss-twin-tenant-boundary.title":"Operational memory","oss-twin-tenant-levels.band.left":"history retained","oss-twin-tenant-levels.band.right":"state derived","oss-twin-tenant-levels.body":"The record keeps the change, its context and the decision that followed.","oss-twin-tenant-levels.chrome.meta":"illustrative","oss-twin-tenant-levels.chrome.path":"Twin","oss-twin-tenant-levels.chrome.status":"reading complete","oss-twin-tenant-levels.foot.left":"Record retained","oss-twin-tenant-levels.foot.right":"State derived","oss-twin-tenant-levels.kicker":"Twin instrument","oss-twin-tenant-levels.nodes.one":"Record","oss-twin-tenant-levels.nodes.three":"Decision","oss-twin-tenant-levels.nodes.two":"State","oss-twin-tenant-levels.rows.four":"Question","oss-twin-tenant-levels.rows.one":"Record","oss-twin-tenant-levels.rows.three":"Decision","oss-twin-tenant-levels.rows.two":"State","oss-twin-tenant-levels.shell.accent":"becomes one of four postures","oss-twin-tenant-levels.shell.body":"Logical separation is not one setting. Twin makes the chosen tenant posture explicit, so cross-tenant access is refused by default and granted only by a defined rule. The chosen level is recorded with the tenant, so a reviewer reads the posture instead of inferring it from behaviour.","oss-twin-tenant-levels.shell.eyebrow":"Tenant separation","oss-twin-tenant-levels.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-tenant-levels.shell.lead":"Logically separated","oss-twin-tenant-levels.shell.left":"Tenant separation can be logical, data-level, infrastructure-level or physically separate, depending on the risk and operating model. Naming the level makes the default boundary understandable instead of treating every tenant claim as equivalent.","oss-twin-tenant-levels.shell.leftKicker":"Isolation is not one setting","oss-twin-tenant-levels.shell.pill1":"FOUR LEVELS","oss-twin-tenant-levels.shell.pill2":"DEFAULT REFUSAL","oss-twin-tenant-levels.shell.pill3":"CROSSING GRANTED","oss-twin-tenant-levels.shell.right":"A cross-tenant relationship or query starts refused and needs terms for the tenants, relationship and time window. The result is a bounded exception with an audit trail, not a partial row leak caused by a broad role. The exception ends with its time window.","oss-twin-tenant-levels.shell.rightKicker":"A crossing needs a grant","oss-twin-tenant-levels.shell.secondaryKicker":"Separation has a named strength","oss-twin-tenant-levels.sub":"A reading made explicit","oss-twin-tenant-levels.tag":"TWIN","oss-twin-tenant-levels.title":"Operational memory","oss-twin-three-time-bands.chrome.path":"Twin","oss-twin-three-time-bands.chrome.status":"four events, three temporal meanings","oss-twin-three-time-bands.chrome.meta":"illustrative","oss-twin-three-time-bands.chips.label":"Select an event","oss-twin-three-time-bands.stage.aria":"Three time bands for one event history","oss-twin-three-time-bands.bands.event":"event time","oss-twin-three-time-bands.bands.processing":"processing time","oss-twin-three-time-bands.bands.validity":"validity time","oss-twin-three-time-bands.axis.tuesday":"Tuesday","oss-twin-three-time-bands.axis.wednesday":"Wednesday","oss-twin-three-time-bands.axis.thursday":"Thursday","oss-twin-three-time-bands.axis.friday":"Friday","oss-twin-three-time-bands.axis.nextMonth":"next month","oss-twin-three-time-bands.events.ordinary.name":"Ordinary reading","oss-twin-three-time-bands.events.ordinary.chipSub":"sensor / 09:05","oss-twin-three-time-bands.events.ordinary.prose":"A sensor takes a reading at 09:05. The event, its arrival and the period it describes all begin together.","oss-twin-three-time-bands.events.ordinary.eventTime":"Tuesday 09:05","oss-twin-three-time-bands.events.ordinary.processingTime":"Tuesday 09:05","oss-twin-three-time-bands.events.ordinary.validityTime":"Tuesday 09:05","oss-twin-three-time-bands.events.delayed.name":"Delayed reading","oss-twin-three-time-bands.events.delayed.chipSub":"arrived / 10:12","oss-twin-three-time-bands.events.delayed.prose":"Connectivity returns at 10:12. The reading happened at 09:05, so its delay is retained instead of moving the fact.","oss-twin-three-time-bands.events.delayed.eventTime":"Tuesday 09:05","oss-twin-three-time-bands.events.delayed.processingTime":"Tuesday 10:12","oss-twin-three-time-bands.events.delayed.validityTime":"Tuesday 09:05","oss-twin-three-time-bands.events.calibration.name":"Retroactive calibration","oss-twin-three-time-bands.events.calibration.chipSub":"Friday / back to Tuesday","oss-twin-three-time-bands.events.calibration.prose":"A calibration arrives on Friday and changes how Tuesday's readings should be interpreted. Friday remains the arrival time.","oss-twin-three-time-bands.events.calibration.eventTime":"Friday","oss-twin-three-time-bands.events.calibration.processingTime":"Friday","oss-twin-three-time-bands.events.calibration.validityTime":"from Tuesday","oss-twin-three-time-bands.events.tariff.name":"Future tariff","oss-twin-three-time-bands.events.tariff.chipSub":"recorded / effective later","oss-twin-three-time-bands.events.tariff.prose":"A tariff recorded today becomes valid next month. Recording it now does not make it count before its validity begins.","oss-twin-three-time-bands.events.tariff.eventTime":"today","oss-twin-three-time-bands.events.tariff.processingTime":"today","oss-twin-three-time-bands.events.tariff.validityTime":"next month","oss-twin-three-time-bands.marks.tue0905":"Tue 09:05","oss-twin-three-time-bands.marks.tue1012":"Tue 10:12","oss-twin-three-time-bands.marks.friday":"Friday","oss-twin-three-time-bands.marks.fromTuesday":"from Tuesday","oss-twin-three-time-bands.marks.today":"today","oss-twin-three-time-bands.marks.fromNextMonth":"from next month","oss-twin-three-time-bands.stats.event":"event","oss-twin-three-time-bands.stats.processing":"processing","oss-twin-three-time-bands.stats.validity":"validity","oss-twin-three-time-bands.collapsed.title":"A single timestamp","oss-twin-three-time-bands.collapsed.note":"Arrival order hides late readings, retroactive corrections and future-effective rules.","oss-twin-three-time-bands.band.left":"time carried at entry","oss-twin-three-time-bands.band.right":"one event · three meanings","oss-twin-tuesday-friday.chrome.path":"Twin","oss-twin-tuesday-friday.chrome.status":"one correction, three valid questions","oss-twin-tuesday-friday.chrome.meta":"illustrative","oss-twin-tuesday-friday.stage.aria":"Three readings of the same event history","oss-twin-tuesday-friday.intro.eyebrow":"One history, three readings","oss-twin-tuesday-friday.intro.title":"Friday stays Friday, even when the correction belongs to Tuesday","oss-twin-tuesday-friday.intro.body":"Choose the question. The order changes because each view asks something different, not because the record has been rewritten.","oss-twin-tuesday-friday.controls.aria":"Choose a temporal reading","oss-twin-tuesday-friday.controls.arrival.label":"When did it arrive?","oss-twin-tuesday-friday.controls.event.label":"When did it happen?","oss-twin-tuesday-friday.controls.knowledge.label":"What was known then?","oss-twin-tuesday-friday.strip.title.arrival":"Arrival order","oss-twin-tuesday-friday.strip.rule.arrival":"correction stays last","oss-twin-tuesday-friday.strip.title.event":"Event-time order","oss-twin-tuesday-friday.strip.rule.event":"correction returns to Tuesday","oss-twin-tuesday-friday.strip.title.knowledge":"Wednesday evidence set","oss-twin-tuesday-friday.strip.rule.knowledge":"Friday arrival excluded","oss-twin-tuesday-friday.events.a.label":"Shift started","oss-twin-tuesday-friday.events.a.aria":"Shift started on Tuesday at 08:42","oss-twin-tuesday-friday.events.b.label":"Reading taken","oss-twin-tuesday-friday.events.b.aria":"Reading taken on Tuesday at 09:05","oss-twin-tuesday-friday.events.c.label":"Pressure checked","oss-twin-tuesday-friday.events.c.aria":"Pressure checked on Tuesday at 10:12","oss-twin-tuesday-friday.events.d.label":"Alarm cleared","oss-twin-tuesday-friday.events.d.aria":"Alarm cleared on Tuesday at 14:24","oss-twin-tuesday-friday.events.e.label":"Inspection booked","oss-twin-tuesday-friday.events.e.aria":"Inspection booked on Wednesday at 08:15","oss-twin-tuesday-friday.events.f.label":"Work approved","oss-twin-tuesday-friday.events.f.aria":"Work approved on Wednesday at 16:40","oss-twin-tuesday-friday.events.g.label":"Valve tested","oss-twin-tuesday-friday.events.g.aria":"Valve tested on Thursday at 11:06","oss-twin-tuesday-friday.events.correction.label":"Calibration correction","oss-twin-tuesday-friday.events.correction.aria":"Calibration correction, effective Tuesday and received Friday","oss-twin-tuesday-friday.events.correction.excluded":"received Friday","oss-twin-tuesday-friday.answer.label":"The answer","oss-twin-tuesday-friday.answer.arrival":"For reporting performance, the calibration arrived on Friday. Its delay is evidence, so it remains visible at the end of the arrival stream.","oss-twin-tuesday-friday.answer.event":"For an operational history, the calibration belongs beside Tuesday's 09:05 reading. Its Friday arrival is retained with it, not erased.","oss-twin-tuesday-friday.answer.knowledge":"For Wednesday's sign-off, the calibration was not yet known. The decision can be reviewed on the evidence available at the time.","oss-twin-tuesday-friday.band.left":"no history rewritten","oss-twin-tuesday-friday.band.right":"one correction, three compatible readings","oss-twin-two-domains.band.left":"history retained","oss-twin-two-domains.band.right":"state derived","oss-twin-two-domains.body":"The record keeps the change, its context and the decision that followed.","oss-twin-two-domains.chrome.meta":"illustrative","oss-twin-two-domains.chrome.path":"Twin","oss-twin-two-domains.chrome.status":"reading complete","oss-twin-two-domains.foot.left":"Record retained","oss-twin-two-domains.foot.right":"State derived","oss-twin-two-domains.kicker":"Twin instrument","oss-twin-two-domains.nodes.one":"Record","oss-twin-two-domains.nodes.three":"Decision","oss-twin-two-domains.nodes.two":"State","oss-twin-two-domains.rows.four":"Question","oss-twin-two-domains.rows.one":"Record","oss-twin-two-domains.rows.three":"Decision","oss-twin-two-domains.rows.two":"State","oss-twin-two-domains.sub":"A reading made explicit","oss-twin-two-domains.tag":"TWIN","oss-twin-two-domains.title":"Operational memory","oss-twin-visible-plan.band.left":"history retained","oss-twin-visible-plan.band.meta":"one selected route","oss-twin-visible-plan.band.right":"state derived","oss-twin-visible-plan.band.text":"Plan and result stay inspectable","oss-twin-visible-plan.body":"Each selected question exposes the stage that gives it a route through Twin storage.","oss-twin-visible-plan.cell.aggregate.execute.body":"The plan reads the selected range and returns one mean pressure value for each hour.","oss-twin-visible-plan.cell.aggregate.execute.chip.elapsed":"18 ms","oss-twin-visible-plan.cell.aggregate.execute.chip.index":"analytics store","oss-twin-visible-plan.cell.aggregate.execute.chip.returned":"24 hours returned","oss-twin-visible-plan.cell.aggregate.execute.chip.scanned":"1,248 rows scanned","oss-twin-visible-plan.cell.aggregate.execute.title":"Read and group the matching events","oss-twin-visible-plan.cell.aggregate.optimise.body":"The planner keeps the event-time range, pushes the subject filter and selects the pressure index.","oss-twin-visible-plan.cell.aggregate.optimise.chip.index":"pressure index","oss-twin-visible-plan.cell.aggregate.optimise.chip.pushdown":"subject pushdown","oss-twin-visible-plan.cell.aggregate.optimise.chip.range":"event-time range","oss-twin-visible-plan.cell.aggregate.optimise.chip.scan":"full scan skipped","oss-twin-visible-plan.cell.aggregate.optimise.title":"Narrow the work before reading","oss-twin-visible-plan.cell.aggregate.parse.body":"The parser recognises a time range, subject, pressure field and hourly group.","oss-twin-visible-plan.cell.aggregate.parse.chip.ast":"AST ready","oss-twin-visible-plan.cell.aggregate.parse.chip.shape":"aggregate form","oss-twin-visible-plan.cell.aggregate.parse.title":"Build the aggregate syntax tree","oss-twin-visible-plan.cell.aggregate.validate.body":"P-07, pressure and the requested time window exist and have compatible types.","oss-twin-visible-plan.cell.aggregate.validate.chip.fields":"field numeric","oss-twin-visible-plan.cell.aggregate.validate.chip.types":"subject resolved","oss-twin-visible-plan.cell.aggregate.validate.title":"Confirm the query contract","oss-twin-visible-plan.cell.lineage.execute.body":"The plan follows the source links and returns the readings that produced the score.","oss-twin-visible-plan.cell.lineage.execute.chip.elapsed":"11 ms","oss-twin-visible-plan.cell.lineage.execute.chip.origins":"3 origins","oss-twin-visible-plan.cell.lineage.execute.chip.store":"lineage store","oss-twin-visible-plan.cell.lineage.execute.chip.walked":"47 values walked","oss-twin-visible-plan.cell.lineage.execute.title":"Walk the contributing values","oss-twin-visible-plan.cell.lineage.optimise.body":"The planner selects the relationship traversal and declines an unrelated current-state index.","oss-twin-visible-plan.cell.lineage.optimise.chip.index":"current index skipped","oss-twin-visible-plan.cell.lineage.optimise.chip.traversal":"origin traversal","oss-twin-visible-plan.cell.lineage.optimise.title":"Choose the origin route","oss-twin-visible-plan.cell.lineage.parse.body":"The parser recognises a score, its origins and the requested traversal depth.","oss-twin-visible-plan.cell.lineage.parse.chip.ast":"AST ready","oss-twin-visible-plan.cell.lineage.parse.chip.shape":"lineage form","oss-twin-visible-plan.cell.lineage.parse.title":"Build the lineage traversal","oss-twin-visible-plan.cell.lineage.validate.body":"The score aspect exists and the requested origin depth is permitted.","oss-twin-visible-plan.cell.lineage.validate.chip.aspect":"score aspect","oss-twin-visible-plan.cell.lineage.validate.chip.depth":"depth 3","oss-twin-visible-plan.cell.lineage.validate.title":"Confirm source and depth","oss-twin-visible-plan.chrome.meta":"2 query forms","oss-twin-visible-plan.chrome.path":"TQL plan inspector","oss-twin-visible-plan.chrome.status":"plan ready","oss-twin-visible-plan.console.subtitle":"Choose a TQL question and inspect every stage from parsing to execution.","oss-twin-visible-plan.console.tabsLabel":"TQL questions","oss-twin-visible-plan.foot.left":"Record retained","oss-twin-visible-plan.foot.right":"State derived","oss-twin-visible-plan.kicker":"Twin instrument","oss-twin-visible-plan.nodes.one":"Record","oss-twin-visible-plan.nodes.three":"Decision","oss-twin-visible-plan.nodes.two":"State","oss-twin-visible-plan.query.aggregate.name":"Hourly mean pressure","oss-twin-visible-plan.query.aggregate.shape":"aggregate","oss-twin-visible-plan.query.aggregate.text":"Mean pressure for pump P-07, grouped by hour.","oss-twin-visible-plan.query.lineage.name":"Maintenance-score lineage","oss-twin-visible-plan.query.lineage.shape":"lineage","oss-twin-visible-plan.query.lineage.text":"Which readings produced the monthly maintenance score?","oss-twin-visible-plan.rows.four":"Question","oss-twin-visible-plan.rows.one":"Record","oss-twin-visible-plan.rows.three":"Decision","oss-twin-visible-plan.rows.two":"State","oss-twin-visible-plan.stage.execute.name":"Execute","oss-twin-visible-plan.stage.optimise.name":"Optimise","oss-twin-visible-plan.stage.parse.name":"Parse","oss-twin-visible-plan.stage.validate.name":"Validate","oss-twin-visible-plan.stopped.label":"Stopped in validation","oss-twin-visible-plan.stopped.text":"The query asks for a text field where a numeric range is required.","oss-twin-visible-plan.stopped.where":"line 1, column 38","oss-twin-visible-plan.sub":"A reading made explicit","oss-twin-visible-plan.tag":"TWIN","oss-twin-visible-plan.title":"Operational memory","oss-twin-wednesday-page.band.left":"history retained","oss-twin-wednesday-page.band.right":"state derived","oss-twin-wednesday-page.body":"The record keeps the change, its context and the decision that followed.","oss-twin-wednesday-page.chrome.meta":"illustrative","oss-twin-wednesday-page.chrome.path":"Twin","oss-twin-wednesday-page.chrome.status":"reading complete","oss-twin-wednesday-page.cover.hidden":"Cover / hidden","oss-twin-wednesday-page.cover.moved":"Cover / moved","oss-twin-wednesday-page.foot.left":"Record retained","oss-twin-wednesday-page.foot.right":"State derived","oss-twin-wednesday-page.kicker":"Twin instrument","oss-twin-wednesday-page.line.friday":"Line / friday","oss-twin-wednesday-page.line.tuesday":"Line / tuesday","oss-twin-wednesday-page.line.wednesday":"Line / wednesday","oss-twin-wednesday-page.margin.happened":"Margin / happened","oss-twin-wednesday-page.margin.written":"Margin / written","oss-twin-wednesday-page.nodes.one":"Record","oss-twin-wednesday-page.nodes.three":"Decision","oss-twin-wednesday-page.nodes.two":"State","oss-twin-wednesday-page.note.text":"Note / text","oss-twin-wednesday-page.note.title":"Note / title","oss-twin-wednesday-page.rows.four":"Question","oss-twin-wednesday-page.rows.one":"Record","oss-twin-wednesday-page.rows.three":"Decision","oss-twin-wednesday-page.rows.two":"State","oss-twin-wednesday-page.sub":"A reading made explicit","oss-twin-wednesday-page.tag":"TWIN","oss-twin-wednesday-page.title":"Operational memory","oss-twin-wednesday-page.view.known.title":"View / known / title","oss-twin-wednesday-page.view.today.title":"View / today / title","oss-twin-wednesday-set.band.left":"history retained","oss-twin-wednesday-set.band.right":"state derived","oss-twin-wednesday-set.body":"The record keeps the change, its context and the decision that followed.","oss-twin-wednesday-set.chrome.meta":"illustrative","oss-twin-wednesday-set.chrome.path":"Twin","oss-twin-wednesday-set.chrome.status":"reading complete","oss-twin-wednesday-set.foot.left":"Record retained","oss-twin-wednesday-set.foot.right":"State derived","oss-twin-wednesday-set.kicker":"Twin instrument","oss-twin-wednesday-set.nodes.one":"Record","oss-twin-wednesday-set.nodes.three":"Decision","oss-twin-wednesday-set.nodes.two":"State","oss-twin-wednesday-set.rows.four":"Question","oss-twin-wednesday-set.rows.one":"Record","oss-twin-wednesday-set.rows.three":"Decision","oss-twin-wednesday-set.rows.two":"State","oss-twin-wednesday-set.shell.accent":"is not what the operator knew then.","oss-twin-wednesday-set.shell.body":"Twin keeps the event, its context and the decision it supported in one operational record.","oss-twin-wednesday-set.shell.eyebrow":"The question ordinary history cannot answer","oss-twin-wednesday-set.shell.footer":"Keep the record. Derive the state. Ask the past directly.","oss-twin-wednesday-set.shell.lead":"What is true now","oss-twin-wednesday-set.shell.left":"The event log keeps the fact and the time at which it happened.","oss-twin-wednesday-set.shell.leftKicker":"The distinction stays visible","oss-twin-wednesday-set.shell.pill1":"AS KNOWN","oss-twin-wednesday-set.shell.pill2":"AS OF","oss-twin-wednesday-set.shell.pill3":"NO HINDSIGHT","oss-twin-wednesday-set.shell.right":"A derived view can stay fast while every historical answer remains traceable.","oss-twin-wednesday-set.shell.rightKicker":"Why operators need it","oss-twin-wednesday-set.shell.secondaryKicker":"What this proves","oss-twin-wednesday-set.sub":"A reading made explicit","oss-twin-wednesday-set.tag":"TWIN","oss-twin-wednesday-set.title":"Operational memory","oss-twin-wednesday-set.banner.eyebrow":"Three clocks","oss-twin-wednesday-set.banner.lead":"What is true now","oss-twin-wednesday-set.banner.accent":"was not known then.","oss-twin-wednesday-set.banner.paragraph1":"A supervisor signs a maintenance decision on Wednesday. A diagnostic event received Friday may explain Tuesday, but it was not on the supervisor's screen and could not have influenced the sign-off.","oss-twin-wednesday-set.banner.paragraph2":"Processing time rebuilds the evidence available when the decision was made. The later event remains in the record and appears in the current account, but never quietly enters Wednesday's review.","oss-twin-wednesday-set.banner.panelHeader":"Wednesday sign-off","oss-twin-wednesday-set.banner.panelTag":"reviewed without hindsight","oss-twin-wednesday-set.banner.meta":"illustrative","oss-twin-wednesday-set.banner.controlsLabel":"Choose an evidence set","oss-twin-wednesday-set.banner.known.label":"As known Wednesday","oss-twin-wednesday-set.banner.known.count":"4 events","oss-twin-wednesday-set.banner.known.readout":"This is the evidence set available to the operator when the Wednesday decision was signed.","oss-twin-wednesday-set.banner.now.label":"As of Tuesday, now","oss-twin-wednesday-set.banner.now.count":"5 events","oss-twin-wednesday-set.banner.now.readout":"The Friday arrival is now visible, while the Tuesday event time remains attached to that correction.","oss-twin-wednesday-set.banner.evidenceHeader":"Evidence set","oss-twin-wednesday-set.banner.evidenceCountLabel":"events","oss-twin-wednesday-set.banner.event.pressure":"09:05 pressure reading","oss-twin-wednesday-set.banner.event.request":"11:20 inspection request","oss-twin-wednesday-set.banner.event.decision":"15:45 signed decision","oss-twin-wednesday-set.banner.event.report":"16:10 status report","oss-twin-wednesday-set.banner.event.calibration":"Friday arrival, happened Tuesday","oss-twin-wednesday-set.banner.available":"included","oss-twin-wednesday-set.banner.withheld":"not yet known","oss-twin-wednesday-set.banner.verdict":"the decision is judged on the page that existed when it was made","oss-twin-wednesday-set.banner.footline":"three clocks make fairness a query rather than an interpretation","page-breadcrumb.c766e66518":"Breadcrumb","page-toc.7e439c353e":"On this page","section_st_a1_display-split.7c9a7c0610":"Detail","section_st_f1_cta-dark.90e40d5043":"Get started","toc-rail.f5cbdf6bfb":"Contents"}
