Not an emergency service. Danger: 911. Crisis: 988, any hour.
HEAT Changelog
Language
Color theme

What changed, and why

This page is the full history of HEAT: every release, what moved in it, and why, mistakes included.

Public beta in development. Not for production decision making.

Systems that make decisions about people owe the public their history, including their mistakes. Every entry names what changed. Where a change came from evidence or from a practitioner's flag, the entry names that too. Question wording is never edited in place: a change produces a new item version, and every result records the instrument and rules versions that produced it.

2026-09-07 · v0.77.0 · Pilot Candidate 1 · instrument 0.36.0-pilot · Ten principles, and one icon per idea

Scope: network. Two owner requests of 2026-09-07. The first: a blurb about what this is and how it is different, "like do we have 10 commandments that we follow, person-centered, trauma informed, placement not a score". The second: more icons, "icons are free, I don't want clutter".

The ten principles now exist as a list, and every one of them names the thing that keeps it. They are on the front page in a sentence each and on the governance page with the mechanism beside them: no scoring code to remove because none was ever written, a decline option that is a schema literal rather than a default so a question a person cannot refuse does not load, safety fields kept off the printed page and proved by a walk that prints one, a reasoning trace that is a required output field, "unable to determine" as a real value rather than an error, a screening-out test that runs on every commit, a build that refuses a deployment naming neither its written standards nor a contact for a review, three reading tiers, and a network walk that fails if one request leaves this site's origin. Nothing in the ten is new behaviour. Every one of them shipped before this release and was held by something mechanical; what was missing was the list, which is why the answer to "how is this different" got assembled fresh in whatever room it was asked in.

The document is the source, and the two pages are copies of it. The names and the plain sentences live in docs/PRINCIPLES.md, and the coherence gate reads them out of it and fails the build if either page has reworded one or dropped one. Where a principle restates one of the four promises the site already words identically everywhere, it uses that exact sentence rather than inventing a fifth wording for the same thing. Three of them do, and each of those opens with a plainer sentence first, because the canonical wording is precise rather than easy and the landing page is held to grade 8.

A third kind of mark, and an allowlist instead of good intentions. Two kinds were enough while there were two jobs: a mark that maps a page, and a mark that labels a control. The new set is twenty symbols defined once, injected into every page byte for byte the way the rest of the shell is, and used in six named slots: the beta badge, a principle, a determination in a sample card, an output card heading, a community setting that is offered or not, and an answer from a record waiting to be confirmed. The gate walks the tag stack of every page and fails an icon anywhere else, every symbol has to have a row in the design system's table saying what it means, and a mark is never the only carrier of meaning: the words are beside it in every use, and no mark is ever drawn in a status colour.

One determination is one shape now, on all four surfaces. Chronic homelessness is a calendar on the landing card, in the landing sample, on the questions page group and on the result page, and the build compares the path data in all of them rather than trusting four copies to stay the same. The four landing cards were also drawing a page-section mark on an h3, which the icon rule has forbidden in words since v0.75.0 and which no check could see, because that check reads h1 and h2 only. They carry the determination's own mark now, and the old markup is retired so it cannot drift back one card at a time.

What was deliberately left alone, because an icon set is defined by what it excludes. The footer, which is the quietest thing on the page on purpose. The plain-words label and the assessment's mode chooser, which already carry a mark from the same family held byte for byte by an existing check, so converting them would have been churn with nothing changed on the screen. The Evidence Register's entry headings and the register's proposals, which are records in a list of records. And body prose, where a mark inside a sentence is decoration and nothing else. The first draft of the community settings put a list bullet AND an icon on every row, which is exactly the clutter the request warned about, and the rows carry one marker now.

2026-09-07 · v0.76.0 · Pilot Candidate 1 · instrument 0.36.0-pilot · An answer can be a range, and a community can say what it runs

Scope: network, except the Lowcountry appeals contact, which is community:lowcountry. Four owner rulings of 2026-09-07, three of them from the HMIS retrospective study of 297,069 real records, and one from a practitioner's question that took ten words to ask: why recommend shelter if the community does not have it?

Some true answers are not numbers, and HEAT was reading one of them as a contradiction. An HMIS record can say "more than 12 months" and nothing finer. That is a range, 13 to 36, and until now it reached the engine as the number 13. So a person whose start date implied twenty months and whose record said "more than twelve" was told the two answers did not fit together and no determination could be made. They fitted perfectly: 13 was the bottom of a range, not a claim. On 297,069 real enrolments that one misreading was the single largest cause of HEAT declining to answer. The gate now compares ranges instead of numbers, and 15,666 determinations move, 5.3 percent of all sessions, every single one of them OUT of "unable to determine" and none of them into it. The before and after is measured and published in the study rather than described.

People do not count months either, so the question stopped making them. "About how many months in all have you stayed outside, in an emergency shelter, or in a place not meant for people to live in?" now takes "More than a year, I am not sure how many months" as a real answer. It records a floor of 13 and no top figure, which is exactly what it says. Before this the only ways through the screen were to invent a number or to choose "I do not know" and be written down as having said nothing. Everywhere the value appears, on the screen, on the printed page, in the rule-by-rule trace and in the downloaded record, it reads "at least 13 months" and never "13 months". A record must never say a person named a figure they were careful not to give.

"Indeterminate" was telling a worker nothing about records that supported a real statement. When too many contributing items are missing, the support planning level comes back indeterminate, and that is honest. What was hidden is that the rules which did fire had often already established a floor: on the study's data, for 84,687 of the 242,283 records that returned the word. The page now says what the answered facts reached, in the same breath as the incompleteness and never without the list of what is missing: "At least moderate, based on what was answered. 4 items are missing, so this is not a final band." The band itself does not move, no rule reads the new value, and every existing determination is byte for byte what it was, proved against the committed answer sweep rather than asserted.

Two of the three parts of the safety category are on no HMIS form anywhere, and 27 percent of fleeing reports were dying there. The federal definition of homelessness for someone fleeing violence has three parts, and HMIS holds only the first. In the study, 4,969 sessions reported fleeing, reached that test, and returned "cannot determine" on two questions nobody had ever been asked. A session that is filled in from a record now ASKS those two rather than inheriting the silence. Both are optional and safe to skip: the skip control on those two screens says "Skip this one" rather than "I prefer not to answer", because asking a survivor to frame something they may not be able to say as a preference is the wrong word for the right thing, and both questions now promise in their own text that skipping is never written down as a no. The result stays off every printed copy, as it always has.

Nothing filled in from a record is silently trusted. A record is what somebody wrote down on an earlier day; the person is in the room now. An answer that arrives from a record is marked as such, shown on the check-your-answers screen as "From the record. Confirm it or change it before the results.", and does not count until somebody has looked at it. HEAT has no pre-fill yet, so nothing in this build produces one. The rule exists first on purpose: a rule added afterwards is a rule some pre-fill has already shipped without.

A community can now say which kinds of housing it actually runs, and everyone can see the answer. Recommending transitional housing to a community that has none is a conversation a worker cannot have. Each deployment's configuration now lists every intervention type HEAT can name with a plain true or false beside it, plus the community's own name for it and one note for the worker. A type marked not offered is left off the list of things to discuss AND written into the reasoning trace as not offered in this community, per configuration, so the record still shows what the fitting option would have been and a community can count how often it was one it does not run. The worker view carries one quiet line saying how many types the configuration hides.

Those settings are printed on the governance page, read-only, for anyone to read. This is the admin screen made honest. HEAT is a static tool: there is no login and no hidden switch, and there is not going to be one, because a setting a single account can flip in private is a setting nobody can audit. A community's settings live in one file, are changed by the maintainer under the same review as any other change, and are rendered onto a public page by the same function that builds the deployment, so a settings page that disagrees with the configuration it describes is not a thing that can happen. Languages, whether anyone may answer on a person's behalf, every intervention type, the appeals contact, the written standards, and whether the build is scenario testing.

Lowcountry has an appeals contact. Gaither Stephens, interim during the pilot, until the CoC names its own. The written standards are still unnamed, so the build still refuses to call that deployment ready for real households and prints exactly what is missing. That warning is correct and it stays.

Feedback from here on goes into two piles. "All HEAT" and "this community only". Every register and changelog entry from now on says which, and a community-only change lands in that community's configuration file and never in a shared engine or instrument file. That boundary is what lets two HEAT results from two communities mean the same thing.

Where to check this. The rule reasoning is in docs/CHRONICITY_RULES.md (CH-R1d and CH-R7b, with the ten-part justification the improvement register requires), docs/SUPPORT_NEED_RULES.md (SN-R10f) and docs/HMIS_CROSSWALK.md section 5.4. The configuration schema is docs/DEPLOYMENTS.md. The measurement is tools/simulate/RESULTS-hmis-2026-09.md.

2026-09-07 · v0.75.0 · Pilot Candidate 1 · instrument 0.35.0-pilot · One product, not parts

No question changed. No rule changed. No determination changed. Two earlier passes cut the tool saying the same thing twice. This one is about the tool saying the same thing in a different shape on every page. Nothing was removed that a reader uses, and no promise was dropped, softened, or made harder to find.

The site was reading as eight pages built in eight different weeks, and that is exactly what it was. The clearest way to see it: a section of a page was written FOUR different ways, one per page. The front page had a class for it. Governance wrote the same thing out by hand above every section at one size. The changelog wrote it out ninety times at another size with the semicolons in a different place. The register had invented a third name for it at a third size, with no dividing line above it at all, so its sections ran together while every other page's were separated. Nobody reading one page at a time could see any of that. There is one class now, plus one named exception for a page whose sections are records in a list rather than parts of an argument, which is this page. Along with it went 120 inline style rules inside the pages, each of them a layout decision that no stylesheet could see and no reviewer could compare.

Every page now opens the same way, and the first screen says what the page is for. Four things, in this order: the page's title with its own mark, one sentence saying what the page is, the beta status, and then the same sentence in plain words. Before this, three of the seven readable pages had no plain-words summary at all, two put one under every section but none at the top, and the Evidence Register's was at the FOOT of a five-paragraph introduction, which is a summary a reader meets after the thing it was meant to save them from. Two page titles were a slogan or a fragment rather than a purpose: Governance was headed "Trust the process, not the designer", which is a good line and is now the opening of the paragraph it always introduced, and the page is headed "How HEAT is governed"; the register was headed "Open for comment", which never said comment on what, and is now headed "Proposed changes, open for comment". The Evidence Register's title now says what it is for as well as what it is called.

The plain-words box is one component again. It is drawn by three generators and typed by hand on three pages, and one of the six had given it a second label, so the same box read as two different boxes on two different pages. One label, "In plain words", everywhere. It now always opens the block it summarises rather than appearing wherever it was added, and every page has one. Seven pages carry 64 of them between them.

One rule for the marks beside headings. Every page title and every section heading carries exactly one, and nothing below a section heading carries any. Two pages were following that already and two were following the opposite: the HUD alignment page had none on any of its four headings, while the questions page and the Evidence Register, which print the same list of questions in the same groups, both had one on every group. The results page had them on eighteen of twenty headings and had quietly lost the two on the card the page opens with. The one exception is written down rather than left to taste: a heading that titles one record in a list of records carries no mark, because ninety copies of the changelog's own icon would say nothing.

Eight copies of the code that builds a card heading became one. The result page's card grammar is one mark, then the title, and nothing else. That was true of what a reader saw and false of the source: the same five lines were written out eight times, and two of the eight had already forgotten the mark. That is not a tidying note; it is the reason the two headings above were wrong, and it would have been the reason for the ninth.

Four promises, one sentence each, word for word wherever they appear. Privacy, no score, who decides, and beta status are the four things HEAT says most often, and each of them was worded three or four different ways across pages a reader compares side by side. A reader who meets "answers never leave your device" on one page and "your answers stay on your device" on the next has to work out whether those are the same promise. They are, and now they say so. The four sentences are published in the design system document below, and a check fails the build if any of them is reworded on any page, or if any of the old wordings comes back. The assessment's own copy is deliberately not governed by this: it states the same four promises in the plainer register its reading level requires, in two languages, and a different gate holds that.

The front page called two of its own outputs by two names, one screen apart. The sample result card said "Chronic homelessness" and "Interventions to discuss"; the four cards printed directly underneath it called the same two outputs "Chronicity, computed" and "Intervention discussion". Both now use the sample card's names, which are the names the rest of the site uses.

The landing page's title carries the site's mark, like every other page's does. It was the one page whose title had none, which is a small part of why it read as a different site from the seven behind it.

The header now says where you are, in the words the reader clicked. The one part of the page shell that is allowed to differ page to page is the label beside the wordmark and the browser tab title, and nothing was holding either. Two pages had drifted: the label read "Every question, for review" on the page the navigation calls Questions, and one tab title was a whole sentence where the other seven were a label. A reader who clicks Questions lands somewhere that says Questions now, and their tab says it too.

Four new checks, so this cannot grow back. The build now fails if a canonical sentence is reworded anywhere it appears; if a page's header label stops agreeing with the navigation slot that leads to it; if a page loses its plain-words box or gives it a second label; if any page title or section heading is missing its mark, or carries two; if any page carries an inline style inside its content, or invents a sixth kind of section container; or if a page's opening stops being the four things in the four order. The rules they enforce are written out in words in docs/DESIGN_SYSTEM.md, one page, with the machine that holds each one named beside it. That document is the point of the release: the conventions were real before it and lived in nobody's head at once, which is how three rounds of the same fix each stopped at the page they started on.

2026-09-06 · v0.74.0 · Pilot Candidate 1 · instrument 0.35.0-pilot · A second simplification pass: fewer copies of the same thing

No question changed. No rule changed. No determination changed. This pass is about places where one fact was written down two or three times, and about a header that took a third of a phone screen. Everything a reader could do before, they can still do.

One list of the checks that have to pass. The blocking checks that run before anything ships were written out three times: in the build workflow, in the release script, and in prose in the README. Three copies had already gone out of step once, with two checks in the workflow and not in the release script, which means a release could have shipped something the workflow would have refused. There are now two commands, defined once, and everything else runs them. A test fails the build if the workflow or the release script starts keeping a list of its own again.

The questions and the evidence behind them are now linked question by question. They were two entries side by side in the site navigation, which asked a reader to choose between them before knowing what either was, and somebody who wanted to know why the question in front of them is asked had to open the other page and find it by eye among thirty-eight entries. Every question now links straight to its own evidence entry, and every entry links back to the question as it is asked. Both pages carry a plain pointer to the other at the top, and the register is still linked from the front page and four times from Governance. The navigation is one item shorter: eight to seven.

Which part of the conversation a question belongs to now lives in the instrument. Every question screen carries a label saying where you are: Safety, Who this is about, Housing history, and so on. That map was two tables inside the app, which put a reviewable fact about the questions in the one file no reviewer of the questions reads: move a question from one block to another and the label stayed behind until somebody remembered to edit the app as well, and nothing would have said so. It is now data on the item and on the group, checked against a fixed list every time the instrument loads, and printed on the published questions page beside each question. Instrument 0.35.0-pilot. No item version moved, because nothing about what any question asks changed.

The header on a phone: 252 pixels tall, now 200. Five controls sat in the header, and on a 390 pixel screen they took three rows; with the emergency banner and the navigation, 313 pixels of the screen were used before a single word of the page. On Governance it was worse, 357, because the eighth navigation item pushed that row onto a third line; every page is 261 now. Below 700 pixels the three theme choices and the colour-vision toggle now sit behind one button marked "Display", which opens a small panel holding the same four controls. Nothing was removed and nothing moved on a laptop. The language control stays in the row, because language is not a display preference in the same sense: it changes what the page says, and a Spanish reader should not have to look for it behind a word written in English. The button says whether it is open, Escape closes it and puts the cursor back on the button, and the accessibility suite opens the panel and checks all of that on every build.

One place decides which wording a screen shows. A question can be worded up to twelve ways: speaking to the person or about them, standard words or simpler ones, and on top of either a version for someone under 18 or a past-tense version for someone who has a place tonight. Seven functions each carried their own copy of the rules for choosing between them, and two of the copies had already drifted apart. There is one now. Before changing anything, every string every question renders was recorded in every combination: three ways of answering, under 18 or not, a place tonight or not, simpler words on or off, English and Spanish, which is 48 combinations over 38 questions. The new code was then checked against that record and produces the identical string in all 1,824 of them. The record is kept, so a future change that moves a word shows up as a named question in a named situation.

Governance says which parts of the site depend on a service that is not the site. The feedback button, the public register of proposed changes and the visit counter in the footer all reach a small service run by the same owner on another domain. It can be unavailable while HEAT is fine, and when it is, feedback says it could not be sent and keeps what was typed, the register says it could not be loaded, and the counter stays blank. No answer is ever sent there, and an assessment runs and finishes exactly the same way when it cannot be reached at all. That was true before; it was not written down.

Housekeeping. Seven superseded documents moved into a documents archive with a one-line index saying what replaced each: the first three versions of the proposal, a completed review work order, and three simulation studies whose findings are in the validation plan. Nothing was deleted and every link that pointed at them was updated.

2026-09-06 · v0.73.0 · Pilot Candidate 1 · instrument 0.34.0-pilot · A simplification pass: same tool, fewer words

Nothing was cut that a reader uses. What was cut is the tool saying the same thing twice. No question changed. No rule changed. No determination changed. No promise about what is saved, sent, scored, or decided was dropped, softened, or made harder to find. Every number below is measured by walking a whole assessment in a browser, before and after, not counted by hand.

The result page a case manager reads: 20 cards became 17, and 13 reassurance lines became 5. Three cards about disagreeing with a result became one. There used to be an "Assessor judgment" box, a "Would you have decided differently?" card and a "Disagree with a result?" card, and the third of them explained the other two in prose and got their conditions wrong twice. There is one card now, headed with the question, holding two labelled actions: "Record it on this page", which is the same structured judgment with the same reason list, the same required note, the same 300-character limit, the same case-conference tick, and the same printed paragraph; and "Send it to HEAT", which is the same flag straight into the review queue. The optional name and the optional message were two cards with two buttons and two paragraphs saying the same thing about privacy; they are one card with two fields, one button and one privacy sentence.

Repetition is not emphasis. The worker half of the result page said HEAT decides nothing in eight places: on the support-planning row, under the list of supports the person named, on three lines of the prioritization card, and twice on the offers, two lines apart. It says it three times now. Once as a standing line directly under the header of the card the page opens on, where it is read before any determination is; then twice more where the sentence changes meaning locally rather than restating the rule, on the disposition ("never placements or denials") and on the offers ("never requirements"). The participant view keeps its own version of the standing line, in its own words and in Spanish. "Nothing is saved" went from five statements to two: the card footer and the one merged name-and-message card. The prioritization card kept one line of its own, down from three, and it is the card's instruction rather than a fourth statement of the boundary: what a community may do with it, and that nothing on it is new or weighted.

The language control offers Spanish as a link instead of a sentence. Spanish covers the assessment and the participant page. On the seven pages that have none, the ES option used to be removed and a line of Spanish prose appended under the control, pointing at the assessment. It was correct and it looked like a mistake: a stray sentence bolted to a row of buttons. The second item of the control is now an ES-shaped LINK in the place the ES option stood: same globe mark, same "ES", same box and same height, marked as Spanish so its Spanish name is read as Spanish, with an arrow saying it goes somewhere. The build check that walks all seven pages in a browser now measures the link's box against the control's, because a pointer parked beside a control is the thing this replaced.

A false sentence on the front page. The participant block said "Right now HEAT is only in English." That stopped being true in v0.67. It now says what is true: the questions and the person's own page are in Spanish, that Spanish is a draft no outside expert has reviewed, the rest of the site is English, and staff can find an interpreter for any other language. It says it in English and then in Spanish, because the reader who needs that sentence most may not read the first half of it.

