← All releases EN  RU

Change control — Friday 4 September

v2.5.0

Nothing below is live yet. This is the release going out on Friday morning. It was drafted on Thursday on purpose — every “before” on this page can only be measured while the live store is still serving it, and that disappears the moment the release goes out. Where a measurement could not be taken, the row says so in red rather than showing a number.

The one thing to take from this page, if you read nothing else. This release cannot go out as it stands. One setting is missing on the live search service, and the new search code refuses to start without it. The system is built to fail safely, so the consequence is that Friday’s release does not happen — not that the store breaks. Setting it takes a minute and it is the first item below. The decision this page needs is who sets it, and in what order the two halves of the address change go out — those two answers are what stand between this release and Friday morning.

Ninety-two changes since the 28 August release: fifty-eight on the store website, twenty-four on search, ten on the order and payment services. Three pieces of work account for most of them. The first is the parts diagram on a phone, which stops being a picture you fight with and becomes a place you can buy from. The second is that every part page changes address, which needs the store website and search to agree with each other on the same morning. The third finishes the work of the last two releases on which part pages Google is invited to read.

Unlike the last release, almost nothing here is behind a switch. The 28 August release shipped its main work switched off and asked which switches to turn on; those four settings are still where they were and this release does not touch them. What is here takes effect on Friday, which is why the ordering question in the second section matters more than usual.

Three genuinely new things do ship switched off: a place for a customer to keep their own machines, a hardware store, and a chat widget. None of them is reachable on Saturday morning. Each is a separate decision for a later week, and each is described in its own section rather than buried in the list.

What Friday actually changes on the live store — measured Thursday, not a forecast

For a customer: three things. The parts diagram on a phone becomes usable — one finger moves it, two fingers zoom, the callouts are big enough to hit with a thumb, and tapping one adds that part to the cart without leaving the diagram. Photographs move onto our own address, which nobody should notice and which is the point. And several long-standing wrong answers in search and in the cart are corrected — filters that were offered but never actually applied, two machines with the same name that could not be told apart, and a quantity stepper in the cart that did not always match the part it sat next to.

For Google: every part page changes address. A part page is currently found at /parts/ct-nhl-100016 and will be found at /parts/100016-nhl-ct. Every old address answers with a single permanent redirect to the new one, which is the form Google is built to follow and the form that keeps the ranking. This is the one change on this page that must happen on the store website and in search in the correct order, and it is the second item in the next section.

What does not change: what Google is allowed to read. The four settings from the 28 August release are read off the live store as of Thursday: indexing on, relaxed indexing off, priced-only on, diagram and equipment-tree pages held back. Friday does not alter any of them. The work in this release makes the site agree with those settings in more places — it does not change what they say.

What the call has to decide — found Thursday, ahead of the promote

The release cannot go out until one setting is added to the live search service blocks the releasenobody can see thissearch#999, search#1000

Search has been finding the address of a photograph in six different places in its own code, each with the same address written into it as a last resort. This release replaces all six with one setting, and deliberately removes the last resort: if the setting is missing, the service refuses to start rather than quietly serving the old address.

Before — the live search service todayIts settings were read off the running service on Thursday. The list contains nineteen entries and the new one is not among them.

After — what Friday would doThe new version starts, does not find the setting, and stops. Because the platform only sends customers to a version that has started successfully, the version running today keeps every request. The result is a release that does not happen, not a store that breaks.

What it needsOne setting added to the live search service before the release is promoted. It takes about a minute, and its value is the address photographs are served from today, so nothing about what a customer sees changes.

WhoVova, before the promote. There is no way to do it from inside the release itself — the setting lives on the running service, not in the code.

The address change has two halves, and they have to go out in one order must settleGoogle can see thisfront#4044, search#996

The store website has to accept the new part-page address before search starts handing it out. The store website half is what answers a request; the search half is what writes the address into the sitemap, the shopping feed, and the links inside parts diagrams.

In the right orderThe store website goes first. For the few minutes between the two, search is still handing out old addresses, and the store website answers both the old and the new. Nothing is broken at any point.

In the wrong orderSearch hands out addresses that the store website does not yet answer. Every newly-issued link is a dead page until the second half lands, and the shopping feed and sitemap are the two places most likely to be read by a machine in that window.

Why it is a decision and not just a stepThe two halves are promoted by different mechanisms — the store website by merging, search by swapping the running image — so nothing enforces the order automatically. It has to be held by whoever runs the promote.

