Rulebook 1.0.0

Every threshold, and where it is applied

The same record and the same situation produce the same verdict every time, and a verdict is only worth reading because it fails closed rather than in the venue's favour. Those are claims. A claim nobody can check is a slogan, so here is the whole thing — the arithmetic, the constants, and the file that implements each one.

A rulebook says how a record is read. It says nothing about how much record there is, and on that the honest answer is: not much, and here is exactly how much — the state of the record publishes our own coverage numbers and what happens when a venue sends a document.

26
rules published
23
of them our position
6
judgements, kept out

Two kinds of number, kept apart

Calling everything a rule would be the fastest way to lose this argument. The first person to ask why a multiplier is 0.8 would decide the rest of the book is the same thing wearing a formula, and they would be wrong — but that is the inference they would draw.

Computed
A comparison or a piece of arithmetic. Nothing to trust us about: more guests than the drawn layout holds is more guests than the drawn layout holds. 3 of the 26 rules here are this.
Stated position
Deterministic in the code, but the constant or the policy is a judgement rather than a fact — the last eight percent of a room, two blockers, half a point for something a person said. Published with the number and the reasoning so you can disagree with it precisely.

No rule here cites an outside authority, because there is no published standard for how many people fit in a barn or for when a sentence on a marketing page becomes a fact. The third kind of number — taste — is deliberately absent, and is listed at the bottom so you can see exactly what is being kept out.

Evidence

What class a piece of information is held at, and what that class is allowed to do.

Four classes of confidence, never blended

EVID-01

Stated position

Every line on a brief carries which of four things it is. Nothing on this site is presented at a confidence it does not hold.

documented — the venue issues it in writing stated — someone at the venue said it patterned — the typology behaves this way, or the venue's own copy says so absent — no source of any class addresses it
Needs
The source class recorded against each finding
Where you meet it
Any finding, anywhere · Sources and confidence · Record depth
Our position
Our position. A record that holds a licence and a record that holds a phrase off a home page are not the same record, and one label covering both would make the stronger one worthless. The classes never average and never combine into a single grade.
What it does not claim
Documented is the strongest class this instrument holds and it is still not a promise about your date. A document describes practice at the time it was written.

src/lib/venues/types.ts:53-81

Absence is recorded as absence

EVID-02

Stated position

If nobody has answered something, the brief says nobody has answered it. It is never filled in from the venue type, from a similar property, or from what would be normal.

no source of any class addresses the point → status unknown, source not-established
Needs
Which layers the record actually speaks to
Where you meet it
By topic · Capabilities not established · Still to confirm with the venue
Our position
Our position, and the one the rest of the book rests on. A blank field is the most common thing in this catalogue, and the cheapest error available is to read it as a yes.
What it does not claim
An absence is not a finding against the venue either. It says this instrument does not know, which is a different thing from the venue lacking it.

src/lib/venues/types.ts:79-81

Evidence readiness

EVID-03

Stated position

The share of what is on file that is actually attributable to the venue. A high number means the record is well sourced, not that the venue is good.

readiness = round(((documented + stated x 0.5) / findings) x 100)
Needs
Confidence class of every finding on the record
Where you meet it
Information on file · Record depth · Comparison matrix
Our position
Our position. Documented counts whole because it survives the person who said it; stated counts half because it does not; patterned and absent count nothing, because a typology and a blank are not evidence about this property.
What it does not claim
It measures the record, not the room. A venue nobody has asked much about can score the same as one that answered everything, if both were asked little.

src/lib/venues/evidence.ts:93-95

A finding with no authored trail gets a derived one

EVID-04

Stated position

Older records show an evidence trail marked as derived from their source class rather than as something the venue said.

first-party → documented · operator-stated → stated · third-party → patterned · marketing-claim → patterned · not-established → absent
Needs
The finding's source class
Where you meet it
Evidence trail · By topic
Our position
Our position. Records authored before the evidence model still have a source class, and mapping it downward is honest where inventing an observation would not be. Marketing copy maps to patterned, never higher.
What it does not claim
A derived trail carries no observation the venue made. It is labelled as derivation everywhere it appears.