The site navigation is one item shorter, and the emergency banner is one line. "Samples" pointed at /assessment#sample, which is the same document as "Assessment", so one destination had two entries and the current-page marker had to be moved between them. It is gone; the two "see samples" links on the front page and the intro screen are how a reader gets there. The banner at the top of all eight pages read "HEAT is not an emergency service. If you are in danger right now, dial 911. For crisis support any hour, dial or text 988." across two lines. It reads "Not an emergency service. Danger: 911. Crisis: 988, any hour." Both numbers, both purposes, one line, at the top of the page in an emergency.

The intro screen: seven paragraphs to five, 262 words to 236. What you are asked and what you get at the end were two paragraphs, and the second ended by repeating the sentence the paragraph above had already made about scores and about who decides. They are one paragraph, and the repeat is gone. The two privacy paragraphs, one about the answers and one about what the page loads, opened on the same promise one after the other; they are one paragraph and no claim was dropped from either.

Check your answers stops repeating its own headings. The screen groups answers under the same phase names the question screens show. It started a new group every time the name changed as it walked the questions, so a phase the questions return to came back as a second heading with identical words, which reads as a page that lost its place. Rows are collected per phase now, phases keep the order they first appear in and rows keep question order inside them, so a heading is written exactly once. Every Change button still looks its own question up when it is pressed, so how the rows are displayed cannot send anybody to the wrong one.

Two cards say what the person said, not what we do about it. "Support to discuss" is "What they said would help". "Supports worth offering" is "Offers worth making". Same lists, same rules reading nothing from them.

The front page stops restating itself. The two-column "HEAT assesses. Your community decides." section was followed by a paragraph that said it again in prose; the paragraph is gone and the table is not. The four cards describing what HEAT produces each carried an "In the sample above:" line repeating a value from the sample result card printed directly above them; the four lines are gone and the descriptions are not. The participant block's two privacy bullets are one.

Housekeeping. The README's status block still said "Milestone 0 in progress" and "36 tests passing, M2 next", which was three months and 818 tests out of date; it now states the release, the instrument, the suite, the languages and what is actually next, and points at the release policy. An unreferenced developer script was deleted. Every phrase this pass replaced is on the retired list, so none of it can drift back one sentence at a time, which is exactly how the repetition arrived.

2026-09-06 · v0.72.1 · Pilot Candidate 1 · instrument 0.34.0-pilot · "Say it simpler" now works in Spanish

Every question can be made simpler in Spanish too. v0.72.0 added the "Say it simpler" button and shipped its wording in English only, with the Spanish deferred and written down string by string. That deferral is closed. All 169 Easy Read strings are Spanish now, in the wording read to a person, in the wording used when somebody answers for a person who is not there, and in the versions for a young person and for someone who already has a place to stay. A Spanish reader who presses the button no longer meets an English sentence in the middle of a Spanish page.

It is written to the Spanish standard, not translated from the English one. Easy Read is a rewriting of a question against a reading level rather than a translation of its sentences, so the Spanish was written against Lectura Fácil: short sentences, one idea to a line, ordinary words, usted for the person answering about themselves and the third person about a person who is not there, numbers written as digits, no sayings, and a hard word explained on the same line instead of in a glossary the reader has to leave the question to find.

The same gates as the English, in their Spanish form. Reading level is measured with the Spanish index rather than the English one, because the English formula counts syllables the way English spends them and would fail correct, plain Spanish: every string scores 85 or better on Fernández-Huerta, which sits between the two easiest bands that index publishes, and the worst of the 169 scores 85.3. No sentence runs past 10 words, the same maximum the English layer keeps. No word runs past four syllables, which is the English three-syllable rule measured in a language whose ordinary words are longer, and only two long words are allowed through: discapacidad and entrenamiento, each because the question is about the thing it names.

Simpler Spanish is not a smaller question either. Every boundary each question carries, "menos de 90 días", "7 noches o más", "el tiempo en vivienda de transición no cuenta", is now written in Spanish beside the English one in the instrument, and the build refuses an instrument where the Spanish question carries a boundary its simpler Spanish drops, or where the simpler Spanish claims one the Spanish question never made. Two English boundaries share one Spanish phrase, because the Spanish question already puts them together: heat stroke and heat exhaustion are both "golpe de calor", and boot camp and basic training are both "entrenamiento básico". That is written down rather than hidden.

The rest of the Spanish rules apply to it unchanged. The person-first wording gate reads all 169 strings, so the shortest sentences on the site cannot become the ones that name a person by a condition. The voice rules read them in all three ways an assessment can be given, so a third-person question can never sit above second-person help. The browser test that turns the button on and off and compares the screen character by character has always run in both languages; it now has Spanish to compare.

It is a draft, like the rest of the Spanish. No certified reviewer and no Spanish-speaking reader in a cognitive test has seen these words yet, and the assessment says so on the screen before the first question. The feedback control on every question is the place to report a wording that reads wrong.

2026-09-06 · v0.72.0 · Pilot Candidate 1 · instrument 0.34.0-pilot · "Say it simpler": an Easy Read wording for every question

Every question screen now has a button that makes the question simpler. Press "Say it simpler" and the question and its help text are replaced with an Easy Read version: short sentences, one idea to a line, ordinary words, numbers written as digits. Press it again and the standard wording comes back. The choice stays on for the rest of the assessment, and it is remembered the next time, the same way the theme and the colour-vision setting are. All 38 questions have one, in the wording read to a person and in the wording used when somebody answers for a person who is not there.

What it is not, and this is the part that matters. It is a different way of showing the same question, not a different question. The answers are the same answers with the same values. Nothing an engine reads can see it. No item version moved, because an item version records what a question asks and nothing about what any question asks has changed. The check-your-answers screen shows the standard wording of every question, whichever wording was on the screen while it was answered, and it says so in one line: "You used simpler words for some questions. The record keeps the standard wording." The downloaded record carries one flag for the whole session, next to the tick that governs sensitive fields, because that is the same kind of fact: a decision about how the page was shown. There is no per-answer field for this and there never will be.

The reading level is measured, like every other tier. The Easy Read wording is scored on the same Flesch-Kincaid machine that gates the assessment, at grade 4.0 rather than the assessment's 6.0, with two extra rules the formula cannot express: no sentence over 10 words, as a maximum rather than an average, and no word over three syllables. Ten long words are allowed and each is a defined term the question is about, with the reason written next to it: emergency, homelessness, transitional, military, hypothermia, dehydration, disability, emotional, certificate, facility. The worst of the 163 Easy Read strings scores grade 3.85 and the longest sentence in any of them is 10 words.

Simpler words are not a smaller question, and that is a gate rather than a promise. Making text simpler loses boundaries: "under 90 days", "7 or more nights", "time in a transitional housing program does not count". Losing one does not read like a mistake, it reads like an easier question, and the person who needed the easier question is the one who would get the wrong answer. So every question now declares, in the instrument itself, the boundaries its wording carries, and the tool refuses to load an instrument where one of them is missing. It checks in both directions: a boundary has to be in the standard wording, so the list cannot be invented, and in every Easy Read voice and variant, so it cannot be dropped. The questions page publishes both wordings and the list of boundaries side by side, so anyone can check the comparison for themselves.

Turning it off leaves no trace. The browser test that runs on every build turns it on, turns it off, and compares the question screen character by character with how it started. It also checks that the button reports its own state to a screen reader, that turning it on is announced out loud, that focus stays on the button, and that the glossary still does not annotate a question screen in either wording, because scored wording is never altered on the page where it is answered.

The reassurances have simpler forms too. The block before the first question, which says that "I do not know" is a real answer and that declining is never counted as a no, has an Easy Read form written one promise to a line, and the button is on that screen as well. So do the two hints under a number and a date: "A guess is fine" and "Put 0 for none".

Spanish Easy Read is coming next, and until then it says so. The Spanish assessment is unchanged and still complete: every sentence a Spanish speaker is shown by default has Spanish. The Easy Read wording does not yet, and it is deferred rather than machine-translated, because Easy Read is a rewriting of sentences against a reading level rather than a translation of them, and doing that in Spanish needs the Spanish reading-level gate and a bilingual reader. The deferral is recorded string by string on a completeness track of its own, so the good number is not pulled down by the new one and neither number is a lie, and a Spanish reader who turns the button on gets the English Easy Read wording marked as English. The button itself, its announcements and the three reassurances are translated now.

2026-09-06 · v0.71.0 · Pilot Candidate 1 · instrument 0.33.0-pilot · every reference page section now opens with a plain-words summary

The reference pages kept their precise text and stopped requiring a reviewer to read them. Governance, the Evidence Register, the HUD alignment crosswalk and this changelog are written for someone who came looking for an exact claim, and until now that was the only reader they served. Every section of those pages now opens with a box headed "In plain words", written at a sixth-grade reading level, with the precise text kept underneath, word for word as it was. Fifty-nine boxes: six on governance, four on the crosswalk, one on this page, and forty-eight on the Evidence Register, which is one for the page, one for each group of questions, and one on every entry saying what that question is for.

The reading level is measured, not intended. Every box is scored on the same Flesch-Kincaid machine that gates the assessment itself, and fails the build above grade 6.0 or on a single sentence over 16 words. The worst box on the site today scores 5.99. Nothing about the reference tier moved: the precise prose under the boxes is still uncapped, because a cap there would cost the exactness those pages exist for.

A summary can be forgotten; a missing one now fails the build. The gate is structural as well as arithmetic. It reads the built pages and requires exactly one box under every section heading on governance, the crosswalk and the Evidence Register, and one on every one of the thirty-eight register entries, so a section added next year cannot ship without the summary this ruling was written for. For the two generated pages the summaries live in their sources, the crosswalk document and the register's own JSON, and both generators refuse to build if a section or an entry has no summary; the gate reads the source and the built page and fails if they disagree.

The changelog is the one exception, and it is deliberate. Release history is immutable: an entry says what was known and decided on its date, and writing a summary above a July entry in September would be editing the record. So this page carries one summary of itself at the top and none on any entry, and the test asserts that in both directions so the exception cannot quietly become a page nobody checks.

The Evidence Register gained group headings while it was open. It listed thirty-eight cards in one undifferentiated grid, while the questions page has grouped the same items in the same order since August. A summary "one per group" needs groups, and a reader who cannot tell the universal core from a module that only opens for someone with a pet cannot use the page. The register now carries the same nine headings, the same icons and the same count chips as the questions page. Entry headings moved from h2 to h3 under them; every entry keeps its own anchor, so existing links still land.

Accessibility and layout. The box is the cyan left rule the site already uses for the facts family, and it introduces no new colour: cyan is measured as a rule and the label ink as an ink, in all four palettes, by the contrast gate that already runs. It is never colour alone, because the label carries a glyph and the words. It is a note rather than a landmark, since forty-eight landmarks sharing one name help nobody. Its border edge sits on the page's left rail, so the alignment audit still measures one rail per page.

Spanish is deferred, and said so rather than faked. The reference pages are English-only today and the language control does not offer Spanish on any of them. Translating a summary while the section under it stays English would put a Spanish reader in front of a Spanish sentence promising to explain an English page. The boxes are marked as English on their own element, and the deferral is recorded with its date and its reasoning in the improvement register, next to the two English surfaces already recorded there.

2026-09-06 · v0.70.0 · Pilot Candidate 1 · instrument 0.33.0-pilot · the reading-level tiers are tighter, and 240 sentences were rewritten to meet them

The two tiers people actually read came down a long way, and the third did not move. Everything a person being assessed reads now has to score at grade 6.0 or below on the Flesch-Kincaid scale, not grade 8.0, and to average 16 words a sentence, not 20. Everything a caseworker or a CoC reader meets while using the product, plus the landing page, now has to score at grade 8.0 or below, not grade 12.0, with no single sentence over 20 words, not 28. The reference pages, which is governance, the Evidence Register, the HUD alignment page and this changelog, are uncapped as they were. So the three tiers are now 6, 8, and reference.

Why lower, when the old numbers already passed. Grade 8 is the reading level of the middle American adult, not the floor of it, so a gate set there lets through text that half of readers cannot use. Both of these surfaces are read under pressure: the first by someone in a housing crisis, the second by a worker on their fortieth assessment of the week. The old tier 1 also left a grade and a half of slack above the standard it was written for, which is a 12-year-old, and the slack is what the writing drifted into. Twenty client strings were sitting in it.

240 strings were rewritten, and the meaning of every one of them was carried across. That is 154 in English and 86 in Spanish. The English changes are 24 instrument strings across 14 questions, 62 strings in the app, 33 glossary definitions, 18 blocks on the landing page, 13 notes on the Questions page, and 4 paragraphs on the public register. Every reassurance stayed. Every boundary sentence from the misinterpretation audit stayed. Every honest option stayed. Every 911, 988 and 211 instruction stayed. What changed is sentence length and word choice: a 26-word sentence became two, and a longer word gave way to a shorter one where the longer one was doing no work.

Precision was not the thing that came down. The field's own terms are still on the page. "Chronic homelessness", "coordinated entry" and "24 CFR 578.3" are not paraphrased anywhere, on any tier. Where a term of art had to stay on a worker surface, the glossary was widened to carry it, rather than the term being taken out. On a question screen the help text has to say the same thing in plain words, because a person answering a question should not have to tap a definition to know what they are being asked.

Fourteen questions changed wording, so fourteen questions have a new version and a new Evidence Register entry. Each entry names the old wording, its score before, its score after, and what moved. Nothing a rule reads changed: no option, no gate condition, no threshold and no range bound. The answer sweep is byte for byte identical for every answer anyone could already give, which is the proof rather than the claim. The instrument is 0.33.0-pilot and the question cap is still 37.

Spanish is held to the same reader, not to the same number. Flesch-Kincaid does not exist in Spanish, so the Spanish gate uses Fernandez-Huerta, whose published bands map onto school grades. The floor moved from 60 to 70. Sixty is the bottom of "normal", which is grades 7 to 8, and that was the right twin of the old English grade 8. Seventy is the bottom of "bastante facil", which is grade 6, and that is the twin of the new one. The sentence allowance moved from 22 words to 18, which is 16 plus the same translation expansion the old 22 allowed on top of 20. Moving English without moving Spanish would have left a Spanish speaker reading a harder assessment than an English speaker, for the same questions.

Proof. 784 automated checks pass. Type check clean, both reading tiers green in English and the Spanish tier green, voice gate green, wording gate green, em-dash gate green, translation parity at 0 deferred, contrast green, coherence green across all eight pages, and 150 more retired phrases on the list that cannot come back. The accessibility, print-safety, telemetry and language-switch browser gates are green, and so are the alignment audit and the deployment build.

2026-09-04 · v0.69.2 · Pilot Candidate 1 · instrument 0.32.0-pilot · the footer says who made HEAT, and stops advertising five other sites

The footer of all eight pages carried a row of links to five other sites, and none of them was anything a reader of this one needed. HEAT is read by people in a housing crisis and by the staff sitting with them, and a link row out to a parent brand, two data products and two other organisations is the footer of a marketing site. It also cost something real: it put four destinations in front of somebody who came here to answer questions about where they slept last night, and it made the tool look like a piece of a network rather than a thing with an author. That row is gone from the public site, from the generators that emit the Questions, Evidence and HUD alignment pages, and from every community-configured deployment, which is built from the same pages. In its place is one line naming who built HEAT and one link to GaitherResearch.org, where the method is written up. The copyright beside the version now reads the same way, under a person's name rather than a company's. Nothing else in the footer moved: the HUD non-endorsement statement, the version, the Pilot Candidate label and the visitor count are where they were, and the coherence gate still compares the whole footer byte for byte across all eight pages, with the attribution line taking the link list's place in that comparison so a page cannot quietly lose it.

2026-09-04 · v0.69.1 · Pilot Candidate 1 · instrument 0.32.0-pilot · the language switch no longer offers a language the page does not have

The switch offered Spanish on seven pages that had none, so choosing it changed nothing. The language control is shared chrome on all eight pages, and Spanish covers the assessment and the participant page. Choosing Spanish on Home, Governance, Questions, Evidence, Register, the HUD alignment page or this one therefore left every sentence in English, with the control showing Spanish as the chosen option. That is worse than a rough translation: a reader who cannot see any Spanish and can see Spanish selected has no way to tell a scope from a fault, and the reasonable conclusion is that the site is broken. The control now offers Spanish only where Spanish exists. On every other page it is English only, and one line in the place the Spanish option used to sit says that the assessment is available in Spanish and links straight to it, in Spanish, with the language carried along so the assessment opens already translated. The stored preference is untouched by any of this: somebody who chose Spanish still has Spanish waiting on the assessment.

Spanish is switched on for the Lowcountry-configured deployment, for vetting. v0.69.0 introduced a per-deployment hold on Spanish for the assessment, and Lowcountry was set to English only, which meant no page anywhere on that deployment honoured a choice of Spanish. The community has asked for the Spanish so that they can review it themselves, and it is on. The assessment intro still says on the screen, in Spanish, that the translation is a draft nobody outside has reviewed and that English can be asked for at any time. The hold itself is unchanged and still available to any deployment that wants it, and where it is set the switch still says why, in both languages.

Proof. The full gate is green: type check, the automated suite, translation parity, the em-dash, wording and reading gates, contrast, and coherence across all eight pages with the header control still byte-identical on every one of them, because the change is made at runtime from the route rather than in the markup. A browser gate now opens every page, fails if a Spanish option is offered where there is no Spanish, follows the link and fails unless the assessment arrives already in Spanish, and checks the Lowcountry build renders it.

2026-09-04 · v0.69.0 · Pilot Candidate 1 · instrument 0.32.0-pilot · what an external review of the review packet found, and what was done about it

This release is the work of an external AI review of the v0.68 review packet, and of the verification that followed it. Every finding below was checked against the running code before it was accepted, and several were narrower or wider than the review said. The two rounds are kept apart here because they are different kinds of problem: the first is about what HEAT tells a person, the second about what HEAT is allowed to do at all. This version is named Pilot Candidate 1, and the naming is the point: it may still change until a pilot agreement is signed, and after that it may not. The instrument is 0.32.0-pilot and the question cap is 37.

Round A, safety and legal. The Category 4 leak onto paper was closed in every view, and the downloadable record's safety fields became opt in. A stay in a hospital or a jail of fewer than 90 days, entered from the street or a shelter, now counts toward the twelve months as 24 CFR 578.3 says it does, with the arithmetic shown. A small disagreement between a date and an estimate can no longer produce a definite no: where the difference is the determination, the page says the two answers have to be reconciled. The HUD category result now says when it cannot be determined, and a declined answer is never read as a no. Category 4 requires all three statutory elements rather than one, it reads "possible, needs confidential verification", and a new question on the safety path asks about other housing resources. The disabling-condition element is explicit in the labels and in the documentation checklist. The record carries a machine-readable flag saying a HEAT result is never a reason to give somebody less. The proxy privacy hint was added. And the simulation's full confusion matrix was published, including the column that had been hidden inside a two-way summary.

Round B, and the first finding is the largest: proxy mode is preparation only. Answering on behalf of somebody who is not in the room cannot produce a determination under HUD, VAWA and HMIS constraints, so it no longer does. A proxy session collects, lists the documentation a file will need, names what is still open, and determines nothing. It stops on any safety answer other than a clear no, with one neutral sentence and no details. Each deployment can switch the mode off entirely, and the first deployment that will meet real households has. The policy, with its citations, is docs/PROXY_MODE_POLICY.md.

Nothing third-party loads on the assessment page any more, and that was tested in a browser rather than asserted. The page said "nothing is sent anywhere" beside a page-count script, a page-speed script and an error reporter belonging to three other companies. None of them could see an answer and the sentence was still one a reader would feel misled by. All three are off on that route, a gate walks a whole session in every mode and fails the release on a single request to anywhere else, and the intro now says exactly what is left.

Two more from round B, shipped with it. In a session somebody is doing for themselves, opening the case manager's view now takes a confirmation: the page belongs to the person until a member of staff says out loud that they are staff. And the statement that HEAT is not approved or endorsed by HUD is on every page and on every result, compared byte for byte across all eight pages by the coherence gate.

