Daniel Roth
64d397e6b4
Tenant vulnerabilities are recorded on the tenant's own contact 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:31:00 +00:00
Daniel Roth
d4bdbf2e2f
Tenant vulnerabilities are recorded on the tenant's own contact 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:30:22 +00:00
Daniel Roth
52f2286ee9
Runner-up number fills the contact's secondary phone number 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:29:38 +00:00
Daniel Roth
10636c1752
Runner-up number fills the contact's secondary phone number 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:28:56 +00:00
Daniel Roth
1752a6cf10
Contact carries the best-priority mobile and landline Abri lists 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:27:59 +00:00
Daniel Roth
1d3219ca60
Contact carries the best-priority mobile and landline Abri lists 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:27:39 +00:00
Daniel Roth
01e61a6275
Each tenancy signatory gets its own deal contact, with blank fields omitted 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:27:04 +00:00
Daniel Roth
0ef1687bd7
Relay receives the spec's recorded getSCSTenantData envelope 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:26:07 +00:00
Daniel Roth
76d0b4bac9
Abri tenancy signatory becomes an associated HubSpot deal contact 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:24:47 +00:00
Daniel Roth
78fcba45e5
Abri tenancy signatory becomes an associated HubSpot deal contact 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 13:22:52 +00:00
Daniel Roth
d1b7e15d64
Merge branch 'main' into feature/abri-api-integration
2026-07-06 08:09:19 +00:00
Daniel Roth
b2754baa04
Merge pull request #1463 from Hestia-Homes/feature/abri-api-integration
...
Abri OpenHousing DomnaRelay — Amend Appointment vertical (amendoptiappt)
2026-07-06 09:08:00 +01:00
KhalimCK
6dfaecc352
Merge pull request #1460 from Hestia-Homes/fix/table-12a-underfloor-rows
...
Electric underfloor codes resolve their Table 12a Grid 1 rows (ADR-0050 deferred follow-up)
2026-07-03 17:53:59 +01:00
KhalimCK
adcdce4271
Merge pull request #1462 from Hestia-Homes/fix/floor-u-value-gate
...
Floor insulation gated on the derived floor U-value (ADR-0051 floor arm)
2026-07-03 17:53:34 +01:00
Daniel Roth
021e7c15bb
Abri job amendment trigger is named after the OpenHousing job it amends 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:26:15 +00:00
Daniel Roth
b5f7cc3548
Abri job logging and appointment amendment serialise bookings through one date rule 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:24:48 +00:00
Daniel Roth
05bd22269d
Abri amend_job raises retriable transport errors when the amendment outcome is unknown 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:23:53 +00:00
Daniel Roth
096e4ae1f7
Abri amend_job treats an unconfirmed amendment response as retriable 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:23:10 +00:00
Daniel Roth
65ec38012b
Abri amend_job treats an unconfirmed amendment response as retriable 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:22:49 +00:00
Daniel Roth
e9cb46a58b
Abri amend_job surfaces OpenHousing rejections with code and message verbatim 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:22:11 +00:00
Daniel Roth
e363a1105a
Abri amend_job omits the surveyor resource so amendments cannot clobber Abri-side reassignments 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:21:06 +00:00
Daniel Roth
b70afc8d9d
Abri amend_job omits the surveyor resource so amendments cannot clobber Abri-side reassignments 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:20:41 +00:00
Daniel Roth
7bdba469fb
Abri amend_job serialises the spec's amendoptiappt envelope with the surveyor resource last 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:19:16 +00:00
Daniel Roth
fbb4345116
Abri amend_job serialises the spec's amendoptiappt envelope with the surveyor resource last 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:18:24 +00:00
Daniel Roth
c542a57ae5
Abri amend_job amends an OpenHousing appointment and returns the echoed booking 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:17:41 +00:00
Daniel Roth
2cfed0c33d
Abri amend_job amends an OpenHousing appointment and returns the echoed booking 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:15:44 +00:00
Khalim Conn-Kowlessar
2a0cf05fdd
Amend ADR-0051: the floor U-value gate landed; roof stays evidence-gated 🟪
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 16:08:57 +00:00
Khalim Conn-Kowlessar
fb3516ee95
Floor insulation is withheld when it cannot lower the derived floor U 🟩
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 16:06:45 +00:00
Khalim Conn-Kowlessar
128981289a
Floor insulation is withheld when it cannot lower the derived floor U 🟥
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 16:05:04 +00:00
Khalim Conn-Kowlessar
6c6be1a432
Electric underfloor codes resolve their SAP 10.2 Table 12a Grid 1 rows 🟩
...
421 slab -> Other storage heaters (0.00); 422/423 integrated -> 0.20;
424/425 screed/timber -> 0.90/0.50 — per the Grid 1 row labels that name
the codes (PDF p.184). Closes the None all-low-rate fallback that
over-credited 7-hour-metered underfloor dwellings.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 16:00:40 +00:00
Daniel Roth
6a7cc68c9a
Merge branch 'main' into feature/abri-api-integration
2026-07-03 16:00:18 +00:00
Khalim Conn-Kowlessar
f604672ae0
Electric underfloor codes resolve their SAP 10.2 Table 12a Grid 1 rows 🟥
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-03 15:57:37 +00:00
Daniel Roth
c0d36d1e67
Merge pull request #1458 from Hestia-Homes/feature/abri-api-integration
...
Abri DomnaRelay client — foundation + LogJob vertical (strictly typed)
2026-07-03 16:49:46 +01:00
Jun-te Kim
838668bfdb
Merge pull request #1451 from Hestia-Homes/fix/sap-heating-optional-air-conditioning
...
Make nested SapHeating.has_fixed_air_conditioning optional across all RdSAP schemas
2026-07-03 16:34:27 +01:00
Jun-te Kim
6172f5d30d
Merge pull request #1452 from Hestia-Homes/fix/roof-construction-another-premises-above
...
Map API roof_construction code 9 ("another premises above") to None
2026-07-03 16:34:15 +01:00
Daniel Roth
ff868156d1
Abri job logging trigger is named after the DomnaRelay route it fires 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 15:26:41 +00:00
Daniel Roth
a86607e420
Abri relay exchange reads as serialise, post, parse, then dispatch on the failure document 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 15:12:44 +00:00
Jun-te Kim
d769f4488a
Suppress roof heat loss for API roof_construction codes 7 and 9
...
RdSAP 10 Specification (10-06-2025) §5.2.5: "If a dwelling or part of a
dwelling has commercial premises above record as another dwelling
above" — so code 9 ("another premises above") must get the same
zero-heat-loss treatment as code 7 ("another dwelling above"), per the
spec's own "there is no heat loss through the roof of a building part
that has the same dwelling above or another dwelling above."
The previous fix mapped both to None, which only avoided the mapper
crash — it didn't achieve zero heat loss. heat_transmission.py's
per-part suppression (part_roof_is_party) only fires when
roof_construction_type CONTAINS the literal string "another dwelling
above"; that string was only ever set on the Elmhurst ingestion path.
The API path mapped 7 (and, until now, 9) to None, so the suppression
never fired for any API-derived cert — has_exposed_roof (the
dwelling_type-label-only fallback) was the sole gate, with no way to
know about a per-part party-ceiling lodgement. Both codes now map to
"(another dwelling above)" so the existing suppression logic fires on
both ingestion paths, matching what
domain/epc/property_overrides/roof_party_ceiling_guard.py already does
independently for the landlord-override pipeline (same spec citation).
Verified against the motivating cert (uprn 10013320122): roof_w_per_k
now correctly computes to 0.0. Full RdSAP-21.0.1 corpus (1000 certs)
re-run: within-0.5 unchanged at 77.8%, MAE improves marginally
(0.6364 vs 0.637 ceiling) — no regression.
2026-07-03 14:44:01 +00:00
Daniel Roth
32b56050b0
Abri relay requests share one envelope, transport and rejection path across request types 🟪
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:37:40 +00:00
Daniel Roth
c23c74be6b
Abri log_job treats a logged-job response missing its job number as retriable 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:36:55 +00:00
Daniel Roth
c1c2a1947e
Abri log_job treats a logged-job response missing its job number as retriable 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:35:35 +00:00
Daniel Roth
62ad53df5a
Abri relay credentials and defaults hydrate from environment configuration 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:34:53 +00:00
Daniel Roth
39055bafed
Abri relay credentials and defaults hydrate from environment configuration 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:34:27 +00:00
Daniel Roth
f5fefd4d93
Abri job descriptions identify the visit as a Domna condition survey 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:34:05 +00:00
Daniel Roth
caffa5c4e1
Abri job descriptions identify the visit as a Domna condition survey 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:33:40 +00:00
Daniel Roth
2c660bdb5d
Abri unparseable confirmed time fails loudly rather than silently booking all day 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:33:12 +00:00
Daniel Roth
eccc03f9f2
Abri confirmed time at or after midday books the afternoon slot 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:32:49 +00:00
Daniel Roth
cd29cbb0b8
Abri confirmed time before midday books the morning slot 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:32:15 +00:00
Daniel Roth
fcdab30b73
Abri confirmed time before midday books the morning slot 🟥
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:31:51 +00:00
Daniel Roth
992ac243ba
Abri booking with no confirmed time books an all-day appointment 🟩
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 14:31:33 +00:00