Checklists lock when a project goes live

Once a project starts, its checkpoint names, existence and order are fixed — so the crew and the customer always see what was agreed.

What it is

A database-enforced freeze on live projects: no renaming, no deleting, no inserting checkpoints. The stage modal detects the frozen state and replaces the Edit button with 'Locked — project is live' plus an explanation pointing at N/A and at editing the building type for future jobs.

Also called: can't edit checkpoints · locked checklist · why can't I rename this · project is live

See it
Checklists lock when a project goes live
Dirt work
Foundation
Framing
4
Roofing
4 photos
5
Trim
6
Final
Checkpoints header showing 'Locked — project is live' with the explanatory tip open — GanttChart.tsx checklist header. Sample data — no customer information appears here.
How it works
  1. 1materialize_project_stages stamps frozen_at when a project is started
  2. 2A trigger rejects rename / delete / insert on a frozen project's checkpoints
  3. 3planned_days is also in the frozen set (migration 142) so the estimate can't follow the actual around; planned_start_day deliberately stays movable because that is the schedule, not the estimate
  4. 4The Gantt reads the frozen flag from the instance overlay and hides the Edit affordance
Why we built it

The rule the business runs on is that once someone hits Start Project the checklist is what it is: if it is wrong, fix it on the next job, and skip what does not apply on this one. Before the lock, anyone could rename, hide or delete checkpoints on a live build, which meant the list a customer was shown at signing was not necessarily the list anybody was measured against at the end. The lock lives in the database rather than in the screen, because a rule enforced only by a button is one request away from being ignored. The buttons that would break it are hidden too — the alternative was a raw database error thrown at whoever clicked the X.

The problem
  • Mid-project checklist edits changing what the customer was shown
  • Scope quietly moving during a build
  • Raw database errors reaching the builder
Sound familiar?
What you get
What was agreed at project start stays visible to everyone
The rule is enforced for every client, script and future app
The builder is pointed at the thing that does work (N/A) instead of an error

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →