@troylar/flightdeck 2.8.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,43 @@
2
2
 
3
3
  <!-- Generated by build.py from src/releases.json. Edit that file, not this one. -->
4
4
 
5
+ ## 2.10.0 · Oct 27, 2026
6
+
7
+ First-time clarity.
8
+
9
+ ### New
10
+
11
+ - **Approvals have their own form, and + Add role is where you need it** (Editor). + Add approval in the outline opens a form with the approval's name and who approves; what passing approves is under More approval options. + Add role in the approval, lane and step forms adds a role to the checklist and gives it to that part in one change, with one Undo. *Where:* Editing a draft, an approval, lane or step
12
+
13
+ ### Improved
14
+
15
+ - **A shorter step form** (Editor). A step starts with What needs to be done?, Who does it?, Must be done and + Add instructions. A step with a type shows its type and the boxes it usually needs at the top. Guidance, proof, timing, conditions and automation planning are under More options, which stays open on every step once you open it. Anything a step already uses is shown outside it, and a box never moves while you type in it. *Where:* Editing a draft, a step
16
+ - **Must be done and Automation planned are checkboxes** (Editor). Must be done and Automation planned are two checkboxes. Checking one clears the other and says so. The checklist's Markdown is the same as before. *Where:* Editing a draft, a step
17
+ - **The start screen asks who approves** (Runs). A checklist with an approval role opens With others and asks who approves, with a suggestion from earlier runs. On my own says it includes who approves. Start waits until it's chosen and keeps what you typed. *Where:* Starting a run or planning one
18
+ - **Checklists, not Processes** (Everywhere). The app says Checklists and New checklist, and the plain step type is Basic step. Files, IDs, commands and the Markdown are unchanged. The type chooser groups Everyday work, Software tools and commands, and your team's types. *Where:* Navigation, the Checklists page and the step type chooser
19
+ - **A new draft starts on its first step** (Editor). It opens on Preview, and the outline says Add your first step above the add box. A draft with any other problem still opens on Checks. *Where:* Creating a checklist
20
+
21
+ ### Fixed
22
+
23
+ - **A detail picked from the suggestions is applied when you leave the box** (Editor). Leaving the box applies it, as typing does. When a box does hold typing that isn't applied, the message is shown beside that box with Apply and Discard, including on a phone, and a closed More options around it opens. *Where:* Editing a draft
24
+ - **Quick add takes ^details** (Editor). A step added from the outline's quick-add box keeps the ^details typed into it. *Where:* Editing a draft, the outline
25
+
26
+ ## 2.9.0 · Oct 27, 2026
27
+
28
+ Team values.
29
+
30
+ ### New
31
+
32
+ - **Keep the team's shared settings in one place** (Settings). Settings › Team values holds settings the whole team uses, like a Bitbucket base URL, each with what it's for. The folder owner and backup owner add, change and remove them; everyone else sees them. Values are trimmed, and the page reminds you not to store passwords or tokens there. If someone else changed the list first, nothing is saved over it: the list reloads and you make the change again. *Where:* Settings, Team values
33
+ - **Pass a team value to a linked run** (Editor). A child detail's source can be A team value, chosen from the folder's list with what each one is for and what it is now. The Markdown gets pass: base=team:bitbucket-base-url. A name that isn't in the folder is flagged in the editor and stops publishing. *Where:* Editing a draft, a Run another process step
34
+ - **The child gets the team value as it is when it starts** (Runs). The team value is read when the child starts and copied into it, so a later change never changes a started child. One that isn't set is asked for this run. If it changes while you fill in the form or while the child is saved, nothing starts and the form opens again with the new value and your answers. A child that changes it doesn't complete the step. *Where:* The run screen, a Run another process step
35
+
36
+ ### Improved
37
+
38
+ - **Link it asks you to confirm team values** (Runs). A run started for a step but never linked can still be linked. On a step that passes team values, Link it shows the run's values and links them only once you confirm them, as shown. If the run changes while you're looking, it shows the new values first. *Where:* The run screen, a run that isn't linked
39
+ - **Folder health checks team-values.json** (Folder health). A team-values.json that can't be read, a conflict copy of it, and a published step whose team value was removed later are each listed with what to do. *Where:* Settings, Folder health
40
+ - **A checklist that passes a team value needs Flightdeck 2.9** (Compatibility). A version that passes a team value, and its runs, open only in Flightdeck 2.9 or later; earlier copies name the version and won't run it. A checklist without one publishes exactly as before. *Where:* Publishing and older copies
41
+
5
42
  ## 2.8.0 · Oct 26, 2026
