World chronology & name continuity

Fictional calendar & naming timeline

Align naming events across explicit periodic calendars. Check same-day anchors and name use without turning an unknown epoch into a dated fact.

Read the naming guide ↓
01

Set the story constraints

epochDay is the shared day of year 1/month 1/day 1, or null. cycle repeats 1–12 years; months have exact IDs, labels and 1–500 days. All calendars share one day boundary.

The baseline form precedes all entered events; null means unknown. Exact forms are not automatic aliases.

Stable id/person, adopt/use, exact form, date {calendar,year,month,day}, order and integer/null claimDay. Year 1–10000; no year zero. Order separates one person’s same-day events.

id/left/right dates. A suggestion never edits the epoch. Review inconsistent candidates and explicitly edit calendars to adopt an anchor.

Save & restore a creative project

Stored on this browser. A private project export contains all inputs, including hidden identities. Review it before sharing.

02

Consider the result 5

Static example; JavaScript enables interaction.

Default-input example. Initial lettering metrics are approximate.

Cross-calendar name audit · authored rules
Event / personSource calendar · relative dayShared day / orderTarget dateForm / checks
adoption / Lio / Kest [lio]harbor 2/dry/5 · 6464 / 0Ridge calendar 1 / Rest 5Kest Name: adoption-recorded Claimed day: not-supplied
old-address / Lio / Kest [lio]harbor 2/dry/5 · 6464 / 1Ridge calendar 1 / Rest 5Lio Name: contradicted Claimed day: not-supplied
ridge-letter / Lio / Kest [lio]ridge 1/rest/6 · 3565 / 0Ridge calendar 1 / Rest 6Kest Name: matched Claimed day: contradicted
cycle-return / Lio / Kest [lio]harbor 3/flood/1 · 8585 / 0Ridge calendar 1 / Rest 26Kest Name: matched Claimed day: not-supplied
old-log / Lio / Kest [lio]old 1/watch/6 · 5unknown / 1unanchored-sourceKest Name: unverifiable Claimed day: not-supplied

Unanchored rows are separated from definite chronology. Same-day order is the explicit order value. Checks compare supplied rules; they do not infer dialogue motives or historical customs.

Kest

Event adoption / Lio / Kest [lio]: adopt; relative day 64 in harbor; shared day 64. Name use: adoption-recorded. Claimed day: not-supplied. Target: Ridge calendar 1 / Rest 5.

A dated form is a claim about sequence

The supplied date has local offset 64 in harbor. Its shared day is 64, with explicit same-day order 0. Exact use check: adoption-recorded. This compares authored transitions, not whether a speaker respects or rejects a person.

Choose the right kind of revision

Target conversion: Ridge calendar 1 / Rest 5. Claimed shared day: not-supplied. Review the date, epoch evidence and intended historical form separately. A new-calendar label does not automatically update every old letter, and an unanchored adoption prevents a confident use verdict. No epoch proposal is applied for you.

Lio

Event old-address / Lio / Kest [lio]: use; relative day 64 in harbor; shared day 64. Name use: contradicted. Claimed day: not-supplied. Target: Ridge calendar 1 / Rest 5.

A dated form is a claim about sequence

The supplied date has local offset 64 in harbor. Its shared day is 64, with explicit same-day order 1. Exact use check: contradicted. This compares authored transitions, not whether a speaker respects or rejects a person.

Choose the right kind of revision

Target conversion: Ridge calendar 1 / Rest 5. Claimed shared day: not-supplied. Review the date, epoch evidence and intended historical form separately. A new-calendar label does not automatically update every old letter, and an unanchored adoption prevents a confident use verdict. No epoch proposal is applied for you.

Kest

Event ridge-letter / Lio / Kest [lio]: use; relative day 35 in ridge; shared day 65. Name use: matched. Claimed day: contradicted. Target: Ridge calendar 1 / Rest 6.

A dated form is a claim about sequence