A change is queued straight onto the live branch, going around the release train must settlenobody can see thisfront#4020

front#4020 is aimed directly at the live branch rather than at the integration branch every other change goes through. It is also a second copy of work that is already in this release: the chat widget arrived on 27 August and is in the list below.

Why it mattersA change that goes straight to the live branch skips the week of integration testing that everything else on this page has had, and it is the one shape of change the process is written to prevent.

The decisionClose it as already covered, or re-aim it at the integration branch so it rides a train. Either is fine; leaving it queued where it is, is not.

The New Holland price re-sync has been delayed four times and now waits on us must settlea customer can see thishub#349

Open since 27 July. One hundred and twenty-two thousand five hundred and thirty-three parts currently hold a price that disagrees with the source. On 28 August the testing step moved to Vova, which is where it has sat since.

The decisionYes or no this week. It is not blocked by anything in this release; it is blocked by nobody having run the check.

Nothing was cut to the test site this week, and nobody owns the sign-off processnobody can see thisno issue

The process has a Thursday step that copies the candidate to the test site so it can be checked before Friday. It did not run this week — the test site still holds what was put there on 21 August. The 28 August release also went straight out without it.

Why it keeps happeningThe person who held testing left on 20 August and the role was not filled. The step has no owner, so it is nobody’s to skip and nobody’s to run.

The decisionEither a named person checks the candidate before Friday, or the existing rule applies and anything unchecked is a no. Both are workable answers; the current state, where the rule exists and nothing enforces it, is not.

A database change ships without the credential it was written for — and that is safe no action needednobody can see thissearch#982

Recorded here so it is not mistaken for the first item. This release gives the heavy overnight index work its own restricted database login, so it cannot compete with customer searches. The login has not been created on the live service.

What happens without itThe work falls back to the shared login and writes a warning when the service starts. That is the behaviour today, so nothing gets worse — the isolation simply is not gained yet. Unlike the first item, this does not stop the release.

The parts diagram on a phone — the largest single piece of customer-facing work in this release

A parts diagram is how someone finds the part they need without knowing its number: an exploded drawing of an assembly with numbered callouts. On a desktop it works. On a phone it has been a picture you fight with — and phones are where most of these are opened.

One finger moves the diagram, two fingers zoom, and the page stops scrolling underneath ships Fridaya customer can see thisfront#4026, front#4034

The gesture handling was written by hand and did not distinguish a drag on the diagram from a scroll of the page, so trying to move the drawing scrolled the page away from it. It is now handled by a maintained library that every mobile map uses, with the conventional rule: one finger pans, two fingers zoom.

Tapping a callout adds that part to the cart, without leaving the diagram ships Fridaya customer can see thisfront#4028, front#4048

Previously a callout identified a part and the customer had to find it again in the list below to buy it. The callout now leads to the purchase, and the row in the rail beneath the diagram is a buy surface rather than a legend — price, availability and an add button on the row itself.

The floating marker that covered the diagram is gone, and the callouts are big enough to hit ships Fridaya customer can see thisfront#4058, front#4057, front#4061

A marker floated above the drawing to show which callout was selected, and on a phone it sat on top of the thing it was describing. Its two jobs moved into the rail. The callouts and the zoom controls were below the size a thumb can reliably hit and have been enlarged. The sheet that covers the lower half of the screen now closes with a downward swipe instead of a hunt for a small cross.

Every part page changes address — the change with an order dependency

The part number moves to the front of the address ships FridayGoogle can see thisfront#4044, search#996, search#994

Before — the live store today/parts/ct-nhl-100016 answers 200. /parts/100016-nhl-ct answers not-found. An address typed in capitals redirects once to the lower-case form.

AfterThe two swap over, and every old address answers with a single permanent redirect to the new one. One hop, never two, which is what preserves the ranking a page has already earned.

Why do it at allThe part number is the thing a customer recognises and the thing they search for. Putting it first makes the address readable and puts the identifying term where both a person and a search engine look for it.

OrderSee the second item in the decisions above. This is the change that needs the two halves promoted in sequence.

Two smaller address corrections that ride with it ships FridayGoogle can see thisfront#3991, front#3990

Every segment of the remaining address families is now lower case, so the same page cannot be reached by two spellings. And a discontinued part no longer redirects to a replacement that has itself been discontinued — a chain that ended in a dead page.

What Google is allowed to read — finishing the work of the last two releases

The decision itself was made and shipped on 28 August: which part pages are worth offering to Google. This release does not change that decision. It makes the rest of the site obey it — the sixteen places that were still answering by their own older rules.