A deployment will not build without the community's written standards and an appeals contact. Every result page tells a person that the order is set by the community's adopted written standards and that there is somewhere to ask for a review of the result. Both sentences were unconditional prose, and HEAT would happily build a community deployment whose configuration named neither, which is a tool asserting a governance structure exists because its own copy says so. The build tool now refuses. It does not ask for the documents, because HEAT does not host or interpret a community's written standards and must not look as though it does; it asks for a reference it could not have invented, and for a contact. The named way out is a deployment declaring itself to be scenario testing, in which case it builds and prints a block listing exactly what has to exist first. The Lowcountry configuration is set that way today, and prints that block on every build.

The prioritization facts card and the outstanding-document count no longer print by default. Neither is a safety disclosure, which is why both survived the round that closed the Category 4 leak. They are the whole prioritization picture of one household and a statement about their paperwork, printed by default onto a sheet that is handed across a desk and left on it. Both are held off paper until the worker ticks the same box that governs the download, which is now labelled to say it covers both. Two boxes with near-identical labels is how somebody ticks one and believes they ticked both. The print gate measures it in both states.

The accessibility document is a status report, not a conformance report. Nothing in it changed: every criterion, every mark and every remark is as it was. The name changed, because "conformance report" is heard by a procurement officer as a finished assessment, and no person who uses a screen reader has ever tested HEAT. What has been verified instead is stated at the head of the document and on the Governance page: an automated rule engine over every page, every sample and a complete assessment walk in four colour palettes with no violations; every contrast ratio computed numerically; a screen-reader semantics suite reading the accessibility tree, the focus and the live regions after every state change in both languages; keyboard-only operation; reflow at 320 pixels and text at 200%; and the accessibility tree of every screen read by hand. It is docs/ACCESSIBILITY_STATUS_REPORT.md. It reverts to a conformance claim when people who use assistive technology every day have tested it, which is improvement-register item IR-43.

Spanish is held for participants, per deployment, until an independent review. HEAT's Spanish is a draft: written to the register's voice rules, gated for parity and for person-first Spanish, and never put in front of a certified reviewer or a Spanish-speaking reader in a cognitive test. That is honest for a page somebody reads about the tool and not for the instrument itself, where a mistranslated question changes what a person answers. Each deployment now says which languages the assessment is offered in. Where Spanish is held, only the assessment narrows: the informational pages keep both languages everywhere, because a Spanish speaker deciding whether to trust this tool should be able to read what it claims and what it refuses to do. The switch is not hidden. It says why, in English and in Spanish. Where Spanish is offered, the assessment intro now says on the screen that the translation is a draft nobody outside has reviewed, which is what the translation file has said in its own status field since it shipped.

Pilot Candidate 1, and what that name promises. The version is v0.69.0 and the label is beside it in the footer of all eight pages and in the deployment checker's output. A candidate may still change. At the moment a pilot agreement is signed, the version running then is recorded in the agreement and frozen, and only a documented emergency may move it: a defect producing a wrong determination, a confidentiality or safety defect, or a change required by law or by HUD. An emergency change costs five things, all five required before it ships: an impact analysis written first, a version bump rather than a silent patch, a review of every case the change could have moved, a crosswalk of the old rule beside the new one, and a separate analysis stratum. Results from before and after a change are not pooled unless somebody states in writing why the change could not have moved the measure. The policy is docs/RELEASE_POLICY.md.

Proof. 768 automated checks pass. Type check clean, reading gates green in all three English tiers and in Spanish, voice gate green, wording gate green, em-dash gate green, translation parity at 0 deferred, contrast green, coherence green across all eight pages with the new label compared byte for byte, accessibility gate green, alignment audit green, telemetry gate green, and the print-safety gate green in both states of the opt-in box. The deployment gate was watched refusing, warning and passing before it was trusted.

2026-09-04 · v0.68.0 · instrument 0.32.0-pilot · eight findings from an external review verification, fixed

A read-only verification of v0.68.0 established eight defects. All eight are fixed here. Two of them are legal errors in how HEAT reads a federal regulation, one is a confidentiality leak onto paper, and one is a reporting shape that made the other numbers read better than they were.

The printout was disclosing that somebody is fleeing violence, in both views. HEAT stores nothing, so the printed page is the only artifact a session leaves behind, and it is the artifact a person somebody is fleeing can find in a bag or on a desk. The participant page was fixed for this on 2026-09-02 and the fix was half a fix twice over. The worker page was left printing every safety line on the reasoning that a case record is not a carried document, which is a claim about a filing cabinet and not about a sheet of paper. And the Category 4 verdict itself was never suppressed at all, in either view, because the class that hides a section from print was put on the drawer's body while the verdict chip sits on the drawer's summary: a worker's printout still said "Which homeless definition applies: Category 4 (safety-related)". The rule now has no view in it. Nothing that reveals a disclosure prints anywhere. Everything is still on the screen, where the person and the worker read it.

And the downloadable record was carrying the same thing further. The JSON is the one thing on the page that travels: into a file, an email, an import, a shared drive. It carried the Category 4 determination, the safety reasoning and the survivor's advocate preference with no decision made about it. The safety fields are now opt in, with a checkbox labelled in plain words, off by default. Off means removed rather than blanked, and the file says what was left out and how to get it. A worker who has a reason ticks the box and gets everything.

A new blocking gate measures both, because a rule nobody measures drifts. assurance/print-safety.mjs walks a real session as a person who disclosed violence, opens every drawer on the results page, switches the browser into print media, and fails the release if a single one of eleven forbidden terms survives into either view. It also downloads the record twice, with the box unticked and ticked, and checks both. It was watched failing on the exact defect the verification named before it was watched passing, which is the only honest way to turn a gate on.

A federal rule about short hospital and jail stays was half implemented, and the missing half cost people the definition. 24 CFR 578.3 says a stay in a facility of fewer than 90 days, entered from the street or a shelter, does not break a period of homelessness AND that the time in it counts toward the twelve months. HEAT did the first and never the second, for two reasons: the question asked whether the stay was under 90 days and carried no length, so there was never a number to add; and the rule that rules somebody out on a short history ran before the facility rule, so the rule that says a short stay counts could not fire in the one situation it was written for. The question now asks how long, in four bands a person in the middle of a stay can actually answer, and each band credits its lower bound so an estimate can only ever round against the pathway. The verification's own example, eleven months outside plus a sixty-day hospital stay from the street, now reaches twelve months and meets. Question count unchanged: it is the same question with answers a rule can count.

A tolerance rule was manufacturing definite "no" answers. When the date somebody gives and the months they estimate disagree by a little, HEAT records the conflict and proceeds on the lower of the two. That is right when both numbers point the same way. It was wrong when the lower one fails the twelve-month test and the higher one passes it, because then the difference IS the determination, and collapsing it turned "we do not know which of these is right" into "no". Sixteen sessions per ten thousand in one simulated population and fifty in the other were being told they do not meet a definition on a rounding rule's arithmetic. They are now told the two answers have to be reconciled, which is the truth.

Declining to answer the safety question was being recorded as an absence of danger. The HUD category had one word, "does not meet a HUD homeless category right now", for two different situations: the inputs are in and no paragraph applies, and an input this category depends on was declined, not known, or never asked. The second is not a determination. Every category result now carries a status, and a missing input yields "unable to determine" with the missing input named on the page.

Category 4 has three requirements and HEAT was reading one of them while printing a sentence that asserted all three. The regulation asks whether somebody is fleeing, AND whether they have no other residence, AND whether they lack the money or the people to get into other permanent housing. HEAT read the first and asserted the second and third. The second is now read from a question the assessment already asks, and the third is one new question on the safety path, asked plainly and never verified. Where an element is missing the answer is "unable to determine", naming the element, never Category 4 on something nobody answered. The result reads "Possible Category 4 (safety-related): needs confidential verification". Nothing a survivor receives narrows: the same-day safety routing, the choice of an advocate and every support key on the safety answer alone and never on the category.

"Meets, based on entered information" was claiming more than the questions establish. HEAT asks one non-diagnostic yes or no about a long-lasting condition, because federal guidance forbids requiring a diagnosis at assessment, and that question is not changing. What was wrong is that a yes to it produced a label that reads as a finding that all three parts of the definition were established, when what was established is the duration test plus a self-report. The label now says so: "Meets the duration test; disabling condition reported, documentation needed". The worker card is headed "Chronic homelessness documentation screen (not an eligibility or prioritization decision)". The documentation card lists the four things the file has to show. And the record carries, in the data and in a sentence on the page, that a missing, declined or negative HEAT result must not reduce access, referral, eligibility review, or prioritization.

Proxy mode had no privacy guidance at all. The instruction to ask a sensitive question privately, never within earshot, was shown only when the person is in the room. The reasoning does not hold: the subject is absent, everybody else is not, and a helper reading a question about somebody's safety aloud in a shared office exposes the person who is not there to object. Proxy mode now carries its own version of the hint.

The simulation was reporting four outcomes as two. "Meets" was a positive and everything else was a negative, which put a provisional yes in the same column as a no, and put the tool declining to answer there too. The full confusion matrix is now published, with the provisional row as its own column, plus a table of why the tool refused keyed to the rule that ended the session, plus outcomes by living situation. Both populations were rerun. Sensitivity 28.15 to 29.53 percent and 61.96 to 62.37 percent, false positives 0 and specificity 100 percent before and after, anomalies 0.

Proof. 703 automated checks pass, including a new suite for the institutional-months arithmetic and a rewritten enumeration of the whole HUD-category input space, 69,984 inputs, proving that no session moves INTO Category 4 and that no clean "not homeless" rests on an answer nobody gave. The answer sweep still holds every session anybody could already have had to its committed digest: five moved, each named with both digests and a reason, and one answer was retired and named as retired. Reading gates green in all three English tiers and in Spanish, voice gate green, wording gate green, em-dash gate green, translation parity at 0 deferred, contrast green, coherence green, accessibility gate green, alignment audit green, and the new print-safety gate green.

2026-09-03 · v0.68.0 · instrument 0.31.0-pilot · what the assessment sounds like when you cannot see it

Owner ruling. "Make sure HEAT is ADA and screen reader compliant." Twenty-three problems were found and all twenty-three are fixed. None of them was reported by anyone, and none of them was visible to the accessibility scanner that has been failing the build since 2026-09-02: it passed every one of them, with the strictest rule sets turned on, because they are all about what happens BETWEEN screens rather than about the markup of any one screen.

Every screen change now says where you are. Answering a question redraws the page, and HEAT already moved the cursor to the new question so a screen reader would read it. What it never carried was everything drawn above that question: "Question 14 of about 31, housing history", and the line telling a worker to read the question aloud. Both are on the screen; neither was ever spoken, on any of the thirty-odd screens in a session. There is now a spoken status line on every transition, in the reader's own language, saying the position and the phase and not repeating the question the cursor already reads. The safety stop, the diversion offer, the review screen and the results page each say what just happened, including that nothing was lost.

Help text that was drawn and never read. A screen reader announces a question's wording with each answer choice, because the wording is the group's label. It does not announce a paragraph sitting beside that label. So the help under twenty-odd questions, the "ask this privately, never within earshot" instruction on every sensitive item, and the range hints ("For example, 3. Enter 0 for none.") were on the screen and silent for anyone not reading it with their eyes. Every hint on a question screen is now named as the group's description, by a sweep that runs after the screen is built, so a hint added later is covered without anyone having to remember.

The feedback form, which is also the accessibility complaint route. Three defects, in the one place a person would go to report the others. Four controls shared a single wrapping label, which is invalid and had two consequences: the message box announced the entire paragraph around it as its name, and the "Name to use" field had no name at all, so a screen reader called it an edit box and nothing more. The form's only error message ("Choose what kind of feedback it is first") was not a live region and took no focus, so pressing Send with nothing chosen was completely silent. And the dialog declared itself modal while letting the Tab key walk straight out of it into the page behind. All three are fixed, and the file's header comment, which had claimed a focus trap since August, is now true.

Spanish, and the sentence about dialling 911. Choosing Spanish marks the whole document Spanish, and the page furniture shared by all eight pages is English: the emergency banner, the navigation, the footer. A Spanish voice reading English words is not a fallback, it is noise, and the worst-affected sentence was "If you are in danger right now, dial 911." Those blocks are now marked as English while the rest of the page is Spanish, so each is pronounced as what it is. The language switch also says out loud what it did and what it did not do, which matters most on the reference pages, where pressing it changes nothing a reader can perceive.

Six smaller things, each of which made something unusable or unintelligible. The glossary panel's source link could be seen and could not be reached: the panel is attached to the end of the page so it can be positioned anywhere, which put its link outside the tab order, and any keystroke that moved focus closed it first. Tab now steps into the panel and back out. The arrows in "back" links and in "3 comments" were being read aloud as "left pointing arrow" and "right arrow"; they are decoration and are now hidden from the reader while the words stay. The four sample screens carried two top-level headings, so the outline said the sample banner and the assessment card were two separate documents. The public register skipped a heading level on every proposal. The four sample buttons and the two view buttons were six unrelated toggles to anyone who could not see that each set sits in one control; each set is now a named group. And four kinds of link or control were under the 24 pixel minimum the 2022 revision of the standard sets: the footer links on all eight pages, the register's comment links, the consent tick in the feedback form, and one footer link on the questions page.

Four more, found while writing the conformance report rather than while writing code. The "Leave quickly" button's visible words appeared nowhere in the name a voice-control user would be matching against, so a person could see the button, say its name, and have nothing happen. The feedback dialog closed itself 1.8 seconds after a successful send, which is a time limit on reading a confirmation and is not long enough to hear one; it now stays, with the cursor on the message, until the person closes it. The keystroke that leaves the site (Escape twice inside a second) counted Escapes that were dismissing a definition or a dialog, which are two of the commonest keystrokes on this site and are also how a screen reader leaves forms mode; an Escape that had something to close now resets the count instead of advancing it, and the shortcut is named in the button rather than only in its tooltip. And links that open a new tab now say so.

The gate now checks the thing that was broken. A new screen-reader semantics suite runs inside the accessibility gate, in both languages, on every change. After each screen change it asserts that focus landed on the new heading and that something was announced. It asserts that every group of choices has a name, that every hint is reachable as its group's description, that no page has two top-level headings or skips a heading level, that every page title is distinct, that no decorative glyph is read aloud, that no reference points at an element that is not there, that the modal dialog holds the Tab key and hands focus back, that the glossary panel's link is reachable, that the English furniture is marked English on a Spanish page, and that nothing scrolls sideways with text at 200 percent. Every one of those rules was watched to fail before it was trusted: the fixes were reverted one at a time and the gate refused the build each time. The rule engine also now runs its best-practice set alongside the standard, which is what catches two landmarks of the same kind sharing one name, and it was turned on the day it was already green.

A conformance report anyone can read, including the parts that are not finished. docs/ACCESSIBILITY_CONFORMANCE_REPORT.md is a full accessibility conformance report in the VPAT 2.5 structure: every WCAG 2.0 and 2.1 Level A and AA criterion, plus the Level AA criteria added in 2.2, each marked Supports, Partially Supports, Does Not Support or Not Applicable, each with a remark naming where in HEAT it is met and how it was tested, and a Section 508 functional-performance and chapter 5 and 6 mapping. Of the 50 Level A and AA criteria: 41 Supports, 1 Partially Supports, 8 Not Applicable, and nothing that does not support. The one partial is not a bug, it is a decision: two optional "name to use" fields turn browser autofill off on purpose, so a browser cannot put a legal name into a public comment, and that is the one place HEAT's privacy position and an AA criterion pull against each other. It is filed as IR-45 with three candidates rather than settled quietly. The Governance page carries the public version of the same thing: the target, how it is tested, and the limits.

The limit that matters most, and it has not moved. Nobody has ever opened HEAT with NVDA, JAWS or VoiceOver. Everything above is the accessibility tree read by a browser, which can tell you a thing is announceable and can never tell you the announcement makes sense when heard. That is the difference between "no machine-detectable violation" and "usable", and it is why the report marks a number of criteria Partially Supports where a scanner would have called them met. Testing with people who use assistive technology every day is IR-43, it is still open, and it is recommended before any pilot with real people.

Proof. 647 automated checks pass. The accessibility gate is green over eight pages, four sample results and a full assessment walk in four palettes, with the best-practice rules on, plus the screen-reader semantics suite in both languages, plus the horizontal-scroll measurements at 320 pixels. Reading gates green in all three English tiers and in Spanish, voice gate green, wording gate and its self-test green, em-dash gate green, translation parity at 0 deferred, contrast green at 76 measured ratios, coherence green with the page furniture still byte-identical across all eight pages, and the alignment audit green over 13 views. No determination can move: nothing in this release touches a question, an option, a rule or a threshold, and the frozen corpus of client-facing English is unchanged except for the six new spoken status sentences, which are listed in the baseline file.

2026-09-03 · v0.67.0 · instrument 0.31.0-pilot · Spanish for everything a person being assessed reads

The assessment is now available in Spanish, from the language switch in the page header. Last release shipped the machinery with none of the words in it, and said so. This one fills it: every question, every help text, every range hint and every answer label, in all three ways the assessment can be given (answering for yourself, answering with someone who is in the room, answering for someone who is not), and in both of the variants that reword a question for a person under 18 and for a person who has a place tonight. The page written to the person at the end is in Spanish too, including the copy that prints, and so are the tap-to-read definitions that fire on the screens a person reads. 261 instrument strings, 240 interface strings, 18 glossary definitions. Nothing is left half translated: the list of strings knowingly still in English is empty, and the build refuses to let that list disagree with the files in either direction.

What it covers, and what it does not. Spanish covers everything a person being assessed reads. It does not cover the case manager's half of a result, the governance and reference pages, or the Evidence Register, and that line is stated on the Governance page rather than left for somebody to discover halfway through. The English is untouched: the frozen corpus of client-facing English sentences is byte-identical to what it was before this work started, which the suite re-checks on every run rather than taking on trust.

It passes the same gates as the English, in their Spanish forms. Reading level is measured with Fernandez-Huerta, the Spanish adaptation of Flesch, because grade level does not exist in Spanish and running an English formula on Spanish would fail correct plain Spanish while proving nothing about the reader. The floor is 60, the bottom of "normal", which is where the English tier sits; no string averages more than 22 words a sentence. Voice is checked the same way it is in English, over the Spanish deck: usted for a person answering about themselves, third person for a person who is not in the room, and no first or second person anywhere in the proxy path. Gender is avoided by construction, with "la persona" and "quien responde", never with a typographic device like an at sign or an x, because a screen reader cannot pronounce one and a person with low literacy meets a token that is not a word. The person-first wording gate runs 15 Spanish rules over every Spanish string: "persona sin hogar" and "persona en situacion de calle" rather than "indigente", "persona con discapacidad" rather than an adjective about a person, "consumo de sustancias" rather than "abuso".

It is a draft, and it says so. This is professional-quality plain Spanish written to the same standards as the English, and it has not been reviewed by a qualified translator, and it has not been through cognitive testing with Spanish-speaking readers the way the English was. Both files carry status: "draft" and the Governance page says draft pending certified review in the language access section. Two things are true at once and both are published: an unreviewed translation is better than no translation for a person standing at an access point tonight, and it is not a certified one, which is what a community needs before it uses this instead of an interpreter. Certification will be recorded in the Evidence Register when it happens.

If a word is wrong, this is how to say so. A translation is wrong in ways only its readers can see. The route is the one that already exists for a wrong result: the feedback button at the foot of the results page, which reads "Diganos que este resultado esta mal" in Spanish. It needs no account and asks for no name, it reaches the person who maintains HEAT, and it never counts against the person who sent it or changes their options. A correction ships as a new version of the string and appears here.