The supplied date has local offset 35 in ridge. Its shared day is 65, with explicit same-day order 0. Exact use check: matched. This compares authored transitions, not whether a speaker respects or rejects a person.

Choose the right kind of revision

Target conversion: Ridge calendar 1 / Rest 6. Claimed shared day: contradicted. Review the date, epoch evidence and intended historical form separately. A new-calendar label does not automatically update every old letter, and an unanchored adoption prevents a confident use verdict. No epoch proposal is applied for you.

Kest

Event cycle-return / Lio / Kest [lio]: use; relative day 85 in harbor; shared day 85. Name use: matched. Claimed day: not-supplied. Target: Ridge calendar 1 / Rest 26.

A dated form is a claim about sequence

The supplied date has local offset 85 in harbor. Its shared day is 85, with explicit same-day order 0. Exact use check: matched. This compares authored transitions, not whether a speaker respects or rejects a person.

Choose the right kind of revision

Target conversion: Ridge calendar 1 / Rest 26. Claimed shared day: not-supplied. Review the date, epoch evidence and intended historical form separately. A new-calendar label does not automatically update every old letter, and an unanchored adoption prevents a confident use verdict. No epoch proposal is applied for you.

Kest

Event old-log / Lio / Kest [lio]: use; relative day 5 in old; shared day unknown. Name use: unverifiable. Claimed day: not-supplied. Target: unanchored-source.

A dated form is a claim about sequence

The supplied date has local offset 5 in old. Its epoch is unknown, so a shared-day position and its place among anchored events are withheld. Exact use check: unverifiable. This compares authored transitions, not whether a speaker respects or rejects a person.

Choose the right kind of revision

Target conversion: unanchored-source. Claimed shared day: not-supplied. Review the date, epoch evidence and intended historical form separately. A new-calendar label does not automatically update every old letter, and an unanchored adoption prevents a confident use verdict. No epoch proposal is applied for you.

Original AI-assisted guide. Updated 1 November 2026. Methods: explicit local rules and documented source records. Autonomous checks are recorded; no human expert approval is implied.

Before you correct the name, align the day

A letter can appear to use an old name after a character’s public change because its date belongs to a different calendar. It can also genuinely be late, preserve an earlier salutation, or deliberately resist the change. Those are different writing decisions. This workbench makes the date arithmetic explicit so that you can choose among them without quietly moving the event that matters to the character.

Use it for invented calendars with repeating, explicitly specified years. Enter the month lengths, the shared day at which each calendar begins, and dated adoptions and uses of exact name forms. The output joins these records on a common day axis, projects them into another calendar, and compares a usage with the latest applicable adoption. It also checks pairs of dates that you declare to describe the same day. These are fictional production rules, not a reconstruction of a historical calendar.

Original fictional scene: the costume labels

Lio stood beside the open costume rail while the troupe rehearsed a new bow. When the others finished introducing themselves, Lio said, “For this production, put Kest on my things.” The wardrobe keeper crossed out the address on a fresh parcel. A replacement name was easy to write. Deciding which older labels should remain was less easy.

The troupe dated its public rehearsal by the harbor calendar. The hill workshop used the ridge calendar to invoice alterations. A letter arriving with a repaired coat called the wearer Kest, but its copied date had been marked as the day of the rehearsal. Meanwhile, a harbor note written later in that rehearsal still addressed Lio. The keeper first proposed replacing every Lio on the rail. Kest asked to see the dates before anyone touched the costumes.

The rehearsal fell on harbor year 2, Dry 5. Its shared day was 64. Ridge year 1, Rest 5 referred to that same day; Rest 6 was one day later. The workshop letter really belonged to the later day, despite the copied shared-day annotation. Its Kest salutation fitted the declared change. The harbor note was different: the author had placed it after the adoption on the same day, yet it used Lio.

That did not settle the scene. The note was a joke passed during rehearsal, quoting an old entrance line that Kest had chosen to retain. Kest asked for the current parcel address to change and the quoted prop to remain. “One tells you where to send my work,” Kest said. “The other tells you where this performance began.” The keeper added a production note instead of erasing the distinction.