A link to a held part is no longer written into a page at all ships FridayGoogle can see thisfront#4047

Held parts were kept out of the sitemap but still linked from listings and diagrams, so Google found them by following links. Links now fail closed: if a part is not offered, no clickable link to it is written, on either the parts pages or the lookup pages.

Note for anyone checking the live store todayA check that finds dead links under the lookup pages is finding the problem this change fixes, not a new one. It has been on the integration branch since 3 September and reaches the live store on Friday.

The listing grids, filters and counts now agree with the same rule ships FridayGoogle can see thisfront#3945, #3953, #3956, #3957, #3959, #3960, #3969, #3973, #3975, #3977, #3979, #3987, #3989, #3995search#944, #952, #956, #959, #961, #965, #980, #983

Twenty-two changes, all the same shape: a filtered listing, a facet count, a brand page or an automated check applied the rule in one place and not in another, so the number shown and the rows shown disagreed. They now use one rule in one place. The visible effect is that a count matches what is on the page.

One that is a decision, not a fixOpening a brand to Google is now a recorded decision rather than something that happened automatically once a brand had enough rows. A brand with nothing worth offering hides itself instead of listing pages that answer not-found.

One that is about freshnessWhether a part is published is now read live rather than from a snapshot rebuilt overnight, so a part that becomes available is offered the same day rather than the next.

Every filter the sidebar offers now actually narrows the results ships Fridaya customer can see thissearch#967, #971, #973, #975, #977, #978

Six changes with one cause. The sidebar and the grid were built by different code paths, and the sidebar advertised cuts — price, top sellers, and others — that the grid never ran. A customer ticked a box and the results did not change. Two filters that had never applied anywhere were removed rather than fixed, because nothing was behind them.

Search stops handing out results that cannot be bought or opened ships Fridaya customer can see thissearch#946, #949, #995front#3958

Attachment and kit entries were being returned as if they were parts, leading to addresses that answer not-found. And when the site cannot work out which part a search means, it now shows the results page rather than guessing at a part page address that may not exist.

Two search fixes already on the live store as emergency repairs already livea customer can see thisfront#3963, front#3999

Recorded so the list adds up, not as news. A search matching exactly one part was answering with an error instead of showing it — the problem reported on the 28 August page as unresolved. It was fixed and pushed out on its own on 29 August. Separately, when search is struggling the site now remembers the failure briefly instead of retrying hard and making it worse; that went out on 1 September. Both are in this release properly.

Cart, checkout and measurement — four small corrections

The quantity stepper in the cart now belongs to the right part ships Fridaya customer can see thisfront#4045

When a part appears inside an assembly’s parts list, the stepper next to it was keyed off a value that two different rows could share, so changing the quantity on one could change it on another. It is now keyed off the identifier that is unique per row.

Product views are being counted again ships Fridaynobody can see thisfront#4008

The event that records someone looking at a part had stopped firing, so the analytics figures for product views have been understated. It fires again, and reports the same identifier the rest of the site uses, so the numbers can be joined up.

Two shipping corrections already on the live store, and one payment safeguard already livea customer can see thisfront#3983, front#3985, ps#715

The cart quoted a carrier estimate rather than what checkout actually charges, and the estimate described the pickup counter as if it were delivery. Both were pushed out on 30 August. Separately, a paid order that failed to record itself was being marked as handled, which meant nothing retried it; it is no longer marked handled unless the order exists. That went out on 29 August.

Photographs move onto our own address — invisible if it is right, site-wide if it is wrong

Photographs are currently served from a separate address on a small service of our own. This release moves them onto the store’s own address, which removes that service from the path a customer’s browser takes. The customer sees the same photographs.

Why this half has to ship before the old service can be switched off ships Fridaya customer can see thisfront#4051, front#4052, search#1000, ps#729

Before — measured ThursdayA photograph requested from the store's own address answers 200 as an image, cached for a week. But that request is currently passed through to the very service we are retiring. So a comparison taken on the live store today compares that service with itself and proves nothing — recorded here rather than presented as a measurement.

AfterThe store reads the photograph from storage directly. Only then can the intermediate service be switched off, which is a later week’s work.

A related fixOnce the store trusts its own address for images, one internal request began fetching from itself — and on the protected test environments that returns a login page, which was then cached as if it were a picture. It now reads from storage instead. Found before it reached the live store.

The settingThis is the half that needs the missing setting in the first decision above. The value is deliberately different per environment, so a single fixed value would have looked correct on the live store and blanked every photograph on the test site.