What walking it in Spanish found that reading the diff did not. The list of translatable client sentences grew from 202 to 240 during this work, and every addition came from opening a screen in Spanish and seeing an English sentence on it. Two causes. Short fragments in the middle of a sentence ("staying outside", "in an emergency shelter", "in a facility" and four more) sat under the length floor the coverage gate uses to tell prose from a class name, so the participant page opened with a Spanish sentence containing an English clause. And the gate finds client copy by looking for the branches that render only to the person, so anything rendered on a page BOTH views share was invisible to it: the quick-exit safety button, the "was this question clear" line under every question, the emergency section at the top of a result, and every action button at the foot of the page a person prints, Print itself included. All of it is translated now, and none of the English moved: putting a sentence behind the accessor does not change the sentence, and the frozen English corpus is still identical to the byte.

Three English surfaces a Spanish reader can still meet, found by walking the assessment in Spanish and named here rather than left to be discovered. The shared page furniture at the top of every page (the header, the navigation and the emergency banner) is byte-identical across all eight pages by design and checked as such on every build, so putting it in Spanish is a change to how the furniture is built rather than a change to a word, and it is not in this release. The message the assessment shows when two answers cannot both be true ("this does not fit an earlier answer") is written by the scoring engine, which is deliberately not language aware. The four sample people on the demonstration page keep their English names, because each name is also the tab label and the identifier for that example; their descriptions, which are the part anyone reads, are in Spanish. The first two are now marked as English on their own element, so a screen reader does not read an English sentence with Spanish pronunciation, and all three are recorded on the improvement register with the decision each one needs.

Proof. 647 automated checks pass. Translation parity reports 0 strings deferred, on both tables, which is the state the files are now allowed to claim. Reading gates green in all three English tiers and in Spanish, voice gate green in both languages, wording gate and its self-test green over 471 Spanish surfaces, em-dash gate green in both languages, coherence green, contrast green, accessibility gate green.

2026-09-02 · v0.66.0 · instrument 0.31.0-pilot · five proposals answered in public, and the compliance crosswalk stops being private

Five open proposals on the public register were decided, and none of them was decided quietly. Two are adopted, one is answered without a change, and two are declined. Every one carries a written reason on the register itself, and the two adoptions ship as new item versions with an Evidence Register entry naming where the idea came from. Credit where the flags came from: the review group that read the whole instrument in August, Elisa on the reachable-support proposal, and a practitioner reviewer on the emergency-room anchor.

Adopted: smoke counts, and it is help text rather than a new question. The heat-illness question asks whether medical care was ever needed because there was nowhere to get out of the heat. A review group member asked for smoke to be covered as well. Bundling smoke into the heat item is still refused, and for the reason first published: the heat item rests on heat-death surveillance, a smoke answer cannot cite that evidence, and one yes meaning two things with two evidence bases is exactly what makes an item unauditable. But the item does not ask about heat; it asks about an exposure there was nowhere to escape. A wildfire smoke season is the same exposure, in the same people, for the same reason. Someone who ended up in care during a smoke event, reading a question that names heat stroke and dehydration, answers no. That is a comprehension gap, and comprehension gaps are closed in words. The help now says wildfire smoke or heavy smoke counts as well, where being in it meant medical care was needed, in every voice the question is asked in. No new question, no rule change, no threshold moved. A standalone smoke item with its own evidence is still the right home for smoke as a construct, and is still not built.

Adopted as a clarify: the safe place has to be one you could actually get to. A reviewer with twenty-five years of asking the diversion question said people answer it with family or friends who live out of state. The proposal was to require the place to be local, and that half is declined: "local" means different things in a city and a rural county, nothing in the instrument holds what a community counts as reachable, and a bus ticket to a sister three states away is a real diversion outcome that a narrowed question would teach assessors not to ask about. The observation underneath it is right, though. The question already ends with "if you could get there", and people answer the first half of a sentence. So the help now says it outright, in every voice: it has to be a place the person could get to tonight. The gate is unchanged. A no is still one of the four conditions that raise the support-planning band to moderate, a yes still opens the diversion offer, and the same answers produce the same result as before. What is left for the register, if the group wants more than words, is a reachability threshold a community sets rather than the word "local", which would be a rule change and needs its own justification package.

Answered without a change: the emergency-room anchor stays, and here is what it costs. A practitioner reviewer reported that few of the people she works with will go to an emergency room for a weather-related medical problem unless forced, because they expect to be accused of drug seeking. Checked before it was filed: the heat and cold questions ask whether medical care was ever needed and never mention an emergency room, so the flag lands on the crisis-contacts question instead of the one it was left on. There the objection is exactly right, and it is not new. The construct is crisis-system use; the question counts one door of that system, and ambulance transports, psychiatric crisis centres, sobering and detox units, mobile crisis contacts and street medicine are not counted. The anchor stays anyway, for one reason: the threshold of four was derived against emergency-room counts, so widening what is counted without re-deriving the threshold would quietly raise everyone's band. That is a rule change wearing a wording change's clothes. The gap is recorded in the improvement register with the re-derivation and the monotonicity proof it would need, and the pilot is where the distribution to re-derive it comes from.

Declined, with the reasons rather than a shrug. Widening the suicide-attempt question from 12 months to 3 years is declined: 12 months is a clinical recency window and HUD's three years is an eligibility window, and making them match would look tidy and be a category error. Risk is weighted toward the months right after an attempt, so three years dilutes the signal while asking more people to disclose the worst thing that has happened to them, on the most sensitive question in the instrument, for very little planning value. Adding a seven-year eviction court history is declined too: that is tenant-screening data, and evictions and poor credit are named in the list of factors CPD-17-01 II.B.4 forbids screening people out on. Assembling that record inside a coordinated entry assessment, even with no rule reading it, builds the screening the rule exists to prevent and puts it in front of the workers making referrals. The active-case question stays, because it triggers an urgent legal referral, which is help rather than a filter, and unmet documentation needs are already collected where they are actionable.

The disparity promise, and who can actually keep it. HEAT commits to watching for disparities and collects no race, ethnicity or gender to watch them with. Governance now says both halves. The monitoring belongs to the community, using the HMIS data it already holds alongside the results HEAT produced, and a community should plan that analysis in writing before it starts. What HEAT can own is a determination that does not depend on those characteristics, and that is measured rather than asserted: in the simulation harness, each synthetic person carries a race tag and a gender tag no question asks about, the tag is flipped, and the whole assessment is run again from the same seed. The result has to come back identical, byte for byte. It was re-run for this release: 3,000 paired runs per tag, on two populations, and no differences at all.

An accessibility route with a clock on it. The accessibility statement said what the target is and that a barrier is a defect, and named no route and no time, which is half of what Section 508 and effective-communication practice expect. There is now a labelled button on the governance page, in the words somebody looking for it would search for, opening the same feedback tool as every other page: no email account needed, no name asked for, and it reaches the person who maintains HEAT directly. Every accommodation request and every reported barrier gets a written answer within 10 business days. That is a commitment, which is why it is stated in the place it can be held against.

The compliance crosswalk is now a page anyone can read. It has existed for months, in the repository, where no reviewer could open it: every requirement of HUD Notice CPD-17-01, plus the Fair Housing Act, Title VI, Section 504, the ADA, the Equal Access Rule, VAWA and Section 508, mapped to what HEAT does about each one and where to check it. A tool that asks a community to trust its governance and keeps its own reading of the regulation private is asking for exactly the trust it says nobody should have to extend. So it is published at /crosswalk, with the header it needs: this is HEAT's reading, not a HUD determination, not an approval, not legal advice, and where it differs from the annual funding notice the notice controls.

How the page is kept honest, mechanically. The source document is internal and carries things that are not: revision notes, quotations, links to other internal documents, improvement-register ids, internal shorthand, and a paragraph of open items. So the page is generated rather than copied, and the generator publishes an allowlist of six blocks and nothing else, which means a new internal paragraph cannot leak by being forgotten. On top of that sit a short list of anchored substitutions, each of which must still match or the build stops, and a scan of the finished page for the things that may never be on it. Hand-editing the output accomplishes nothing; the generator runs in the release gate alongside the other two.

One small thing that was showing. An Evidence Register entry can record a suggestion that was reviewed with nothing changed, and the template only knew how to print a verdict, so ten entries had been publishing the literal word "undefined" on the page whose whole job is showing the working. Fixed in the generator, which is the only place it could be fixed.

Proof. 587 automated checks pass, unchanged: two help texts and two item versions moved, and help text is not an input to any engine, so no determination anyone could already have produced can move. The site now carries eight pages and the chrome is byte-identical across all of them, the new one included. Reading gates green in all three tiers, wording gate and its self-test green, em-dash gate green, coherence green, contrast green, and the accessibility gate green over eight pages, four sample results and a full assessment walk in four palettes.

2026-09-02 · v0.65.0 · instrument 0.30.0-pilot · what a government reviewer would look for, checked before anyone had to ask

Owner ruling. "Make sure we are following HUD best practice, person oriented wording, ADA, anything that might be looked at through a government lens. I would rather fix before they become a problem." Nothing below was reported by anyone. It was found by looking for it.

A survivor's printed page no longer says what a survivor is fleeing. The page written to the person is one we tell them to keep and carry, and it is the only thing HEAT creates that can be found by somebody else. When the safety questions were answered yes, that printed page carried a domestic violence referral and, if the person had asked for a specialist advocate, the fact that they had asked. Both now stay on the screen, where the person reads them, and neither prints. Nothing is withheld from the person; the printed copy still routes them to help. The safety-related HUD category already worked this way, and now the whole box does.

A page that says which rules HEAT holds itself to. The protected characteristics were already absent from every question, the reading gates and colour gates were already running, and no page said any of it. Governance now carries nondiscrimination and equal access, survivor confidentiality, language access, accessibility, what this site measures, and the rights a person has during an assessment, each against the rule it is written for: the Fair Housing Act, Title VI, Section 504, the ADA, HUD's Equal Access Rule, VAWA 2013 and 2022, Executive Order 13166, and Notice CPD-17-01. "We do the right thing and never wrote it down" looks, from the outside, exactly like not doing it.

HEAT is only in English, and now says so. Under Title VI the obligation to provide meaningful access to people with limited English belongs to the agency receiving the funds. Until translations exist, a community adopting HEAT carries the interpretation duty and should plan for it in writing before it starts. That sentence is now on the governance page and on the landing page, in the person's own words on the second one. A Spanish translation is queued.

Accessibility stopped being a claim and became a gate. The weekly scan looked at the deployed site once, in one colour palette, and never answered a question, so it never saw the assessment. A new scan runs on every change, before anything ships: seven pages, four sample results and a complete walk through the assessment, in all four palettes, plus a horizontal-scroll measurement at a 320 pixel screen. It found 165 problems on the first run. There are now zero, and the build fails on one. Every colour in the design is also measured numerically against every surface it lands on, which is how a light-mode amber that had been declared "out of scope" turned out to be at 1.89 to 1 against white, on the zone mark on the page written to the person.

What was actually broken, named. A list of answers on the review screen used HTML that puts a button where only a question and an answer are allowed. A glossary term inside a drawer heading was a button inside a button, so activating the word also opened the drawer. Three cyan labels were below the contrast line in light mode. A back link was 17 pixels tall. The register page scrolled sideways by 34 pixels on a small phone, and the Evidence Register by 7. Pressing Start without choosing who is answering moved nothing and announced nothing to a screen reader. Every one of those is fixed.

One word, decided and enforced. HEAT calls the human being the person, everywhere a human reads, and participant where HUD's own notice means that. Client stays as a field name in HMIS and as an identifier in code, and appears in no sentence. Seven strings changed. The convention is now a build gate with fifteen rules, covering every served page, every script that writes copy, and the instrument itself, with HUD's defined terms exempted by rule rather than by hand: "the homeless definition" is a citation, "victim service provider" is a program category, and naming the factors CPD-17-01 forbids screening on is the point of naming them. The gate carries its own self-test.

What was not fixed, and why. Six decisions were written up rather than made, because each one is the owner's: HEAT collects no gender or race data, which is the strongest privacy position available and also means it cannot perform the disparity analysis it promises; there is no way to record that an interpreter took part; the accessibility statement names no contact and no response time; a person cannot ask for a change in how the assessment is given; nobody has ever opened HEAT with a screen reader; and the deployed site still carries no commit identifier. They are in the improvement register as IR-39 to IR-44, each with a recommended default.

Proof. 587 tests, the reading gates in all three tiers, the em-dash gate, the coherence gate, the new wording gate and its self-test, 76 measured colour ratios across four palettes, 82 accessibility scans and 11 reflow measurements, all green. The compliance crosswalk was brought current and gained a second table for the rules it never covered.

2026-09-02 · v0.64.0 · instrument 0.30.0-pilot · three true answers that were missing, and a rule that stopped voiding a whole record over two months

Owner ruling. "Fix anything with obvious best practice solutions, and make sure the regular assessment and the Lowcountry one are aligned." Four findings from the last study had an answer in the regulation itself rather than in anyone's judgment, so they were built. The ones that still need a judgment call are still filed, with the reason.

Three situations a person could be in and could not say. "Where did you stay last night?" offered six answers, and a person in a transitional housing program, in a safe haven, or in a motel room a program or a charity paid for had to pick "somewhere else". 575 sessions per 10,000 locally and 481 nationally land on that choice, and 42.4 percent of them come back with no HUD category at all, against about 6 percent for everyone else: a sevenfold pile-up of "could not work it out" into one answer. All three situations are named in the regulation. HUD's homeless definition lists transitional housing and program-paid motels inside the shelter paragraph, and the chronic homelessness definition names the safe haven directly. So all three are on the screen now, and each one carries the meaning its own paragraph gives it. A safe haven and a program-paid motel count exactly as an emergency shelter counts, for the category and for the chronic clock alike. Transitional housing is HUD homeless, and time in it does not count toward chronic homelessness and does not continue an earlier street or shelter period, so the tool says both of those things out loud on the same page rather than averaging them into one wrong answer. A room a person paid for themselves is not the motel answer, and the label and the help both say who has to have paid. Every session anyone could already have had is unchanged, to the byte.

A two-month difference stopped erasing a whole determination. Two questions ask about the same three years: when this period began, and how many months in all. When the first implied more than the second, the tool refused to determine anything, which is right when the two answers really disagree and expensive when they do not. 132 people per 10,000 locally and 178 nationally who were chronically homeless on a complete record, every question answered, came back with nothing at all for that reason and no other. In most of them the gap was two or three months. In others the first figure was 36, which is not a claim about a length at all: it is the edge of the three-year window. So there is now a tolerance band, written down in the rules document before any pilot data exists: a gap of three months or less, or a saturated window where the person's own estimate already clears twelve months, is recorded as an answers conflict and the determination goes ahead on the lower of the two numbers, which is always the person's own. Anything larger still stops everything, exactly as before. Nothing is silently corrected: the conflict is still on the record and still on the page. Three months is not a round number chosen for effect; it is what the questions' own precision adds up to, and the reasoning is in the rules document.

Being 70 and in a hospital bed no longer hides that you are 70 and homeless. The rule that raises the support planning level for people 60 and older while homeless could only see two answers, outside and emergency shelter. Someone HUD counts as literally homeless through a facility stay of under 90 days entered from the street was outside it: 126 sessions per 10,000 locally and 58 nationally were Category 1, 60 or older, and triggered no age rule. The rule now reads the same definition of literally homeless that the category engine uses, so it reaches everyone inside that definition and nobody outside it. The exposure rules were deliberately not widened with it: their evidence is about people sleeping outside, and a facility record only says "street or shelter" before the stay, so it cannot establish which. That half stays filed rather than guessed.

The youth housing conversation no longer starts on a birthday. Transitional housing was raised for discussion with 18 to 24 year olds and with veteran households, so a 17 year old with identical answers was offered nothing: 721 sessions per 10,000 locally and 47 nationally. HUD's own youth definition is under 25 and names unaccompanied minors, so the cliff sat exactly on the boundary the youth system exists to bridge. The last release filed this rather than build it, because the suite refused it, and the refusal was the finding. Looking at it again, the rule the suite was protecting is that being under 18 routes a person and never decides anything about them, and a conversation to have is not a decision: it adds an option, it removes none, and it narrows nobody's eligibility. So the suite now states that contract in those words instead of a list of ages, and still proves that a minor's record is identical to an adult's with the same facts, down to the byte, once flags, offers and this one conversation are set aside.

Measured, on the same synthetic people, with the same seeds. Chronically homeless people whose determination was voided by the two-question comparison: 132 per 10,000 to 14 locally, 178 to 14 nationally. Chronic "unable to determine" overall: 28.8 percent to 27.0 percent locally, 11.6 percent to 7.2 percent nationally, with sensitivity rising from 26.3 to 28.1 and from 56.5 to 62.0 percent and agreement with the constructed truth from 89.9 to 90.1 and 92.7 to 93.6 percent. Older adults who are literally homeless and reached no age rule: 126 to zero locally, 58 to zero nationally. Minors offered no youth housing conversation: 721 to 13 locally and 47 to 2 nationally, and every one that remains is a session where the age question itself went unanswered, which is a gap in the record and not a rule. For the three new answers, every one of the 244 local and 204 national sessions that answered "somewhere else" and came back with no HUD category resolves to Category 1 the moment the person can say which of the three they are in. How many people are in each is not a number our population files carry, so it is not claimed.

Every deployment now ships together. HEAT runs in more than one place: this site, and a Lowcountry-configured deployment for a pilot community. Deploying them was two separate commands, so the Lowcountry deployment was two releases behind for four days, answering with rules this page said had been replaced. There is now one release command that builds and deploys every deployment from the same commit, refuses to run on an uncommitted change, and refuses to skip the test suite. A second command reads the version off every live deployment and fails if any of them differs from the release, so drift is caught by a check rather than by somebody noticing.

A correction to this page. The v0.62.0 entry below carried 2026-08-28 as its date and was shipped on 2026-09-02. The heading now matches the commit. The entries from v0.57.0 to v0.61.0 and v0.63.0 were checked the same way and were already correct. Only the date was touched; no entry's words were changed.

Proof. The answer sweep grew fourteen cases, all of them answers nobody could give before, each named with the reason it exists. Exactly two existing sessions moved and both are named with their old and new fingerprints: a minor gains the youth conversation, and one saturated-window session gains a determination it should always have had. The chronic rules corpus grew twelve rows, including both edges of the new tolerance band in both directions and five rows proving that no combination of answers can make transitional housing time reach a chronic pathway. A new crosswalk test asks the category engine which situations are literally homeless and requires the age rule to agree, so the two can never drift apart. 587 automated checks pass.

2026-09-02 · v0.63.0 · instrument 0.29.0-pilot · two more determinations that were unreachable for the people they were written for

What was asked. After the last release the owner asked whether there were other groups, or other determinations, where this tool differs from what a record says, and whether there were other gaps. So the simulation was widened: the same twenty thousand synthetic sessions, the same seeds, but now every determination on the page measured separately for veterans, youth, unaccompanied minors, families, parenting youth, people fleeing violence, people leaving a facility, each living situation, older adults, people with and without a disabling condition, people with and without income, all three ways the assessment can be given, and each kind of unanswered question (validation plan, section 13.2).

The first defect: a hospital bed cancelled a person's flight from violence. HUD's fourth homeless category is for people fleeing, or trying to flee, domestic violence. It asks three things, and none of them is where the person slept last night. The tool asked about the facility first and returned an answer before it ever reached the violence question, so someone who had just said they were fleeing, and who was in a hospital, a jail or a treatment bed, was told they do not meet a HUD homeless category, or that it could not be worked out, on the strength of a question about how long they had been in the building. That is fixed. Category 4 is now reached from a facility bed. Category 1 still comes first where it applies, because both mean homeless and Category 1 can be printed without revealing that someone is fleeing, and an explicit "not right now" is still respected.