src/lib/venues/evidence.ts:33-75

Percentages are floored

EVID-05

Stated position

Nothing here is ever rounded up. A figure you read is a floor.

pct = floor((documented / findings) x 100)
Needs
Documented findings · Total findings
Where you meet it
Provenance reading · Record depth
Our position
Our position. Rounding half upward would report a record with 49.6% documented evidence as half documented, and every rounding on this site would then be one that flatters the record.

src/lib/evaluation/depth.ts:81-86

First-party only withholds rather than resolves

EVID-06

Stated position

Switch to first-party only and almost nothing survives. That is the state of the record, not a fault in the filter.

mode = first-party → keep findings where source = first-party, withhold the rest · capabilities kept only where provenance = documented · usableSeated / usableStanding kept only where a first-party capacity finding exists · readSeated / readStanding = null
Needs
Evidence mode · Source class of every finding · Capability provenance
Where you meet it
Evidence sources counted · Every brief, when the mode is on
Our position
Our position. A strict reading has to remove things, not reinterpret them: everything it declines returns as an open question rather than as a negative finding.
What it does not claim
No figure on a record is pinned to a single source, so the capacity test is the honest one available: does any first-party finding on this record address capacity at all.

src/lib/evaluation/depth.ts:268-299

Capacity

How many people a room is established to hold, and what happens when nobody knows.

Usable and read are different fields

CAP-01

Stated position

A number a venue publishes about itself never becomes the number this instrument sizes your event against.

layout proved it → usableSeated / usableStanding venue published it → readSeated / readStanding neither is ever copied into the other
Needs
Where the figure came from
Where you meet it
Capacity by format · Quick facts · Every room on record
Our position
Our position. A posted figure is the room as described by the party trying to let it. The field named usable means a drawing with service aisles and egress paths on it established the number, and a pass is only ever read from that field.
What it does not claim
A read figure still carries the sentence, the page and the date it was read, so it can be judged. It is visible; it is not authoritative.

src/lib/venues/capacity-read.ts:24-27, 426-453

Headcount above the usable figure

CAP-02

Computed

More guests than the drawn layout holds. Nothing about that is arguable.

guests > usable → blocker capacity-exceeded
Needs
Your headcount · The layout-proven figure for your format
Where you meet it
Quick facts · Blockers
Basis
Comparison. The verdict is the sign of the difference.

src/lib/evaluation/engine.ts:202-209

The margin of error is eight percent

CAP-03

Stated position

Sitting inside the top eight percent of a room's usable figure is flagged as tight rather than blocked — it can work, and any late change removes the margin.

guests > usable x 0.92 → blocker capacity-tight
Needs
Your headcount · The layout-proven figure for your format
Where you meet it
Quick facts · Blockers · Capacity by format
Our position
Our position. A usable figure is an estimate carrying furniture, service routes and a fire officer's opinion, and the last eight percent of it is the part that disappears when four people are added or a band takes a corner.
What it does not claim
Tight is the only blocker excluded from the verdict arithmetic (VERD-01). It is a warning about your headcount, not a finding about the room.

src/lib/evaluation/engine.ts:210-217

A published figure can contradict a headcount, never clear one

CAP-04

Stated position

A room sized only by its own website is unmeasured, not sized. Either way it cannot qualify.

no usable figure and a read figure exists → guests > read → blocker capacity-read-exceeded guests <= read → blocker capacity-read-only both also raise an unknown capacity finding
Needs
Your headcount · The figure read off the venue's own pages
Where you meet it
Quick facts · Blockers · Capacity by format
Our position
Our position, and the asymmetry is deliberate. Sitting under a marketing number establishes nothing, because the number was written to be attractive. Sitting over one is a contradiction the venue has published about itself, and worth naming.

src/lib/evaluation/engine.ts:218-245

No figure of any class is a blocker

CAP-05

Stated position

If nobody has established how many people fit, the brief says so and the room does not qualify for your headcount.

usable = null and read = null → blocker capacity-unknown
Needs
The capacity fields on the record
Where you meet it
Quick facts · Blockers · Every room on record
Our position
Our position. Most of this catalogue arrived from a mapping listing with no capacity of any class, and the alternative to blocking is guessing from the venue type.