An old station log named Kest too, but nobody had yet established where that log’s calendar began. One proposed same-day connection would place its first day at shared day 60. Kest declined to make it part of the production chronology until the connection was checked. A useful possible date was still a possibility.

This is an original fictional example. Kest is an authored choice of public form, not a claim about etymology, nationality or a performer’s real biography. If the troupe kept Lio for every current address instead of adopting Kest in its records, the change would lose its practical effect. Replacing it inside every earlier quotation would erase the relationship the character explicitly wants to keep. Neither choice follows automatically from a successful date conversion.

Give every calendar an explicit contract

A calendar has an ID, a display label, an epochDay and a cycle of years. The epoch is the shared integer day of year 1, first month, day 1. Zero is a declared coordinate, not a universal beginning of history. A null epoch means that this relationship is unknown. Negative epoch coordinates are allowed, but entered calendar years run from 1 through 10000. There is no year zero or automatic era reset.

Each cycle year lists its months in order, with exact IDs, labels and integer lengths. The whole cycle then repeats. The harbor example alternates a 40-day year with a 45-day year containing a five-day Turn month. The ridge example repeats a 60-day year. These deliberately small invented systems make the arithmetic inspectable. They are not shortened descriptions of any real community’s calendar.

All calendars share one authored day boundary. Time zones, observations of sunset, missing dates, fractional days and dates reconstructed from astronomical events are outside this model. If your plot depends on those distinctions, establish a more suitable chronology rather than treating an integer conversion as enough. A calendar’s label has no power to supply rules that were never entered.

Count the first day once

Dates use a zero-based offset internally: the first day of the first month has offset zero. Earlier complete cycles, earlier years within the current cycle, earlier months and the days before the entered day are added. Only then is epochDay added. This avoids treating the first day as an extra elapsed day.

For harbor year 2, Dry 5, the first year contributes 40 days. Flood in the second year contributes another 20. Four days have passed before Dry 5. The relative offset is therefore 64; the harbor epoch is zero, so the shared day is also 64. For ridge year 1, Rest 5, Watch contributes 30 and four earlier Rest days contribute 4. Adding ridge’s epoch of 30 yields the same shared day, 64.

The following harbor year begins after 40 plus 45 days, at shared day 85. Change Turn from five days to nine and that next year begins at 89. The earlier adoption remains on day 64. A meaningful calendar edit changes the dates it actually follows; it does not randomly redistribute every event or pretend an invalid month exists in an ordinary year.

Read adoption and use as different events

People have stable IDs, working labels and an initialForm. The baseline means the active form before all events entered in this worksheet; null means that it is not known. A working label helps the editor recognize a person. It is not itself another adoption. Different people can have the same displayed form without becoming one person.

An adopt event starts the exact entered form at its position. A use event asks whether its exact form matches the active form at that position. Shared day comes first and explicit order breaks a same-person, same-day tie. In the default example, adoption has order zero and the old-address use has order one. Move the adoption to order two and that old-address usage precedes it, so Lio matches the baseline instead.

The program rejects an ambiguous same-person position rather than letting pasted row order decide the scene. Events belonging to different people need not be ordered against one another just to evaluate their names. Matching is exact: Kest and kest are different supplied strings. The tool does not infer nickname equivalence, respectful address, permission or a character’s motive from that difference.

Keep unknown history visibly unknown

The old station record has a valid local date and a local offset of five. Its epoch is null, so its shared day is null too. The row remains useful: you can inspect the entered date, retain the form and work on the anchor. It does not enter the definite chronology under a made-up day zero. Unanchored rows are displayed separately after anchored rows, not asserted to happen later in the story.

If a person has an adoption on an unanchored calendar, this tool conservatively withholds confident use comparisons for that person, including uses whose own dates are known. That unknown adoption could change which form applies. It does not enumerate possible epochs or prove an earlier usage safe merely because the unanchored row appears at the end of the table.