Three new things, all switched off — nothing here is reachable on Saturday

A place for a customer to keep their own machines switched offnobody can see this yetfront#4021, ps#710

A customer can record the machines they own and keep photographs, manual PDFs and links against each one, so the parts they need are found from their own machine rather than from a catalogue search. The storage half is in the order services; the page half is on the store website behind a setting that does not exist on the live store.

Order, if it is ever switched onThe services half must be live first. This release carries it, so after Friday the switch becomes possible — it does not become set.

A hardware store, switched off with a second switch added on purpose switched offnobody can see this yetfront#4022, front#4046

Bin-stock hardware — bolts, fasteners and similar — as its own section. It ships off and should stay off for a specific measured reason: of the 629 hardware part numbers, 585 do not exist in the catalogue at all, and 44 collide with a New Holland part carrying the same number. A dedicated off switch was added after the section was built, so it can be stopped without withdrawing the release.

The decision, for a later weekNot whether to switch it on, but what to do about 44 numbers meaning two different parts.

A chat widget, off because nothing configures it switched offnobody can see this yetfront#4004, front#4005

The widget reads its configuration from a setting that does not exist on the live store, so it does not load. Confirmed by reading the live store’s settings on Thursday rather than by assuming. See the third decision above about the duplicate copy of this work.

One thing that looks like it ships switched off, and does not ships Friday, ona customer can see thissearch#988, search#989

Parts that carry a tiered price but no straightforward one become buyable, behind a setting. That setting was read off the live search service on Thursday and it is already on. So this one takes effect immediately on promote — it is listed here because grouping it with the switched-off work would have been wrong.

Catalogue and brand pages — three changes

Two machines with the same name can be told apart ships Fridaya customer can see thisfront#3970

Where two models share a name, the page now names what distinguishes them and fills in the column showing what each part fits. An earlier attempt at this was closed without shipping, so this is genuinely new for the live store rather than a repeat.

The brand page heading stops jumping as it loads, and seven dead links are gone ships Fridaya customer can see thisfront#3951, front#4049

Space for the second line of the heading is now reserved, so the view control below it does not move under the cursor as the page settles. Seven brand-hub addresses that no longer lead anywhere were removed.

Housekeeping — nothing visible from outside

Twenty-eight changes: security updates to third-party code, two retired services deleted, build checks corrected, and documentation. Two are worth naming. A build check was reporting a critical security finding on every build that was not one, which trains people to ignore the check — fixed. And two services that had already been removed from the servers months ago still existed in the code; they are now deleted, which is the difference between something being off and something being gone.

Everything in this release — 92 changes, each with a one-line summary