src/lib/evaluation/engine.ts:246-254

Capability

What clears something you marked as required, and what withdraws a claim.

A hard constraint clears only on documented or stated

CABL-01

Stated position

Marking something as required means a claim about it has to be attributable. A yes nobody is attached to reads as a question, and a question is conditional rather than qualified.

constraint required and capability asserted → provenance in (documented, stated) → cleared otherwise → blocker, plus an unknown finding recording that it is asserted rather than established
Needs
Your hard constraints · The record's capabilities · Capability provenance
Where you meet it
Blockers · Arrival to leaving · By topic
Our position
Our position. The list of capabilities records that something was asserted, not who asserted it. The reason a constraint exists — one unestablished step on the guest route can exclude people you invited — is not answered by a sentence on a marketing page.
What it does not claim
Stated clears a constraint and is still only what someone said. The brief asks you to get it in writing in the same breath.

src/lib/evaluation/engine.ts:128-183

A capability read off the venue's own pages is stamped patterned

CABL-02

Stated position

Reading a venue's website makes a claim visible and attributable. It does not make it true, and it never clears a hard constraint on its own.

site copy establishes or confirms a capability → capabilitySources[capability] = patterned capability the pass never reached → left out of the map, which reads as unknown
Needs
Copy captured from the venue's own site · The capability the phrase names
Where you meet it
Capability source · Blockers · Sources and confidence
Our position
Our position. A venue's own page is the venue talking about itself: quotable, dated, and still a claim. Being absent from the provenance map means no source of any class was recorded, which is weaker still and is not the same thing.

src/lib/venues/capability-read.ts:517-521, 544-553

A venue's own denial withdraws the capability

CABL-03

Stated position

Where a venue's page says it is not accessible and the record said it was, the record loses the claim and the brief says which way it went.

site copy denies a capability the record asserted → capability removed, recorded as contradicted and marked withdrew
Needs
Copy captured from the venue's own site · The capabilities the record holds
Where you meet it
Capability source · Capabilities not established
Our position
Our position. Six hundred records carried an identical seeded trio of step-free route, accessible restroom and on-site parking that no source ever established. An unevidenced yes that the venue itself denies is worse than a blank: it is the one kind of error this instrument exists to avoid.
What it does not claim
A withdrawal is not a finding that the venue lacks the thing. It removes an assertion this instrument should never have carried.

src/lib/venues/capability-read.ts:17-22, 526-538

Some constraints are satisfied only by absence

CABL-04

Stated position

If you said you need no stairs, a record asserting stairs blocks — even where the assertion is weak.

constraint is negated and the capability is asserted at any class → blocker
Needs
Your hard constraints · The record's capabilities
Where you meet it
Blockers
Our position
Our position. Where the requirement is that something is not the case, an assertion of any class is the thing the constraint exists to avoid, so it blocks whatever carried it.

src/lib/evaluation/engine.ts:133-144

Verdict

How blockers become qualified, conditional or obstructed, and how rooms are ordered.

Blockers to verdict

VERD-01

Stated position

Qualified means nothing on record contradicts what you described. It does not mean the room is confirmed, and open questions still remain on a qualified record.

hard = blockers excluding capacity-tight hard = 0 → qualified hard <= 2 → conditional hard > 2 → obstructed
Needs
Every blocker raised against this situation
Where you meet it
Quick facts · Rooms list · Comparison matrix
Our position
Our position. Two open items are a conversation with a venue; three is a different venue. Qualified requires nothing outstanding at all, which is why it is rare.
What it does not claim
The count is of blockers, not of their severity. Two heavy blockers and two trivial ones both read as conditional, which is why the blockers are printed in full underneath.

src/lib/evaluation/engine.ts:314-320

A fail-closed finding becomes a blocker

VERD-02

Computed

Anything recorded as fail-closed appears in the blockers rather than in the list of things to read later.

