Five findings, one Division 08 to 28 seam.
This page is the unmodified output of one engine run against a fixture package that ships inside the repository. The command that produced it, the three input files, their hashes and the config hash are all below, so you can see what went in before you read what came out. Nothing on this page has been edited for presentation: every finding, quote, page number, authority, confidence value and recommended action is reproduced exactly as the engine emitted it.
The one concession to a web page: each rule's rationale runs to a full paragraph, and the panels below carry the first two or three sentences of it, cut at a sentence boundary. No sentence has been reworded, shortened or reordered. The complete text of every rationale is in packs/division_seam.json and is reprinted on the rules page.
This is a synthetic fixture, not a real client project. tests/golden/division_seam/ is a small hand-authored document set, one project manual of twelve pages holding two specification sections, built for one purpose: to drive every branch of the seam rules so the golden test can compare the output byte for byte. No district wrote it. No estimator bid it.
That matters in both directions. What this page does show is exactly what the output looks like, what the rules actually check, what evidence they carry and where they stop short. What it cannot show is how the rules behave on a real bid package, because a fixture written to make rules fire will always make them fire.
One command. Three inputs. One config hash.
Clone the repository, run this, and compare. The same three input files and the same two rule packs produce the same config hash and the same register on any machine, because nothing in the scoring path calls a model, reads a clock or reads the network.
$ bre run \ --packs packs/division_seam.json \ --packs packs/scope_boundary.json \ --model tests/golden/division_seam/spatial_model.json \ --documents tests/golden/division_seam/document_model.json \ --out out/ 5 risk item(s), 0 blocking. config_hash 27793629219d1c37 wrote out/report.md wrote out/engine_output.json
| Role | Path | sha256 |
|---|---|---|
| spatial_model | tests/golden/division_seam/spatial_model.json | a25377ade5533632 |
| document_model | tests/golden/division_seam/document_model.json | 2654c2dc31146cb1 |
| pack | packs/division_seam.json (division_seam 0.1.0) | ad42ce584cba42b1 |
| pack | packs/scope_boundary.json (scope_boundary 0.1.0) | d9fc9edc9358d3cc |
Hashes are shown to sixteen characters, the way the report renders them. The full config hash for this run is 27793629219d1c374b1ee630b608840308fbb3cb71da24bd263aac45b3d265e7; the command line prints its first sixteen. Change one character in one input file and the hash changes, which is the point: a register you cannot replay cannot be argued with.
Every item, with the evidence that produced it.
Five items, ranked by severity, then by the engine's internal exposure band, then by rule id. Select a row to open it. Each panel reads in one order: the finding, every citation the engine attached, the rationale from the rule pack, then the recommended pre-bid action. The cited authority, the exposure slot and the rule trace showing the conditions that were true when it fired follow underneath.
| # | Severity | Target | Rule | Source | Conf. | Review |
|---|---|---|---|---|---|---|
| 1 | High | D101 locking device | SB-020 | 08 71 00 p4 28 13 00 p8 |
0.93 | no |
| 2 | High | D103 rough-in | SB-022 | 08 71 00 p5 28 13 00 p9 |
0.9 | no |
| 3 | High | D104 power | SB-023 | 08 71 00 p3 28 13 00 p7 |
0.55 | review |
| 4 | Medium | D103 power | SB-024 | 08 71 00 p6 | 0.86 | no |
| 5 | Medium | D102 locking device | SB-021 | 08 71 00 p5 28 13 00 p9 |
0.91 | no |
Finding
Division 08 (section 08 71 00) and Division 28 (section 28 13 00) both specify the locking device at opening D101, and they do not require the same thing. Division 08 requires: Electric strike, fail secure. Division 28 requires: Electrified mortise lockset.
Extracted evidence
Provide an electric strike, fail secure, at Door D101. doc-manual · section 08 71 00 · page 4
Provide an electrified mortise lockset at Door D101. doc-manual · section 28 13 00 · page 8
Section headings, cited to show both sections were read
SECTION 08 71 00 - DOOR HARDWARE doc-manual · section 08 71 00 · page 3
SECTION 28 13 00 - ACCESS CONTROL doc-manual · section 28 13 00 · page 7
Every seam item cites both section headings as well as its substantive quotes. That is how the register shows the reading was two-sided: a finding about what Division 28 does not say is worthless if Division 28 was never opened.
Rule rationale
Two sections requiring two different devices at one door is the argument half of section 2.4's 'a duplicate buy or an argument'. Only one device gets installed, so one of the two sections is unmet the day the door is hung, and which one is unmet is decided by whoever ordered first rather than by the design. The estimator's exposure is the difference between the two products plus the frame preparation that suits only one of them, and an electrified lockset and an electric strike do not share a frame prep.
Recommended pre-bid action
File a pre-bid RFI asking the design team to delete one of the two requirements, and state in the RFI which one you carried. An answer that changes the documents protects the price; an answer given verbally does not.
Authority
CSI MasterFormat Division 08 and Division 28 boundary; AIA A201 General Conditions 1.2.1 on complementary documents and 3.2.2 on the contractor's obligation to report discovered discrepancies before proceeding
Exposure
Rule trace
- seam_determinable eq true
- carried_by_division_08 eq true
- carried_by_division_28 eq true
- requirements_conflict eq true
- effect raise_flag SEAM_REQUIREMENTS_CONFLICT, severity HIGH, category DOCUMENT_CONTRADICTION
- priority 20, conflict_group opening_division_seam, uncontested on this target
confidence 0.93 · review_required false · category DOCUMENT_CONTRADICTION · pack_id division_seam · pack_version 0.1.0
Finding
At opening D103, Division 08 assigns the rough-in to Division 28 and Division 28 assigns it back to Division 08. Each section has moved the work to the other side of the boundary, so no section carries it.
Extracted evidence
Conduit at Door D103 is work of Division 28. doc-manual · section 08 71 00 · page 5
Conduit at Door D103 is furnished under Division 08. doc-manual · section 28 13 00 · page 9
Section headings, cited to show both sections were read
SECTION 08 71 00 - DOOR HARDWARE doc-manual · section 08 71 00 · page 3
SECTION 28 13 00 - ACCESS CONTROL doc-manual · section 28 13 00 · page 7
Rule rationale
This is the failure Part 3 describes when it says each package routinely assumes the other side covers the seam, caught in the act and provable from the documents rather than argued from silence. The door hardware section reads 'work of Division 28' and the access control section reads 'furnished under Division 08', and both writers believed they had assigned the work rather than declined it. At bid time nobody prices it, because each estimator reads their own section and correctly concludes it is not theirs.
Recommended pre-bid action
File a pre-bid RFI quoting both sentences side by side and asking which division carries the work. Quote both. Asking the question with only one of them attached invites the answer that it is obviously yours.
Authority
CSI MasterFormat Division 08 and Division 28 boundary; AIA A201 General Conditions 1.2.1, the contract documents are complementary and what is required by one is as binding as if required by all
Exposure
Rule trace
- seam_determinable eq true
- each_division_assigns_to_the_other eq true
- effect raise_flag SEAM_CIRCULAR_ASSIGNMENT, severity HIGH, category SCOPE_GAP
- priority 10, conflict_group opening_division_seam
- won the conflict group on this target over SB-021, Both divisions carry the work
The suppression is in the run output, not hidden by it. SB-021 also matched at this target, and the rule trace records which rule displaced it, so a reviewer who expected a duplicate-buy finding here can see the rule that took its place rather than guess.
confidence 0.9 · review_required false · category SCOPE_GAP · pack_id division_seam · pack_version 0.1.0
This is the item the engine is least sure about. Confidence is 0.55 and review_required is true, the only true value in this register. The engine does not present this as settled. It presents it as a flag with the reading that produced it attached, because the whole argument is an argument from silence: no sentence in either section covers the power at this opening, and the evidence below is the two section headings and nothing else.
Read it as a question worth asking, not as a conclusion. Directive 2.4 is that where the documents do not determine something the engine produces a flag and not a guess, and this is what that looks like in the deliverable.
Finding
Neither Division 08 (section 08 71 00) nor Division 28 (section 28 13 00) specifies the power at opening D104, and no other division is named for it. Both sections were read.
Extracted evidence
Section headings only. There is no substantive quote, and that is the finding.
SECTION 08 71 00 - DOOR HARDWARE doc-manual · section 08 71 00 · page 3
SECTION 28 13 00 - ACCESS CONTROL doc-manual · section 28 13 00 · page 7
Both headings are cited because the claim is that both sections were opened and neither of them says anything about power at D104. Without those two citations the item would be an assertion about documents nobody can prove were read.
Rule rationale
Section 2.4 puts it plainly: neither means somebody eats it. Nobody has priced the item, so at award it is a change order or it is absorbed by whichever trade is standing closest to the opening when the gap is found, which in practice is the one already pulling cable. This is the most inferential rule in the family and its guards are the reason it is credible rather than noise.
Recommended pre-bid action
File a pre-bid RFI asking which division carries this item at this opening. Before bid the answer costs an email. After award it is a negotiation with a party who can point at their contract and be right.
Authority
CSI MasterFormat Division 08 and Division 28 boundary; public contract code pre-bid clarification practice; AIA A201 General Conditions 3.2.2 on reporting discrepancies and omissions discovered in the contract documents
Exposure
Rule trace
- seam_determinable eq true
- carried_by_division_08 eq false
- carried_by_division_28 eq false
- carried_by_another_division eq false
- effect raise_flag SEAM_UNASSIGNED, severity HIGH, category SCOPE_GAP
- priority 40, conflict_group opening_division_seam, uncontested on this target
The third condition is the guard that keeps this rule honest. Power taken from a Division 26 branch circuit is somebody's work, so the rule refuses to fire when any third division is named.
confidence 0.55 · review_required true · category SCOPE_GAP · pack_id division_seam · pack_version 0.1.0
Finding
The power at opening D103 cannot be placed on either side of the Division 08 to Division 28 boundary, because the only statement covering this work moves it to a party the documents do not name, so no division can be shown to carry it. The sections read for this opening were Division 08 and 28.
Extracted evidence
Power supply for Door D103 is by others. doc-manual · section 08 71 00 · page 6
Section headings, cited to show both sections were read
SECTION 08 71 00 - DOOR HARDWARE doc-manual · section 08 71 00 · page 3
SECTION 28 13 00 - ACCESS CONTROL doc-manual · section 28 13 00 · page 7
"By others" is the whole problem in three words. It is a scope marker that assigns work to a party the document set never names, so the seam is not resolvable from these documents at all.
Rule rationale
Directive 2.4: where the documents do not determine something, produce a flag and not a guess. This is the state section 2.4's four outcomes do not name, and it is not the same finding as neither division specifying the work. Neither is a conclusion, reached after reading both sections and finding nothing; undetermined is the admission that one of them was not in the document set, or that the only sentence covering this work moves it to a party the documents decline to name.
Recommended pre-bid action
Read the sections cited on this item by hand before relying on the seam analysis at this opening, and file a pre-bid RFI if the reading does not settle who carries the work.
Authority
CLAUDE.md directive 2.4 on surfacing uncertainty; CSI MasterFormat Division 08 and Division 28 boundary; AIA A201 General Conditions 3.2.2 on requesting clarification before proceeding
Exposure
Rule trace
- seam_determinable eq false
- effect raise_flag SEAM_UNDETERMINED, severity MEDIUM, category SCOPE_GAP
- priority 50, conflict_group opening_division_seam, uncontested on this target
This rule's condition is a single leaf rather than an all-group, and it is the lowest priority in the family, so it can only report what the other four have already declined to claim.
confidence 0.86 · review_required false · category SCOPE_GAP · pack_id division_seam · pack_version 0.1.0
Finding
Division 08 (section 08 71 00) and Division 28 (section 28 13 00) both carry the locking device at opening D102, and they do not disagree about what it is. Two trades are priced for one item.
Extracted evidence
Provide an electric strike, fail secure, at Door D102. doc-manual · section 08 71 00 · page 5
Provide an electric strike (fail-secure) at Door D102 and connect it to the access control system. doc-manual · section 28 13 00 · page 9
Section headings, cited to show both sections were read
SECTION 08 71 00 - DOOR HARDWARE doc-manual · section 08 71 00 · page 3
SECTION 28 13 00 - ACCESS CONTROL doc-manual · section 28 13 00 · page 7
Rule rationale
This is the duplicate buy half of section 2.4's 'a duplicate buy or an argument', and it is the quieter of the two because nothing about it looks wrong on either sheet. Both sections are correct in isolation and both estimators price the device, so either the owner pays for two of them or, more often, one bidder assumes the other trade has it, deletes it, and is the low bidder for the wrong reason. It sits at medium rather than high because it is recoverable: the money is still in somebody's number and the answer is a scope conversation, whereas the states SB-022 and SB-023 report are money that is in nobody's number at all.
Recommended pre-bid action
Confirm which division carries this item and price it once. Do not assume the hardware supplier has already deleted it because your section reads more specific; they are reading their own section and reaching the same conclusion about you.
Authority
CSI MasterFormat Division 08 and Division 28 boundary; AIA A201 General Conditions 3.2 on the contractor's review of the contract documents before bidding
Exposure
Rule trace
- seam_determinable eq true
- carried_by_division_08 eq true
- carried_by_division_28 eq true
- requirements_conflict eq false
- effect raise_flag SEAM_DUPLICATE_SCOPE, severity MEDIUM, category SCOPE_GAP
- priority 30, conflict_group opening_division_seam, uncontested on this target
Same rule, different target: SB-021 also matched at D103 rough-in in this run and lost that conflict group to SB-022. It appears once in the register and once in the suppression record, which is the same rule doing its job in two places.
confidence 0.91 · review_required false · category SCOPE_GAP · pack_id division_seam · pack_version 0.1.0
The engine sorts on an exposure band after severity, and the band is withheld from this page until it is calibrated against real project cost history.
What the register does not contain.
Absences here are deliberate and enforced in the data model, not left to the discretion of whoever renders the report. If a field does not exist, no rendering can invent it.
No unit cost
There is no unit price on any line of this output, and no field on the bill of materials line to hold one.
No extended cost
Quantity times price is not computed anywhere, because the second operand does not exist in the model.
No labor dollars
The device catalog holds labor hours for future use. No dollar value is attached to them and none reaches the deliverable.
No part number chosen by a model
A model may read a part number off a page. It may never assign one. Device selection is a rule, and the rule id is recorded on every assignment.
No compliance determination
Nothing here says a design complies or does not. Rules cite authority and report a state; the determination belongs to the AHJ and the engineer of record.
No accuracy claim
No precision figure, recall figure or time saved appears anywhere in this output. The register reports states and cites evidence. It does not score itself.
A bill of materials in this system carries quantity and device identity only. The BomLine model holds device id, category, description, manufacturer, part number, quantity, unit of each or foot, the rule and target every assignment is attributed to, a withheld flag, and at least one evidence citation. There is no cost field of any kind on it, which is why no report, export or chat rendering can produce one.
This run produced no bill of materials at all. The seam packs raise flags about responsibility; they do not select devices, so the BOM section of the report reads "No devices were assigned by this run." An empty section is the honest output when nothing was assigned.
The four states of a seam.
For every controlled opening the pack reads which division the documents put its locking device, its power and its rough-in on, and reports only the states that cost money: both divisions, neither division, each division pointing at the other, and the state where the documents do not settle it at all. Four states, five rule ids, because "both divisions" splits on whether the two sections agree about the device.
| Rule | State at the seam | Flag raised | Severity | Commercial consequence |
|---|---|---|---|---|
| SB-020 | Both divisions specify the work and they require different things | SEAM_REQUIREMENTS_CONFLICT | High | Only one device gets installed, so one of the two sections is unmet the day the door is hung, and which one is unmet is decided by whoever ordered first rather than by the design. |
| SB-021 | Both divisions carry the work and do not disagree about it | SEAM_DUPLICATE_SCOPE | Medium | Both sections are correct in isolation and both estimators price the device, so either the owner pays for two of them or, more often, one bidder assumes the other trade has it, deletes it, and is the low bidder for the wrong reason. |
| SB-022 | Each division assigns the work to the other | SEAM_CIRCULAR_ASSIGNMENT | High | At bid time nobody prices it, because each estimator reads their own section and correctly concludes it is not theirs. |
| SB-023 | Neither division specifies the work, and no other division is named | SEAM_UNASSIGNED | High | Nobody has priced the item, so at award it is a change order or it is absorbed by whichever trade is standing closest to the opening when the gap is found, which in practice is the one already pulling cable. |
| SB-024 | The seam cannot be determined from these documents | SEAM_UNDETERMINED | Medium | The severity is medium rather than high because the finding is about our reading rather than about the documents: it tells a reader where to look, not what they will find there. |
Each consequence above is a single unedited sentence from that rule's rationale in packs/division_seam.json.
Why SB-024 is deliberately separate from SB-023. Both of them end with nobody carrying the item, so collapsing them into one rule would look like a simplification. It is not.
From SB-024's rationale, verbatim: "Neither is a conclusion, reached after reading both sections and finding nothing; undetermined is the admission that one of them was not in the document set, or that the only sentence covering this work moves it to a party the documents decline to name." And: "Reporting the second as the first would be Part 13's confident output where the honest output is a flag, and it would be the specific version of that failure this product can least afford, because a bidder shown 'nobody specifies the rough-in' on a package whose Division 08 section was never supplied will find the specification, find the assignment, and stop believing the register."
The two also fail differently, are answered differently, and are cited separately when benchmark results are published. In this run both fired, on the same opening: SB-024 on the power at D103, where "by others" points at nobody, and SB-023 on the power at D104, where nothing points anywhere at all.
This was a fixture. Run it against a real package.
A fixture proves the mechanism works. Only a real bid package tells you whether the rules catch what matters and how much noise they make doing it. That is what the pilot is for, and telling us what was wrong is the deliverable we want back.