The store website58 changes 37 a customer or Google can notice
ChangeWhat it isWhat movedBuilt by
front#4068The parts rail carried a dead open state and two lines that described behaviour it no longer had.dead state and misleading comments removedVova
front#4063Several spellings of the same photograph address folded into one on-origin path.one media path, self-fetch resolved to storageVova
front#4067An accessibility check was auditing a not-found page and passing it.a11y smoke audits the real search routeVova
front#4061The mobile parts sheet closes with a swipe instead of a small cross.collapse gesture on the sheetVova
front#4055Three comments promised a fail-fast behaviour the build disproves.comments correctedVova
front#4058The floating marker covered the diagram it was describing; its jobs moved to the rail.floating callout pin deletedVova
front#4057Diagram callouts and zoom controls were too small to hit with a thumb.tap targets enlargedVova
front#4047A held part could still be reached by following a link, including through the lookup pages.links fail closed via mayLinkVova
front#4054A configuration guard reported a critical security finding on every build that was not one.guard stops false-firingVova
front#4051The image optimizer now reads storage directly, so no page names the retiring media address.optimizer points at the bucketVova
front#4048The row beneath a diagram is a buy surface, not a legend.rail row carries price and addVova
front#4053A colour check warned on one notation of a colour while passing two identical ones.colour scan normalises notationVova
front#4035The index-gate auditor knew two of the three address forms it had been granted.auditor covers all three formsVova
front#4046A dedicated off switch for the hardware section, so it can be stopped without withdrawing the release.NEXT_PUBLIC_FEATURE_HARDWARE, default offVova
front#4049Seven brand-hub addresses that no longer led anywhere.dead aliases deletedVova
front#4044The part number moves to the front of every part page address; old addresses redirect once.PDP slug is part-number firstVova
front#4040A useless code fragment turned the integration branch's lint red.fragment removedVova
front#4021A place for a customer to record their own machines, with photographs, manuals and links. Ships switched off.My Shed behind NEXT_PUBLIC_FEATURE_SHEDJohn
front#4045The quantity stepper next to a part inside an assembly could change the wrong row.stepper keyed off the branded productIdVova
front#4034One finger moves the diagram, two fingers zoom, and the page no longer scrolls underneath.one-finger pan, two-finger zoomVova
front#4022A bin-stock hardware section at /hardware. Ships switched off.Fastenal hardware store, flaggedJohn
front#4028Tapping a callout on a diagram adds that part to the cart without leaving the diagram.callout add to cartVova
front#4026The hand-rolled gesture handling is replaced by the maintained library every mobile map uses.react-zoom-pan-pinch replaces custom hookVova
front#4027Third-party code carrying security advisories published that day.fast-uri override bumpedVova
front#4008The event that counts someone viewing a part had stopped firing, understating the figures.GA4 view_item restored, branded item idVova
front#4014Superseded browser and identifier libraries.browserslist and nanoid updatedVova
front#4005A widget test was loading a real third-party script during the test run.chat widget SDK stubbed in testsVova
front#4003Raw colour values the design-token audit was still reporting.oklch literals namedVova
front#3999When search is struggling the site retried hard and made it worse; it now remembers the failure briefly. Already live.failure verdict cachedVova
front#3995A model variant became unreachable when its card clamped the text.full variant kept reachableVova
front#3993Automated issue filing used label names that no longer exist.CI points at the governance familiesVova
front#3992A smoke test passed unless every one of its reference parts had rotted.fails on any rotted canaryVova
front#3986The live-store end-to-end reference parts pointed at parts that no longer have pages.canaries re-pointedVova
front#3991The same page could be reached by two spellings of its address.every slug segment lower caseVova
front#3990A discontinued part redirected to a replacement that was itself discontinued.no redirect to a withdrawn partVova
front#3989The all-categories grid lost each model's own equipment type.equipment type preserved per modelVova
front#3987Opening a brand to Google happened automatically on row count; it is now a recorded decision.brand opening is a decisionVova
front#3985The cart quoted a carrier estimate rather than what checkout charges. Already live.cart states the charged amountVova
front#3983The shipping estimate described the pickup counter as if it were delivery. Already live.estimate quotes shippingVova
front#3979The model variant was missing from the card the grid actually renders.variant on the rendered cardVova
front#3977The filter sidebar counted rows the grid could not show.sidebar counts what the grid showsVova
front#3975The brand grid dropped the index rule on a word search.gate honoured on word searchVova
front#3973On-site search could not find held parts.held parts findable on siteVova
front#3970Two models with the same name could not be told apart, and the Fits column was empty.distinguishing attribute named, Fits filledVova
front#3969The word-search grid showed rows the index rule excludes.word-search grid gatedVova
front#3965A duplication check compared against the wrong baseline.ratchet audits the PR's own baseVova
front#3963A search matching exactly one part answered with an error instead of showing it. Already live.sole exact match rendersVova
front#3962The shopping feed's registry half is live and the affected class is four times the filed size.documentation correctedVova
front#3950A condensed proxy documentation block back-merged from the live branch.docs back-mergeVova
front#3960A parts-list row with no page was judged by the wrong field.judged on the carrying vendor codeVova
front#3959The sitemap check subtracted the same held rows twice.brand hold stamped, double-subtract fixedVova
front#3958When the site cannot resolve a search it now shows results instead of guessing an address.resolver miss goes to resultsVova
front#3957Comment debt around held brands, and an end-to-end test that ignored the rule.comments trimmed, e2e follows the gateVova
front#3956The navigation shell assumed a brand was open when it did not know.pessimistic fallback in the shellVova
front#3953A brand with no offerable part listed pages that answer not-found.empty brand hides itselfVova
front#3945Test-site checks followed only one half of the index rule.gates follow the dual contractVova
front#3951The brand heading's second line moved the view switch as the page loaded.h1 second line reservedVova
front#3871The equipment showcase said '1 matches'.count line pluralisedVova
Search24 changes 17 a customer or Google can notice
ChangeWhat it isWhat movedBuilt by
search#1000The photograph address was written into the code in six places; now one setting, and the service refuses to start without it.CDN_URL required, no fallbackVova
search#998An automation caller pinned to a superseded version.github-script bumped to v8Vova
search#996The sitemap, shopping feed, parts lists and canonical links emit the new part-page address.part-number-first slug emittedVova
search#995Attachment entries were handed out as if they were parts.attachment slugs withheldVova
search#994A lower-case part number did not answer on the assemblies path.case-insensitive assemblies lookupVova
search#991Contract test fixtures had rotted against the real responses.fixtures refreshedVova
search#982Heavy overnight index work shared the customer database login and competed with searches.separate indexer pool, falls back safelyVova
search#989The tiered-price setting turned on for the test service.flag enabled on devVova
search#988Parts with a tiered price but no straightforward one become buyable. The setting is already on in production.ladder-priced rows sellableVova
search#987Whether a part is published was read from a snapshot rebuilt overnight.live publish_statusVova
search#985The index rule was computed from a nightly view rather than from the registry that decides it.gate driven from the registryAlex
search#984Issue templates referenced labels that do not exist.templates correctedVova
search#983A core deposit outranked a buyable part in the results.buyable row ranked firstVova
search#980The result count included rows the grid cannot render.count matches the gridVova
search#978The ungated results grid ignored sidebar filters it had accepted.every accepted cut runsVova
search#977The gated results grid ignored the top-seller filter it had accepted.top-seller cut runsVova
search#975The price filter was accepted and then not applied to the grid.price cut kept and runVova
search#973The results lane advertised filters its own grid could not run.only runnable cuts offeredVova
search#971The top-sellers filter did nothing, and two filters had never applied anywhere.top sellers honoured, two filters removedVova
search#969A deployment health check raced the service's own cold start and failed a good deploy.candidate probe retriesVova
search#967Some filter counts ignored the price cut.price honoured in every facet producerVova
search#965A held brand's listing ignored the search terms typed into it.gated brand listing keeps its queryVova
search#961Filter counts ignored the index rule.indexableOnly honoured in facetsVova
search#959The main results lane ignored the index rule.indexableOnly honoured on q=Vova
Order and payment services10 changes 2 a customer can notice
ChangeWhat it isWhat movedBuilt by
ps#729The photograph address was written into the code with no way to override it.CDN base read from the environmentVova
ps#726Workspace packages were relying on dependencies they never declared.imports declaredVova
ps#710Photographs, manual PDFs and links stored per machine, for the customer's own machines. Ships unused.equipment attachments on the user serviceVova
ps#724An automation caller pinned to a superseded version.github-script bumped to v8Vova
ps#722A build step used a floating version of a cache action.actions/cache pinnedVova
ps#721Root workspace dependencies were declared as if they shipped to production.declared as devDependenciesVova
ps#720A DNS infrastructure definition nothing had used since the provider changed.dead terraform stack removedVova
ps#718Two services already absent from the servers still existed in the code.media-service and documents-service deletedVova
ps#715A paid order that failed to record itself was marked as handled, so nothing retried it. Already live.not marked processed without an orderVova
ps#714The bug template referenced a label that does not exist.template correctedVova