finding.status = fail-closed → blocker carrying that finding's question
Needs
Finding status
Where you meet it
Blockers · What still needs confirming
Basis
Direct consequence. Fail-closed is the status for something that governs the decision.

src/lib/evaluation/engine.ts:300-309

Lead time against the pattern for the type

VERD-03

Stated position

Well under the usual booking window for this kind of venue raises a blocker. It is not a statement that the date is unavailable.

leadWeeks < typicalLeadTimeWeeks x 0.6 → blocker lead-time
Needs
Your lead time · The typical booking pattern recorded for the venue
Where you meet it
Blockers · Planner intelligence
Our position
Our position. Compressing a booking pattern by up to forty percent is a hurry; past that the vendor and permit chains behind the venue start to compress too, and they are the part nobody warns you about.
What it does not claim
The typical lead time is a property of the record, and on most records it is not established at all — in which case this rule never runs.

src/lib/evaluation/engine.ts:256-265

Operational burden against your tolerance

VERD-04

Computed

A venue that has to be built out further than you said you would build reads as a blocker. The difference is absorbed by someone, usually you.

venue.operationalBurden > situation.burden → blocker burden
Needs
The record's build level, 1 to 5 · The tolerance you stated, 1 to 5
Where you meet it
Blockers · Planner intelligence
Basis
Comparison of two stated levels.
What it does not claim
The comparison is arithmetic; the build level on the record is a judgement and is listed under what is deliberately not a rule.

src/lib/evaluation/engine.ts:267-276

List order

VERD-05

Stated position

Rooms are ordered by how much is unresolved, not by how good they are. This is not a ranking.

order = verdictBase + hardBlockers x 200 + risks x 12 + unknowns x 8 + (100 - readiness) x 0.4 verdictBase: qualified 0 · conditional 1000 · obstructed 4000
Needs
Verdict · Blocker count · Risk and unknown counts · Evidence readiness
Where you meet it
Rooms list · Strongest fits
Our position
Our position. The gaps between the verdict bases are wide enough that no amount of thin evidence can lift an obstructed record above a conditional one — ordering within a verdict is a convenience, ordering between verdicts is a rule.
What it does not claim
Two rooms a few points apart are not meaningfully different. The order is a reading queue, not a scoreboard.

src/lib/evaluation/engine.ts:351-356

Weighting

What your situation changes about the order, and what it never changes.

Status weights

WGT-01

Stated position

How heavily each class of finding pulls on the order things are shown in.

fail-closed 40 · watch 16 · unknown 12 · known 2
Needs
Finding status
Where you meet it
What still needs confirming · By topic · Impact marks
Our position
Our position. An unknown sits close to a watch on purpose: not knowing whether a room has a curfew is nearly as expensive to your evening as knowing it has a difficult one. A known item still carries weight, because it still has to be restated in writing.

src/lib/evaluation/engine.ts:87-92

Relevance multiplier

WGT-02

Stated position

Your situation changes the order findings appear in. It never changes what they say or how strong their source is.

weight = STATUS_WEIGHT[status] x (1 + hits x 0.8) hits = tags on the finding your situation engages
Needs
Finding status · Finding tags · Your occasion, priorities and constraints
Where you meet it
What still needs confirming · Why this is here
Our position
Our position. Each thing you said about your evening raises a related finding by eighty percent of its base weight, which is enough to bring it to the top of a long list and not enough to let three soft matches outrank one fail-closed item.
What it does not claim
A finding nothing in your situation touches is carried at base weight, which is not the same as it being safe.

src/lib/evaluation/engine.ts:278-293

Relevance banding

WGT-03

Stated position

Which findings are labelled as bearing directly on the evening you described.

status = fail-closed or hits >= 2 → situation-critical hits >= 1 → situation-relevant otherwise → background
Needs
Finding status · Number of matched tags
Where you meet it
What still needs confirming · By topic
Our position
Our position. Two independent things you said touching the same finding is the point at which it stops being a coincidence.

src/lib/evaluation/engine.ts:282-287

Every unsettled item produces a question, and eight are shown

WGT-04

Stated position

The questions on a brief are generated from what is unresolved, so the count under them cannot disagree with the list above them.

