Editorial Standards, Authors and Corrections
The brief, the eight checks, the corrections address, and a straight answer about how much of the drafting is done by a machine.
Zodiux is written by a small team that also writes its code, published under one organisational byline: the Zodiux editorial team. Every interpretation is written against a fixed brief — describe the traditional meaning of a placement, in plain language, without flattery and without prediction. Drafting is machine-assisted, and this page says exactly where and how. Before a page ships it has to clear eight conditions that exist as a script rather than as a policy document, and the last-reviewed date on each page is derived from that page's own content rather than stamped by a build, so it moves when the words move and not before. If something here is wrong, hello@zodiux.io reaches the people who can change it.
Who writes this
The byline is an organisation, not a pen name. It covers a small group that writes both the copy and the software underneath it. There is no separate content department: the person who can tell you why the rising sign disappears when you leave the birth time blank is the person who wrote the branch that removes it. That is why the pages in this cluster can quote the behaviour of the shipped code line by line instead of describing it from a distance.
We do not publish an invented astrologer persona. Plenty of sites do — a stock portrait, a warm first name, a paragraph about a lifelong fascination with the stars. It is a cheap way to look accountable, and it is a fabrication placed at exactly the point where a reader is deciding whether to believe anything else. The operating entity behind Zodiux is not published yet either, because company registration is still in progress; write to us and the reply states the current position rather than a placeholder.
What accountability looks like here is narrower and more useful than a face: every factual claim traces to a file in this repository that produced it, this cluster names those files, and one address reaches a person who can change them. In the structured data on every page the site builds, the author is an Organization called the Zodiux editorial team whose url is this page — so the machine-readable byline and the human-readable one point at the same statement of who is responsible.
The brief every interpretation is written against
Interpretation is the part of an astrology site that cannot be checked against an ephemeris, so it is the part most worth constraining in advance. The brief below is fixed. It is not a style preference — it is what separates describing a two-thousand-year-old tradition from telling a stranger what will happen to them.
The brief, in full
- Describe, do not predict. A placement gets its traditional meaning stated plainly. It never gets a forecast attached. The subject of every sentence is the tradition or the sky, never the reader's future.
- No flattery. A reading that only compliments is not a reading. Each sign, decan and pairing gets its cost named alongside its gift, and the cost is written as bluntly as the gift.
- Name the tradition when traditions disagree. Where two living systems give different answers, both are printed and labelled. Silently picking one and presenting it as the answer is the single most common tell of copied astrology content.
- Concrete before adjectives. Degrees, dates, spans and mechanics carry more than any amount of atmosphere. If a sentence would survive having its adjectives deleted, it was doing its job.
- The limitation goes in the text, not the footer. A page that needs a disclaimer to be honest is not honest. Where a number is weaker than it looks, the paragraph containing the number says so.
- Nothing about health, money, the law, or another person's behaviour. Astrology here is for reflection and entertainment. It is not advice — not medical, legal, financial or psychological — and the register never drifts toward instruction. What Zodiux does not claim sets out that boundary in full, and the phrase patterns that enforce it.
| Rule | A draft that fails | What ships |
|---|---|---|
| Describe, do not predict | Saturn returns to your sign this year, so expect a promotion by autumn. | Saturn's tradition is structure and time, and a Saturn transit is read as a stretch where a commitment gets tested. That is a theme, not a schedule. |
| No flattery | As a Leo, your natural magnetism draws people to you effortlessly. | Leo's tradition is visibility: it wants the thing it does to be recognisably its own. The cost of that is a low tolerance for being overlooked. |
| Name the tradition | The second decan of Taurus is ruled by Mercury. | The two surviving decan systems disagree here. The triplicity decanate gives it Mercury; the older Chaldean face gives it the Moon. Every decan page prints a three-row table — sign ruler, Chaldean face, triplicity decanate — and says in the following paragraph which of the two most sites are quoting. |
| Concrete before adjectives | Your rising sign is deeply significant and shapes everything about you. | The rising sign changes roughly every two hours on average, which is why an hour of doubt in your birth time moves it about half a sign while barely moving anything else. Birth time and time zones shows where that average badly understates the error. |
| Limitation in the text | A compatibility percentage printed on its own, explained only by a footer disclaimer. | Every compatibility page prints its own arithmetic — the element term, the modality term and the aspect modifier that produced that pair's four scores — and links to the published formula. |
A draft that breaks one of these is rewritten, not softened. The brief is also what the interpretation corpus is generated and judged against, which is covered at the foot of this page.
Computed material and written material are kept apart
Two different kinds of claim live on this site and they are produced by two different processes. A planetary position is a computation: it is reproducible, it can be checked against any other ephemeris, and if it is wrong it is a bug. An interpretation is prose about a tradition: it can be faithful or unfaithful to that tradition, but it cannot be verified the way a longitude can. Mixing the two — letting a written passage assert a number, or letting a computed number carry an implied meaning — is how astrology sites end up making precision claims they cannot support.
So the site keeps them separate by construction. No reading anywhere states a figure that the code on its own page did not compute: the degrees on a chart, the percentages on a compatibility page and the ranges on a decan page are all substituted into the template at build time or in your browser. Where an editorial page like this one quotes a constant — a word floor, a horizon in days — it names the file the constant lives in, so the number is checkable rather than merely asserted. The table below is the whole ownership map.
| Content type | Who owns it | What triggers a review | Where its numbers come from |
|---|---|---|---|
| Planetary positions — birth chart, moon sign, retrograde tracker | Code. No editorial input at all | A change to the vendored ephemeris, a change to the chart script, or a reader reporting a discrepancy | Astronomy Engine, an open-source implementation of the VSOP87 and NOVAS algorithms, reporting geocentric apparent ecliptic longitude |
| The Today's sky strip on sign, learn and decan pages | Code. Precomputed at build time, one row per day | Any change to the sky builder; otherwise it corrects itself in the browser with no human involved | The same ephemeris as the calculator, baked into a 150-day almanac the page reads client-side (the horizon is ALMANAC_HORIZON in sky-build.mjs). Past that horizon the strip drops its date claim rather than lying |
| Compatibility scores | Code, from a published formula | Any change to the formula, which is never made silently — the model page is updated in the same edit | Element and modality tables plus an aspect modifier for the distance between two signs, all published at How compatibility scores work |
| Sign, decan and compatibility interpretations | Editorial, written against the brief above | A correction, a change to the astronomy or the model underneath the page, or a scheduled pass | No numbers of their own. Any figure in the prose is one the code on that page computed |
| Methodology and library pages, including this one | Editorial, written against the shipped code | Any change to the code or the policy the page describes — that is the primary trigger, ahead of the calendar | Read out of this repository, with the owning file named in the page's own sources list |
| Terms, privacy and promotion rules | Not editorial. One configuration file, applied by a script | A change to the operating facts. A check script exits non-zero while any of them is unfilled | Stated facts about the operator, not derived values |
| Ads and affiliate placements | Configuration, reviewed against network policy | A policy change, or a placement a check rejects | Nothing. No placement feeds any score, reading or ranking anywhere on the site |
The sky strip is the row worth reading twice, because it is the one that has actually gone wrong. Its scheduled rebuild failed silently for five weeks in 2026 and the baked strips froze; the fix was to stop depending on the schedule, which is why the almanac exists. Data sources tells that story with the dates and the cause.
The eight conditions a page has to clear
The rules above are only worth as much as their enforcement, and an editorial standard that lives in a document gets forgotten in week three. So the publication rule is a script. It reads every URL in the built sitemap, prints what failed and exits non-zero. It does not measure all eight conditions in that mode: five are checked on every URL, two of those only on pages matching a template family, and three — the structural ones about tables, methodology blocks and outbound links — are enforced by a per-page function the deploy path never calls. The thresholds below are the ones it actually uses, not a paraphrase.
| Condition | What is measured | Fails when |
|---|---|---|
| Distinct intent | Five-gram Jaccard overlap against every other page in the same family, then words multiplied by one minus that overlap — roughly how much of a page its most similar sibling does not also say | A methodology page overlaps its nearest sibling by more than 35%, or has fewer than 600 words its sibling does not share |
| Original analysis | At least one table or ordered list, plus the depth floor for the page's cluster | A page is all paragraphs, or falls under 1,200 words as a core guide, 700 as anything else |
| Who produced it, and when | A visible byline and a real last-reviewed date in a time element | Either is missing |
| Method and sources | The method and limits panel, plus a sources list once the page states a measured figure | Method or limits is missing. The sources rule only warns — it is the one soft edge in the whole script, and it is soft because a page can state a figure it borrowed from a sibling page it links |
| Links out | At least one link to a Zodiux tool, at least three related links, and no link to itself | Fewer than either, or the page recommends itself |
| A complete answer | The depth floor again, and the number of content sections | Under the floor, or fewer than three sections |
| Content around the ads | Words of body copy before the first ad slot; on a tool page, whether the slot sits above the calculator's own output | An ad on a tool page precedes the tool's live output, or an editorial page's first slot has under 120 words in front of it (the stricter 250 floor belongs to a per-page check the deploy path does not run) |
| Claim safety | A fixed list of phrase patterns for deterministic health predictions, promises of a certain result, instructions in regulated domains, and verdicts about someone's job or marriage | Any pattern matches anywhere in the visible text, with one named exemption explained below |
Two rows in that table are worth expanding. The ad rule is why the first unit on this page appears where it does: the renderer places it after the first 300 words of real body copy, and the check fails anything under 250, so the margin is deliberate rather than lucky. And the near-duplicate rule is measured in words rather than in a ratio, because a ratio punishes a family for explaining its shared model well — adding a genuine methodology block to all 78 compatibility pages raised their overlap while nearly doubling the unique material on each. The quantity that matters is how much a page says that its neighbour does not.
The claim scan has no exemptions, and that is worth recording because it briefly had one. What Zodiux does not claim was skipped, on the reasoning that a page publishing the scan's own patterns must trip all of them. Nobody tested the reasoning. When it was finally tested the page matched none of the eight — it describes the boundaries in prose rather than quoting the regexes — so the carve-out was protecting nothing while quietly falsifying that page's claim to be scanned like every other URL. It is gone, and the gate is clean without it.
The script checks one more thing that is not an editorial condition but belongs here anyway: if a page emits FAQ structured data, every question and every answer in that markup has to appear in the visible text. The check is shallower than that sentence implies — it compares only the first 60 characters of each, so a divergence later in a long answer would pass. Structured data on this site is not allowed to claim more than the page shows a reader; the automated half of that promise covers the opening of each answer, and the rest is review.
How the last-reviewed date on each page is derived
Most sites stamp a build date on every page and call it a review date. That asserts, several hundred times, that every page was revised today — which is false, and Google's own guidance treats a fabricated freshness signal as worse than no date at all. Zodiux used to do this. It no longer does.
The date you see is derived from the page's own content, by this sequence, on every build:
The derivation, step by step
- Each page is rendered with a placeholder token where the date will go — in the visible Last reviewed line and in the structured-data dateModified, the same token in both places.
- The rendered page is hashed with everything volatile stripped out: the Today's sky block, the dateModified value, the placeholder token itself, any ISO date and any month-name date. The hash is the first 16 hex characters of a SHA-1 over what is left, which is the page's real content.
- That hash is compared against the previous hash for the same URL, stored in a state file committed alongside the code. The state file is the freshness record, not a build artifact — delete it and every URL on the site gets a false freshness bump on the next build.
- Hash unchanged means the content did not change, so the page keeps the date it already had. Hash changed means the words moved, so the date becomes the build date, as a UTC calendar day.
- That single value is then written back into three places at once: the visible line, the structured-data dateModified, and the sitemap lastmod. They cannot disagree, because there is only one value and it is substituted after it is decided.
The stripping in step two is what makes the rest work. Every sign, learn and decan page carries a sky strip that genuinely changes daily, so hashing the raw HTML would move every date on every build and reproduce the batch stamp with extra steps. Stripping it means a rebuild that only advances the sky moves nothing, and a build in which nobody edited anything reports every URL unchanged.
There is one case the hash cannot see. A handful of pages are hand-authored and not emitted by the page builder, so there is no fresh render to hash. Those keep whatever date was last recorded for them rather than being stamped with today's, which under-reports an edit but never invents one. That was a real bug: the earlier version of this code stamped them on every build.
What puts a page back in front of a person
The middle column of the ownership table gives the trigger for each content type. Across all of them there are only three, and their priority order is not the order most editorial policies print.
In priority order
- An astronomy or code change. If the ephemeris is updated, the chart pipeline changes, or a model like the compatibility score is altered, every page that describes that behaviour is re-read in the same change. A methodology page that describes code it no longer matches is worse than no methodology page, because it converts a reader's trust into a wrong belief.
- A factual correction. A reader report, or something found internally. This jumps the queue, and it is the only one of the three that can arrive from outside. If the fault is in a computation rather than a sentence, it is fixed in the code and every page built from that code moves with it.
- A scheduled pass. Evergreen material is re-read on a rolling basis rather than all at once, oldest first. This is the weakest of the three on purpose: a calendar does not know which page is wrong.
Things that deliberately do not trigger a review, and do not touch the date: a rebuild, a deploy, a change to an advertisement, or the sky moving on. None of those changes what a page says, and a date that moved for them would be measuring our activity rather than the reader's interest.
Corrections
The methodology hub ends with the line corrections to this page are welcome and get made. It is meant literally rather than as a courtesy, and it applies to every page in the cluster.
The most useful report names the URL, quotes the sentence or figure that is wrong, and says what it should be. For a computation, a birth moment we can reproduce — date, time and city — is worth more than a description of the symptom, because it lets us run the same input through the same code. For an interpretation, tell us which tradition you are reading it against; where two traditions disagree we would rather print both than swap one for the other.
What happens after you send one
- It is reproduced, or we come back and ask for what is missing to reproduce it.
- If it is a computation fault, it is fixed in the code, and every page that derives from that code changes on the next build.
- If it is a written fault, the page is edited. Its last-reviewed date moves automatically, by the mechanism above, because the text changed.
- Nothing is quietly deleted to make a problem go away. A page that turns out to be wrong in a way we cannot fix is corrected in place or removed openly, not left up with the offending line pulled.
If you would rather check us than write to us, the birth chart calculation page carries a worked example with a specific birth moment and the exact longitude our code returns for it. Run it through any ephemeris you trust. A disagreement larger than rounding means one of us has a bug, and we would like to know which.
Ads, affiliate links and paid reports
Zodiux carries advertising, three affiliate cards on the chart page, and one paid product. Each is disclosed where it appears, and none of them can influence a reading.
Advertising. The units are Google AdSense, two on an editorial page. Each sits in a container labelled Advertisement — visibly above the unit, and again as an accessible label for a screen reader — and that container reserves its height before the ad arrives, so nothing below it jumps when the ad loads. If the network reports that it has nothing to serve, the container is hidden entirely rather than left as an empty box with a label on it. Placement is constrained by the check described above rather than by good intentions: on a tool page an ad may not appear above the calculator's own output, and on an editorial page the first unit lands after the first 300 words of body copy.
Affiliate links. Three cards, on the chart page only, below the reading rather than inside it. Each is marked sponsored and nofollow, opens in a new tab, and carries a required Why this is here line, two sentences as shipped — a card with no stated reason for existing does not ship, and one of the three says outright that it is decoration and changes nothing about your chart. Under the grid is a sentence saying a purchase may earn us a small commission at no extra cost to you. Two of the three are keyed to your sun sign; the third, a print of the chart you just generated, is keyed to nothing.
One more thing about those links, which most sites would leave out: today they earn nothing. The Amazon associate tag in the code is still an unfilled placeholder, and the craft-marketplace links are plain keyword searches with no affiliate wrapper at all, so every card is currently an ordinary product search. The disclosure is deliberately live before it is true rather than after, because the alternative is a period where the page earns a commission and does not say so.
Paid reports. A written report is our own product, not a third party's. It is also the one place where birth details are transmitted to us, because the report is rendered on the server rather than in your browser; the Reports page states that before payment. Data, privacy and saved chart links sets out exactly what is sent, what is stored, and for how long.
The free tools — the birth chart, the compatibility calculator, the moon sign tool — compute in your browser and never send your birth details anywhere. They are not silent, though, and the distinction is worth stating precisely: every page on the site sends a first-party pageview to our own counter, carrying the path and the referring host, with no cookie and nothing identifying in the payload — though like any API call it also bumps a rate-limit counter keyed on your IP, which expires two minutes later. That is measured traffic, not your chart; the privacy policy and the page above carry the full inventory of what is stored and where.
No advertiser or affiliate partner has ever seen a reading before it published, requested one, or been offered the opportunity. There is no mechanism by which they could: compatibility scores come from a formula published in full on this site, and planetary positions from an open-source ephemeris, so both are reproducible by anyone who wants to check.
AI assistance, stated plainly
Drafting on this site is machine-assisted. We would rather say so than let a reader work it out, because a reader who guesses and was not told is right to trust the rest of the site less.
Here is the shape of it, without euphemism. The interpretation corpus — the reads on sign, decan, aspect and compatibility pages — is produced by a build-time pipeline. A workhorse model drafts each unit against the brief above. A mechanical lint, which is ordinary code rather than a model, rejects it for length, for an empty field, or for a banned phrase. A second and stricter model judges what survives, scoring voice, specificity, thinness and safety separately and defaulting to failing anything it is unsure about. Near-duplicate detection by embedding similarity is designed and costed in the foundry's own notes but is not implemented — no such code ships, and saying otherwise would be describing an intention as a safeguard. What does run is the lint, the adversarial judge, and a person signing off, and only then does a unit enter the reviewed files. The judge is deliberately a different model from the generator, because a model grading its own output is a formality rather than a check. Data sources has the counts: how many units exist, how many a person wrote outright, and which surface each one reaches you on.
Longer editorial pages, this one included, are drafted with the same assistance and then checked line by line against the code they describe. The file this page is written in opens with a list of which source file every mechanism above was read out of, so the checking is repeatable by someone who is not us.
Three commitments go with all of that. Nothing is generated when you load a page — there is no model behind this site at read time, and your birth data is never sent to one. Nothing publishes unreviewed; the human gate is the part of the pipeline that is not automated, and it is not optional. And no page invents a human author to disguise how it was made.
Method. Every mechanism described here was read out of the shipped repository rather than summarised from an internal document. The byline, the Organization author whose url is this page, the date token written identically into the visible line and the structured data, and the 300-word rule that places the first ad all come from the library renderer. The date derivation is the strip-hash-compare-substitute sequence in the page builder, its SHA-1 truncation, its handling of pages it does not emit, and the committed state file it reads and writes. The eight conditions, their thresholds, the family floors and the FAQ visibility check are the checks in the quality-gate script, which exits non-zero on failure when it is run. The affiliate attributes, the required per-card reason, the disclosure sentence and the still-unfilled associate tag come from the one file that generates those links; the ad label and its collapse-on-unfilled behaviour from the ad markup and the stylesheet rule that hides an empty slot. The first-party pageview beacon is injected by the edge worker. The corpus pipeline and its human gate come from the foundry's own documentation and judge. The decan example in the brief table was computed by running the site's own rulership functions: for the second decan of Taurus, the Chaldean face is the Moon and the triplicity decanate is Mercury.
Limits. This page describes a process; it cannot prove that the process was followed on any particular page, and no editorial standards page anywhere can. The publication gate is the closest thing to proof, and it measures shape rather than truth — it can tell that a page is deep, attributed, linked and free of instruction, not that a sentence in it is correct. It is also a script a person has to run, with no automated job behind it. This page does not publish a named individual editor, because none is published yet: the operating entity is still being registered, and inventing a persona in the meantime would defeat the purpose of the page. The last-reviewed mechanism measures text change rather than attention, so a review that finds nothing to fix leaves no trace. Ad creatives are served by a third-party network and are not reviewed by us before they appear. And none of this makes astrology true: the standards govern how faithfully a tradition is described, not whether the tradition describes anyone. It is for reflection and entertainment, not advice.
Sources.
- The library renderer (library.mjs) — Emits the byline, the last-reviewed line, the Organization author pointing at this page, and the structured data on every page in this cluster. It writes one placeholder token into both the visible date and the machine-readable one, and places the first ad slot after the first 300 words of body copy.
- The page builder's date reconciliation (build-pages.mjs) — Strips the volatile sky block, the date token and every literal date before hashing a page, compares that hash to the committed per-URL state, and substitutes one decided value into the visible line, the structured data and the sitemap lastmod. Also the source of the decan rulership functions quoted above.
- The quality gate (scripts/quality-gate.mjs) — The eight conditions as an executable check, with the depth floors, the near-duplicate and unique-word thresholds, the byline and date requirement, the ad-placement rules and the banned-phrase scan. Run before a deploy by scripts/check-all.mjs; it exits 1 on any failure.
- The affiliate link module (public/affiliate-links.js) — The single file that generates every affiliate card on the site: the sponsored and nofollow attributes, the new-tab behaviour, the mandatory per-card reason, the commission disclosure rendered beneath the grid, and the associate tag that is still a placeholder.
- The corpus foundry (corpus-foundry/) — The build-time generation pipeline, its mechanical lint, its cross-model adversarial judge, the planned-but-unimplemented duplicate flag, and the documented human gate that no unit ships without.
Written and reviewed by the Zodiux editorial team · Last reviewed · Editorial standards and corrections · Astrology is for reflection and entertainment, not advice.
The standards exist so the tools can be trusted
Every rule on this page is in service of one thing: that the numbers you get are real and the words around them are honest about what they mean. Run your own chart and check us.
Who actually writes Zodiux?
A small team that also builds the site. Pages are bylined to the Zodiux editorial team rather than to an individual, because no individual editor is published yet and inventing one would be a fabrication at exactly the point where trust is being decided. Corrections and questions reach the same people at hello@zodiux.io.
Is this site AI-generated?
Drafting is machine-assisted and this page says so in detail. Interpretations are drafted against a fixed editorial brief, mechanically linted, judged by a different and stricter model, checked for near-duplicates, and reviewed by a person before publication. Nothing is generated when you load a page — there is no model behind the site at read time — and every number comes from an open-source ephemeris or a published formula, not from a language model.
What does the last-reviewed date on a page actually mean?
The day that page's text last changed. It is derived by hashing the page with its daily sky strip and all dates stripped out, comparing that hash to the previous build's, and keeping the old date when nothing changed. The visible date, the structured-data dateModified and the sitemap lastmod are all set from that one value, so they cannot disagree. It does not mean the day a person last read the page.
What are the eight conditions a page has to clear?
A distinct intent rather than a near-duplicate of a sibling, original analysis in the form of a table or a worked list, a visible byline and a real review date, a stated method and stated limits, links to the relevant tool and to sibling pages, enough depth to answer the question, real body copy in front of any ad, and no health, legal, financial or deterministic-life claims. They exist as a script with numeric thresholds, which prints what failed and exits non-zero. The table on this page gives each threshold.
How do I report a mistake?
Email hello@zodiux.io with the URL and the sentence or figure that is wrong. For a computation, include a birth date, time and city we can reproduce. Computation faults are fixed in code and propagate to every page built from it; written faults are edited in place, and the last-reviewed date moves on its own because the text changed.
Do advertisers or affiliate partners influence what a page says?
No, and the structure makes it impossible to hide if they did. Compatibility scores are computed from a formula published in full on this site, and planetary positions come from an open-source ephemeris, so both are reproducible by anyone. Affiliate cards are marked sponsored and nofollow, sit below the reading with a visible disclosure and a stated reason for existing, and no partner sees or requests content before it publishes. As it happens the affiliate tag is still unfilled, so those links earn nothing at all today.
Why is there no named astrologer's byline?
Because there is no named astrologer. Zodiux describes traditional meanings of placements against a fixed brief and computes real positions; it does not sell the authority of a personality. When a named editor is published it will be a real person with a real role, not a stock photograph.
Does a page get re-reviewed even if nothing has changed?
Yes, on a rolling schedule, oldest first — but a review that finds nothing to fix leaves the date alone. That under-reports how often pages are read and it is the honest trade: a date that moved every time someone glanced at a page would carry no information at all.