What is live now, and what Friday would replace it with — the exact thing to go back to

The left of each pair was read off the running systems on Thursday 3 September. The right is what the promote would put there. Going back means going back to the left.

Storefront28a3ec001 → 3a0e72f26Read off the live address rather than off the newest build, which are not always the same thing. The left already includes the three emergency repairs pushed out between 29 August and 1 September; all three are in this release properly, so nothing is lost by going back to it. Vercel keeps the previous build, so going back is one button.
Searchcrop-search:97ac9eb4 → crop-search:1184c465Search is promoted by swapping the running image rather than by merging. This is the half that does not start until the missing setting is added — see the first decision.
Search rollback namesearch-api-00026-zl2The version to send traffic back to. It is reachable by name until it is deleted, so the safe rollback does not touch images at all.
Servicesa5bfb9b7 → 0c3a3f07Catalogue, user and delivery services run the left-hand version. Payment runs 4e34a766, which is further ahead because it carries the 29 August emergency repair; that repair is in this release too.
Test sitenot cut this weekThe test site still holds the 21 August cut. Nothing in this release has been through it — see the fifth decision.
DatabaseunchangedNo migration runs with this release.
The four index switchesunchangedIndexing on, relaxed indexing off, priced-only on, diagram and equipment-tree pages held back. Read off the live store on Thursday. The promote does not alter any of them.
The three new switchesabsent → absentNeither the machines section, nor the hardware section, nor the chat widget has a setting on the live store, and the promote does not create one. That is what makes them switched off rather than merely unadvertised.