questions = blocker questions + one per finding with status != known finding with no authored question → its label becomes one de-duplicated, first 8 shown
Needs
Blockers · Every finding not held as known
Where you meet it
Ask before booking · Site visit checklist
Our position
Our position. This once took only findings carrying an authored question, so a record could report eight unanswered items and then head a section “Ask these next: 0”. The cap at eight is a limit on what fits on a site visit, not on what is open.
What it does not claim
Eight is what is printed. The full set of open items is in the brief above it, and is usually longer.

src/lib/evaluation/engine.ts:339-349

Record

What a record is allowed to infer about itself when nothing was supplied.

A typology pattern can never resolve to a pass

REC-01

Stated position

Where a record has nothing of its own, you get what is typical of the type, explicitly labelled as typical and counted as an open question.

record carries no first-party or operator statement → one finding per layer, status unknown, source third-party, confidence patterned
Needs
The venue type · Whether the record holds any statement of its own
Where you meet it
By topic · What still needs confirming
Our position
Our position. What barns are usually like is real information and it is not information about this barn. Holding it at unknown keeps the engine failing closed while still telling a planner what to expect to have to ask.
What it does not claim
The pattern text itself is editorial — see what is deliberately not a rule, below.

src/lib/venues/patterns.ts:123-148

An inferred typology is an open field, not a claim

REC-02

Stated position

Where the venue type was worked out from the name rather than from a venue document, the brief says so and lists it among the things to confirm.

venue type inferred from the record name → openFields gains “Venue typology” and the provenance line says the type was inferred
Needs
The record name and locale
Where you meet it
Still to confirm with the venue · Standing limitation
Our position
Our position. The repair pass reads a name and guesses a type so the record can be grouped and read at all. That guess drives the typology patterns above, so it is published as a guess rather than absorbed silently.

src/lib/venues/repair.ts:73-76, 418-427

What is deliberately not a rule

These are ours, they do real work, and they are not measurements. Publishing them as rules would make every rule above look like one too.

Answered and confirmation-work scores

Two 0-100 figures: half the share of situation-weighted findings a record can currently answer plus half its core-field coverage, and a confirmation workload assembled from unresolved weight and build level.

They are useful for deciding what to read next and they are made of our own weights. Printed as rules they would present an editorial reading as a measurement. Neither is a quality score, and both are labelled that way wherever they appear.

The build level on each record, 1 to 5

Whether a room is turnkey or a full build-out by the planner, held as a single number per record.

The comparison against your stated tolerance is arithmetic (VERD-04). The number it compares is somebody's read of how much a venue makes you produce, and no two planners would land on the same figure for every room.

The typology patterns

What barns, ballrooms, galleries and wineries are usually like, per layer, for records that hold nothing of their own.

It is a compiled reference written from outside the venues. The rule that keeps it at unknown is published (REC-01); the prose it holds is ours and is not a finding about any property.

Whether the room is beautiful

Nothing. There is no field for it and no score containing it.

It is the first thing anyone actually decides on and the last thing an instrument like this could tell you. We hold no photograph of any property in this catalogue, so we would be scoring a name.

Whether the room feels right for the evening

Nothing. The occasion you state re-weights which findings surface; it never scores atmosphere, and no finding says a room suits a wedding more than a wake.

That is the judgement you are making, and the reason to visit. This instrument exists to make sure the room can hold the evening, so that the judgement is the only thing left to make.

Value for money

Cost structure lists the lines that exist, the extras a quote still has to cover, and the questions a price has not answered. It never totals them into a verdict.

A low total with blanks left in it is an incomplete picture rather than a bargain, and we cannot see your alternatives. Naming what is missing from a quote is work an instrument can do; deciding whether the evening is worth it is not.

Corrections

A rule that is wrong is wrong the same way every time, across every record — that is the cost of being deterministic, and the reason this page exists rather than a sentence claiming it. Cite the identifier rather than the wording; the wording can be improved, the identifier will not move. If something here does not match what you know from a real site visit, say so: hello@tangledthistle.blog.

Rulebook 1.0.0 · published 2026-09-03 · 26 rules