The slow way, made survivable Chapter 21 of 23 Svenska

The map · Part Two · The machine · Chapter 21 of 23

The page that arrives

What the owner sees on the phone, and the rules on what it may say: a distance from a price, never a verdict; no buy-side condition without the conditions that qualify it; its own age stated twice so a stale page cannot pass as fresh. About 8 minutes.

The page is one file: no server logic, no framework, no script. It opens from a local file on the owner's own machine just as it does through the tunnel, and it is built to be read on a phone in the order a person would actually ask questions.11vss/overview.py; the design rules are each backed by a test, described in the project brief §4.7.

Three questions, in order

  1. Does anything need me today? One block at the top, in plain sentences. Either "nothing", or the two or three things that do: a buy line crossed, a stop breached, a held name with no stop, a dated event within seven days. The list of kinds is closed, so the block cannot grow into a feed. Beside it, always, is what was checked, because "nothing needs you" and "nobody looked" are otherwise the same silence.
  2. Where is everything against its value? One card per name. A card, not a table, because a table is for comparing forty things and a card is for recognising one. The price large; the value and the buy line beside it; a year of settled closing prices drawn as a small line; and a track showing where the price sits between half the value and half again, on a scale that is never rescaled per name. A picture never replaces a figure.
  3. What is coming? The unresolved dated events, nearest first. A long note is folded, never cut short, because "an ellipsis on a record is a record nobody can read."

The rules on what it may say

A distance, never a verdict

The page uses green and red. It uses them to say how far a price is from a line, in five bands whose boundaries are the method's own numbers, and for nothing else. A name can be green and need nothing; the name that needs the owner can be red. Colour is never applied to a whole card, because a green card reads as approval. A name that is cheap but has failed a gate is drawn muted, with the reason stated in words, so that a cheap closed door does not read as an invitation. No colour anywhere carries meaning on its own.22vss/overview.py: 'THE DISTANCE SCALE... it is a MEASUREMENT, never a verdict. It says HOW FAR, and nothing about whether to act.' Bands at 0, 5, 25 and 75 percent.

No buy-side condition without the conditions that qualify it

If the page says that a price is below its buy line, the same sentence says what else must be true: that the reading is current, that the conditions from chapter 11 hold. Not a line below. The same sentence, because "the reader who stops after the first half is the reader this page is for."33vss/overview.py: 'A BUY-SIDE CONDITION NEVER STANDS ALONE. The qualifying clause goes in the SAME SENTENCE, not a line below it.'

It states its own age, twice

A run that fails writes nothing. The server keeps serving the last good page. The page looks identical to a fresh one, and the owner reads last Thursday's states believing they are tonight's. That failure is invisible to every alarm in chapter 18, because the run either happened or it did not, and the page's age is a different question. So the page prints the exact time it was generated, with the timezone, in the header, visible on a phone without scrolling, and again in the first sentence of the footer. The page cannot mark itself stale, because that would need a script and scripts are forbidden; it can only make its age impossible to miss, and the subtraction is the owner's.44Ruling F1 limb (c) requirement 1, and ruling F2 withdrawing requirement 2. Implemented 2026-09-13.

It never chooses

Where the record holds two valuations for a name and nothing says which is current, the page prints DATA MISSING and links both. It does not take the newer one. A sort order is not a decision, and the page must not answer a question the owner has not.55vss/overview.py: 'it never chooses (two run records and no entry naming one ⇒ DATA MISSING and both linked — a filename sort must not answer E39's question)'.

Why a page that renders no opinion is more useful

A page that said "buy NAME A" would be read for its verdict, and the verdict would be right or wrong, and the owner would learn nothing either way about whether the reading behind it was sound. A page that says "NAME A is 3 percent above its line, the line was struck on the June report, the next report is in nine days, and one figure is unverified" gives the owner every fact needed to decide and withholds the one thing that would let the owner stop thinking. It is more work to read. That is what it is for.

Decided
The page shows state, distance and age. It renders no verdict on any name, colours nothing as approval, qualifies every buy-side sentence in the same sentence, and prints its own generation time twice.
Why
The page is the thing the owner acts on. Anything it decided would be decided without the reading, and anything it hid about its own age would be believed.
Cost
It cannot warn that it is stale; the owner must read the time and subtract. It never gives the answer, so every night the owner does the thinking again.

Sources for this chapter

  1. The overview page generator and its rulings — read from this repository: vss/overview.py; vss/render.py; reference/FRAMEWORK-EDITS.md F1, F2

The slow way, made survivable. Built 2026-09-13 from the repository as it stood that day. NAME A and NAME B are fictional; no company, price or holding appears on this site. Not financial advice: one private investor's method, shared as it is.