Legitimacy
Whether a file is the original, published by whoever is meant to have published it. This is a different question from whether the file changed: something that never changes can still not be the original.
Design language Content
How Zerone writes for the site: plain British English, claims that match the product code, numbers that say where they come from and two languages written by hand. Where the build checks a rule, this page names the test; where it does not, it says so.
The English source is plain, declarative British English, and the Turkish keeps the same voice. Most copy speaks as Zerone, ‘we’, to the reader, ‘you’. A sentence says what something does and stops there. No test holds the patterns in this section; each is a convention held by review, and the figures below are measured on every build.
The copy of every page lives in an English and a Turkish dictionary; research articles and legal texts are Markdown and are not counted here. These figures are counted from those dictionaries, outside this section, when the site is built, so they move when the copy moves.
Short, declarative and finished with a full stop: 3 to 12 words in English on the pages below. The Turkish headline is written again for a Turkish reader, not translated word for word.
| Page | English | Turkish | English words | Turkish words |
|---|---|---|---|---|
| /zero-door | Prove every binary, library and package on your servers is the original. | Sunucularınızdaki her ikilinin, kütüphanenin ve paketin orijinal olduğunu kanıtlayın. | 12 | 9 |
| /architecture | Where it sits, what it sends, who it talks to. | Nerede durur, ne gönderir, kiminle konuşur. | 10 | 6 |
| /pricing | What the licence counts is servers. | Lisansın saydığı şey sunuculardır. | 6 | 4 |
| /trust | What we promise, in writing. | Ne söz veriyorsak, yazılı. | 5 | 4 |
| /glossary | The words, without the fog. | Kelimeler, sisi olmadan. | 5 | 3 |
| /services | We break it first. | Önce biz kırarız. | 4 | 3 |
| /research | What we found. | Ne bulduk. | 3 | 2 |
Write British English: colour, behaviour, organisation, licence.
WhyOne spelling system for running prose and for names: the footer link to the trust page reads Trust centre, and the framework list has a NATO catalogue (illustrative) entry. A vendor's own term keeps its spelling, as in the Windows term ‘catalog signature’ on the product page. Percent is written as one word, the form the build asks for in place of the sign.
ReviewKept by review, not by a test.
Speak as ‘we’, to ‘you’.
WhyZerone is ‘we’ and the reader is ‘you’, so a sentence says who does what. The company name takes the third person where it introduces Zerone, as the home page and the company page do.
ReviewKept by review, not by a test.
Describe the capability and leave out superlatives.
WhyA capability can be checked against the product. An adjective cannot, and a security buyer discounts it on sight.
ReviewKept by review, not by a test.
No contractions and no exclamation marks.
WhyFull forms read the same on a page, in a report and in a contract. The emphasis comes from what the sentence says.
ReviewKept by review, not by a test.
Keep the contrast ‘X, not Y’ for the point that needs it.
WhyIt is the house pattern: ‘Metadata and hashes, not your files’. Used in every paragraph, it stops meaning anything.
ReviewKept by review, not by a test.
Compare with a category, never with a named competitor.
WhyThe comparison stays true when the market moves. From the product page: ‘File integrity tools tell you that a file changed. Zero Door tells you whether the file on disk is the one its publisher shipped, for every binary, library and package on the host, including everything that came with the operating system.’
ReviewKept by review, not by a test.
No comma before the ‘and’ that ends a list.
WhyAs the home page writes it: ‘binary, library and package’. The copy does not follow this everywhere yet: 50 English strings put a comma before the final ‘and’ of a list, counted by pattern on every build.
ReviewKept by review, not by a test.
A heading that is a sentence ends with a full stop. Kickers, buttons and labels do not.
WhyThe full stop marks a statement. A label is a name and a button is an action.
ReviewKept by review, not by a test.
A claim is a sentence a buyer could hold us to. Capability sentences are checked against the product code, and a sentence the code does not back is corrected or removed. A capability with no counterpart in the code is not written at all.
The product decides whether a file is the original, published by whoever is meant to publish it; that is a statement about where a file came from, not about what it intends. In place of customer logos, the site offers evidence a reader can check, such as evidence an auditor verifies offline.
Describe what the product does today, the way its code does it. Never what is planned.
WhyA pilot finds out within weeks. A sentence the product cannot back costs more than it earns.
ReviewKept by review, not by a test.
Say that a file matches its original or comes from its publisher. Do not let ‘legitimate’ stand in for ‘safe’.
WhyA compromised build can ship inside a package that is exactly what its publisher released.
ReviewKept by review, not by a test.
No customer logos, no case studies and no anonymous profiles such as a bank with a number of servers.
WhyProof nobody can check would contradict evidence over claims, the rule the company and careers pages repeat. What the product does not do is said on the architecture page and on every solution page instead.
ReviewKept by review, not by a test.
The product maps its evidence to control catalogues. The trust page defines the word for every reader:
Thirteen frameworks ship built in. Mapping means the audit trail and reports are organised by these controls. It does not mean Zerone holds a certificate for each framework; certifications are listed here when obtained.
Name only the frameworks the product ships, and take the names from the site's one framework list.
WhyThe main content of every claim page is read for 6 catalogue names the product does not ship, and any of them fails the build. The gate reads those names from the same file, so the names to use and the names to avoid are kept in one place. Taking the names from the list is held by review.
TestEnforced by a test on every change.
The list is pinned in a unit test.
WhyThe test holds 13 identifiers in a fixed order, copied from the product catalogue. A change on the product side is caught by review, not by the test.
TestEnforced by a test on every change.
Never claim a certification or an accreditation, for the product or for Zerone.
WhyThe product produces evidence an assessor uses. The assessment, and any certificate, belongs to the assessor.
ReviewKept by review, not by a test.
It is not a certification. No product is PCI DSS certified; it produces the evidence your assessor asks for.
The build accepts one number beside a percent sign: 99.5, the monthly availability, which is the same on every tier. Every other figure is a product fact checked against the code, a contract term, a dated measurement or a projection labelled ‘target scenario’.
The only number allowed beside a percent sign is 99.5: 99.5% in English and %99,5 in Turkish.
WhyThe shared dictionary test named here, and one test per page dictionary, read every string for a number next to a percent sign; any other value fails. The same check runs again over every built page.
TestEnforced by a test on every change.
/(\d+(?:[.,]\d+)?)\s?%|%\s?(\d+(?:[.,]\d+)?)/gMonthly availability 99.5%, the same on every tier.
An adaptive governor targets 70 percent CPU, …
Not printedAny number other than 99.5 beside the sign
The measured figure stands in the proof strip of the product page, and its label ends with the month it was measured; the update visual further down that page counts up to the same figure, read from the same entry. The home page carries no measured figure, only a projection, and the projection carries ‘target scenario’ until a pilot measures it.
Measured
3,411 → 1
files changed by one Windows update, reduced to one alert per server
measured, September 2026
Projected
2 days
Incident response, two weeks to two days
target scenario
Label every figure with its source: a month for a measurement, ‘target scenario’ for a projection.
WhyA number is the most quoted part of a page. Without its label it reads as a promise.
ReviewKept by review, not by a test.
Where a share must be stated, the word percent replaces the sign and the figure is verified against the product. Counts in headings are written as words, as below; the one heading that uses digits is the title of the English 404 page, ‘0 results, 1 way home’. This is observed, not a rule.
| Kind | English | Turkish |
|---|---|---|
| A share, with the word percent | An adaptive governor targets 70 percent CPU, … | Uyarlamalı bir hız denetleyicisi yüzde 70 işlemci hedefler, … |
| A count in words, in a heading | Four rules, each with its proof. | Dört kural, her biri kanıtıyla. |
| A count in a stat line | 3,411 → 1 files changed by one Windows update, reduced to one alert per server (measured, September 2026) | 3.411 → 1 tek bir Windows güncellemesinin değiştirdiği dosya, sunucu başına tek alarma iner (ölçüm, Eylül 2026) |
A figure is a product fact, a contract term, a dated measurement or a labelled projection.
WhyAn invented metric reads like every other number on the page. That is why none is written.
ReviewKept by review, not by a test.
The pricing page states the licence model and no price: no list price, no price per server and no trial length.
WhyThe model can be stated exactly and checked against a contract. A list price on a page cannot.
ReviewKept by review, not by a test.
Each language writes numbers its own way. Most figures are written by hand in each dictionary; research dates and the update counter on the product page are formatted by code with the page language.
| Kind | English | Turkish |
|---|---|---|
| A research date | ||
| A version date | 2026-09-06 | 2026-09-06 |
| A count with thousands | 3,411 | 3.411 |
| The same count, formatted by code | 3,411 | 3.411 |
| A percentage | 99.5% | %99,5 |
| A duration | 48 h | 48 saat |
| A range of days | Days 1 to 7 | 1-7. günler |
| A month and year | measured, September 2026 | ölçüm, Eylül 2026 |
const fmt = new Intl.NumberFormat(document.documentElement.lang || 'en');Research dates use en-GB on English pages and tr-TR on Turkish pages, and both put the day first. The date is set in mono, inside a time element whose datetime attribute holds the ISO date.
Attacking kiosk devices: red team research
const dateLocale = locale === 'tr' ? 'tr-TR' : 'en-GB';
<time class="date" datetime={p.data.pubDate.toISOString().slice(0, 10)}>{p.data.pubDate.toLocaleDateString(dateLocale)}</time>Research dates use en-GB in English and tr-TR in Turkish, with the ISO date in the datetime attribute.
WhyDay first in both languages, with one machine-readable form underneath. A unit test holds the three components that print a research date to these locales.
TestEnforced by a test on every change.
Three date forms are in use: research dates are day first, legal texts and the Last changed line of these pages print the ISO date as it is stored, and the English console uses en-US, month first. A research date is also formatted in the build machine's time zone while its datetime attribute holds the UTC day, so a build west of UTC would print the day before.
The product is Zero Door: two words, with no article in front. The company is Zerone in running text and Zerone Security where a site name is expected.
Zero Door
Zero Door'u
Not printedThe two words run together
Write the product name as two words: Zero Door.
WhyEvery dictionary string and every built page is read for the run-together form in any casing; an all-lowercase machine name, such as a domain or a cookie name, passes. Each page dictionary has its own test; the one named here checks this page.
TestEnforced by a test on every change.
No article before the name: ‘Zero Door checks’, not ‘the Zero Door checks’. The article returns only when the name modifies a noun, as in ‘the Zero Door agent’.
WhyA product name is a proper noun. Used as a modifier, it takes the article of its noun.
ReviewKept by review, not by a test.
| Context | English | Turkish |
|---|---|---|
| Product name | Zero Door | Zero Door |
| Company, in running text | Zerone is a product company. | Zerone bir ürün şirketidir. |
| Company, in page titles | Architecture and integrations · Zerone Security | Mimari ve entegrasyonlar · Zerone Security |
| Design language pages, in page titles | Writing and claims · Zerone Design Language | Yazım ve iddialar · Zerone Tasarım Dili |
| Copyright line | © 2026 Zerone. All rights reserved. | © 2026 Zerone. Tüm hakları saklıdır. |
| Site name in link previews and structured data | Zerone Security | Zerone Security |
| Tagline, as the home page kicker | Zero Trust, One Security | Zero Trust, One Security |
| Tagline, in the footer | Zero Trust, One Security. | Zero Trust, One Security. |
The registered company name appears in the imprint and in the structured data of every page; the registry details appear only in the imprint. Neither appears in running copy.
The tagline stays in English in both languages.
WhyIt is a name, not a sentence to translate. As a kicker it has no full stop, like every kicker; in the footer it stands as a sentence and has one.
ReviewKept by review, not by a test.
Some strings fail the build wherever they appear. Tests read every dictionary string, and gates read every built page, including alt, title, aria-label and meta text; link and source addresses are skipped. So this page describes each rejected string instead of printing it.
What the build rejects
Where each is checked
Page dictionaries
Rejects: Long dash, Run-together name, Country phrase, Percent
Shared dictionaries
Rejects: Long dash, Run-together name, Country phrase, Percent
Built pages
Rejects: Long dash, Run-together name, Country phrase, Percent
The framework list
Rejects: Framework names
Main content of every claim page
Rejects: Framework names
A claim page is every built page outside the research and legal sections, apart from the 404 page.
This box runs the same four string checks as the build, in your browser, as you type. The framework check reads a list of names this page cannot print, so it stays in the build.
The build accepts this text.
The checker matches exact strings, not meaning.
The checker runs with JavaScript. Without it, the rules it applies are the first four in the list above.
Without the long dash, a comma, a colon, a semicolon or a full stop does the work. The middle dot separates the parts of a title or a label.
It detects, explains and evidences; the response is yours.
It detects, explains and evidencesU+2014the response is yours.
Headings, buttons and labels are written in sentence case, as the headlines above are. A kicker is stored in sentence case and set in capitals by the stylesheet, which capitalises by the language of the element: a Turkish i becomes a dotted capital only under lang="tr".
lang="tr"@utility kick {
font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.12em;
text-transform: uppercase; color: var(--color-ink-subtle);
}Store a kicker in sentence case and let the stylesheet set the capitals.
WhyTyped capitals stay capitals wherever the string is reused, in a page title or a link preview. The stylesheet capitalises only where the design asks for it, by the language of the element.
ReviewKept by review, not by a test.
56 different abbreviations of three or more capitals appear in the English copy; the most frequent are DSS, PCI, GDPR, ISO and NIST. They stay as the reader's field writes them, in Turkish text too, and the glossary defines the ones a buyer meets first, such as CVE.
Write an abbreviation the way its field writes it; the glossary expands it where a buyer may not know it.
WhyA security reader searches for the abbreviation, not for its expansion.
ReviewKept by review, not by a test.
An illustration that carries meaning has a one-sentence label in the dictionary, and the label first says what it is: 17 English labels start with ‘Illustration:’, and each Turkish label opens the same way in Turkish.
| Page | English | Turkish |
|---|---|---|
| /zero-door | Illustration: Castor, a beaver, holds each arriving Linux or Windows file beside its legitimate original of the same name, taken from the stacks of originals in the dam, and lets the files that match through the dam's single opening; a Linux file and a Windows file that do not match their originals stand on the bank. | Çizim: Castor adlı kunduz gelen her Linux ya da Windows dosyasını, barajdaki orijinal yığınlarından aldığı aynı adlı meşru orijinalinin yanında tutar ve eşleşenleri barajın tek açıklığından geçirir; orijinaliyle eşleşmeyen bir Linux dosyası ile bir Windows dosyası kıyıda durur. |
| /trust | Illustration: where your data lives. In SaaS it moves from your fleet to OVHcloud in Paris, inside the European Union; self-hosted it stays in your data centre; air-gapped nothing leaves the site. | Çizim: verinizin durduğu yer. SaaS'ta veri filonuzdan Avrupa Birliği içindeki, Paris'teki OVHcloud'a gider; kendi kurulumunuzda veri merkezinizde kalır; kapalı ağ kurulumunda hiçbir şey dışarı çıkmaz. |
Give an illustration that carries meaning a one-sentence label.
WhyA screen reader announces the label in place of the picture. An end-to-end test opens /, /zero-door, /services, /trust, /research, /architecture and /design/visualisation in both languages, reads every visual label on them and fails one of 40 characters or fewer or one without a full stop.
TestEnforced by a test on every change.
Start the label by saying what it is.
WhyA listener learns first that a picture is being described, then what it shows.
ReviewKept by review, not by a test.
A Turkish suffix after a name follows a straight apostrophe, as in Zero Door'u: the Turkish copy has 41 straight apostrophes between letters and 0 curly ones, and the country-phrase check matches the straight form only. The Turkish glossary puts a quoted question in straight double quotes.
Cite a word as a word in quotation marks: single in English, as in ‘yet’, and double in Turkish.
WhyWithout them, a rule such as no comma before the ‘and’ reads as a typo. This page follows it; the rest of the English copy rarely cites a word.
ReviewKept by review, not by a test.
The architecture page and every solution page carry a Boundaries list: plain sentences about what the product does not do. The architecture page gives its reason in one line above the list.
What it does not do.
A buyer finds this out eventually. Better here than three weeks into a pilot.
It does not block, isolate a host, quarantine a file or kill a process. It detects, explains and evidences; the response is yours.
It is not a content inspector. There is no data-loss prevention, no scanning of file contents for personal or card data.
The agent has no proxy support: it needs a route to the ingest endpoint, through your own edge if you terminate there.
A published OpenAPI document does not exist yet.
There is no SCIM provisioning; accounts arrive through single sign-on or LDAP.
In an air-gapped install, vulnerability and end-of-life data does not refresh by itself.
There is no macOS build today, and on kernels older than 5.8 the deep sensor runs in its fallback mode.
The architecture page carries a Boundaries list.
WhyAn end-to-end test opens the page in both languages and fails when the list has fewer than 5 items.
TestEnforced by a test on every change.
Every solution page carries one as well.
WhyThe same file runs a test for each of the 4 sectors in both languages and expects at least 3 items.
TestEnforced by a test on every change.
Where an absence is current and may change, say ‘yet’ or ‘today’. Do not hide it, and do not promise a date.
WhyThe word says the gap is real and current. A date would be a roadmap claim, and the site describes only what ships.
ReviewKept by review, not by a test.
The sentence that frames the limit, ‘It detects, explains and evidences’, is kept word for word in 4 Boundaries items; the limit that follows it is phrased for each page. The page at /solutions/healthcare states its limits without it.
The glossary explains words a reader meets on the site. The definition is about the term. Where the term touches what we build, one link below it leads to the place on the site that shows the claim.
Legitimacy
Whether a file is the original, published by whoever is meant to have published it. This is a different question from whether the file changed: something that never changes can still not be the original.
A definition explains the term. It never says what the product does.
WhyA glossary that sells stops being read as a glossary. The product appears only behind the link.
ReviewKept by review, not by a test.
A term has at most one link, and the link must resolve.
WhyThe entry type allows one link. Every internal link and anchor on every built page is checked, and a link to a missing section fails the build.
TestEnforced by a test on every change.
Only terms a reader meets on the site, and none for a capability we do not sell.
WhyA definition for something the product does not do would suggest that it does.
ReviewKept by review, not by a test.
A research article links a glossary term once, at its first use in plain text.
WhyHeadings, code, quotes, captions and tables are skipped, so the links help a reader without turning the article into a list of links.
TestEnforced by a test on every change.
English is the source and sits at the root. Turkish is written by hand under /tr/ on the same paths. Neither is a machine translation, and the two dictionaries must have exactly the same shape.
| Language | hreflang | Path |
|---|---|---|
| English | en | / |
| Turkish | tr | / |
| Any other language | x-default | / |
Each Turkish dictionary is typed as its English one, so a missing key fails the type check. A test then compares the two shapes at run time, down to the length of every list.
const tr: typeof en = {The Turkish dictionary has exactly the shape of the English one.
WhyA missing key would show one language a blank, and an extra one would never be read. Each page dictionary has its own test; the one named here checks this page.
TestEnforced by a test on every change.
The shared dictionary for the navigation, the footer and the home page follows the same rule.
WhyIts test compares the whole Turkish dictionary with the English one.
TestEnforced by a test on every change.
Turkish is written by hand from the English source. Machine translation never goes live.
WhyA Turkish reader should meet the sentence a Turkish writer would write, not the English one in Turkish words.
ReviewKept by review, not by a test.
English that stays on a Turkish page should carry lang="en", so a screen reader switches pronunciation. Research articles are written in English and sit inside a Turkish page frame as an article marked lang="en".
The tagline carries it too: as the home page kicker, in the footer and on the company page.
Zero Trust, One Security
Sıfır güvenden tek karara.
<span class="kick" lang={locale === 'tr' ? 'en' : undefined}>{d.hero.kick}</span>English that stays on a Turkish page carries lang="en".
WhyWithout it, a screen reader reads English words with Turkish rules.
ReviewKept by review, not by a test.
On the Turkish home page, the hero kicker and the trust strip carry lang="en".
WhyAn end-to-end test opens the Turkish home page and checks both attributes. Other pages are held by review.
TestEnforced by a test on every change.
An English article inside a Turkish page is marked as English as a whole.
WhyThe frame stays Turkish; the body is one article element with lang="en".
TestEnforced by a test on every change.
<span lang="en">Zero Trust, One Security</span><span>Zero Trust, One Security</span>Turkish addresses the reader formally, and calls to action use the polite imperative.
WhyThe formal register matches the way the English addresses its reader without reading like a form. Some short link labels use the plain form today.
ReviewKept by review, not by a test.
| English | Turkish |
|---|---|
| Book a demo | Demo planlayın |
| Talk to us | Bize ulaşın |
| Discover Zero Door | Zero Door'u keşfedin |
Some English terms have one Turkish word on every page of the site. These are the terms the copy already uses one way; the counts are taken from the Turkish dictionaries on every build.
| English | Turkish | Turkish strings | Other form (strings) |
|---|---|---|---|
| evidence | kanıt | 81 | delil: 0 |
| file integrity | dosya bütünlüğü | 24 | |
| legitimacy, legitimate | meşruiyet, meşru | 32 | |
| finding | bulgu | 5 | |
| fleet | filo | 28 | |
| agent | ajan | 27 | agent: 0 |
| air gap, air-gapped | kapalı ağ | 34 | hava boşlu: 0 |
| verify, verified | doğrulamak, doğrulandı | 40 | |
| alert | alarm | 37 | uyarı: 0 |
| publisher | yayımcı | 4 | yayıncı: 0 |
None of the terms this page tracks has two Turkish forms in use today, so all of them are in the table above. Where a term has another form, its count is in the last column.