6
43
 
7
44
  Nested processes that know what the child needs.
package/README.md CHANGED
@@ -32,7 +32,7 @@
32
32
 
33
33
  ## Words this README uses
34
34
 
35
- - A **process** is something your team does; the app lists them under **Processes**. Its **checklist** is the steps, written as Markdown and published as numbered **versions** (v1, v2, …).
35
+ - A **checklist** is something your team does, written down; the app lists them under **Checklists** (called Processes before 2.10). Its steps are written as Markdown and published as numbered **versions** (v1, v2, …).
36
36
  - A **run** is one time through a checklist. One person **records** it (the **recorder**); everyone else follows along.
37
37
  - A **window** is one open Flightdeck tab. Some file names include the window that wrote them.
38
38
  - A **run detail** is a value a run carries, like the commit or the release tag. Steps refer to one as `^commit`.
@@ -64,11 +64,11 @@ flightdeck install ~/OneDrive/Team # adds flightdeck.html; keeps the AGENTS.
64
64
 
65
65
  Run it after setup, not before: setup wants an empty folder. Teammates then open `flightdeck.html` from the team folder in Edge or Chrome. Setting the folder up in OneDrive is covered in [Flightdeck and OneDrive](https://github.com/troylar/flightdeck/blob/main/docs/onedrive.md#set-up).
66
66
 
67
- **Finding your way around.** The top bar has **Home**, **Runs**, **Processes** and **Settings**. **Skills** and **Step types** open from the Processes page, from Settings and from search (Ctrl+K, or Cmd+K on a Mac), which finds runs, steps, notes, corrections, follow-ups, step types and skills, and keeps its index in memory on your computer.
67
+ **Finding your way around.** The top bar has **Home**, **Runs**, **Checklists** and **Settings**. **Skills** and **Step types** open from the Checklists page, from Settings and from search (Ctrl+K, or Cmd+K on a Mac), which finds runs, steps, notes, corrections, follow-ups, step types and skills, and keeps its index in memory on your computer.
68
68
 
69
- **Home** shows only what's yours, each with one button: the run you're recording, a plan to review, a skill to update, and your open follow-ups. **Processes** lists every process in your team's own groups, with **Filter by tag** and each one's version and last run. **New process** starts one.
69
+ **Home** shows only what's yours, each with one button: the run you're recording, a plan to review, a skill to update, and your open follow-ups. **Checklists** lists every checklist in your team's own groups, with **Filter by tag** and each one's version and last run. **New checklist** starts one.
70
70
 
71
- <p align="center"><a href="https://github.com/troylar/flightdeck/blob/main/docs/images/home-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/home-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/home-light.png" alt="Home for Casey: the things that need Casey, each with one button, then Your follow-ups with Done, Moved to a ticket, Moved to another run and Won't do" width="49%"></picture></a> <a href="https://github.com/troylar/flightdeck/blob/main/docs/images/processes-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/processes-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/processes-light.png" alt="Processes: the team's processes grouped by hierarchy, each with its version, when it last ran and its skills, with Filter by tag, and Skills, Step types and New process at the top" width="49%"></picture></a></p>
71
+ <p align="center"><a href="https://github.com/troylar/flightdeck/blob/main/docs/images/home-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/home-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/home-light.png" alt="Home for Casey: the things that need Casey, each with one button, then Your follow-ups with Done, Moved to a ticket, Moved to another run and Won't do" width="49%"></picture></a> <a href="https://github.com/troylar/flightdeck/blob/main/docs/images/processes-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/processes-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/processes-light.png" alt="Checklists: the team's checklists grouped by hierarchy, each with its version, when it last ran and its skills, with Filter by tag, and Skills, Step types and New checklist at the top" width="49%"></picture></a></p>
72
72
 
73
73
  ## How it works
74
74
 
@@ -103,23 +103,23 @@ context: commit
103
103
 
104
104
  Two phases, three steps and one gate, plus the final confirmation every checklist gets. `[!]` is a must-do. `{run.command}` is the step's type, so the run shows the command with a Copy button. `^commit` ties a step to a run detail. The gate approves exactly one thing: publishing that commit.
105
105
 
106
- You don't have to write Markdown. **New process** on the Processes page asks for a title and opens the editor with the **Add a step** box ready: type a step, press Enter, type the next. The group, tags, run details, roles, owner and file name are under **More options**. You can also start from Code check-in or Weekly review, or copy a prompt for your AI assistant.
106
+ You don't have to write Markdown. **New checklist** on the Checklists page asks for a title and opens the editor with the **Add a step** box ready: type a step, press Enter, type the next. The group, tags, run details, roles, owner and file name are under **More options**. You can also start from Code check-in or Weekly review, or copy a prompt for your AI assistant.
107
107
 
108
- **Edit** on a process page opens its draft on a page of its own: the **Builder** (an outline) or the **Markdown**, beside **Checks** (what blocks publishing, and what's only a tip) and a **Preview**. Both views edit the same file; the builder changes only the lines you touch and never a step ID. Your AI assistant's changes to a draft you have open, with nothing unsaved, show up within seconds, marked and one Undo away.
108
+ **Edit** on a checklist's page opens its draft on a page of its own: the **Builder** (an outline) or the **Markdown**, beside **Checks** (what blocks publishing, and what's only a tip) and a **Preview**. Both views edit the same file; the builder changes only the lines you touch and never a step ID. Your AI assistant's changes to a draft you have open, with nothing unsaved, show up within seconds, marked and one Undo away.
109
109
 
110
- <a href="https://github.com/troylar/flightdeck/blob/main/docs/images/builder-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/builder-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/builder-light.png" alt="The editor's Builder, with Save draft and Review &amp; publish in the header: the parts box with Phase, Gate, Step, Must-do and All parts; phases as cards with steps as rows and a striped gate bar; and the selected step's form, scrolled to its Fields: each box asks a question (Which job?, Which parameters?, Which stage do you watch?) with a short why under it, then + Job page for a box it doesn't usually need, and How long does it usually take?" width="1000"></picture></a>
110
+ <a href="https://github.com/troylar/flightdeck/blob/main/docs/images/builder-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/builder-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/builder-light.png" alt="The editor's Builder, with Save draft and Review &amp; publish in the header: the parts box with Phase, Approval, Step, Must-do and All parts; phases as cards with steps as rows and a striped approval bar with Edit approval; and the selected Jenkins job step's form: What needs to be done?, Who does it? with its roles and + Add role, Must be done checked, then its type and Which job? at the top" width="1000"></picture></a>
111
111
 
112
- **The step form** asks a question for each box, with a gray example and why it matters. It shows only the boxes the step's type usually needs, and any that hold a value; the rest are one click away behind **+ add** buttons. The fields every step accepts (a link, how long it takes, a deadline, proof, a time) are under **More about this step**. A choice of five or fewer is a row of buttons. **When it's checked, they record** lists exactly what a run will ask for. In the outline, drag a step or press Alt+Up / Alt+Down to move it, and **Undo** and **Redo** step through changes.
112
+ **The step form** starts short: what needs to be done, who does it, **Must be done**, and **+ Add instructions**. A step with a type shows its type and the boxes it usually needs at the top. Everything else (guidance, proof, timing, conditions, automation planning) is under **More options**, which stays open once you open it; anything a step already uses is shown outside it. Each box asks a question, with a gray example and why it matters, and boxes not shown yet are one click away behind **+ add** buttons. A choice of five or fewer is a row of buttons. **When it's checked, they record** lists exactly what a run will ask for. In the outline, drag a step or press Alt+Up / Alt+Down to move it, and **Undo** and **Redo** step through changes.
113
113
 
114
114
  **Details in any box.** Type `^` in a step's text, a gate's approval or a text field to pick a run detail, or use **Insert a detail**. A misspelled one is marked with a one-click fix ("Use ^environment"), and a detail that may not be set yet at that step says which step sets it. **In a run:** under the box shows it filled in, with the values from your latest run. A caret that isn't a detail, like `grep ^ERROR`, stays as written. To rename a detail everywhere at once, use **Rename** in Checklist details; a linked step in this checklist keeps passing the same value to its child. If another checklist runs this one at its latest and passes the detail by the old name, Rename says so, and Folder health flags that checklist once this version is published, until it's changed to match.
115
115
 
116
116
  <p align="center"><a href="https://github.com/troylar/flightdeck/blob/main/docs/images/autocomplete-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/autocomplete-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/autocomplete-light.png" alt="A Jenkins step's parameters box: typing ^en offers ^environment, a text detail asked when a run starts, or adding ^en as a new run detail" width="49%"></picture></a> <a href="https://github.com/troylar/flightdeck/blob/main/docs/images/rename-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/rename-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/rename-light.png" alt="Checklist details: each run detail with how many places use it and Rename; renaming ^tag to build_tag lists the steps that follow it" width="49%"></picture></a></p>
117
117
 
118
- **Run another process.** A step can start another checklist as a linked run. Pick the process from a list, and say where each of its details comes from: one of this run's details (under another name if you like), a fixed value, or asked when it starts. Publishing checks that against the other checklist as it is now. When you start it, its form opens with what's passed already filled in and asks only what's left (2.8).
118
+ **Run another checklist.** A step can start another checklist as a linked run. Pick the checklist from a list, and say where each of its details comes from: one of this run's details (under another name if you like), a fixed value, or asked when it starts. Publishing checks that against the other checklist as it is now. When you start it, its form opens with what's passed already filled in and asks only what's left (2.8).
119
119
 
120
120
  <p align="center"><a href="https://github.com/troylar/flightdeck/blob/main/docs/images/nested-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/nested-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/nested-light.png" alt="A linked step in the editor: Check in code chosen from a list, Latest when this run starts, and what Check in code needs: branch asked when it starts, commit from this run's ^commit, story from this run's ^ticket" width="38%"></picture></a> <a href="https://github.com/troylar/flightdeck/blob/main/docs/images/child-start-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/child-start-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/child-start-light.png" alt="Starting the Check in code run: commit and story passed from this run, branch asked, and who's doing what" width="60%"></picture></a></p>
121
121
 
122
- **Save draft** saves your work. **Review & publish** goes back to the process page: there you can compare the draft with the last version, write what changed in one line, and choose **Publish vN**. Anything that blocks publishing disables the button; suggestions don't. A save goes through only if the draft is still what you opened; if a teammate changed it meanwhile, nothing is saved and you choose between their version and yours. A shared folder can't lock a file, so edit a draft with one person (or one AI assistant) at a time.
122
+ **Save draft** saves your work. **Review & publish** goes back to the checklist's page: there you can compare the draft with the last version, write what changed in one line, and choose **Publish vN**. Anything that blocks publishing disables the button; suggestions don't. A save goes through only if the draft is still what you opened; if a teammate changed it meanwhile, nothing is saved and you choose between their version and yours. A shared folder can't lock a file, so edit a draft with one person (or one AI assistant) at a time.
123
123
 
124
124
  <a href="https://github.com/troylar/flightdeck/blob/main/docs/images/edit-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/edit-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/edit-light.png" alt="Editing a draft as Markdown, with Practice, Save draft and Review &amp; publish in the header: the open corrections with links to their lines, the Markdown on the left, and the Checks and Preview tabs on the right"></picture></a>
125
125
 
@@ -129,7 +129,7 @@ You don't have to write Markdown. **New process** on the Processes page asks for
129
129
 
130
130
  To rehearse a change with real people before everyone uses it, **stage** it. A staged version is tried by **test runs** while every real run stays on the current default:
131
131
 
132
- 1. **Stage it.** At the end of Practice, write what changed and choose **Stage it for a test run**; or on the process page open **All versions** and choose **Stage the draft for testing**. It's written once to `staged/` and never edited.
132
+ 1. **Stage it.** At the end of Practice, write what changed and choose **Stage it for a test run**; or on the checklist's page open **All versions** and choose **Stage the draft for testing**. It's written once to `staged/` and never edited.
133
133
  2. **Try it.** **Start a test run** on the staged line. A test run is recorded like any run but is labeled **Test run** everywhere it shows, and it's never counted as a real run: How runs go, Home's running number, last-run dates and role rotation leave it out. Its follow-ups and corrections are real.
134
134
  3. **Prove it.** The staged line counts clean test runs ("2 of 3 clean test runs"). With three, the owner, or the backup owner while the owner is away, gets **Sign off staged v3**.
135
135
  4. **Make it the default.** **Make v3 the default** publishes exactly what was staged as the next version (if someone published meanwhile, it takes the next number and says so). Its clean test runs and sign-off then count for that version.
@@ -142,7 +142,7 @@ To rehearse a change with real people before everyone uses it, **stage** it. A s
142
142
 
143
143
  Publishing freezes the checklist as a numbered version, with who, when and why, in a folder that is written once and never changed. Every run keeps the version it started on, forever, and carries its own copy of the checklist and step types, so it reads the same years later. Before you publish, the panel names anything the draft uses that older copies can't run, under **Needs Flightdeck 2.0** or **Needs Flightdeck 2.1**.
144
144
 
145
- A process page shows its checklist (as **Checklist**, **Flight plan** or **Markdown**), **Start a run**, **Plan a run**, **How runs go** and its versions; an older version offers **Restore as draft**. Its owner and backup owner also see open corrections, **Ready for a skill?** and its skills; everyone else sees each of those as one line.
145
+ A checklist's page shows its steps (as **Checklist**, **Flight plan** or **Markdown**), **Start a run**, **Plan a run**, **How runs go** and its versions; an older version offers **Restore as draft**. Its owner and backup owner also see open corrections, **Ready for a skill?** and its skills; everyone else sees each of those as one line.
146
146
 
147
147
  <a href="https://github.com/troylar/flightdeck/blob/main/docs/images/process-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/process-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/process-light.png" alt="The Production release process as its owner sees it: the v2 checklist with skill badges, the Checklist, Flight plan and Markdown views, Edit, Start a run and Plan a run, and the Corrections panel with two open corrections" width="1000"></picture></a>
148
148
 
@@ -170,9 +170,9 @@ Every answer keeps who and when, and a re-check keeps the earlier answer as hist
170
170
 
171
171
  When the checklist is wrong mid-run, anyone can **Correct this step** (or press C): change its wording with a live Before/After, or choose **Change something else** for a missing step, the order, who does it, a screenshot or removing it, with files to show why. If you already did it another way, **Done differently** asks what happened and offers **Fix the checklist too**.
172
172
 
173
- <p align="center"><a href="https://github.com/troylar/flightdeck/blob/main/docs/images/correction-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/correction-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/correction-light.png" alt="Correct this step during a run: what the checklist says, the suggested wording, a Before/After redline, why, Attach for files, and Save correction" width="49%"></picture></a> <a href="https://github.com/troylar/flightdeck/blob/main/docs/images/corrections-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/corrections-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/corrections-light.png" alt="Corrections on the process page: a wording change suggested in two runs, with the runs listed, and a missing step, each with Review and apply, Mark as applied and Decline, then Copy correction brief" width="49%"></picture></a></p>
173
+ <p align="center"><a href="https://github.com/troylar/flightdeck/blob/main/docs/images/correction-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/correction-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/correction-light.png" alt="Correct this step during a run: what the checklist says, the suggested wording, a Before/After redline, why, Attach for files, and Save correction" width="49%"></picture></a> <a href="https://github.com/troylar/flightdeck/blob/main/docs/images/corrections-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/corrections-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/corrections-light.png" alt="Corrections on the checklist's page: a wording change suggested in two runs, with the runs listed, and a missing step, each with Review and apply, Mark as applied and Decline, then Copy correction brief" width="49%"></picture></a></p>
174
174
 
175
- Corrections wait on the process page, grouped by step ("Suggested in 2 runs"). **Review and apply** shows what the run's version said, the draft now and the result side by side, and applies it to the draft as one change you can undo; you can also **Mark as applied**, **Decline** with a reason, or copy a correction brief for your AI assistant. The version that includes it records that, its runs show **Changed in v5** with **Why is this here?**, and Home tells whoever suggested it.
175
+ Corrections wait on the checklist's page, grouped by step ("Suggested in 2 runs"). **Review and apply** shows what the run's version said, the draft now and the result side by side, and applies it to the draft as one change you can undo; you can also **Mark as applied**, **Decline** with a reason, or copy a correction brief for your AI assistant. The version that includes it records that, its runs show **Changed in v5** with **Why is this here?**, and Home tells whoever suggested it.
176
176
 
177
177
  **How runs go** shows typical time per phase, the steps that go off-script most, and who has held each role. **Flight plan** draws a version's shape: phases as waypoints, gates as checkpoints, tracks side by side, and, from its runs, typical times, autopilot (steps skills cover) and turbulence (steps that go off-script most).
178
178
 
@@ -214,7 +214,7 @@ roles: release-lead, qa, backend
214
214
 
215
215
  | Mark | Means |
216
216
  |---|---|
217
- | `[!]` · `[ ]` · `[~]` | Must do · a step · automation planned |
217
+ | `[!]` · `[ ]` · `[~]` | Must be done · a step · automation planned |
218
218
  | `READ-DO` · `DO-CONFIRM` | How a phase is worked; the app shows "Read, then do" and "Do, then confirm" |
219
219
  | `{type}` | The step's type, so it knows its fields and evidence ([Step types](#step-types)) |
220
220
  | `@role` · `^detail` | Who does it · a run detail it depends on (change the detail, redo the step) |
@@ -223,7 +223,7 @@ roles: release-lead, qa, backend
223
223
  | `## Gate:` · `approves:` | The pause point, and exactly what passing it approves |
224
224
  | `### Track: Name @role` | Parallel work inside a phase |
225
225
  | `at:` · `due:` · `after:` | A clock time, a deadline, or a due time after the run starts |
226
- | `{run.process}` · `carry:` · `pass:` · `version:` | Start another process as a linked child run, passing these details (under another name, as a fixed value, or asked when it starts, with `pass:`, 2.8), on an exact version if you name one |
226
+ | `{run.process}` · `carry:` · `pass:` · `version:` | Start another process as a linked child run, passing these details (under another name, as a fixed value, or asked when it starts, with `pass:`, 2.8; or a team value, `team:`, 2.9), on an exact version if you name one |
227
227
  | `group:` · `tags:` | Where the process sits in your hierarchy, and how to find it |
228
228
  | `context: rows:number, due:date` | Typed run details (number, yes-no, date, choice, link), checked as they're typed |
229
229
  | `> note` · `![caption](images/…)` | A note or screenshot, under a step, a phase or a gate |
@@ -250,7 +250,7 @@ This is what Flightdeck is for. Outside the team it's usually called **SOP-to-sk
250
250
 
251
251
  <p align="center"><a href="https://github.com/troylar/flightdeck/blob/main/docs/images/trace-light.png" title="Open in GitHub's image viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/trace-dark.png"><img src="https://raw.githubusercontent.com/troylar/flightdeck/main/docs/images/trace-light.png" alt="Five steps from process to skill: prove it with 3 clean runs, the owner or backup owner signs it off, copy the brief, register the skill with its source and the steps it follows, and stay in step as new versions flag the skills they affect. Skill statuses: current, note version, needs an update, check it." width="1000"></picture></a></p>
252
252
 
253
- **1. Prove a version.** **Ready for a skill?** on the process page counts clean runs. A run is clean only when it ended Completed; every covered step was done; every gate on that work (and the one before it) was passed; nothing was blocked, re-checked, marked N/A or done differently, even in answers since archived; it has no unresolved conflict copies; and it kept a full record of deviations from its start (runs from before 1.9.0 can't show that). A step the run didn't need isn't held against it. A test run counts only for its staged version and the version made from exactly what was staged.
253
+ **1. Prove a version.** **Ready for a skill?** on the checklist's page counts clean runs. A run is clean only when it ended Completed; every covered step was done; every gate on that work (and the one before it) was passed; nothing was blocked, re-checked, marked N/A or done differently, even in answers since archived; it has no unresolved conflict copies; and it kept a full record of deviations from its start (runs from before 1.9.0 can't show that). A step the run didn't need isn't held against it. A test run counts only for its staged version and the version made from exactly what was staged.
254
254
 
255
255
  **2. Sign off.** With three clean runs, the process owner signs the version off. The backup owner's sign-off counts too, recorded as the backup's, and Flightdeck offers it only while the owner is away (marked inactive or no longer on the team). A sign-off counts only for that exact published version, or, with **Sign off staged v3**, for the staged version and the version made from it.
256
256
 
@@ -308,6 +308,7 @@ More in [Flightdeck and OneDrive](https://github.com/troylar/flightdeck/blob/mai
308
308
 
309
309
  ```
310
310
  people.json who's on the team, with the folder owner and backup owner
311
+ team-values.json shared settings like a Bitbucket base URL, changed in Settings by the folder owner and backup owner
311
312
  maps/drafts/ checklists being written (Markdown)
312
313
  publications/ published versions, frozen (Flightdeck writes these)
313
314
  staged/ staged versions only test runs use, and each retire or reopen, written once
package/bin/flightdeck.js CHANGED
@@ -1515,7 +1515,13 @@ async function draftMain(argv) {
1515
1515
  (p ? p.broken : []).forEach((x) => { if (!x._readFailed) { const k = PF.appjson.pubProblem(x); L.note('publications/' + n + '/' + x.folder + '/', k.kind, k.why); } });
1516
1516
  } catch (e) { procs[n] = { latest: null, all: [], clashes: [], broken: [], unlisted: 'publications/' + n + '/ couldn\'t be read' }; }
1517
1517
  }
1518
- const c = M.check(map, { people: [], types: {}, workflows: {}, processes: [], children: PF.links.childrenFrom(procs) });
1518
+ /* Team values (2.9), through the same ledger: a failed read is noted by the ledger; damaged or newer content here. */
1519
+ let tv;
1520
+ if (M.steps(map).some((x) => x.step.type === 'run.process' && PF.links.teams(x.step).length)) {
1521
+ tv = await PF.repo.readTeamValues(rfs);
1522
+ if (tv.state === 'malformed' || tv.state === 'newer') L.note(PF.teamValues.FILE, tv.state, tv.why);
1523
+ }
1524
+ const c = M.check(map, { people: [], types: {}, workflows: {}, processes: [], children: PF.links.childrenFrom(procs), teamValues: tv });
1519
1525
  return { checks: { blockers: c.blockers, suggestions: c.suggestions }, problems: L.problems() };
1520
1526
  };
1521
1527
  /* Every problem once: the draft's reads, then the children's. */