The second defect: a blank age field cost veterans the veteran system. The military-service question sits in a group asked of adults, and that group opened only on an answered adult age. A person who skipped the age question, or did not know, or declined, was therefore never asked about military service either, and an adult veteran lost the veteran flag, the SSVF, HUD-VASH and HCHV offer, and the veteran option in the discussion set. It is the same mistake as the last release's, in a different place: the gate closed hardest on the person whose record was already thin. The group now closes on exactly one thing, an answered "under 18". A young person is protected by what she said, never by a hole in her record, and the two questions she might now be asked change no result about her.

Measured, on the same synthetic people, with the same seeds. People who said they were fleeing and were told they were not homeless, or that it could not be worked out: 30 per 10,000 to zero locally, 33 to zero nationally. Among people fleeing violence, a Category 4 result rose from 33.8 percent to 39.4 percent locally and 31.3 to 35.5 nationally, and "not homeless" fell from 10.8 percent to 5.6 and from 7.3 to 3.3. Adult veterans never asked the veteran question: 24 to zero locally, 12 to zero nationally. The cost is 0.03 of a question per session locally and 0.04 nationally; the cap is still 36 and the longest real path is still 35. Chronic sensitivity, specificity, false positives, invariance and anomalies are all unchanged.

A third finding was left alone on purpose, and the test suite is why. Transitional housing is raised for discussion with 18 to 24 year olds and with veterans, so a 17 year old with identical answers is offered neither. The change was written and the suite refused it, correctly: this product holds a rule that a person's being under 18 routes them and never decides anything about them, and their whole record is held identical to an adult's apart from flags and offers. A youth-only discussion option breaks that. Two rules this product already holds disagree here, and picking between them is a decision to take in the open rather than in a patch, so it is filed with the numbers attached.

What was checked and is clean. Zero failures across both populations on all of: a person doubled up and about to lose it reaches Category 2; the 90-day facility rule points the right way in both directions; a minor never gets a worse result than an adult with the same facts; veteran routing fires in all three ways the assessment can be given; the support level never falls when a need is added, over nine different additions on three thousand drawn records each; and the way the assessment is administered changes no result at all. The engines also never named a category, or a chronic finding, that the facts did not support.

What is a gap and not a bug. Locally, the chronic determination matches what a complete record would say 97 percent of the time for someone doubled up and 53 percent of the time for someone sleeping outside. The people most likely to be chronically homeless are the people whose determination is most often lost to a missing answer, and the support level follows: it lands lower than a full record would give in 10.8 percent of unsheltered sessions against 3.4 percent of family sessions. No rule change closes that. It is the reason the pilot exists.

Proof. The whole input space of the category engine, 7,776 combinations, is enumerated against a copy of the old rule order, and the set that moved is exactly the fleeing-in-a-facility set, every one of them from a denial or a shrug to Category 4 and nothing in any other direction. For the age gate, a new test builds the instrument as it stood before the change and shows that the sessions whose result moved are exactly the sessions with a missing age, that each gained exactly the two questions, that no determination moved and that the question cap did not rise. Three cases in the 263-session answer sweep moved, and they are named in the test with both their old and new fingerprints rather than quietly regenerated. 529 automated checks pass.

2026-09-02 · v0.62.0 · instrument 0.28.0-pilot · a missing answer no longer hides a second question

What the simulation found. Twenty thousand synthetic sessions were run through the real engines, ten thousand drawn from marginals in our own CoC's aggregate reporting and ten thousand from HUD's national reporting (validation plan, section 13). In the local population a third of the sessions, 33.35 percent, came back saying the chronic homelessness question could not be answered. Buried in that number was something worse than a shrug. 141 people who were chronically homeless by construction were never asked whether they have a long-lasting condition, because the question was locked behind the housing-history answers and they had a housing-history answer missing. The chronic definition rests on two facts: where a person is tonight, and whether they have a disabling condition. A gap in the first was quietly creating a gap in the second, and the record then said two things were unknown when the person had only ever failed to answer one.

The fix. The disability question now opens whenever a housing-history answer is missing for someone who is currently homeless on the record: last night outside, in an emergency shelter, in a hospital, jail or treatment facility, or somewhere else. The wording did not change, the yes-or-no form did not change, and the promise that it never asks what the condition is did not change. Only who gets asked. Asking is never a penalty. The answer can still be skipped or declined, a missing answer never lowers anything, and a decline is still never read as a no.

The review screen and the result now name the missing answer. "Unable to determine" tells a person nothing they can act on, so when the chronic determination is open, both the check-your-answers screen and the worker's result now say which specific answer would settle it, in plain words, with the same two sentences every time: a rough guess is fine, and it can be left blank. The list is not a new rule. It is the intersection of what the chronicity engine says it was reading when it stopped and what the engine says it did not get, so nothing is recomputed on a screen and no determination moves.

Measured, on the same synthetic people, with the same seeds. Truly chronic people never asked about a disabling condition: 141 to 5 locally, 9 to 0 nationally, and zero in both populations among people whose living situation is on the record. Chronic sensitivity 24.1 percent to 26.3 percent locally and 56.2 percent to 56.5 percent nationally. Unable to determine 33.35 percent to 28.76 percent, and 12.31 percent to 11.64 percent. Most of what was recovered is a clean rule-out with a reason rather than a new chronic finding, which is the right shape: a person who answers no is now told no, instead of being left in an open file. Specificity stayed at 100 percent, false positives stayed at zero, no support-need band went down for anyone, invariance violations stayed at zero and anomalies at zero. The cost is 0.19 of a question per session locally and 0.03 nationally; the cap is still 36 and the longest real path is still 35.

The honest remainder. Answers that stay missing still cannot be resolved. This closes the compounding, not the gap. Five people in the local population are still never asked, and every one of them has a missing answer about where they stayed last night: the gate needs that answer on the record, because a gate that opened without it would be open before the question is even reached. The episode start date is not one of the three answers the new branch reads, because the instrument schema forbids a module gate from reading a question that is itself conditional, and that rule is what keeps the pruning proof to a single pass. And 819 truly chronic profiles still return unable to determine, because a number nobody has is still a number nobody has. Finding out what that costs real people, rather than synthetic ones, is what the pilot is for.

Proof. The 263-session answer sweep is byte identical: not one payload anyone could already have produced moved, because its base session answers every duration question above threshold and the old gate was already open in every case. That means the sweep does not cover this change, so the change is justified mechanically instead. A new test builds the instrument as it was before the fix, runs both over every living situation crossed with every present and absent combination of the three history answers, and requires that every session whose result moved is a currently-homeless session with a missing history answer, and that no other session moved in either direction. 512 automated checks pass.

2026-08-28 · v0.61.0 · instrument 0.27.0-pilot · every question read for the ways it could be misunderstood

Owner directive. "Go through each question and think of ways that someone might misinterpret or answer in a way that isn't intended and proactively fix without breaking anything." So all 37 questions, core and module, were read in every voice they are asked in, against the four ways a survey question fails a person: they misread the words, they misremember the period, they cannot tell what counts, or they know the truth and cannot tell which answer holds it. 41 findings. 29 questions changed, all of them in help text or in one stem, with no new answer choices, no change to which questions get asked, and no change to any rule. Six findings that cannot be fixed with words are filed in the improvement register as IR-30 to IR-35 rather than built.

Six questions that can end a determination had no help text at all. That was the pattern the pass found first, and it is the opposite of where explanation was needed. The disabling-condition question decides whether the chronic homelessness pathway continues, and a "no" ends it outright; it now says what kinds of condition count (physical health, mental health, a disability, drinking or drugs), that a condition still counts if it comes and goes, and that it counts even for a person who is managing on their own right now, which is the reading HUD's definition takes and the one a proud answer gets wrong. The facility-stay question, where 90 days or more ends the same pathway, now says the count is for this stay only and that 90 days is about three months. The danger-now question, which routes to emergency response, now anchors itself to today and says a threat about later today counts. The imminent-loss question, which decides a HUD category, now says being asked to leave counts even with nothing in writing. The military-service question, which opens the whole veteran resource system, now says the National Guard and the Reserves count, and so does any kind of discharge. The eviction question now says a landlord's notice is not a court case and that a case already decided still counts.

Two questions were quietly asking for the wrong number. "About when did you start staying outside, in an emergency shelter, or in a place not meant for people to live in?" is the input to the twelve continuous months that make a person chronically homeless. Its past-tense variant, written for someone with a place tonight, already said "this is about the most recent of those times, not the first one." The main version, read by everyone actually outside or in a shelter, did not, so the one group whose answer decides the arithmetic was the group not told which date to give. It says it now. Alongside it, the count of separate times without housing feeds the four-occasions pathway, and nothing on the screen said that moving between shelters or camps is still one time; a person who had moved five times could reasonably have said five. It says so now.

A question that contradicted its own explanation. The pathway question asks where a person was staying just before this time without housing began, and its help text opened by describing something else: "the place you lost or left right before staying where you are now." For anyone who has moved between shelters those are two different places and two different answers, and the answer raises the support planning band on an institutional exit and triggers three offers. The help now points at the same place the question does.

Boundaries that people were being left to guess. A shelter, a jail or a treatment program is not a permanent place, which decides whether the twelve-month documentation gate opens. The emergency-room count means a hospital emergency room, not urgent care and not a clinic, which decides a band at four visits. "Would you need regular help from another person" means help from a person, not money from a program, and the examples now say managing money and bills rather than money and bills. Someone you could stay with tonight means a person, not a shelter. Being awake outside all night with nowhere to sleep counts as outside. A cold or heat injury counts even if a doctor was never reached. Money that arrives some months and not others is still money coming in. Growing up in one place counts as stable housing that worked. Children already with you are counted along with the ones who would come back. A service animal or an emotional support animal is an animal for the pets question, which is the question that opens the assistance-animal letter offer, and an animal being kept by someone else for now still counts. Vet records are not an assistance-animal letter. Having some identity documents but not all of them is still a no. If violence has already been left behind and it is not safe to go back, that counts, and program rules and court orders do not.

One stem changed, and one contradiction inside a question. "Do you want help leaving this situation?" is asked after a disclosure of violence, and "this situation" could as easily have meant homelessness; it now reads "the unsafe situation," which is the phrase the next question already used. The household-adults question asked who is in the household "right now" and its help text asked who "would move with you," which are different people when a partner is in jail; the help now says to count them even if the household is apart right now.

What was deliberately not built. Six findings need a new answer, a changed skip, or an engine rule, and the register is where those go rather than into a wording pass. Cumulative months without housing cannot express a past facility stay under 90 days, which by regulation counts toward the twelve (IR-30). The fleeing-violence question is present tense, so someone who has already fled reaches it only through help text, and the follow-up about wanting help leaving sits behind a yes (IR-31). The medical-emergency question is about the person being assessed and has nowhere to put an emergency happening to someone with them (IR-32). The emergency-room count is now correctly narrowed to emergency rooms, which is a smaller thing than the crisis-system use the construct names, and widening it would mean re-deriving the threshold (IR-33). The pets question gates the assistance-animal letter question, so an assistance animal not thought of as a pet still closes that door for anyone who does not read the help (IR-34). And the disabling-condition answer ends a determination with no second look (IR-35).

Nothing anyone could already answer changed. Wording and help text are not inputs to any engine, and the proof is the same 263-session sweep as last time: every canonical payload digest is byte identical, with only the instrument version stamp normalised out, so not one determination moved. 489 automated checks pass. Every changed string was scored against the client reading gate in all three voices before it shipped; the worst of the 53 new strings reads at grade 6.3, and every question and help text in the instrument still reads below grade 8.

2026-08-28 · v0.60.0 · instrument 0.26.0-pilot · every question now has the true answer on it

What went wrong, in one question. "About how many months has it been since you had a permanent place to stay?" is a number box, and its help text told anyone who had never had a permanent place to choose "I do not know". The engines treat "I do not know" as MISSING. So a person who stated one of the least ambiguous facts about their own housing history had it written into the record as an absence of information: they knew, and the record said nobody did. It cost them twice. The question was reported as unanswered and counted against how complete their record was, and the follow-up questions that open at twelve months or more since a permanent place stayed shut for the one person whose answer is the strongest possible form of what that gate is looking for. Reported as practitioner flag #225.

Owner ruling: that is a class of defect, not one question, and the class goes. Every core and module item was read against the answers a real person could truthfully give, looking for four things: help text that instructs a workaround ("choose X if actually Y"), a truthful state with no choice to hold it, a numeric range whose bounds exclude an honest answer, and an option label that misdescribes what the rules do with it. Ten findings. Four items changed. The six that were recorded and deliberately not changed are written up in the improvement register with the reason for each, because a finding left quiet is a finding that comes back.

Two questions gained an answer that is not a number. months_since_permanent_housing now offers "I have never had a permanent place", and the instruction to choose "I do not know" is gone from every voice. episode_start now offers "I have never stayed in any of those places": the 0.23.0-pilot gate spares most people with a place tonight, but someone in a hospital, jail or treatment facility is still asked when their current time outside or in a shelter began, and until now had nothing true to select. Each new answer carries a written statement of what every rule does with it, published on the Evidence Register under "Answers that are not a number", because an answer whose meaning is not written down is an answer the next reader has to guess at.

Two ranges were excluding honest answers. The count of separate times without housing in three years capped at 36, which is the number of MONTHS in the window, borrowed for a question that counts times: the item's own rule is that a break of seven housed nights makes the next time separate, so at most 136 fit in three years, and someone cycling between a shelter and a relative's spare room had to under-report. It caps at 136 now, which is the arithmetic rather than a round number. Months since a permanent place capped at 600, which is fifty years; someone over sixty could truthfully have gone longer, and could not answer "never" either. It caps at 1200. The in-session check that catches a year typed into a months box was extended with it: its bands stopped at 44 because no answer a 45-year-old could enter used to reach their bound, and now 45 to 54, 55 to 59 and 60 to 61 have bounds too. 62 or older has no top and so can never have one, which is a limit stated rather than an omission.

The floor: an honest answer is never treated worse than "I do not know". A person who tells the truth must not pay for it, so the rule is mechanical and checked rather than intended. Across a matrix of surrounding sessions, and for both new answers: nothing is called missing that a non-answer did not already make missing, the record is never judged less complete, no determination comes out worse for the person, and no question is taken away. Where the new answers DO change an outcome it is in exactly one direction. Never having had a permanent place now opens the chronicity documentation question, as the highest number already did, so the disabling-condition fact reaches the record instead of being dropped as never asked; and both items stop being reported as missing information, which also stops the tool telling a worker to reassess when an answer that is never coming arrives.

Nothing anyone could already answer changed, and that is proven rather than asserted. A generated sweep runs one session per answer a person could give under the old instrument, 263 of them, covering every item, every option, both ends of every numeric range, five dates, all three ways of not answering, and the situation-by-history matrix that opens and closes the skip logic. The canonical payload digests were taken from the build before any of this existed and are committed. Every one still matches, byte for byte, with only the instrument version stamp normalised out. Exactly two sweep cases are new, and both are a raised ceiling: answers nobody could enter before. 489 automated checks pass, 92 of them new.

2026-08-28 · v0.59.0 · instrument 0.25.0-pilot · three reading levels, and one tooltip instead of three

Change (owner ruling, permanent): reading level now has three tiers, and the middle one is new. Tier 1 is unchanged: everything a person being assessed reads stays below grade 8. Tier 2 is new and covers the caseworker: the worker half of the result page (the assessment card and its prose, the drawers, the action plan, the judgment card, the disagreement routes, the facts card, the confidence lines), the landing page, the register page's own copy, the questions page introduction and its audience notes, and the glossary's definitions. Those are held below grade 12, with no single sentence over 28 words. Tier 3 is the reference layer, this changelog included, along with governance, the Evidence Register and the repository documentation, and it is deliberately uncapped. The gate is the same automated test that already enforced tier 1, using the same formula and the same name filtering, so a number on one tier means what it means on the other.

What the v0.54 entry said, and what is now true. That entry closed with "Staff-facing and policy-facing text is deliberately not covered by this gate; it is allowed its precision." That position has changed and is not being quietly reversed. Precision is still allowed, on every tier: no HUD term was simplified, "chronic homelessness", "coordinated entry", "self-certification" and "24 CFR 578.3" all read exactly as they did, and the reference pages are still uncapped. What the position got wrong was the assumption that precision and sentence complexity are the same thing. On the worker surfaces they are not, and what was actually costing a reader was a 52 word sentence in the appeals paragraph and a 75 word sentence on the landing page, neither of which was carrying any precision at all. Tier 2 caps the sentence, not the vocabulary.

First run: 38 strings over the line, all rewritten with their meaning checked. The worst was the appeals paragraph on the worker result, one 52 word sentence at grade 22.4, now four sentences at grade 7.2 saying the same three things. The landing page's opening description scored 23.1 and now reads at 11.0 with nothing dropped. The "also true, and published rather than compressed away" paragraph held a single 75 word sentence; it is six sentences and every claim survives. Building the tier-2 gate also exposed a hole in the tier-1 gate: four client sentences about victim services routing were written in a shape the scanner counted as read and then skipped, so they had been shipping unscored since the gate was built. They are scored now, and they passed.

Change (owner ruling): one tooltip, not three. The site had a glossary popover, three bare title attributes, and whatever the browser did with them. A title attribute takes about a second and a half to appear, cannot be styled, and on a touch screen never appears at all, which is most of the people this tool is for. All three were converted to the one system: the footer counter's note, the quick-exit button's hint, and the sample switcher's one-line summaries. There is now one panel, one visual style, one dismissal model. The pattern is borrowed from gaithernews.com: viewport-safe placement that cannot be clipped at any width, hover plus keyboard focus on pointing devices, tap to open and tap outside to close on touch, Escape to close with focus returned to the trigger, one open at a time, and a caret that keeps pointing at its trigger after the panel has been nudged away from a screen edge. On a control that already does something when pressed, the control's action wins and the panel shows on hover or focus instead, because a press on the quick-exit button must always leave the site.

Nine new glossary terms, and the definitions are held to tier 2. Added where the jargon was already on the page with nothing explaining it: CE, literally homeless, self-certification, low-barrier, street outreach, prevention, naloxone, medical respite and shadow pilot. A definition above the reading level of the page it explains is worse than no definition, because the reader has already told you by tapping that this was the sentence they could not read, so the definitions are now scored by the same gate. Ten of them were rewritten. The rule that the glossary never fires on a live question screen is unchanged and is why: a word carrying a dotted rule on one screen and not another is a different stimulus, and an instrument has to ask everyone the same thing.

2026-08-28 · v0.58.0 · instrument 0.25.0-pilot · the facts card stops implying, and becomes an interface

Change (external review, owner adopted): The worker card that gathers the facts a community's policy reads was titled "For your CoC's prioritization policy," and a reviewer pointed out what that heading does: seven facts, chosen and gathered by a tool, under a heading naming the reader's own policy, can be read as HEAT's recommended prioritization factors. HEAT is no more entitled to imply an order than to draw one. The card is now titled "Facts commonly used by CE prioritization policies," and the line under it says plainly that which of these matter, and in what order, is set by your community's adopted written standards and not by HEAT, and that a community may use some, all, or none of them. The closing sentence is unchanged: HEAT does not order anyone. Two automated pins now hold the title and that line the way one already held the closing sentence, because this was a wording defect and wording is what has to be checked.

Under it, the boundary became a type. The card used to rebuild its seven facts by reaching into scattered corners of the result and into the browser's own answer map. The result now carries them once, as a named, typed object (chronic homelessness and whether its documentation is complete, months and separate times without housing in the past three years, where the person stayed last night, and veteran household and disabling condition where those were asked), each value carrying the reason it is absent when it is absent, in the same three-way vocabulary the rest of the page uses. The engine populates it from values it had already computed, and reads it back nowhere, so no determination can depend on it: a facts object that could move a determination would be a policy engine wearing a data structure's name. Determinations are proven unchanged, not asserted: 758 canonical results across the golden scenarios and a 750 case grid are byte identical to the previous build once the new field is set aside, and a new test suite re-implements the card's previous derivations line by line and demands the typed field agree with them on every case. The card was rewired to read the new object only after that proof passed. Display only today, and shaped as the input a community's own policy engine would read if one is ever built under an adopted deployment's governance, so the two could never quietly disagree.