A baseline can be unknown independently of an epoch. An anchored adoption can establish a later exact active form, but it cannot recover the earlier name. Separate the missing fact that matters: the calendar origin, the earlier form, or the intended transition. Filling every null with a convenient value would make a tidy sheet at the cost of the story’s actual uncertainty.

Use same-day pairs as evidence to inspect

A synchronism is an author-entered claim that two dates refer to one shared day. When both epochs are known, the tool checks equality. When only one is known, it subtracts the unknown calendar’s local offset from the known shared day and shows a proposed epoch. In the default old-log pair, 64 minus 4 produces a proposed epoch of 60.

No proposal is applied automatically. Review why those dates should be the same event, then edit the calendar’s epochDay explicitly and recalculate. The old-log use then lands on shared day 65, where its Kest form can be checked against the adoption. Its explicit order differs from the other same-person usage on that day, so the anchored records remain distinguishable.

Add a second pair that proposes 61 for the same calendar and the tool retains both candidates as conflicting proposals. It does not average them or choose the one that clears more name warnings. Two unanchored calendars do not give one another a shared origin. The program does not propagate assumptions through such pairs; establish the intended anchor explicitly before drawing a conclusion.

A conversion is not a verdict about the speaker

The target-calendar field selects which existing calendar receives each anchored date. An unknown target epoch cannot produce a converted date. A day before that calendar’s year 1, or after year 10000, is outside coverage rather than an invented negative year. The original local date and known shared day remain available when target projection is unavailable.

claimDay is a separate optional assertion about the shared day. The ridge letter’s entered claim of 64 is contradicted by its actual date, which converts to 65. Its Kest usage nevertheless matches the active form. Correcting the copied day is a different edit from changing its salutation. The table keeps these checks separate so that one mismatch does not conceal the other.

In the costume scene, an old form can remain intentionally inside a quotation. Record that editorial decision beside the production asset; this arithmetic tool will still identify the exact mismatch. It does not grant an exception, rewrite dialogue or decide whether the quotation works. If every name were interchangeable, the scene would lose the character’s distinction between current recognition and a chosen trace of earlier work.

Carry the proof into the next revision

Copying a result includes its dated explanation, not an unsupported bare conclusion. Saving a scene record preserves its event and person scope; two occurrences of Kest are not silently merged into one naming event. Compare records when deciding which address or costume tag needs attention. A result export records visible output, while the private handoff includes the calendar and naming proof and its unresolved synchronisms.

Save or export a project before adopting a new origin. Restore brings back the actual input calendars and events; it is not a reconstruction from names in the results. Changing a calendar can move many later records, so review their date conversions again. Keep real historical calendar research in a separate evidence process. What this worksheet contributes is a reproducible fictional contract and a clearer choice about what to revise.

Can I enter a real historical calendar name and get its rules?

No. The label supplies no calendar knowledge. Enter explicit periodic years, month lengths and an epoch. Year zero, era resets, time zones and astronomical reconstruction are unsupported. Use an appropriate researched method for real dates.

Does an epoch proposal repair the calendar automatically?

No. It is an unapplied consequence of a same-day claim. Conflicting candidates remain visible. Review the evidence, explicitly edit epochDay and recalculate; no unknown-to-unknown anchor chain is inferred.

Why is a use unverifiable even though its own date is known?

An unanchored adoption for that person could change the active form. The tool conservatively withholds use verdicts rather than treating the unknown adoption as definitely later. An unknown initial form can also prevent an earlier comparison.

Does an old-form mismatch mean I must rewrite the dialogue?

No. It checks exact forms against the entered transition. Quotation, resistance or an accepted historical reference may be intentional. Preserve that editorial reason separately; the arithmetic cannot infer motive or authorize an exception.

Method references and scope

This page’s methods and fixtures are original creative-production models. The guide states their assumptions and limits; no external historical or cultural authority is implied.