Release notes
Everything that has changed
254 changes to the app and this website since the restaurant product began on September 23, 2026. This page is generated from the commit history of both repositories, not written afterwards from memory — each line carries the commit it came from.
Things that changed nothing you could see — type annotations, test fixtures, merges — are left out. 31 were filtered that way, and that number is published so the filter can be argued with.
September 2026
254 changes
Plans and pricing
- 2026-09-25AppProfessional gets three plan slots, not one6d6a331
- 2026-09-25WebsiteSite pricing: Professional is three plans8f0d9e0
- 2026-09-25WebsitePublish the master benefits page, and link it through the comparison hub63cc11a
- 2026-09-24AppThe early-bird price lasts one hour per customer, starting at the first buy buttonfac4e70
- 2026-09-24AppCollect the terms acceptance ourselves before checkout instead of relying on Stripe's dashboard terms URL (commercial task 14)e082fd2
- 2026-09-24AppStart Up upsell to Professional: closing/closed upsell state in the billing payload, full-width upgrade card on the billing panel and locked plans (commercial task 6)3a404c6
- 2026-09-24AppStripe wiring: env price ids for Start Up and Professional, early-bird coupon on both, verify-only coupon check, live webhook and env documented (commercial task 5)9ee5bce
- 2026-09-24AppFounding five: first five restaurants get Professional free for a year (commercial task 4)39fb529
- 2026-09-24AppTerms of Use with disclaimers, no-refund policy and one free regeneration; acceptance recorded at signup and checkout; app legal pages redirect to the marketing site (commercial task 2)916bc1c
- 2026-09-24AppOne free regeneration per purchase: RPC, entitlement counters, request flow (commercial task 3)3a2ad19
- 2026-09-24AppNew prices: Start Up $495, Professional $395/year, Master contact-only, early-bird 50% off (commercial task 1)5aeae63
- 2026-09-24WebsiteFinish the restyle: heading sizes and a soft elevation on the price cardc2d57e0
- 2026-09-24WebsiteDon't print the regular price twice on the Start Up cardef01f10
- 2026-09-24WebsitePublish the real prices on /pricingfb3a6e4
- 2026-09-24WebsiteCanada waitlist page: why plans are US-only today, waitlist form posting to the app leads endpoint, sitemap and links from pricing and terms1c76712
- 2026-09-24WebsiteShow founding-five spots left on the pricing page, read live from the app catalogc2b16e0
- 2026-09-24WebsiteMirror the new HACCPlan prices: Start Up $495, Professional $395/year, Master contact us, early-bird 50% off537ad77
- 2026-09-23AppRelease Core Restaurant v1 library on owner sign-off; record pilot entitlementcfacdae
- 2026-09-23AppAdd restaurant pricing, entitlements, Stripe billing and slot enforcement9b79045
- 2026-09-23AppAdd entitlement state machine with lifecycle tests and the public pricing catalog endpoint3824e45
- 2026-09-23AppAdd canonical restaurant pricing and entitlement catalog46ce2bb
- 2026-09-23AppAdd PLAN_18 restaurant product master file, readiness gate registry and dependency engined53e8c2
- 2026-09-23WebsiteMirror restaurant pricing contract, add build-time consistency check and three-tier pricing page7700223
Menu and hazards
- 2026-09-25AppAdd a dish any time, and say what a changed answer did4864eee
- 2026-09-25AppMap every menu item to its process and its controlsdcde022
- 2026-09-25AppThe checks card prints the limit that belongs to the hazard528f3d9
- 2026-09-24AppPage-by-page attestation, and the dish loop costs a fourth turndbfda92
- 2026-09-24AppAsk what is in each dish that someone could be allergic to (18D.6)e3d213f
- 2026-09-24AppMake the declared-allergen warning actually fire, and only where it should6671519
- 2026-09-24AppGather items per process, and migrate dishes without trusting them blindly96c04c3
- 2026-09-24AppAdd the item and component model, derived from the priorsb36ca05
- 2026-09-24AppGive the cap test fixture the fields a Dish actually has7f7bba6
- 2026-09-24AppGive the dish cap fixture the two fields the Dish type requires8f12efd
- 2026-09-24AppPreparer block, annual validation record, log verification columns and a dish-card warning4e31563
- 2026-09-24AppHazard analysis records its evaluation; CCPs numbered per stepebbac2c
- 2026-09-24AppLet the dish list reopen, and make a refused build clickable405b24f
- 2026-09-24AppSecond sweep: city and county model HACCP plans, including two better than Minneapolis9599326
- 2026-09-24AppSurvey state and local model HACCP plans for reuse rights and usefulnessc899a4d
- 2026-09-24AppDerive the allergen list from the plan's own answers; localize the vocabulary by country46ed7d7
- 2026-09-24AppTest the cooling-consistency lane and log it in PLAN_189769557
- 2026-09-24AppDetect the cooling contradiction and block readiness on it552eac2
- 2026-09-24AppPLAN_18: log the dish-coverage reconciliation lane4958ff3
- 2026-09-24AppSurface menu-coverage gaps through readiness and test the reconciliationd894450
- 2026-09-24AppReconcile dish coverage with the menu facts before the walk-through closes9e05bb5
- 2026-09-24AppPublic leads endpoint accepts the Canada waitlist source and answers CORS for haccplan.com (commercial task 7, app half)ad3977b
- 2026-09-24WebsiteTake down 97 pages that promise features HACCPlan does not have1b717d9
- 2026-09-23AppDish proposal card from priors/sketch and menu upload with Gemini extraction89db56f
- 2026-09-23AppRecord PLAN_18A 5b.3 dish elicitation and live check in PLAN_188d1b1c7
- 2026-09-23AppAdd the dishes group to the group label maps0c26618
- 2026-09-23AppAdd dish elicitation (PLAN_18A 5b.3): dish contracts, pure walk-through with priors, mapping to registry facts, dishes group and summary confirmation9c08c42
- 2026-09-23AppGate restaurant readiness panel and facts API behind HACCPLAN_RESTAURANT_READINESSf57d698
- 2026-09-23WebsiteAdd restaurant HACCP product spec mirror for the marketing lane71daf6a
Everything else
- 2026-09-25AppA way back in: the Answers tabcd26650
- 2026-09-25AppGive the checks card a tile5ddd450
- 2026-09-25AppNothing administrative holds a plan hostage: deferrable facts6218b00
- 2026-09-25AppTake the state the way a person says it, not only the way the pattern wants5e7c843
- 2026-09-25WebsiteAdd the arrival-state matrix to the handoff specd49ac0c
- 2026-09-25WebsiteGet the button above the fold on a small phonec7592ad
- 2026-09-25WebsiteMap neutral-400 to a value that actually clears the UI threshold2dbf98a
- 2026-09-25WebsiteFix the form footer: notes ran the row tall and mostly said nothing usefulbc66254
- 2026-09-25WebsiteFix the registry splice that broke the build0cd0e83
- 2026-09-25WebsitePlan the forms gap: give away what works blank, generate what doesn't77a5bf0
- 2026-09-24AppLet the operator fix what is theirs, and nothing that is note5fcbcf
- 2026-09-24AppOwner decision: nothing gates public sale88e2ceb
- 2026-09-24AppOwner signs off the benchmark repairs to released module contentcac2af2
- 2026-09-24AppName a food, see the process, confirm, next236114c
- 2026-09-24AppFix the five plan defects the audit found in a real signed plan6289c66
- 2026-09-24AppName the preparer on the plan, not the whole shift roster07155d1
- 2026-09-24AppKeep the preview tests building and current095ef5e
- 2026-09-24AppThe unpaid preview shows the plan without giving it awayf02ddc7
- 2026-09-24AppPut the operator's name on the plan, not oursd0549ee
- 2026-09-24AppHand the plan over instead of displaying itcaa3bfe
- 2026-09-24AppName the nav after what an operator actually has37bd34b
- 2026-09-24AppPlan the progressive build, the paid preview and the conversion moment8cb6c4f
- 2026-09-24AppCaption every flow figure, not only the split ones217fc47
- 2026-09-24AppDerive the processes, and say them in words a cook can judge315a9e3
- 2026-09-24AppRender the flow of food as a diagram09cc4e0
- 2026-09-24AppDrop the duplicated fixture field left by the merge8ca2e3e
- 2026-09-24AppFix what the walk-through found: a wrong label and a stale banner86b8849
- 2026-09-24AppMake the blockers list something you can act on457e677
- 2026-09-24AppAcquire Ontario's Food Premises regulation, cite nothing with it yet7f9d3d3
- 2026-09-24AppBenchmark our generated plan against health-department worked examples0a22aad
- 2026-09-24AppSay "cooler" to a kitchen that has no walk-in5249cc5
- 2026-09-24AppImport PlanFacts from where it lives, and compare ids to idsf2d0926
- 2026-09-24AppTest the mobile lane, and stop two assertions from going stale06cb4e7
- 2026-09-24AppThree modules for the half of the operation that is not the kitchen82ca0a7
- 2026-09-24AppAsk a mobile operator about the tank they actually carryf43a491
- 2026-09-24AppCite the Food Code's mobile water, waste and servicing provisions2ef72a8
- 2026-09-24AppDrop a duplicated clause in the status linebd38cdb
- 2026-09-24AppScope establishment coverage before building any of it8b2fa1a
- 2026-09-24AppAssert the class of copy defect over every fixture, not the instancesdf2c46b
- 2026-09-24AppCredit observation-based monitoring to the person who observes8be8ac3
- 2026-09-24AppEnforce registry types on every fact write: booleans coerce or reject, never store a stringd45179e
- 2026-09-24AppChecks card shows the limit a cook checks on the line, not every alternate method0f73d02
- 2026-09-24WebsiteFix the sign: say what this site is, and stop pointing at what it isn't8555850
- 2026-09-24WebsiteDon't reserve a column for a hero image that isn't theree2451e8
- 2026-09-24WebsitePoint the US-only line at the Canada waitlist4e5109e
- 2026-09-24WebsiteSay the plan builder is US-only, before someone signs up75a9f82
- 2026-09-24WebsiteWrite the restaurant-pivot marketing summary and site plane815a8d
- 2026-09-23AppAction list replaces the tip walk-through: things to do derived from active modules, done ticks persisted, tips behind 'tell me more'ef82dd5
- 2026-09-23AppAdd deterministic restaurant plan composer with content hash and draft/final rules5129b3c
- 2026-09-23AppPersist restaurant plan facts with provenance and show deterministic readiness in the plans workspacee37d3c8
- 2026-09-23AppAdd restaurant variable registry v1, 30 core modules and Golden Plan A fixtures86046f6
- 2026-09-23AppAdd Food Code 8-201.14 completeness crosswalk5fdb1aa
- 2026-09-23AppAdd reviewed source registry and FDA 2026 Food Code fragments for restaurant libraryccde3c5
Documents you get
- 2026-09-25AppThe documents section: real icons, real state on the row, and a search worth typing into (21.2–21.5)be85835
- 2026-09-25WebsitePackage the design system for the app, and a contrast guardef97e3e
- 2026-09-25WebsiteAdd the pest control log, and regenerate every PDF with the corrected textba4d79e
- 2026-09-24AppShow a restaurant owner their own documents18faba7
- 2026-09-24AppPlan the editing, documents and first-five-minutes work30c3a5f
- 2026-09-24AppGuard the optional warnings array in the new binder test1c995d5
- 2026-09-24AppThe preview is the offer: unlock the documents at any point0d0ac0e
- 2026-09-24AppClose the draft export leak: a draft is no longer a free downloadd17e463
- 2026-09-24AppPrint the equipment the operator gave us, and keep library language out of the binder9d1277b
- 2026-09-24AppPoster steps are filled after all, so let a phrase live therec8cdd02
- 2026-09-24AppRun all eleven regression fixtures through the document pipeline; fix poster overflow and the unzoned mobile modules90795a9
- 2026-09-24AppA bare poster link returns that poster, not the whole binder401c4a5
- 2026-09-24AppFix six rendering defects the binder audit found723d034
- 2026-09-24AppDocument the PDF tracing requirement and tick 19.12b in PLAN_1888bc4b0
- 2026-09-24AppTrace the @sparticuz/chromium binaries into the package route function07d4610
- 2026-09-24AppSurface the real PDF error on preview deployments behind HACCPLAN_PDF_DEBUG0ecdc55
- 2026-09-24AppServer-side PDF for every output: puppeteer-core + sparticuz chromium on Vercel, finals cached in the documents bucket, PDFs in the final ZIP, Download PDF as the primary actionf1994b3
- 2026-09-24AppCountry and postal code must agree before the binder builds (address cross-check)9be72da
- 2026-09-24AppKeep speech artifacts out of binder identity fields: normalize at fact-proposal timecb40fb3
- 2026-09-24AppPrint-ready Letter output: fixed 8.5x11 page frame on screen and in print, running header/footer with restaurant, document number, revision and page X of Y, HP-<plan>-<KIND>-<nn> numbering in manifest, TOC and ZIP names9c8433e
- 2026-09-24AppAction list grouped by kitchen zone: one posters item and one logs item per zone, ticks migrate, 62 → 27 on Golden Plan A8665f0a
- 2026-09-24AppAction list: merge checks by control measure and procedures by poster page, carry legacy ticks, explain what the list is forc2b0d69
- 2026-09-24AppDerive the scope paragraph from the modules the package actually contains6729bc3
- 2026-09-24AppLand the finish path on screen: build the binder, review it, sign it257e88f
- 2026-09-24AppKitchen kit: printable wall posters per procedure, a checks card, the logs pack, and the print-and-post end state22933f9
- 2026-09-23AppWall-poster steps for every SOP, distilled from the reviewed bodies3212368
- 2026-09-23AppAdd an optional poster block to the SOP schema for the kitchen kitfbd13f7
- 2026-09-23AppFix draft composer dish lookup scope in the package route1d7393d
- 2026-09-23AppAdd restaurant plan package storage, ZIP export, package API and panele75aa5c
- 2026-09-23AppCapitalise plan purpose on the binder cover066acf3
- 2026-09-23AppAdd restaurant binder HTML renderer with draft watermark and package end-to-end test95c4a08
- 2026-09-23AppAdd restaurant document package contract2785055
Website
- 2026-09-25AppSay what else carries these words, and mark the pages an operator typed onba4cbac
- 2026-09-25WebsiteRebuild the eight comparison articles on the restaurant positioninge751ea4
- 2026-09-24AppNever ask an unpaid customer to attest to a page they cannot read19868f8
- 2026-09-24AppNever paint the manufacturer's page at a restaurant ownerd0403c7
- 2026-09-24AppGive a restaurant owner their own plans page, and a way to start a second plan50113f5
- 2026-09-24AppFinishCard: proofread the cover page before signing761d7cd
- 2026-09-24WebsiteFix the React #418 hydration error on every comparison articlee7f2c36
- 2026-09-24WebsiteFix what a full-site visual review measured across all 29 pagesc1db302
- 2026-09-24WebsiteDesign-pass the article components onto the new systemebdbb2d
- 2026-09-24WebsiteRestore LIMITS on the homepage and move to Next 16's proxy convention0a84f13
- 2026-09-24WebsiteBuild /about, which every page footer was linking to a 40409ec98c
- 2026-09-24WebsiteWrite the SEO strategy on measured numbers41c6bd3
- 2026-09-24WebsiteCheck in US keyword data, geo-verifiedfb19c97
- 2026-09-24WebsiteMark the homepage rebuild done in the site plan950afdd
- 2026-09-24WebsiteRebuild the homepage for the restaurant productba014fb
- 2026-09-24WebsiteTerms of Use (draft for legal review): planning tool not approval, operator responsibility, no refunds with one free regeneration, liability limits; privacy page alignedc36743d
- 2026-09-23AppDrop a redundant stage comparison flagged by the type checkf4b99a1
Look and feel
- 2026-09-25AppFix the old accent where the token change could not reach it0982b83
- 2026-09-25AppAdopt the marketing site's design system (no component edits)b64abd7
- 2026-09-25WebsiteCorrect the neutral-400 contrast figure in the design-system READMEe1a749c
- 2026-09-25WebsiteCorrect the Bebas claim, and fix a self-reference that would have killed the font36ef458
- 2026-09-24AppOne confirmation after the special-process screen, not six54e3351
- 2026-09-23AppAdd restaurant library type contracts, predicate language and special-process screen4a2fa41
The guided conversation
- 2026-09-25AppThe front page of their plan, at turn fourf969d81
- 2026-09-25AppMeasure the intake from data already recorded9af26e7
- 2026-09-25AppRedesign Sage's screen onto the shared system236f95b
- 2026-09-25AppDefault the kitchen count instead of asking again, and bake the four missing clipsaff049b
- 2026-09-25AppBuild the plan in front of them: a document bar, live status, and the questions that build documents first7eca2f8
- 2026-09-25AppTell people why an answer was refused, and stop asking questions that trap them215d5bd
- 2026-09-25AppMake the intake quicker to answer and quicker to hear8732128
- 2026-09-25WebsiteSpec the app-side Sage handoff11e44c4
- 2026-09-25WebsiteLet Sage finish her sentence before the next question lands843948d
- 2026-09-25WebsiteA use-case landing page that opens Sage full screen15e11e0
- 2026-09-25WebsiteShip only the nine lines of Sage this site can actually reach6023264
- 2026-09-25WebsiteRe-sync Sage's questions and voice from the app0524b26
- 2026-09-25WebsiteDocument the Sage web sessions7b13424
- 2026-09-25WebsiteCorrect the record on the voice ordering fixf38b3a1
- 2026-09-25WebsiteNever let Sage's voice break the conversation2fee657
- 2026-09-25WebsiteFix a nested main landmark and Sage's pacing when voice is off17eac6b
- 2026-09-25WebsiteResolve the Sage module on the client, not across the boundaryd883b9e
- 2026-09-25WebsitePut Sage on the website: a conversation engine and two guided sessions1e5c364
- 2026-09-24AppMap the question economy and the unlock curve5ee5cdd
- 2026-09-24AppShow the documents a turn builds, instead of mentioning them3c00d99
- 2026-09-24AppThe plan builds where the customer can see it, and the intake ends with an ask (tasks 19.32, 19.33, 19.34)2343fe9
- 2026-09-24AppMake the intake a quiz: no lessons, no filler, upload before typingb52deec
- 2026-09-24AppAsk the question before explaining why it is being askedfdcd32f
- 2026-09-24AppAsk the next question on time, and stop saying "Got it" out loudf5147a3
- 2026-09-24AppThe three dead ends stop honestly at question five57014a4
- 2026-09-24AppScreen for special processes at question five, and give a blocked customer a way out (tasks 19.27, 19.28)340ed34
- 2026-09-24AppLet Sage raise the blocker she had no way to mention8707e98
- 2026-09-24AppCarry the plan back to Sage from the pricing page2f4063c
- 2026-09-24AppPoint the front door at Sage730c29f
- 2026-09-24AppPlan the Sage-only experience, which is mostly already built34e9f0b
- 2026-09-24AppStop five dishes from ending the conversatione7cd6c9
- 2026-09-24AppPlan the process-first intake the Food Code already describes1b3e255
- 2026-09-24AppGive the catering question a module to answer tof01c0bf
- 2026-09-24AppChallenge the cooling contradiction with one control question at intake4f52222
- 2026-09-24AppDrive plan status and package staleness through the end-of-intake lifecyclecc72858
- 2026-09-24WebsiteReplace the editorial look with a conversational-app design systeme424e48
- 2026-09-23AppRegenerate Sage's clips for questions that now state their limited23b6b
- 2026-09-23AppState the limit and pre-select the common answer on control questions; add the 'what this changes' line240a101
- 2026-09-23AppPay-first gate behind HACCPLAN_PAY_FIRST (off by default): Sage requires an active entitlement, pricing shown first, post-checkout confirmation359b63d
- 2026-09-23AppOne voice: Sage's dynamic lines synthesized server-side with her TTS voice, cached client-side, strictly serial playbackf2c4681
- 2026-09-23AppRemove every payment mention from Sage's lines and the intake screens25b8800
- 2026-09-23AppNever show a question as a hint; ask cooked-from-raw as a real dish follow-up3365223
- 2026-09-23AppAnswers under the question with full-width actions; always-editable field with Save only; press-to-listen with a hands-free toggle7f2e05a
- 2026-09-23AppStop the intake for Canadian restaurants right after the country answer, with a waitlist6062210
- 2026-09-23AppAdd PLAN_18B intake simplification analysis from the owner's full walk-through67d9217
- 2026-09-23AppConsultant screen v4: start tap for the microphone, spoken save prompt with voice yes/no, Save/Edit only, anchored answer strip, post-intake walk-through mode2130aaf
- 2026-09-23AppFix duplicate registry import in the transcribe route; regenerate the one missing clip4caf824
- 2026-09-23AppSage persona copy pass, wired teaching moments, transcript normalization and consultant screen v3a959a55
- 2026-09-23AppWire dish elicitation end to end and apply owner feedback on the consultant screen74558d4
- 2026-09-23AppRecord PLAN_18A 5b.2 consultant screen, live check and billing migration application in PLAN_185a6e7e0
- 2026-09-23AppAdd Sage's consultant screen (PLAN_18A 5b.2): talking circle, quiz-style answer sheet, Save card after every answer, list elicitation, checklist sheetfce670d
- 2026-09-23AppMake Sage the first path on the plans workspace; legacy product intake collapsed; restaurant plans open in the consultant screen29206ed
- 2026-09-23AppConversation contract for the consultant screen: reviewed answers confirm deterministic facts, reply clip ids, persona name3bd5944
- 2026-09-23AppAdd Sage's pre-generated voice: 202 clips (127 questions, 34 prompts, 41 teaching moments) and record PLAN_18A research in the work loge0ce612
- 2026-09-23AppAdd PLAN_18A research: dish-to-process priors (229 dishes, tested), dish card requirements, teaching moments library, kitchen voice UX notes; Sage persona audio generator9d2bbd9
- 2026-09-23AppAdd PLAN_18A voice-first consultant intake design proposal (owner direction 2026-09-23)4cbe80e
- 2026-09-23AppFix hedged and conversational answers for every provider, record provider benchmark and Phase 5 in PLAN_18f7accc3
- 2026-09-23AppAdd guided voice: transcribe-then-text pipeline, Gemini text provider, provider benchmark harness615451c
- 2026-09-23AppAdd question-audio asset map, voice/text equivalence tests, and harden the parser against unclear or qualified answersdff0e6e
- 2026-09-23AppFix conversation provider and applied-patch types for the Vercel type check91828cd
- 2026-09-23AppAdd text-first conversational restaurant intakea96f1b5
- 2026-09-23AppAdd conversational intake types and the bounded AI contractd0aff40
Logs and records
- 2026-09-25AppRecord a defaulted answer as a module default, without widening the model's contract778db1d
- 2026-09-25WebsiteDrop the preview link where it pointed at the templates hub72efb88
- 2026-09-25WebsiteTrack B: seven records that are useless blank, taught and generateda345ea1
- 2026-09-25WebsiteAdd the employee illness log — Track A complete0942cb5
- 2026-09-25WebsiteAdd the corrective action log — the one that closes out all the others81f5157
- 2026-09-25WebsiteAdd the thermometer calibration log and its guidea34801f
- 2026-09-25WebsiteA researched landing page for every printable log3689e2f
- 2026-09-24AppRecord the 18E decisions, and correct who the signups are0e4e0d5
- 2026-09-24AppRecord the 18D decisions, and the guard rail decision 4 needs5b62b09
- 2026-09-24AppRecord the owner's coverage decisions and set the build order095a556
- 2026-09-24AppLog the identity-hygiene lane in PLAN_1863ea6ba
- 2026-09-24AppRed blockers banner at the top of the sheet and the done screen with one action button; finalize 409 blockers shown in the same banneraa0116f
- 2026-09-24AppTest the finalize gate and log the lifecycle work in PLAN_18d202e91
- 2026-09-24AppPLAN_18: commercial tasks 19.1–19.7 recorded, go-live checklist for the sales switch (commercial task 8)465abf7
- 2026-09-24AppFounding record carries the regeneration fields added by task 3437b6f9
- 2026-09-24AppRecord the kitchen kit in PLAN_1854b08d1
- 2026-09-24WebsitePlan the template silo on US data, not on the shape of the library2d8fdd8
- 2026-09-24WebsiteGive the printable previews a way out, and take the manufacturing rules off them1638034
- 2026-09-23AppRecord PLAN_18B completion and the final live check in PLAN_18938e406
- 2026-09-23AppRecord the first blank-workspace-to-signed-plan run in PLAN_182a540a8
- 2026-09-23AppRecord v4 smoke results in PLAN_181fd21ab
- 2026-09-23AppRecord 5b.4 test and build results in PLAN_1895c4613
- 2026-09-23AppRecord Phase 4 test and build results in PLAN_188470236
- 2026-09-23AppRecord Phase 3 live check and migration application in PLAN_18c9a3188
- 2026-09-23AppRecord Phase 3 in PLAN_18 checklist and work logd274d9c
- 2026-09-23AppRecord Phase 2 live end-to-end run in PLAN_18fc0d3af
- 2026-09-23AppRecord Phase 2 in PLAN_18 checklist and work logd3f5c33
- 2026-09-23AppCorrect test file count in PLAN_18 work log8bc7bfc
- 2026-09-23AppAdd restaurant regression fixtures and record Phase 1 in PLAN_187da0843
- 2026-09-23AppFix typed gate record construction in restaurant readiness checker0682083
- 2026-09-23AppVerify restaurant module limits against Food Code fragments, add readiness tests and Phase 0 review record21da136
Accessibility
- 2026-09-23AppRestore the accessible name on the answer strip28134f2
Before this
HACCPlan did not start as a restaurant product. From 2026-05-31 to 2026-09-15 it was a food safety system for manufacturers — supplier approval, batch records, shipping, mock recalls, inspector portals. 347 changes went into that, and the code is still there.
They are counted here rather than listed, for a plain reason: publishing three hundred entries about supplier wizards and batch tables on a site that sells restaurant HACCP plans would advertise a product we no longer sell. The history is not hidden — it is in the repository, and the boundary date is in the script that builds this page.
What the product is now, and what it deliberately does not do, is set out on the documentation and in the full account of what it does and refuses to claim.
Generated 2026-09-25 from the commit history of naturelioninc/staria and naturelioninc/haccplan-www.