Recorded internally. The architecture notes gained a second revision: the assessment and policy boundary is now a typed interface rather than a prose promise; any future policy engine must permanently record the instrument version, the rules version, the policy identifier, the policy version and the evaluation date with every result, so a prioritization made under one policy can still be reconstructed after the policy changes (HEAT already stamps the instrument and rules versions on every result, which is the precedent); and if a community's policy is ever configured, the card may narrow to exactly the facts that policy reads and take the title "Facts used by your CoC's prioritization policy," which is honest only once a real policy is behind it. None of that is promised to anyone.

2026-08-28 · v0.57.0 · instrument 0.25.0-pilot · a consistency sweep, and the facts your policy reads in one place

Change (owner sweep): A full walk of every page, sample, and mode fixed six inconsistencies: worker prose pointed at an assessor tool on pages where none exists, one concept carried two names ("Determination quality" is now "Information quality" everywhere), the register's adopted chip used a raw color outside the token system so it ignored dark and colorblind modes, a stray heading level, the product's only curly apostrophe, and an unused green all-clear style that could never legitimately appear next to a housing crisis. New on the worker result: one compact card, "For your CoC's prioritization policy," gathering the facts communities commonly prioritize on (chronic homelessness and its documentation, months and episodes in the past three years, last night's situation, veteran household and disabling condition where answered) in uniform informational styling, ending with the sentence that HEAT does not order anyone; your CoC's adopted written standards do. Display only, no new questions, no rule changes, guarded by the same test that keeps determinations uniform.

2026-08-28 · v0.56.0 · instrument 0.25.0-pilot · the color contract goes on the record, and three chips change families

Change (owner rulings after an external strategy review): Governance now states the color contract in public where a later version of HEAT can be held to it: color describes the state of the record and the workflow, never the value of the person; and need, eligibility, priority, availability, and allocation are five separate determinations that must stay visually and logically distinct. It also pre-registers a promise while it still costs nothing to make: if HEAT ever displays a community's priority groups, every group will get identical visual treatment, because a color scale on priority is a score whatever the labels say. The contract found its own first violations: three small chips on the worker card (older adult, unsheltered, frequent crisis-system use) carried the amber look-here family even though each describes the person, not the record; all three moved to the informational family, and a new automated test now fails the build if amber ever lands on an attribute of a person again. The longer-range architecture from the review is recorded internally with its boundaries (what a future policy engine may never do, why unmet need must stay visible, why outcomes may never become compliance tracking), promised to no one.

2026-08-28 · v0.55.0 · instrument 0.25.0-pilot · color for the record, never for the person

Change (owner direction, borrowed from healthcare): The worker's result page now uses status colors the way a hospital chart does: they describe the state of the record, never the person. Documentation items carry a lab-style flag, amber "Needed" flipping to a green check "In hand" when the worker ticks them, and the page says plainly that ticks live only on that working copy. Conflicting answers and lower-confidence notes now read as quiet amber data-quality flags, deliberately never red, because an unanswered question is not an emergency and a person's honest memory is not a fault. Each section of the page carries a consistent wayfinding accent, safety in red, paperwork in amber, the plan in green, the facts in cyan, so a worker's eye learns where things live. And the line that must never be crossed is now enforced by a machine: a new test fails the build if any chronicity value, HUD category, or support planning band is ever colored differently from its siblings, because the moment determinations get a color scale, a color scale becomes a score. Along the way that test caught two determinations that were already quietly colored unevenly, one value highlighted and the rest greyed, and made them uniform. Everything keeps a glyph and a word beside its color, survives colorblind mode with a newly separated amber and red, and prints on a black and white copier.

2026-08-27 · v0.54.0 · instrument 0.25.0-pilot · plain enough for a twelve year old, enforced by a test

Change (owner standard, permanent): Everything a person being assessed reads must be simple enough for a twelve year old. That is now a build gate, not a style preference: a new automated test scores every question, every help text in every voice, the client result page, the sample stories, and the participant section for reading grade, and fails the build above grade eight. Its first run found 67 strings over the line, some at college level: the question about total months homeless scored grade 12.7 and now reads "Think about the past three years. About how many months in all have you stayed outside, in an emergency shelter, or in a place not meant for people to live in?" at grade 5.7. Seventeen questions were rewritten in plain words with their meaning checked and preserved: no reassurance weakened, every 911 and 988 instruction intact, and each change recorded on the Evidence Register with its before and after score. Two words also became consistent everywhere: "outside" instead of "on the streets," matching the words the answer choices already used. Staff-facing and policy-facing text is deliberately not covered by this gate; it is allowed its precision.

2026-08-27 · v0.53.1 · instrument 0.24.0-pilot · a second door on the front page

Change (external review, second pass): The hero gained a quiet second button, "Explore a shadow pilot," jumping straight to the run-it-alongside section, since testing HEAT against an existing assessment is what a community can actually do today. The rest of the reviewer's second-pass asks turned out to already be live: the reviewed copy was a cached page from before the restructure, which is its own small argument for the caching note in the deploy checklist.

2026-08-27 · v0.53.0 · instrument 0.24.0-pilot · the front page answers the first question first

Change (external review of the new home, owner-directed): The landing page was reorganized so a person arriving cold understands HEAT in the first screen: what it is (housing assessment without the black box), what it produces (a real sample result card, generated from the same persona and the same engines as the live sample, held to the engine by a new test so it can never silently drift), how the boundary works (HEAT assesses; your community decides), why to trust it (deterministic, transparent, private, no black-box scoring), and how to try it without replacing anything (the shadow pilot, moved up). The section for people taking an assessment now asks its own question, "Are you taking a HEAT assessment?", and keeps every reassurance. Nothing honest left the site; the deeper material moved one layer down behind its links. Two stale numbers died in the process: the page claimed 193 automated tests while the suite had reached 328, and "26 to 28 questions" while the published samples are asked 26 to 30, so every number on the page is now computed from the instrument and the samples rather than typed, and a test fails the build if the page and the engines ever disagree.

2026-08-27 · v0.52.0 · instrument 0.24.0-pilot · a home of its own

Change (owner decision): HEAT moved to housingtriage.org, a domain that says what the instrument is: a structured housing triage assessment. The former address, heat.gaitherdyn.com, and the companion domains heatassessment.org and heattriage.org now forward here permanently, so every existing link keeps working. Nothing about the instrument, the rules, or your answers changed with the address; the visit counter carries over uninterrupted, and feedback, sample results, and the register all live at the same paths on the new home. One practical reason for the move, recorded honestly: an unrelated Oregon assessment also abbreviates to HEAT, and an address built on the category name rather than the acronym keeps the two from being confused when a link is read aloud.

2026-08-11 · v0.51.0 · instrument 0.24.0-pilot · the assumption is fully gone, and the engine keeps its own promises

Change (finishing the presupposition work): The last two places that assumed a current street period are fixed. The before-homelessness question now asks everyone where they stayed just before where they are now, in words that work for a family on a relative's couch and for a person leaving a facility alike; it stays asked of everyone because the engines provably read it for discharge and support planning (gating it would have deleted transition support and medical respite for the paradigm discharge case, demonstrated by a committed counterfactual test). Every line of result prose that said "entered this period" now describes the person's actual situation, and the client page finally has honest words for someone in their own housing instead of calling it a housing crisis. One false claim was corrected: the question's help text said the chronic homelessness arithmetic reads this answer, and it does not; the help now names only what actually reads it. Deeper still, the engine now cleans its own input: answers to questions that were never asked are removed by the engine itself rather than by trusting each app to do it, proven across a 1,440-session sweep where every well-formed session came out byte-identical and only sessions carrying impossible answers changed, each to the honest result for a question never asked. 328 automated tests; six adversarial reverts, all caught.

2026-08-11 · v0.50.0 · instrument 0.23.0-pilot · the timeline questions stop assuming everyone is on the street tonight

Change (owner ruling: a verified problem with a known solution gets fixed): The three homelessness-timeline questions assumed a current street or shelter period and asked everyone anyway, so a family doubled up with relatives was asked when "this current period of staying on the streets" began. People staying with family or friends, or in their own housing, now get past-tense versions that say plainly that 0 is an ordinary answer, and the start-date question is simply not asked of them unless they report at least one past period; a question that cannot apply is not asked, and skipping it never counts against anyone. People on the street, in shelter, or leaving a facility see exactly what they saw before, proven byte-identical across 525 generated sessions. Two quiet falsehoods died with the assumption: housed respondents no longer get a continuous-months arithmetic line for a pathway that cannot apply to them, and no longer get told their answers conflict when a remembered period was shorter than the time since it started. The family sample was corrected to answers that fit the questions' own definitions, and a new automated suite holds all four samples to every consistency guard so a sample can never contradict the instrument again. 316 automated tests, up from 265, including nine adversarial reverts all caught by the suite.

2026-08-11 · v0.49.0 · instrument 0.22.0-pilot · the answers must fit each other, and a 16-year-old is not an adult

Change (owner direction: fix anything illogical, and test): A full audit of every answer combination. Three new consistency guards join the five that existed: the number of separate times homeless and the total months can no longer disagree about whether there was any period at all; months since a permanent place cannot exceed how long the person has been alive; and a start date cannot land before their birth. Guards stay message-only: they catch mistakes at the moment of entry, in plain words, in the right voice for who is answering, and a new test renders every guard message in every mode so an unvoiced guard fails the build. The deepest fix: the adults-in-household question told a 16-year-old to count themselves as an adult and would not accept zero; people under 18 now get wording that does not count them, accepts zero, and, on the children question, says plainly that some people under 18 are parents and both answers are ordinary. One stale-answer leak was fixed (an eviction line could survive an age edit that removed the question), the answer-pruning rule moved into the engine where every consumer gets it, over-limit numbers now hear the real limit instead of a false complaint about digits, and future start dates were already rejected but are now pinned by tests. Eleven of the fixes were verified adversarially: each was reverted one at a time and the test suite caught every single one. 265 automated tests, up from 214.

2026-08-11 · v0.48.0 · instrument 0.21.0-pilot · nine register proposals decided, five held for pilot evidence

Change (owner rulings on the practitioner review round; credit Elisa and the review group): The questions about who the person is (age, adults, children, children staying elsewhere) moved near the beginning and the age question now says plainly it is about the person being assessed, because two practitioners independently answered it thinking it was about the children. The long-lasting-condition question now sits directly before the daily-help question. A new automated test proves the reorder changed no determination: identical answers produce byte-identical results in any question order. Two optional, unscored follow-ups were added: when the stable place was (so "when I was a kid" has somewhere honest to go without narrowing the question), and what kinds of help would make housing easier to keep (a conversation starter that prints for the case manager and is never scored, never required, and stated plainly to not be a disability assessment). The children-elsewhere help was reworded plainly. The before-homelessness and three-timeline questions now explain themselves (an earlier shelter stay can be the right answer; HUD's chronic homelessness definition is arithmetic over all three timeline answers). The overdose-question rewording was declined with reasons on the register, its humane concern already shipped. The most anyone is ever asked is now 36 questions.

Held open on purpose: the five proposals that would change what a rule reads (smoke sensitivity, the suicide-question window, eviction court history, requiring the safe place to be reachable, and the emergency-room anchor) stay open on the register for votes, comments, and pilot evidence.

2026-08-10 · v0.47.0 · instrument 0.20.0-pilot · the page says what it is for, and cites only law that still stands

Change (flag from Elisa, plus queue work): The result page stopped speaking staff shorthand: "drawer" and "trigger fires" are gone from anything a person reads, replaced with plain sections and plain sentences. The client page now says outright that it is about the answers just given, on this date, and that nothing was saved or sent; and both views offer an optional write-in name or reference that prints on the page and is never stored or transmitted, so a handed-over page can be tied to a household without the tool collecting anyone's identity. A paragraph that addressed the worker even on the client's own page now speaks to the person it is about. Answering for someone not present now keeps third-person wording all the way through the result page, with the voice test extended to cover it. Every "call 911" became "dial 911", matching the banner. And the pet-letter question's evidence no longer cites HUD assistance-animal guidance FHEO-2020-01, which HUD withdrew on 2025-09-17: the entry now rests on the Fair Housing Act and Section 504 themselves, and says plainly that the statutory duty is unchanged while documentation practice is unsettled. Question ordering, which Elisa also raised, stays with the open register proposal rather than being decided here.

2026-08-10 · v0.46.0 · instrument 0.19.0-pilot · one reviewer found the same bug six times, and now a test owns it

Change (18 practitioner flags, most from Elisa, 25 years in the field): Six of her flags were one defect: when answering for someone who is not present, question stems switched to "they" but help text, some answer choices, and a range hint stayed in "you" and "me", so every proxy assessment mixed voices on most screens. Every item now carries matching variants for every mode, a new automated test reconstructs what each mode actually renders and fails on any voice mix or on help that names an assessor in self-administered mode, and a quiet line under the progress bar now says on every question screen who is answering for whom, since she proved the questions did not explain that by themselves. Also adopted from her flags: the fleeing-violence help no longer says "violence at home" to people without homes (it now names violence in a relationship or from family or household members, no matter where you are staying); "a place not meant for people to live in" gives concrete examples (car or van, shed, garage, storage unit, abandoned building, park, bus or train station); adults is defined as 18 or older; the age question says whose age it wants; the pet question includes more than one animal; and the pet-letter help explains that any licensed health professional who treats you can write the letter, with new glossary entries on service animals versus emotional support animals. 25 item versions bumped; every change is recorded on the Evidence Register.

Sent to the register for vetting (not obvious enough to decide alone): whether the stay-with-someone place must be reachable, question ordering (grouping who-the-person-is questions, pairing the condition and daily-help questions), why the before-homelessness question offers homeless answers, why the timeline is asked three ways, the children-elsewhere reword, and whether anchoring a question on emergency room visits undercounts people who avoid emergency rooms. Her request for a time anchor on the stable-place question joined the existing open proposal on that item as an addendum.

2026-08-07 · v0.45.0 · instrument 0.18.0-pilot · three reviewers, twelve fixes

Change (structured review: a HUD technical assistance reader, a case manager mid-shift, and a person being assessed): For the TA reader: Governance now states where the line is (HEAT documents and explains; prioritization belongs to the CoC's written standards, and HEAT never ranks), names the three administration modes, and every page now carries the beta status, not just the front door. For the case manager: printing is fixed (dark mode printed zones black on near-black and checkboxes as solid squares; print now forces a light palette in every theme), the check-your-answers screen groups by phase and writes dates as words, cited sources print their web addresses, and the client handout finally says what it is, with date, how it was completed, and version. For the person being assessed: the front page speaks to them directly (answers stay on this device unless you choose otherwise, you can skip anything, nothing is scored, what you leave with), the intro says how long it takes with numbers read from the instrument itself, the client page grew a proper heading so screen readers land somewhere, and one leftover piece of staff jargon on the client page was replaced with plain words. Question wording, rules, and the open register proposals were deliberately not touched; larger findings from the same review are queued for decisions.

2026-08-07 · v0.44.0 · instrument 0.18.0-pilot · the register stops promising what has not happened

Change (owner decisions): Two honesty fixes on the Evidence Register (register v1.7.0). The introduction promised to show "who has reviewed it" while every entry read pending external review; it now says where each entry stands and states plainly that external review has not started yet. And three entries still called a question group by its old name, "Service history"; they now use the current name, Adult context, with the rename noted where the old name appears in dated history. Also decided: the six practitioner proposals stay open on the register for public vetting rather than being decided immediately, and the footer keeps its current order.

2026-08-07 · v0.43.0 · instrument 0.18.0-pilot · the register speaks plainly, the group review is fully filed

Change (owner direction): The register's voting buttons no longer assume you know what an arrow means: they now say "Adopt this change" and "Do not adopt this change", with the count beside each and a note that recording a vote can be taken back. The page also explains itself: how a proposal gets here, what a vote does (it informs the decision, it is not a ballot; every adoption still passes the published tests and change control), and what is kept about you. Every proposal now shows a change-control classification chip naming how carefully that kind of change has to be made, from wording-only through logic change.

Also (practitioner group review, all seven flags resolved): The six proposals from the 2026-08-04 group session were already on the register for vetting; each now carries its change-control classification, and the overdose-question proposal was completed with the two parts the first write-up dropped, including a plain refusal to ever ask whether someone is seeking treatment: readiness can never become a disguised test. The seventh flag suggested a published framework on supporting people between visits; it is recorded in the project's research notes for the follow-through work already queued, since it proposes no change to any question. Icons spread where they help scanning: question groups share a mark with their jump-menu pill, evidence entries show a sensitivity meter, register statuses and result-card sections got marks. Two defects found on the way are fixed: the shipped assessment bundle was one commit stale and still carried an em-dash, and the em-dash gate could not see into scripts; it now reads them and catches escaped forms.

2026-08-03 · v0.42.0 · instrument 0.18.0-pilot · two honest answers added to the "where were you staying" question

Change (owner flag #138, "missing option"): The question about where someone was staying just before this period of homelessness gains two answers: "An emergency shelter or transitional housing program" and "A car, tent, or outside". Both situations previously had no honest answer except "Somewhere else", which erased the two most operationally distinct pathways: moving between shelters, and arriving from unsheltered homelessness. The split follows the HMIS Prior Living Situation categories. Deliberately not added: a "fleeing violence or abuse" answer. Following HMIS practice, safety screening belongs in its own carefully designed question, not inside a list where a disclosure could be seen over someone's shoulder; the register records this reasoning. The new answers change no scores: no rule keys on them until evidence supports one. Evidence register 1.6.0.

2026-08-02 · v0.41.0 · instrument 0.17.0-pilot · the site now reports its own errors

Change (network monitoring): Every page now loads a small error-monitoring script (Sentry), the same one the rest of the network runs, so that a broken page reports itself instead of waiting for someone to notice. It records JavaScript errors only: no session replay anywhere on this site, because a replay of an assessment could capture a vulnerable person's answers, the same reasoning that already keeps session recording off the assessment screen. Visitors who send the Global Privacy Control signal are not monitored at all. Noise from browser extensions and from third-party analytics scripts is filtered out so the record stays about this site's own code.

2026-08-01 · v0.40.0 · instrument 0.17.0-pilot · deadly heat counts like deadly cold, and definitions cite their sources

Change (owner flag): The instrument asked whether cold had ever put someone in medical care, and never asked about heat. It does now: a new question covers heat stroke, heat exhaustion, and dehydration from having no way out of the heat, worded and scoped exactly like its cold counterpart. It raises the support planning level only (new rule SN-R11, floor high, same as every mortality-event answer), never gates any option, and carries its own Evidence Register entry. The evidence tier is stated honestly: heat-death surveillance rather than the cohort study behind the cold question. The core is now 24 questions, the published samples are asked 26 to 28, and the hard cap is 34.

Also (owner flag): The definitions that pop up on dotted-underline terms now cite their sources: each term with an authoritative public document links to it, on hud.gov, the HUD Exchange, the Federal Register, the eCFR, va.gov, ed.gov, or usa.gov. Every link was checked before shipping; terms without a verifiable primary source carry no link rather than a guessed one. On the case manager page, the statement that getting an available bed never waits for prioritization now cites the HUD notice that says so, CPD-17-01.

2026-07-31 · v0.39.0 · instrument 0.16.0-pilot · navigation that tells the truth, sections that explain themselves

Change (owner catches, all shipped same day): The navigation marked "Assessment" as the current page while a sample was on screen; the marker now follows what is actually being viewed, verified across deep links, persona switches, and hash changes. The Questions page gained a jump menu to every question group, and each group now states who is asked it and why, derived from the instrument's real skip logic rather than written from memory (two draft descriptions were corrected against the actual gates before publishing). The navigation links gained icons. And the emergency banner at the top of the page had drifted into two different wordings on different pages, so all shared page chrome (banner, navigation, footer links, scripts) was unified and is now compared byte-for-byte across every page by the build gate, which fails on any future drift.

Also (accuracy sweep): A synchronization audit corrected stale claims that had outlived the releases that made them: an old automated-test count, an understated typical question count (the published samples are asked 25 to 28), a changelog introduction that promised more than every entry delivers, and a Governance description of disagreement that omitted the in-tool route that has existed since v0.36.0. Governance now links to the full question list where it cites the question cap.

2026-07-31 · v0.38.0 · instrument 0.16.0-pilot · one rail, one measure

Change (owner review of the width work): The layout system had three competing widths: a text cap, a centered column, and the page container, which produced two left edges on one page, dead space to the right of paragraphs, and holes between cards of different heights. All three collapsed into one rail and one measure: every heading, paragraph, and grid on a page now starts at the same left edge, body text runs to a single fixed measure so every paragraph ends on the same right edge, and cards in a row share a height with their answer choices resting on the card floor. The automated alignment audit gained two matching checks, one for multiple left rails and one for dead zones beside text, which found 87 violations before the fix and zero after. Smaller catches from the same visual pass: a stray focus box around page titles, drawer arrows that fell off their row, and callout bands that stopped short of the card edge.

Also (owner ruling): The "Review board: open seats" section is removed from Governance. A standing review board may return later as a deliberate decision; it is not being recruited now. Anyone interested in the tool can book a virtual meeting through the site's regular links.

2026-07-31 · v0.37.0 · instrument 0.16.0-pilot · navigation, width, and one alignment rule

Change (owner direction across three rounds): Every page now carries a navigation row: Home, Assessment, Samples, Questions, Evidence, Governance, Changelog, with the current page marked, so no page is a dead end that must be left through the front door. The long reading pages stopped being narrow columns inside a wide site: the Questions page became a two-column grid of question cards, the Evidence Register a two-column grid of entry cards, Governance's two defended statements sit side by side, and the reading column widened. And alignment became one enforced rule instead of case-by-case fixes: within any card, everything shares one flow, left by default, with exactly two deliberately centered groups on the whole site (the end-of-page actions and the sample banner). A new automated audit script walks every page and view and fails on any container that mixes centered and left content; its first run found eight violations in five cards at once, all the same mistake, all fixed the same way. It now runs before any interface release.

2026-07-31 · v0.36.0 · instrument 0.16.0-pilot · designed for its width

Change (owner direction: "is this how you would design it out the gate at this width?"): No, it was not, so the page system was rebuilt around one rule with two behaviors: prose lives in a centered column with balanced margins on both sides (text stays left-aligned; the column is what centers), and structure, meaning card grids, checklists, drawers, and the sample switcher, spans the full width. The landing hero, every section introduction, and the governance and questions pages now sit on that centered rail; the six-point list is a clean two-column grid instead of accidental ragged columns; the For-CoCs principles sit two by two; and the sample banner reads as one centered story instead of left text over a centered button. Phones are byte-identical to before.

Also (owner catch, no dead ends): the disagree-with-a-result section, when no community contact is configured, used to say "ask any housing help office how to start one," an instruction with no path. It now routes through the tool itself: change any answer and the result recomputes, record what the rules missed in the Assessor judgment box and flag it for case conference, or press the report button, which opens the built-in feedback channel straight to the review queue.

2026-07-31 · v0.35.1 · instrument 0.16.0-pilot · icons and balance

Change (owner direction, screenshot-reviewed): Icons reached the page chrome: the theme choices now show a monitor, a sun, and a moon; colorblind mode shows an eye; the Feedback button carries a real flag instead of a text glyph; and Leave quickly carries an exit mark, identical wherever that escape appears. On wide screens the results page stopped hugging the left edge: action buttons are centered in their card, the assessment section became three readable cards side by side instead of stacked paragraphs, and the client page's three zones now sit in parallel. Body prose stays left-aligned and capped at a readable width, because centered paragraphs help nobody. Print still gets the stacked original, phones are unchanged to the pixel, and every header control kept its label and its full touch size.

2026-07-31 · v0.35.0 · instrument 0.16.0-pilot · viewability round

Change (owner direction): The site got wider and shorter. The container grew from 920 to 1160 pixels so reading pages use the screen, while anything a person fills in stays a narrow readable column, and running prose is capped at a readable measure so wide windows never produce endless lines. The sample page now opens with an example already showing (the long-term homelessness case) and four horizontal switcher pills, each with its own icon, jump between the personas; the separate chooser page is gone. The persona mix was corrected on the owner's field point that assessment mostly happens through street outreach and access points: the veteran now sleeps in their car (a vehicle is a place not meant for people to live in), the young adult is assessed by staff in a youth shelter, and only one persona of four is in emergency shelter. New icons throughout: an hourglass for long-term homelessness, a star for the veteran household, a seedling for the young adult, an adult-and-child for the family, and the client-page zone marks became real icons instead of typographic symbols. Verified at desktop, tablet, and phone widths with zero overflow on every page.

2026-07-30 · v0.34.0 · instrument 0.16.0-pilot · four sample results

Change (owner request): The single sample result became four, each a made-up person run through the real engines, chosen to show how HEAT distinguishes rather than just what it produces: long-term homelessness (meets the chronic definition, intensive support planning, PSH discussed first); a veteran household that is NOT chronic (a veteran does not need to be chronic to reach veteran-specific doors: SSVF serves the family, rapid re-housing leads the discussion); a young adult (18 to 24, first time, a possible safe place to stay tonight, so diversion leads); and a family doubled up and about to lose their housing (possibly Category 2, prevention and diversion emphasized, and the McKinney-Vento school-rights note for the children). A chooser at /assessment#sample describes all four; each has its own link and a switcher to jump between them. Every number and reasoning step in all four is computed live by the same engines that run a real assessment.

2026-07-30 · v0.33.1 · instrument 0.16.0-pilot · deep review complete

Change: The owner-commissioned deep review concluded. Its final deliverable, an Improvement Register, now lives in the repository as the single source of truth for open work: 23 candidate improvements, each classified under the adopted change-control taxonomy (wording-only through logic-change, where logic changes require a ten-part justification including rollback conditions), prioritized as pre-pilot, during-pilot, post-validation, or future-state, and 13 recorded non-recommendations with reasons, from the numeric composite score rejected on day one to ideas rejected this week with citations. The review's verdict across seven additional fields of practice, from child welfare to humanitarian allocation: HEAT's separation of safety, need, eligibility, and discussion is the converged design of every mature system examined, and the fields that collapsed those concepts produced the worst outcomes. What was uncertain is now either built, queued with a plan, or rejected with a paper trail.

2026-07-30 · v0.33.0 · instrument 0.16.0-pilot · uncertainty and judgment round

Change (from the cross-field research review): Missing information now says which kind of missing it is, using the vocabulary adult protective services uses nationally: "chose not to answer," "did not know," "not asked," and "answers conflict" are now distinguished everywhere missing answers are reported, and every surface that mentions a declined answer carries the reassurance that declining never counts against the person. Nothing changed in any rule: every kind of missing is still just missing to the engines, and none can lower a result. And the case-manager view gained an "Assessor judgment" card: when professional judgment sees something the rules did not capture, the assessor picks a reason from a fixed list (safety concern not covered, health concern not captured, situation changed, observation conflicts with an answer, or other), describes it in their own words, and can flag the case for conference review. It prints with the record, changes no determination, is never saved or transmitted, and does not appear when someone assesses themselves. How often it is used becomes a pilot measurement, compared against the only published norm for structured-tool overrides, the 5 to 10 percent band from child welfare.

Also: the validation plan now states plainly what a small shadow pilot can measure and what it cannot: no predictive-validity claims, no disparity statistics from tiny subgroups, and no before-and-after service-use claims at all, because regression to the mean makes them uninterpretable, a lesson the complex-care field learned by randomized trial.

2026-07-30 · v0.32.1 · instrument 0.16.0-pilot

Change (owner ruling from the under-18 audit): The eviction question joined the military question behind the adult gate. Minors generally cannot hold leases, which made "Is there an eviction case against you in court right now?" nearly unanswerable for an unaccompanied minor. The under-18 path is now two questions shorter than the adult path, and the reasoning is recorded in the Evidence Register.

2026-07-30 · v0.32.0 · instrument 0.15.0-pilot · pre-pilot fixes

Change (three owner-approved fixes from the HUD-guidance benchmark): First, minors are no longer asked the military question; HUD's own guidance uses exactly this skip-logic example, and the under-18 path is now one question shorter, never longer. One honest consequence, chosen deliberately: declining to give an age also skips the veteran question, so the veteran pathway requires an age band; this is logged for cognitive testing. Second, the assessment now shows its phase ("Question 4 of about 24 · Safety"), the someone-you-could-stay-with question moved to directly after the safety questions per HUD's phase order, and a yes answer now offers a real choice: "A possible option for tonight" lets the person stop the assessment there and try that option, with an explicit promise that stopping never affects their place in line, or continue. Diversion is a conversation, not a checkbox. Third, the disagree-with-a-result section now always appears: when no local contact is configured, it states the right every Continuum of Care must provide, and how to ask any housing help office to start a review.

Also noted from the same review: an audit of the remaining questions for under-18 appropriateness produced a short list for owner decisions before pilot (the eviction question, minor-consent law around the substance question, and youth-specific crisis follow-through), recorded internally.

2026-07-30 · v0.31.0 · instrument 0.14.0-pilot · action-plan round

Change (external review of the live product, mostly adopted): The result page now works like what it actually is: a housing action plan generated from a transparent assessment. "Do next" became "Today's housing action plan" with TODAY rendered as an unmissable chip; the raise-first order now carries its reason inline ("Raise PSH first: chronic homelessness appears met and support needs are high") so no one hunts for the why; every Disposition option gained checkable next actions; a new "Open questions before the housing discussion" card lists decision blockers, distinct from documents to collect; the availability disclaimer now appears once, said well, instead of three times; and the client page reworded its hand-over step around the emotional truth: "Take this page with you... you will not have to start over or retell every detail; this page already carries your story." The For-CoCs page notes what reviewers keep discovering: every completed HEAT arrives at case conference as a ready briefing.

Why: Workers do not read assessments; they work them. The reviewer's test is now this product's standing bar: if a worker finishes at 10:14 and does not know what to do at 10:15, the page failed, no matter how correct it is.

2026-07-30 · v0.30.3 · instrument 0.14.0-pilot

Change (external review, operational-utility round): Two messaging adoptions. The four-outputs section now leads with what HEAT does: "Assess. Explain. Recommend. Support." with "four outputs, never one score" as the supporting line rather than the headline, because a product is understood by what it does, not by what it refuses to be. And the For-CoCs section now says the honest thing about prioritization instead of only disclaiming: HEAT is designed to support housing prioritization by producing standardized, transparent, clinically meaningful findings; it does not determine queue position or allocate resources, and those decisions remain with written coordinated entry policy and case conferencing.

Answered rather than changed: The same review asked for a disposition section, recommended-interventions list, next-best-actions, and a documentation checklist so that no assessor finishes an assessment wondering what to do now. Those exist: the case-manager view leads with the Assessment Card, then the Do-next list (today and upcoming, checkable), then Documentation needed, then the Disposition drawer with per-option reasoning. The reviewer was reading a compliance benchmark report rather than the tool; the operational layer it asked for shipped across earlier rounds, several parts on the same reviewer's earlier advice.

2026-07-30 · v0.30.2 · instrument 0.14.0-pilot

Change: A full end-to-end review of the sample result in both views after the week's changes. Four seams found and fixed: the card's next steps said "4 items listed below" while the Do-next list said "2 documents" (the card was still counting the fine-print rules; both now count documents to collect); the client page said "the documents listed below" when its view has no document list (it now says the housing help office will go through the documentation together); "You told us you are staying outside" now reads "you have been staying outside," matching the question's where-did-you-stay-last-night basis; and the red zone label "Tonight problem" became "Urgent tonight." Everything else checked clean: confidence lines, disposition, veteran-household phrasing consistent from the situation line through the audit trail, and the coherence gate stays green.

2026-07-30 · v0.30.1 · instrument 0.14.0-pilot

Change (owner-adopted identity refinement): HEAT now describes itself as a structured housing triage assessment, replacing vulnerability-assessment framing. Triage is what the tool actually does: assess the current situation, identify interventions that appear appropriate for discussion, estimate expected support after housing, document the reasoning, and support scarce-resource decisions that remain the community's own. The mission statement on the landing page says exactly this, including what HEAT never does: assign a vulnerability score or determine queue position. The intervention section is now titled as a disposition. This aligns with HUD's own framework, which treats assessment, eligibility, scoring, and prioritization as distinct parts of coordinated entry.

2026-07-30 · v0.30.0 · instrument 0.14.0-pilot

Change (external clinical-decision-support review round): Every determination on the case-manager view now carries a confidence line: high, moderate, or low, stated as evidence quality with the reason, never as doubt about the person ("Confidence: moderate: self-report basis; third-party documentation still needed"). The Evidence Register gained a generated "What this answer changes" line for every question, computed from the rules themselves, so a reviewer can see exactly which rules read each answer, or that an answer changes no determination at all. A per-output harms analysis (which errors each determination can make, their consequences, and which error the design minimizes) is documented in the repository and referenced from Governance. The validation plan gained a reliability and calibration section: inter-rater, test-retest, cognitive interviewing, and usability, planned before pilot completion. The "no scores" bullet was reframed: medicine measures constantly; what fails is opaque, unvalidated ranking. And the review board's first seat is now explicitly a primary care physician experienced in homeless medicine, for the longitudinal-care perspective.

Declined, owner ruling: repositioning HEAT as a general "clinical reasoning engine" with coordinated entry as one application. HEAT is a coordinated entry assessment; communities want it for CE prioritization as HUD frames it, and that is what it will be validated as.

2026-07-29 · v0.29.0 · instrument 0.14.0-pilot

Change (four practitioner flags): Adopted: the pet paperwork question now comes directly after the pet question instead of later in the flow. And the living-situation question now asks "Where did you stay last night?" instead of "tonight": programs record the night before, the HMIS chronic-status logic keys on the night before, and a night that already happened is easier to answer than one that has not. Every surface that used this answer was resynchronized: the card status now reads "Slept outside last night" and the situation line says "as of last night," and the old phrasings joined the retired-wording list the build checks automatically.

Answered rather than changed: A second practitioner reported the first two safety questions feel similar, suggesting keeping only one. They stay separate for the recorded reason (danger-at-this-moment is a 911 triage fact; the violence situation is a category and routing fact), but two independent reports now make this a named cognitive-testing item. And the medical-emergency question stays, with the reviewer's point recorded: recent emergencies and ongoing conditions are indeed captured by other questions, and this screen's one job is live triage in assisted settings, where removing it would remove the only path that routes an active emergency out of the assessment.

2026-07-28 · v0.28.1 · instrument 0.13.0-pilot

Change: A full coherence sweep after a day of rapid changes, plus a machine to keep it that way. One seam found and fixed: the situation line on the card still said "An adult veteran" while the reworded question asks about military service in the household, so the person described could be the veteran's partner; the line now says "in a veteran household" and never asserts who served. The Evidence Register footer had also lagged one version behind; regenerated. A new automated coherence check now runs on every change: it fails the build if any page shows a different version than the others, if any retired wording reappears anywhere on the live site, or if the generated pages were not rebuilt after an instrument or version change.

Why: Fourteen releases shipped today. Fast surgery is only safe if something checks that the whole body still walks afterward; now something does, on every change, without anyone having to remember.

2026-07-28 · v0.28.0 · instrument 0.13.0-pilot

Change (four more practitioner flags, all adopted or adapted): The military question now asks about the whole household, because veteran-specific programs serve veteran families; a non-veteran with a veteran partner should still reach those resources, and the card chip now reads "Veteran in household." The overdose question was tightened so emergency help unrelated to drinking or drug use no longer reads as a yes. The suicide-history note on results was reworded per a practitioner's edit: history is not necessarily today, but ask. And the age question adapted from a PIT-style suggestion: eight bands including under 18, with 55-59 and 62-or-older splits because communities carry funding cutoffs at 55 and 62. The exact PIT bands were rejected because 55-64 would straddle the age-60 threshold the support-need evidence keys on. Under 18 produces routing only, to youth coordinated entry pathways, school liaisons, and youth providers, and the automated screening-out suite proves age can never lower any determination.

2026-07-28 · v0.27.1 · instrument 0.12.0-pilot

Change (practitioner feedback, credit Josh Johnson): Four adoptions. The intro now says why the questions are asked and how answers are used before anyone starts: facts in, explained determinations out, prioritization always the CoC's own written policy; it also states the right to decline or change any answer. "Permanent place" is now defined: somewhere you could stay as long as you wanted, lease or no lease. The ID question spells out what documents mean: state ID or driver license, birth certificate, Social Security card. And the Questions page explains where answers go, pointing to the Evidence Register.

Answered rather than changed, reasoning in the Evidence Register: the duration questions stay separate because each is a distinct quantity the federal definition requires and the cross-checks depend on them; the emergency-room question stays individual-level because the mortality evidence behind it is individual-level; the suicide question was reviewed against the trauma-informed request and already carries 988, optionality, and never-counts-against-you framing; an eviction-history question is deferred to pilot data since the active-case question already drives the time-critical legal-aid offer; and the what-worked question stays "pick the biggest one" deliberately.

2026-07-28 · v0.27.0 · instrument 0.11.0-pilot

Change: Two additions, both from practitioner Elisa. First, a pets question, adopted after evaluation rather than as-suggested: "Do you have a pet or animal that stays with you?" with one follow-up about assistance-animal paperwork. Pets are among the strongest housing-search barriers, and people turn down placements rather than leave an animal; under HUD Fair Housing guidance an assistance animal letter is a reasonable-accommodation path, so a missing letter now produces an offer-only support to get one early, and the fact appears on the card. Pets can never change any determination; that is enforced by the automated screening-out suite, not by promise. Count and kind stay out of the structured questions on purpose: the free-text note carries them, because a structured count would invite treating pets as a burden score. Second, her meta-point became policy: the Governance page now publishes "How feedback becomes change," the five tests every suggestion runs through (construct fit, necessity, question cost, the screening-out rule, evidence and traceability) and the four possible outcomes: adopt, adapt, answer without changing, or defer to pilot data.

Why: A feedback system that implements everything is as untrustworthy as one that ignores everything. The rubric was already how decisions were made; now it is written down where anyone can hold us to it.

2026-07-28 · v0.26.1 · instrument 0.10.0-pilot

Change: Two follow-ups from the practitioner round. The domestic-violence routing preference on a result now reads from the same gate-checked path the engines use, so if the violence answer is edited back to "no," a stale routing preference can no longer appear. And the children-not-with-you question gained help text distinguishing it from the reworded household question: one counts children who will live in the unit once housed, the other includes separated children who may not return, and it exists only so family-connection help can be offered, never required.

2026-07-28 · v0.26.0 · instrument 0.10.0-pilot · practitioner feedback round

Change: Twenty feedback flags arrived from working practitioners, with credit to Elisa and Daniel Gore, and most were adopted. Wording rewrites on fourteen questions: the medical question now clearly means an emergency at this moment; "just before this" now names the period it means; "a permanent place of your own" no longer assumes everyone has had one; "not meant for living" became "a place not meant for people to live in" everywhere; the children question now counts children who would return once housed, not only those present tonight; military service now includes boot camp or basic training; income dropped "from any source"; the stable-housing and stay-with-someone questions dropped assumptions that confused people; the functional-support question got shorter with open-ended examples; the ID question defines "can get them" as within a few days without money or travel. Structural changes: the violence question is now present-experience based ("Is someone hurting you...") with a new follow-up, "Do you want help leaving this situation?", and HUD Category 4 respects an explicit "not right now" while treating "yes" and "not sure" as attempting to flee; the emergency-room question moved from a six-month to a twelve-month window so time periods stop jumping around; the about-to-lose-housing question is no longer asked of people already on the street or in shelter, which also stops prevention advice from reaching unsheltered people; a progress bar now shows "Question N of about M"; "You can skip this" became instructions that actually match the interface; safety questions carry an inline leave-quickly link after a mobile report that the floating button was missed; and a veteran "yes" now suggests a Veterans Service Office visit for disability benefits.

Answered rather than changed: Date of birth stays uncollected in the public tool (it is identifying; the HMIS-assisted mode will confirm it instead). The suicide question stays limited to attempt history because a public tool with no clinician present is the wrong place for ideation screening; 988 remains on every path. The two safety questions stay separate because danger-at-this-moment and an unsafe situation are different facts with different consequences. Each answer is recorded in the Evidence Register.

Why: This is the standing challenge doing its job. Practitioners who interview people for a living found ambiguities no amount of desk review would have caught, and the instrument is versioned so every one of these changes is traceable.

2026-07-27 · v0.25.2 · instrument 0.9.0-pilot

Change (from a feedback flag): The back-to-top button was floating 60px above the bottom edge on every page except the assessment, because it always reserved space for the "Leave quickly" button that only the assessment has. It now sits even with the Feedback button, and lifts out of the way only on pages where "Leave quickly" actually exists. Reported through the site's own Feedback button, which is exactly what it is for.

2026-07-27 · v0.25.1 · instrument 0.9.0-pilot

Mistake (caught by the instrument owner): Glossary popups were eating spaces: "HUD homeless definition" rendered as "HUDhomeless definition" because wrapping a term inside a flex-laid-out label splits the text and flex layout swallows the whitespace between the pieces. Fixed at the root: the annotator now refuses to split text directly inside any flex or grid container, and the affected labels wrap their text in a plain span. A full visual pass of every page at phone, tablet, and desktop widths followed: no horizontal overflow anywhere, and two more defects found and fixed (the Documentation needed checkboxes lacked their list styling, and the Do-next count said 4 items while the visible list held 2 documents; the counting-rules entries live in the drawer, and history evidence was reclassified as a document to collect).

Also: The visit counter was reset to zero after our own automated testing inflated it; the completed-assessments count was unaffected. Automated browsers that identify themselves are now excluded from counting.

2026-07-27 · v0.25.0 · instrument 0.9.0-pilot

Change: The case-manager view was restructured around one idea from external review: the Assessment Card is the product, so it now leads the page, open, followed by the two things a busy worker actually needs: the Do-next list and a checkable Documentation needed list. Everything explanatory sits under a "Want more detail?" divider, collapsed: definitions, support planning, options, supports, reassessment, and the reasoning, now titled "Audit trail (N rules fired)" because that is what it is for: appeals, QA, and governance, not daily workflow. The at-a-glance summary table was removed by owner ruling: with the card first, the table repeated the card's opening screen. Working mode and audit mode are now visibly different depths of the same page.

Why: Every reader was getting the engineer's version. A case manager wants "what happened, what do I do, what documentation do I need" and should not have to scroll past the computation to find it. The depth still exists, one click away, and printing still includes everything.

2026-07-27 · v0.24.1 · instrument 0.9.0-pilot · chronicity rules r0.4.0

Change (a determination changed): When someone reports 12 or more cumulative months homeless but the number of separate occasions is unanswered, the chronicity result is now "unable to determine" instead of "likely meets, documentation incomplete." The reasoning names the occasion count as the deciding item: one continuous occasion meets, four or more meet, only exactly two or three do not.

Why: The instrument owner asked for the corpus rulings to be double-checked against documentation. The HMIS Reporting Glossary's own chronic-status decision table returns "missing" when the times-homeless count is missing, regardless of months. HEAT had ruled "likely meets" there; that was a deviation from the field-standard handling, so it was flipped the same day. Rules are versioned; this is r0.4.0, and every result records the rules version that produced it.

2026-07-27 · v0.24.0 · instrument 0.9.0-pilot

Change: The landing footer now shows how many page visits and completed assessments the site has had since 2026-07-27. The counters are bare totals: each page load and each finished real assessment (never the sample) adds one to a count. The request carries nothing else. No answers, no identifiers, no cookies, no fingerprints, nothing about any person. The privacy statement was tightened to say exactly this, and the site never depends on the counter service: if it is unreachable, nothing on the page breaks.

Why: Knowing whether anyone uses the tool is legitimate; watching people is not. This is the smallest measurement that answers the first question without doing the second.

2026-07-27 · v0.23.4 · instrument 0.9.0-pilot

Change: The chronicity scenario corpus (54 cases) completed review. 51 expectations were verified line by line against the verbatim sources: 24 CFR Part 578, the CPD-14-012 FAQ, HUD's chronic-definition flowchart and final-rule webinar, the 2023 Institutional Stays guidance, the HMIS Reporting Glossary decision table, and the LSA programming specifications. The remaining 3 cases are policy choices the documents cannot settle; the instrument owner ruled on each, all confirming encoded behavior: 12+ months with an unknown occasion count stays "likely meets" with the count flagged for verification; a single lone answer never rules someone out; and continuous duration uses the HMIS-style month comparison rather than calendar-months-touched. Full record in the repository rules document.

Why: The corpus was labeled "pending expert review" since it was written. It is now reviewed, and the review method is documented so it can be checked too.

2026-07-27 · v0.23.3 · instrument 0.9.0-pilot

Change: The case-manager card headline for someone without shelter now states the fact directly: "Unsheltered tonight" or "In emergency shelter tonight," dropping the "Housing crisis active" label that preceded it. Owner ruling, adopting an external reviewer's suggestion: the label competed with the fact, and the red band already carries the urgency. No determination changed.

2026-07-27 · v0.23.2 · instrument 0.9.0-pilot

Mistake: Term expansion was inconsistent. In "SSVF, HUD-VASH, HCHV" only HUD-VASH got a definition popup. Root cause: the glossary annotator stopped after the first matched term in each sentence, HCHV was missing from the glossary entirely, and the Evidence, Governance, and Change log pages never loaded the glossary at all.

Fix: The annotator now keeps scanning after each match, so every defined term in a sentence gets its popup. Added definitions: HCHV, GPD, VAWA, victim service provider (and VSP), SNAP, CFR, TH, DV, and the Federal Register citation for the chronic homelessness rule; expanded the HUD-VASH definition to state what the acronym means. The glossary now loads on every page. One-off citations were expanded in the source instead: "PIT GBV fact sheet" is now written out, "ADL/IADL battery" and "HUD TA reviewer" carry their expansions inline.

2026-07-27 · v0.23.1 · instrument 0.9.0-pilot

Change: In the chronic homelessness drawer, the documents to collect stay visible, but the rules about how HUD counts that documentation (the required documentation order, self-certification limits, and institutional-stay credit) now fold behind "How HUD counts this documentation (the fine print)". An unrecognized checklist item defaults to visible, never hidden, and printing opens every fold so the printed record is always complete.

Why: An external reviewer's only remaining verbosity note: everything in that section is accurate and belongs, but not everything belongs expanded by default. What to collect is today's work; how it is counted is reference material.

2026-07-27 · v0.23.0 · instrument 0.9.0-pilot

Change: The case-manager page stopped repeating itself. The same three verdicts used to appear three times (summary, card, drawers) and the next steps twice; now the at-a-glance summary is the screen's summary, the Do-next list is the action list, and the full Assessment Card lives in its own drawer as the print-ready record (printing opens it automatically). Every summary row carries an icon and a thin color-coded bar (red for active exposure, amber for actions needed, cyan for pathways, green for strengths) so color signals meaning without coloring the words. Every drawer now says in one muted line what is inside it, a jump bar goes straight to the Assessment Card, Options, Documentation, or Reasoning, and the view opens with one instruction: read the summary, work the list, open a drawer only when you need the why.

Why: A worker with seventeen people waiting will skip anything that looks like homework. One summary, one list, everything else on demand.

2026-07-27 · v0.22.0 · instrument 0.9.0-pilot

Change: A round of external-review refinements across every surface. The case-manager view now opens with a 30-second at-a-glance block (status, chronicity, population, support level, discuss-first, documentation count, biggest strength, biggest barrier) before the card, and the Do-next sheet is split into Today and Upcoming with the person's past housing success leading Upcoming. The support-planning drawer now states its conclusion in one plain sentence with the evidence behind an "Explain why" fold. The reasoning trace reads strongest-first (the record keeps computation order). Three questions were refined as new versions: "Looking back, what made it possible for you to stay housed?" with "a place that felt safe and stable" and "a routine or steady schedule" among the choices; the support question now includes appointments; the crisis-visit question reads more conversationally. The STOP page explains why continuing exists. The green zone label "On track" became "Next step ready" (nothing about sleeping outside is "on track"). "Treat this like a medical record" became "Treat this as confidential" (it is a housing assessment, not a medical record). And the front page now leads with the one sentence the whole product serves: every determination explains itself.

Why: External review round six, screenshots included. Held deliberately, with its concurrence: mortality-first construct stays until pilot data justifies changing it; age threshold stays at 60; the STOP page's continue friction stays as is.

2026-07-27 · v0.21.0 · instrument 0.8.0-pilot

Change: The instrument's first strengths-based question, by replacement rather than addition: "Was there ever a time when you had housing that worked well for you for six months or longer?" and, if yes, "What helped the most?" It replaced the employment question, whose signal the income question already carried everywhere it was used. The answer feeds support planning only: it appears on the card as a named strength, adds a build-on-what-worked offer, and never touches prioritization. Results also gained an optional free-text box: "Anything you want the housing help office to know?", printed on the page in the person's own words, never scored, never analyzed, never saved or sent.

Why: External review: nearly every assessment question asks what is wrong; one should ask what already works, because what happens after prioritization is where people succeed or fail. Deferred from the same review, deliberately: a barrier self-attribution question (overlaps existing items; sensitive self-labeling), prior-community-housing (the HMIS-assisted phase will confirm it instead of asking), and a four-point rewording of the support question (held for clinical review rather than churning a scored item).

Mistake, again: For a few minutes this page's history wrongly showed old entries with the new instrument version, from the same careless version-update we logged on this page at v0.13.0. Restored, and the update script is now forbidden from touching this file's history. Repeating a logged mistake is worse than making it.

2026-07-27 · v0.20.0 · instrument 0.7.0-pilot

Change: Answering yes to "are you in danger right now" or the urgent-medical question now stops the assessment immediately with a full-screen red page: "Stop. Get help first.", with a Call 911 button, 988, and two honest choices: "I am safe enough at this moment, continue" or "Leave quickly (erases everything)." Nothing entered is lost while the page waits. If the person continues, a red reminder strip stays on every remaining screen.

Why: A tool should not calmly ask question two of twenty-five after someone says they are in danger. But it must interrupt, not eject: a survivor sitting safely in an advocate's office is describing her life, not this minute, and for her the assessment is the way out. Forcing people out of the housing line for saying yes would teach the most endangered people to say no. Interrupt, offer help, respect their answer.

2026-07-27 · v0.19.0 · instrument 0.7.0-pilot

Change: Three fixes for the people actually holding the page. The client view now speaks plain words: "housing help office" instead of our field's "access point" (explained once, in parentheses), warm concrete steps, and a reminder that answers can always be changed and nothing is held against anyone. The case-manager view gained a "Do next" order sheet at the top: every output distilled into a short checkable action list (tonight's shelter check, what to raise first, the first documentation item, offers to make, the reassess-by date), modeled on medical order sheets; the drawers below keep the depth. And the openness claim now says exactly what is true: everything that matters is public on this site; the software itself is proprietary.

Why: A client should never need our vocabulary to get help, and a busy case manager needs orders, not a chart to excavate.

2026-07-27 · v0.18.1 · instrument 0.7.0-pilot

Change: A full audit of every claim this site makes, with each claim either backed by working machinery or reworded to what is true. Backed: continuous-integration tests now genuinely run on every change; the feedback form gained an optional name field so "credited" is real; printed records genuinely expand every section. Reworded: "the complete logic is published" became what is actually public today (every result's full reasoning, every question with its evidence; the open repository awaits a license decision); "211" is now "211 in most areas"; the victim-services route acknowledges some communities have no such provider; treatment information, not treatment, is what is ready on demand; "about ten minutes" became the verifiable "about 25 questions"; Category 1 is what programs require, not a door that opens.

Why: A tool that asks to be trusted on determinations cannot round up on anything else. No claim without machinery or evidence behind it.

2026-07-27 · v0.18.0 · instrument 0.7.0-pilot

Change: The case-manager record was a wall of nine stacked cards repeating what the Assessment Card already said. Now the card is the document, and everything else is a scannable drawer: one row per topic with its icon and verdict chip visible, open on demand (options to discuss starts open; everything prints expanded). Background pills now carry icons and color: population pathways in cyan, actionable barriers and exposure in amber. The brand mark gained a chimney, because a home should look warm.

Why: Nobody reads a wall. A record you can scan in five seconds and drill into in one click is what busy access-point staff actually need.

2026-07-27 · v0.17.0 · instrument 0.7.0-pilot

Change: The safety screen is now exception-only in every view. If a 911-type emergency is reported, a red "Get help now" banner leads the page and the card, with 911 and 988 in it. If not, the page says nothing about it: no "no immediate emergency identified" text, no neutral chip, nothing. The card leads with the person's actual housing status. The only non-emergency case that still surfaces is when the safety questions went unanswered, so a case manager knows to revisit them.

Why: Telling a person in a housing emergency "no immediate emergency identified" is a contradiction. Silence about the absence of one emergency, loud clarity about the presence of another. The determination itself is unchanged and remains in the record and reasoning trace.

2026-07-27 · v0.16.1 · instrument 0.7.0-pilot

Mistake: The assessment card's most prominent element was a green checkmark reading "No immediate emergency identified", on a person sleeping outside in month 13. The safety screen only checks for 911-type emergencies, so nearly everyone got a green all-clear as their headline. The determination was correct; the presentation was misleading, and it contradicted the intensive support level printed right below it.

Fix: The card's status band now composes the safety screen with tonight's housing reality: unsheltered or in shelter shows a red "Housing crisis active" band; a facility stay, imminent housing loss, or doubled-up shows an amber caution band; green is reserved for people not in a housing crisis. The safety-screen result is stated underneath as "No 911-type emergency reported." No determination changed; only what the headline honestly says.

2026-07-27 · v0.16.0 · instrument 0.7.0-pilot

Change: Results now have two views with a toggle: "For the client" (written to the person: their situation, their next steps, ready to print and hand over) and "For the case manager" (the professional record: determinations, documentation checklist, reasoning, reassessment). The starting view follows who is filling it out; either can switch any time. Section icons throughout the results.

Why: One page cannot speak to two readers at once. A case manager reading "you told us you are staying outside" on their own screen is jarring; a client handed a page of rule IDs is worse. Same facts, two documents.

2026-07-27 · v0.15.0 · instrument 0.7.0-pilot

Change: Visual and honesty pass. New logo and favicon, section icons, back-to-top button. More important: a reality-check of every operational statement. The results page no longer implies a shelter bed exists tonight; it now says to ask an access point or 211, that HUD policy bars rationing beds by severity where they exist, and that beds are never guaranteed. "Crisis response is immediate" became "crisis services are never held behind a coordinated entry waitlist; what actually exists tonight depends on your community." The options list now states plainly that HEAT cannot see local openings.

Why: This tool is used where the rubber meets the road. A suggestion is honest; a promise about tonight's capacity is not ours to make.

2026-07-27 · v0.14.0 · instrument 0.7.0-pilot

Change: Two new public pages. The Evidence Register: for every question, the evidence behind it, why it stays, alternatives rejected, known risks (including where a neutral-looking fact could act as a proxy), and honest review status. The Governance page: how decisions are made, checked, corrected, and challenged, plus open review-board seats. The register is generated from the instrument itself and the build fails if any question lacks an entry.

Why: External review advice we agree with: the long-term goal is a process that convinces people even if they do not trust the designer. The governance is the product.

2026-07-27 · v0.13.0 · instrument 0.7.0-pilot

Change: Two questions reworded as new versions after external review: the cold-injury question now says "because you could not get warm" (a mountaineering frostbite from years ago is not homelessness risk), and the overdose question adds "or did someone have to revive you" (naloxone from a friend often is not counted as emergency help). New facility question: expected discharge within days now triggers plan-before-discharge urgency. Rule thresholds (4 crisis contacts, 12 months, 6 months) moved into editable instrument data with published rationale, and every rule now carries an evidence tier (direct, indirect, expert synthesis). Results say "Determination quality: Complete / Limited by missing information" instead of a bare completeness label.

Why: An external reviewer challenged the "ever" scope, recall framing, threshold justification, and rule-interaction validation. They were right on all four. We also added property tests proving no combination of answers can behave pathologically: risk answers can only raise, declines never count as anything, supersets never rank lower.

Evidence: Round-3 external review; docs/SUPPORT_NEED_RULES.md carries the full per-rule rationale.

Also fixed on this very page: a version-string update accidentally rewrote the version labels of two historical entries below before deployment. Restored from the record. A changelog that edits its own history is worse than no changelog.

2026-07-24 · v0.12.0 · instrument 0.6.0-pilot

Change: Soft-support offers added from government clinical guidance: naloxone kit after an overdose disclosure, unconditional treatment-access information, a concrete follow-up plus trusted-person reconnection after a suicide-attempt disclosure, medical respite after a health event or facility exit. Discharge guidance now directs contact with the facility's discharge planner.

Why: SAMHSA, NIMH, CMS, and HRSA guidance all pair risk identification with a concrete protective offer. A hotline reference alone is not enough.

Evidence: SAMHSA Overdose Prevention Toolkit; SAMHSA SAFE-T; SBIRT; NIMH ASQ; CMS discharge planning conditions; HRSA-funded medical respite standards.

2026-07-24 · v0.11.0 · instrument 0.6.0-pilot

Change: The support-planning construct was rebuilt around mortality evidence. Three health event-history questions were added (cold injury, overdose, suicide attempt), each skippable, each shown on screen only and never printed. Income and employment were removed from the vulnerability determination entirely.

Why: HEAT's purpose is identifying who is most likely to die if left in homelessness. Event-history binaries are the strongest known markers; income is a program-fit fact, not vulnerability, and carries disclosure bias.

Evidence: Hwang 1998 (JAMA); Roncarati 2018 (JAMA Internal Medicine); the LA CES triage-tool research report; HUD CE Equity Initiative guidance.

2026-07-24 · v0.10.0 · instrument 0.5.0-pilot

Change: The safety screen was reworded to describe a situation ("someone is hurting you, scaring you, or making you do things you do not want to do") instead of naming violence categories, and a consent question now lets survivors choose who helps them.

Why: HUD trauma-informed guidance: behavior-based questions identify people who do not label their experience as violence, including trafficking. Routing must be the survivor's choice.

Evidence: HUD Trauma-Informed Care guidance; CE and Victim Service Providers FAQs; VAWA 2022 requirements.

2026-07-23 · v0.9.2 · defect, honestly logged

Mistake: We shipped a rendering defect where every answer option could look already-selected on some system-theme combinations. Nobody's answers were affected (nothing was pre-selected in the data), but it looked broken and it was our fault.

Root cause: The page's color-scheme did not follow the chosen theme, so native form controls rendered in the wrong palette.

Fix: Radios are now custom-drawn and identical everywhere; visual QA now covers both themes on both OS appearances before any release.

2026-07-23 · instrument 0.2.0-pilot · wording defect caught pre-pilot

Mistake: Early history questions asked about time "without your own housing," which would have counted doubled-up time toward chronic homelessness and inflated determinations.

Fix: History questions now ask specifically about streets, shelters, and safe havens, matching the federal definition. Caught during the primary-source verification pass, before any real use.

Evidence: 24 CFR 578.3; Federal Register preamble (80 FR 75791).

Want to influence this page? Use the Feedback button anywhere on the site. Professional disagreement gets its own category and every case is reviewed.