@kidlat-dakila/flightplan 0.0.0-stage → 0.1.6

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.
Files changed (210) hide show
  1. package/LICENSE.md +105 -0
  2. package/README.md +174 -2
  3. package/backend/configurations/default-configurations/minimal/blast.nodes.impactReason.md +7 -0
  4. package/backend/configurations/default-configurations/minimal/blast.nodes.impactType.behaviour-changes.md +1 -0
  5. package/backend/configurations/default-configurations/minimal/blast.nodes.impactType.breaks.md +1 -0
  6. package/backend/configurations/default-configurations/minimal/blast.nodes.impactType.md +10 -0
  7. package/backend/configurations/default-configurations/minimal/blast.nodes.impactType.unaffected.md +1 -0
  8. package/backend/configurations/default-configurations/minimal/context.md +58 -0
  9. package/backend/configurations/default-configurations/minimal/journey.description.md +16 -0
  10. package/backend/configurations/default-configurations/minimal/journey.nodes.blockLabels.label.md +13 -0
  11. package/backend/configurations/default-configurations/minimal/journey.nodes.description.md +13 -0
  12. package/backend/configurations/default-configurations/minimal/journey.nodes.label.md +10 -0
  13. package/backend/configurations/default-configurations/minimal/journey.nodes.triggerLabels.label.md +10 -0
  14. package/backend/configurations/default-configurations/minimal/walkthrough.files.title.md +7 -0
  15. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.kind.bug.md +1 -0
  16. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.kind.md +6 -0
  17. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.kind.nit.md +2 -0
  18. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.kind.question.md +2 -0
  19. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.kind.risk.md +3 -0
  20. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.md +21 -0
  21. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.reading.md +15 -0
  22. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.solution.md +10 -0
  23. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.title.md +5 -0
  24. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.trace.md +10 -0
  25. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.needsAttention.md +26 -0
  26. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.reading.md +59 -0
  27. package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.title.md +11 -0
  28. package/backend/configurations/default-configurations/minimal/walkthrough.intro.md +4 -0
  29. package/backend/configurations/default-configurations/minimal/writingStyle.md +100 -0
  30. package/backend/configurations/default-configurations/onboardee/blast.nodes.impactReason.md +8 -0
  31. package/backend/configurations/default-configurations/onboardee/blast.nodes.impactType.behaviour-changes.md +1 -0
  32. package/backend/configurations/default-configurations/onboardee/blast.nodes.impactType.breaks.md +1 -0
  33. package/backend/configurations/default-configurations/onboardee/blast.nodes.impactType.md +11 -0
  34. package/backend/configurations/default-configurations/onboardee/blast.nodes.impactType.unaffected.md +1 -0
  35. package/backend/configurations/default-configurations/onboardee/context.md +70 -0
  36. package/backend/configurations/default-configurations/onboardee/contextCodeBlocks.description.md +62 -0
  37. package/backend/configurations/default-configurations/onboardee/journey.description.md +10 -0
  38. package/backend/configurations/default-configurations/onboardee/journey.nodes.blockLabels.label.md +9 -0
  39. package/backend/configurations/default-configurations/onboardee/journey.nodes.description.md +7 -0
  40. package/backend/configurations/default-configurations/onboardee/journey.nodes.label.md +5 -0
  41. package/backend/configurations/default-configurations/onboardee/journey.nodes.triggerLabels.label.md +6 -0
  42. package/backend/configurations/default-configurations/onboardee/walkthrough.files.title.md +7 -0
  43. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.kind.bug.md +2 -0
  44. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.kind.md +7 -0
  45. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.kind.nit.md +3 -0
  46. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.kind.question.md +2 -0
  47. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.kind.risk.md +3 -0
  48. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.md +30 -0
  49. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.reading.md +14 -0
  50. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.solution.md +12 -0
  51. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.title.md +6 -0
  52. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.trace.md +12 -0
  53. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.needsAttention.md +36 -0
  54. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.reading.md +68 -0
  55. package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.title.md +12 -0
  56. package/backend/configurations/default-configurations/onboardee/walkthrough.intro.md +5 -0
  57. package/backend/configurations/default-configurations/onboardee/writingStyle.md +137 -0
  58. package/backend/configurations/default-configurations/standard/blast.nodes.impactReason.md +8 -0
  59. package/backend/configurations/default-configurations/standard/blast.nodes.impactType.behaviour-changes.md +1 -0
  60. package/backend/configurations/default-configurations/standard/blast.nodes.impactType.breaks.md +1 -0
  61. package/backend/configurations/default-configurations/standard/blast.nodes.impactType.md +11 -0
  62. package/backend/configurations/default-configurations/standard/blast.nodes.impactType.unaffected.md +1 -0
  63. package/backend/configurations/default-configurations/standard/context.md +70 -0
  64. package/backend/configurations/default-configurations/standard/journey.description.md +10 -0
  65. package/backend/configurations/default-configurations/standard/journey.nodes.blockLabels.label.md +9 -0
  66. package/backend/configurations/default-configurations/standard/journey.nodes.description.md +7 -0
  67. package/backend/configurations/default-configurations/standard/journey.nodes.label.md +5 -0
  68. package/backend/configurations/default-configurations/standard/journey.nodes.triggerLabels.label.md +6 -0
  69. package/backend/configurations/default-configurations/standard/walkthrough.files.title.md +7 -0
  70. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.kind.bug.md +2 -0
  71. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.kind.md +7 -0
  72. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.kind.nit.md +3 -0
  73. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.kind.question.md +2 -0
  74. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.kind.risk.md +3 -0
  75. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.md +30 -0
  76. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.reading.md +14 -0
  77. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.solution.md +12 -0
  78. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.title.md +6 -0
  79. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.trace.md +12 -0
  80. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.needsAttention.md +36 -0
  81. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.reading.md +68 -0
  82. package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.title.md +12 -0
  83. package/backend/configurations/default-configurations/standard/walkthrough.intro.md +5 -0
  84. package/backend/configurations/default-configurations/standard/writingStyle.md +137 -0
  85. package/backend/configurations/default-configurations/unfamiliar-territory/blast.nodes.impactReason.md +8 -0
  86. package/backend/configurations/default-configurations/unfamiliar-territory/blast.nodes.impactType.behaviour-changes.md +1 -0
  87. package/backend/configurations/default-configurations/unfamiliar-territory/blast.nodes.impactType.breaks.md +1 -0
  88. package/backend/configurations/default-configurations/unfamiliar-territory/blast.nodes.impactType.md +11 -0
  89. package/backend/configurations/default-configurations/unfamiliar-territory/blast.nodes.impactType.unaffected.md +1 -0
  90. package/backend/configurations/default-configurations/unfamiliar-territory/context.md +70 -0
  91. package/backend/configurations/default-configurations/unfamiliar-territory/contextCodeBlocks.description.md +98 -0
  92. package/backend/configurations/default-configurations/unfamiliar-territory/journey.description.md +10 -0
  93. package/backend/configurations/default-configurations/unfamiliar-territory/journey.nodes.blockLabels.label.md +9 -0
  94. package/backend/configurations/default-configurations/unfamiliar-territory/journey.nodes.description.md +7 -0
  95. package/backend/configurations/default-configurations/unfamiliar-territory/journey.nodes.label.md +5 -0
  96. package/backend/configurations/default-configurations/unfamiliar-territory/journey.nodes.triggerLabels.label.md +6 -0
  97. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.title.md +7 -0
  98. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.kind.bug.md +2 -0
  99. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.kind.md +7 -0
  100. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.kind.nit.md +3 -0
  101. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.kind.question.md +2 -0
  102. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.kind.risk.md +3 -0
  103. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.md +30 -0
  104. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.reading.md +14 -0
  105. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.solution.md +12 -0
  106. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.title.md +6 -0
  107. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.trace.md +12 -0
  108. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.needsAttention.md +36 -0
  109. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.reading.md +68 -0
  110. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.title.md +12 -0
  111. package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.intro.md +5 -0
  112. package/backend/configurations/default-configurations/unfamiliar-territory/writingStyle.md +137 -0
  113. package/backend/configurations/system-instructions/artifactFormat.md +103 -0
  114. package/backend/configurations/system-instructions/blast.md +67 -0
  115. package/backend/configurations/system-instructions/blast.nodes.impactReason.md +3 -0
  116. package/backend/configurations/system-instructions/blast.nodes.impactType.md +5 -0
  117. package/backend/configurations/system-instructions/codeLinks.md +67 -0
  118. package/backend/configurations/system-instructions/context.md +22 -0
  119. package/backend/configurations/system-instructions/contextCodeBlocks.description.md +3 -0
  120. package/backend/configurations/system-instructions/contextCodeBlocks.md +52 -0
  121. package/backend/configurations/system-instructions/id.md +8 -0
  122. package/backend/configurations/system-instructions/journey.description.md +14 -0
  123. package/backend/configurations/system-instructions/journey.md +144 -0
  124. package/backend/configurations/system-instructions/journey.nodes.blockLabels.label.md +6 -0
  125. package/backend/configurations/system-instructions/journey.nodes.description.md +3 -0
  126. package/backend/configurations/system-instructions/journey.nodes.label.md +2 -0
  127. package/backend/configurations/system-instructions/journey.nodes.triggerLabels.label.md +4 -0
  128. package/backend/configurations/system-instructions/title.md +8 -0
  129. package/backend/configurations/system-instructions/walkthrough.files.md +25 -0
  130. package/backend/configurations/system-instructions/walkthrough.files.summary.md +4 -0
  131. package/backend/configurations/system-instructions/walkthrough.files.title.md +2 -0
  132. package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.kind.md +4 -0
  133. package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.md +117 -0
  134. package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.reading.md +4 -0
  135. package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.solution.md +9 -0
  136. package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.title.md +4 -0
  137. package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.trace.md +5 -0
  138. package/backend/configurations/system-instructions/walkthrough.files.waypoints.md +55 -0
  139. package/backend/configurations/system-instructions/walkthrough.files.waypoints.needsAttention.md +8 -0
  140. package/backend/configurations/system-instructions/walkthrough.files.waypoints.reading.md +3 -0
  141. package/backend/configurations/system-instructions/walkthrough.files.waypoints.title.md +3 -0
  142. package/backend/configurations/system-instructions/walkthrough.intro.md +3 -0
  143. package/backend/configurations/system-instructions/walkthrough.md +14 -0
  144. package/backend/configurations/system-instructions/writingStyle.md +5 -0
  145. package/backend/main.js +161899 -0
  146. package/backend/plugin/.claude-plugin/plugin.json +15 -0
  147. package/backend/plugin/.mcp.json +8 -0
  148. package/backend/plugin/skills/review/SKILL.md +360 -0
  149. package/frontend/assets/_branchId-CPb8-qBw.js +1 -0
  150. package/frontend/assets/_branchId-LiwHskkW.js +1 -0
  151. package/frontend/assets/_id-BDFgPH36.js +1 -0
  152. package/frontend/assets/_id-DlHylI1F.js +1 -0
  153. package/frontend/assets/agents-BGNiGYQQ.js +1 -0
  154. package/frontend/assets/agents-DBPulyWi.js +1 -0
  155. package/frontend/assets/configuration-C8ZTSPna.js +1 -0
  156. package/frontend/assets/configuration-DBU-Fvop.js +1 -0
  157. package/frontend/assets/create-BWsYjEs5.js +1 -0
  158. package/frontend/assets/create-DBNC2wSp.js +1 -0
  159. package/frontend/assets/create-DBv4ZLt7.js +1 -0
  160. package/frontend/assets/create-DXgFUVIW.js +1 -0
  161. package/frontend/assets/download-BnmEn_Ca.js +1 -0
  162. package/frontend/assets/forges-BOWrvfZl.js +1 -0
  163. package/frontend/assets/forges-DwSiwqas.js +1 -0
  164. package/frontend/assets/index-B1Rm0SQ5.js +1 -0
  165. package/frontend/assets/index-BKKD-dvv.js +1 -0
  166. package/frontend/assets/index-BaflOxvR.js +1 -0
  167. package/frontend/assets/index-CR5UGYQN.js +157 -0
  168. package/frontend/assets/index-CSoB1eP_.js +1 -0
  169. package/frontend/assets/index-CUqlioqL.js +1 -0
  170. package/frontend/assets/index-CZN7BV83.js +1 -0
  171. package/frontend/assets/index-CeY9TXPf.js +1 -0
  172. package/frontend/assets/index-CqVakH8R.js +1 -0
  173. package/frontend/assets/index-CydhSU9g.js +1 -0
  174. package/frontend/assets/index-D-k5POv5.js +1 -0
  175. package/frontend/assets/index-DCCyA67N.js +1 -0
  176. package/frontend/assets/index-DfRj4oZV.js +441 -0
  177. package/frontend/assets/index-Dn9qaXzX.js +1 -0
  178. package/frontend/assets/index-Dw5NpM9d.js +1 -0
  179. package/frontend/assets/index-DyfuBbIJ.js +1 -0
  180. package/frontend/assets/index-PzkXPYSX.js +1 -0
  181. package/frontend/assets/index-QabB0_Qw.js +1 -0
  182. package/frontend/assets/index-V8tnJR9v.js +1 -0
  183. package/frontend/assets/index-XcYy-NBi.js +1 -0
  184. package/frontend/assets/index-ec_xLUMF.css +1 -0
  185. package/frontend/assets/index-efpZ6EEe.js +1 -0
  186. package/frontend/assets/index-s0xxzhVW.js +1 -0
  187. package/frontend/assets/index-s14Wy6CE.js +1 -0
  188. package/frontend/assets/index-zxLaxo8R.js +1 -0
  189. package/frontend/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
  190. package/frontend/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
  191. package/frontend/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
  192. package/frontend/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
  193. package/frontend/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
  194. package/frontend/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
  195. package/frontend/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
  196. package/frontend/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  197. package/frontend/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  198. package/frontend/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  199. package/frontend/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  200. package/frontend/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  201. package/frontend/assets/repositories-BLLfYDjf.js +1 -0
  202. package/frontend/assets/repositories-of9BXUjW.js +1 -0
  203. package/frontend/assets/route-X94hglR1.js +1 -0
  204. package/frontend/favicon.ico +0 -0
  205. package/frontend/index.html +14 -0
  206. package/frontend/logo-small.png +0 -0
  207. package/frontend/logo.png +0 -0
  208. package/package.json +27 -4
  209. package/published-review/app.css +1 -0
  210. package/published-review/app.js +322 -0
package/LICENSE.md ADDED
@@ -0,0 +1,105 @@
1
+ # Functional Source License, Version 1.1, ALv2 Future License
2
+
3
+ ## Abbreviation
4
+
5
+ FSL-1.1-ALv2
6
+
7
+ ## Notice
8
+
9
+ Copyright 2026 kidlat-dakila
10
+
11
+ ## Terms and Conditions
12
+
13
+ ### Licensor ("We")
14
+
15
+ The party offering the Software under these Terms and Conditions.
16
+
17
+ ### The Software
18
+
19
+ The "Software" is each version of the software that we make available under
20
+ these Terms and Conditions, as indicated by our inclusion of these Terms and
21
+ Conditions with the Software.
22
+
23
+ ### License Grant
24
+
25
+ Subject to your compliance with this License Grant and the Patents,
26
+ Redistribution and Trademark clauses below, we hereby grant you the right to
27
+ use, copy, modify, create derivative works, publicly perform, publicly display
28
+ and redistribute the Software for any Permitted Purpose identified below.
29
+
30
+ ### Permitted Purpose
31
+
32
+ A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
33
+ means making the Software available to others in a commercial product or
34
+ service that:
35
+
36
+ 1. substitutes for the Software;
37
+
38
+ 2. substitutes for any other product or service we offer using the Software
39
+ that exists as of the date we make the Software available; or
40
+
41
+ 3. offers the same or substantially similar functionality as the Software.
42
+
43
+ Permitted Purposes specifically include using the Software:
44
+
45
+ 1. for your internal use and access;
46
+
47
+ 2. for non-commercial education;
48
+
49
+ 3. for non-commercial research; and
50
+
51
+ 4. in connection with professional services that you provide to a licensee
52
+ using the Software in accordance with these Terms and Conditions.
53
+
54
+ ### Patents
55
+
56
+ To the extent your use for a Permitted Purpose would necessarily infringe our
57
+ patents, the license grant above includes a license under our patents. If you
58
+ make a claim against any party that the Software infringes or contributes to
59
+ the infringement of any patent, then your patent license to the Software ends
60
+ immediately.
61
+
62
+ ### Redistribution
63
+
64
+ The Terms and Conditions apply to all copies, modifications and derivatives of
65
+ the Software.
66
+
67
+ If you redistribute any copies, modifications or derivatives of the Software,
68
+ you must include a copy of or a link to these Terms and Conditions and not
69
+ remove any copyright notices provided in or with the Software.
70
+
71
+ ### Disclaimer
72
+
73
+ THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
74
+ IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
75
+ PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
76
+
77
+ IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
78
+ SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
79
+ EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
80
+
81
+ ### Trademarks
82
+
83
+ Except for displaying the License Details and identifying us as the origin of
84
+ the Software, you have no right under these Terms and Conditions to use our
85
+ trademarks, trade names, service marks or product names.
86
+
87
+ ## Grant of Future License
88
+
89
+ We hereby irrevocably grant you an additional license to use the Software under
90
+ the Apache License, Version 2.0 that is effective on the second anniversary of
91
+ the date we make the Software available. On or after that date, you may use the
92
+ Software under the Apache License, Version 2.0, in which case the following
93
+ will apply:
94
+
95
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
96
+ this file except in compliance with the License.
97
+
98
+ You may obtain a copy of the License at
99
+
100
+ http://www.apache.org/licenses/LICENSE-2.0
101
+
102
+ Unless required by applicable law or agreed to in writing, software distributed
103
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
104
+ CONDITIONS OF ANY KIND, either express or implied. See the License for the
105
+ specific language governing permissions and limitations under the License.
package/README.md CHANGED
@@ -1,3 +1,175 @@
1
- # Temporary Holding Version
1
+ # Flight Plan
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Read a pull request the way its author would explain it, instead of as a list of files.
4
+
5
+ Flight Plan turns a pull request, or a branch with no pull request, into a guided review. Your coding agent writes a
6
+ review artifact through Flight Plan's MCP tools, and a local web app shows it next to the code it describes. A review
7
+ answers four questions a diff does not: why the change exists, how it runs, what it can affect, and where to look.
8
+
9
+ The structure of a review comes from the code, not from the agent. Flight Plan reads the syntax trees to work out who
10
+ calls what, so the agent cannot leave a caller out or invent one. The agent writes only the prose.
11
+
12
+ ## Running it
13
+
14
+ ```bash
15
+ npx @kidlat-dakila/flightplan
16
+ ```
17
+
18
+ You can also install it once with `npm install -g @kidlat-dakila/flightplan` and then run `flightplan`. The command
19
+ starts one local server for the web app, the API and the MCP endpoint, and opens it in the browser at
20
+ `http://localhost:24747`.
21
+
22
+ - If Flight Plan is already running, it only opens the browser.
23
+ - If another program holds the port, Flight Plan takes a free one, keeps it for the next runs and points your agents
24
+ at it.
25
+ - `--port <number>` sets the port. If that port is taken, Flight Plan stops and says so.
26
+ - `--no-open` leaves the browser closed. `--version` and `--help` print the version and the usage.
27
+
28
+ Flight Plan needs Node.js 22 or later.
29
+
30
+ ## Setup
31
+
32
+ The first run opens setup, which has four steps:
33
+
34
+ 1. **Agents**: pick the coding agents you use (Claude Code, Codex, Cursor). Flight Plan installs its review skill, its
35
+ plugin and its MCP server into the folder of each one.
36
+ 2. **Forges**: pick how Flight Plan reaches your pull requests, and choose the default.
37
+ - Plain `git` reads your checkout and needs no CLI, token or network. It reviews branches, but it cannot list pull
38
+ requests or show reviewers.
39
+ - The **GitHub CLI** (`gh`) and the **GitLab CLI** (`glab`) use their own sign-in.
40
+ - **GitHub**, **GitLab** and **Bitbucket** use a token. GitHub Enterprise, self-managed GitLab and Bitbucket Data
41
+ Center take a base URL.
42
+ 3. **Repositories**: add the repositories to review, and the people whose pull requests you follow in each one.
43
+ 4. **Configuration**: choose how the agent writes (see [Configurations](#configurations)).
44
+
45
+ You can change all of these later in **Settings**. Flight Plan acts on your forge as you, so it sees what you can see.
46
+
47
+ ## Reviewing a pull request
48
+
49
+ 1. Open a repository on the homepage, then pick a pull request or a branch.
50
+ 2. Make a review request: choose the configuration, the order of the Code Walkthrough and the agent. Flight Plan can
51
+ start Claude Code for you. With any other agent, copy the prompt it gives you into your own agent session.
52
+ 3. Flight Plan builds the structure of the review from the change, and the page opens it at once. Each part fills in as
53
+ the agent writes it, and the page shows how much is written.
54
+ 4. When the agent finishes, the browser notifies you.
55
+
56
+ A review artifact has these parts:
57
+
58
+ - **Context**: why the change exists, in a few sentences to read before any code.
59
+ - **Journey Flow Diagram**: how execution reaches the changed code, from whatever starts it.
60
+ - **Blast Diagram**: the files connected to the change through imports, and what the change does to the ones it did
61
+ not touch.
62
+ - **Code Walkthrough**: the changed code, one file at a time, with each explanation on the lines it is about and
63
+ findings (risks, questions, fixes) on the code they concern. It states how many of the changed files it covers.
64
+
65
+ While you read:
66
+
67
+ - **Reviewed marks** hide a waypoint or a file until its content changes.
68
+ - **Staleness**: the page says so when the pull request moves past the commit the review describes. **Update the Flight
69
+ Plan** rebuilds the review at the latest commit and keeps what was written for unchanged code. **Regenerate from
70
+ scratch** keeps nothing.
71
+ - **Comments**: comment on a line or a range, reply to threads, resolve them, and submit a review with a verdict. All
72
+ of it goes to the forge.
73
+ - **Chat**: talk to the agent that wrote the review. Select code and choose "Ask the agent" to ask about it. The agent
74
+ can ask you questions, and when Flight Plan started the agent, it asks your permission for tools here. Code links in
75
+ its messages open the code.
76
+
77
+ The codegraph reads TypeScript, JavaScript and JSX, Python and Vue.
78
+
79
+ ## Your own pull requests
80
+
81
+ A branch with no pull request, or a pull request you wrote, opens on the author's page. There you write the Flight
82
+ Plan yourself or start from an agent draft, and edit its segments, contexts, diagrams and walkthrough. When it is
83
+ complete you can share it:
84
+
85
+ - **In the pull request description.**
86
+ - **As a Claude artifact**: one page with the whole review and the code it shows, which anyone can read without Flight
87
+ Plan or the repository. A Claude Code session uploads it. Readers can bring it into their own Flight Plan with
88
+ **Download to Flight Plan**.
89
+
90
+ A Flight Plan written for a branch moves to the branch's pull request when you mark it as complete.
91
+
92
+ ## Configurations
93
+
94
+ A configuration decides how the agent writes: the voice of its prose, how each field is worded, and which sections it
95
+ writes. The structure of a review never changes with the configuration.
96
+
97
+ | Preset | Written for |
98
+ |---|---|
99
+ | **Standard** | A reviewer who knows the codebase and wants the full review. The default. |
100
+ | **Minimal** | The shortest review that still answers its questions. No diagrams and no findings. |
101
+ | **Onboardee** | A reader new to the codebase. It describes the code around the change. |
102
+ | **Unfamiliar territory** | A reviewer who does not know the language or the libraries. It also describes each library and language name in the code shown. |
103
+
104
+ Under **Settings → Configurations** you can duplicate a preset, edit its instructions one field at a time, and switch
105
+ sections on or off.
106
+
107
+ ## Agent tools
108
+
109
+ The MCP endpoint is at `/mcp` on the server's address. Its tools are:
110
+
111
+ | Tool | What it does |
112
+ |---|---|
113
+ | `get-instructions` | Returns how to write each field, for the configuration the reviewer chose |
114
+ | `read`, `nodes` | Read the review artifact, and list the parts still to be written |
115
+ | `update-nodes` | Write the prose of the parts |
116
+ | `complete` | Mark the review artifact complete, after the checks a finished one must pass |
117
+ | `send-message`, `ask-questions` | Send the reviewer a message, or ask one question or a batch |
118
+ | `record-publication`, `record-import` | Record a Flight Plan published to a Claude artifact, or one fetched from it |
119
+
120
+ Agents write only prose. They cannot change which nodes, files or lines a review covers.
121
+
122
+ ## Privacy
123
+
124
+ All data stays on your machine, in `~/.flightplan/`. Set `FLIGHT_PLAN_DATA_DIR` to use another directory. Nothing is
125
+ written into the repositories you review. Nothing is sent anywhere except to your forge, when you comment or submit a
126
+ review, and to a Claude artifact, when you publish one.
127
+
128
+ The server listens on `localhost` and has no sign-in, so any program on your machine can reach it while it runs.
129
+
130
+ ## Development
131
+
132
+ ```bash
133
+ pnpm install
134
+ pnpm dev
135
+ ```
136
+
137
+ `pnpm dev` runs the backend on `http://localhost:3000` (tRPC at `/api/trpc`, MCP at `POST /mcp`) and the frontend on
138
+ `http://localhost:4200`, which proxies `/api` to the backend.
139
+
140
+ `pnpm install` also installs a pre-commit hook (husky) that runs ESLint and type-checking for the projects a commit
141
+ touches.
142
+
143
+ `pnpm build:prod` builds the production bundle and puts together the npm package in `dist/package`. Publish it from
144
+ there with `npm publish`. `pnpm start` runs that build the way the `flightplan` command does, without building it
145
+ first.
146
+
147
+ Run checks through Nx:
148
+
149
+ ```bash
150
+ nx run-many -t eslint:lint typecheck test -p <projects>
151
+ nx affected -t eslint:lint typecheck test
152
+ nx build <project>
153
+ ```
154
+
155
+ | Folder | Content |
156
+ |---|---|
157
+ | `apps/backend` | The Fastify server: the tRPC API, the MCP endpoint, and the `flightplan` command |
158
+ | `apps/frontend` | The React web app |
159
+ | `packages/ui` | Shared components |
160
+ | `packages/configurations` | The shape of a review artifact, its field instructions and the presets |
161
+ | `packages/codegraph` | Traces a change through the code and builds the diagrams and the Code Walkthrough |
162
+ | `packages/git-forge` | The adapters for plain git, GitHub, GitLab and Bitbucket |
163
+ | `plugin` | The Claude Code plugin with the review skill |
164
+ | `tools/npm-package` | Puts together the npm package |
165
+ | `tools/playground-fixtures` | The codegraph's end-to-end cases |
166
+
167
+ [AGENTS.md](AGENTS.md) holds the rules for working in this repository, and [docs/vocabulary](docs/vocabulary/README.md)
168
+ defines the terms Flight Plan uses.
169
+
170
+ ## License
171
+
172
+ Flight Plan is licensed under the [Functional Source License, Version 1.1, ALv2 Future License](LICENSE.md)
173
+ (FSL-1.1-ALv2). You may use, change and share it for any purpose except offering it, or something built from it, as
174
+ a commercial product or service that competes with Flight Plan. Two years after each version is released, that version
175
+ is also available under the Apache License, Version 2.0.
@@ -0,0 +1,7 @@
1
+ One or two fragments a reviewer can check against the code.
2
+
3
+ - `breaks`: what fails, and the case the author did not account for.
4
+ - `behaviour-changes`: what differs now, for whom.
5
+
6
+ Name the place, link it: "renders units left. Negative number when holds exceed
7
+ stock." Do not restate the impact type. None on an unaffected file.
@@ -0,0 +1 @@
1
+ Still works. Now does something different the change does not mention.
@@ -0,0 +1 @@
1
+ Logic no longer holds against changed code. Compiler does not say so.
@@ -0,0 +1,10 @@
1
+ What the change does to this file. Meaning of each value: given with its option.
2
+
3
+ Judge logic, not types. Call that no longer type-checks: the compiler's to
4
+ report, never the reason for a value here.
5
+
6
+ Nobody assessed the file: leave unset. No `unknown`. File of the change: no
7
+ impact type.
8
+
9
+ `breaks` and `behaviour-changes`: always with `impactReason`, same call.
10
+ `unaffected`: alone, no reason.
@@ -0,0 +1 @@
1
+ Change reaches it. Nothing it does is different.
@@ -0,0 +1,58 @@
1
+ Three parts, this order: opening paragraph, `## Overview`, `## Implementation`.
2
+
3
+ ```markdown
4
+ Basket with item sold out a minute ago still reached payment. Shopper now told
5
+ of every such item before paying.
6
+
7
+ ## Overview
8
+
9
+ - **When** customer submits basket with two lines out of stock, **then**
10
+ [error names both lines](code:src/stock/check.ts#hasStock).
11
+ - **When** every line in stock, **then** nothing changes.
12
+
13
+ ## Implementation
14
+
15
+ **`src/stock/`**
16
+
17
+ - Modified [`hasStock()`](code:src/stock/check.ts#hasStock): reads every level
18
+ once, collects every short line.
19
+ ```
20
+
21
+ **Verify every claim against the diff.** Never against the pull request's own
22
+ description.
23
+
24
+ ### Opening paragraph
25
+
26
+ Why anyone should care. Reader has not seen the code.
27
+
28
+ **No identifiers, no paths, no links here.** Cannot write it without a symbol:
29
+ you describe implementation, not the change. Say what the reader would see: not
30
+ "size check handles oversized query" but "query over 1 MB now gets error naming
31
+ 1 MB limit".
32
+
33
+ Three fragments at most, even for a large change.
34
+
35
+ ### Overview
36
+
37
+ What changes from outside the code. List of scenarios. One line each: bold
38
+ **When**, situation, bold **then**, what can be observed.
39
+
40
+ - **Situation**: reader's terms, one clause. What a person outside the code
41
+ does, or the state that holds. Not the code path.
42
+ - **Observed**: result a person or another system sees. Not mechanism. Link the
43
+ code the result comes from.
44
+ - **"nothing changes"**: where a reader would expect a change and there is
45
+ none. No link.
46
+
47
+ ### Implementation
48
+
49
+ What changed inside the code, grouped by where it lives. Each group: bold label
50
+ on its own line, then list.
51
+
52
+ - **Label**: file, or directory when several files inside change. No verb. Group
53
+ by place, not theme. Groups in the order the tour walks them.
54
+ - **Item**: one change a reader would notice. Verb first, then the code:
55
+ "Modified `hasStock()`: reads every level once, collects every short line."
56
+ Link the code.
57
+ - Item naming no code: only for a configuration value, a deleted file, the
58
+ tests. No link.
@@ -0,0 +1,16 @@
1
+ The diagram as text: what a reader knows after following every line of it. Three
2
+ fragments at most. Fewer for a small diagram.
3
+
4
+ - **Start where paths start.** What sets each path off, reader's terms: "Shopper
5
+ places order", "Nightly job runs".
6
+ - **Follow each path in drawn order**, left to the changed code. Name steps by
7
+ what they do: `<Checkout />` calls `placeOrder()`, asks `stockOf()` per cart
8
+ line.
9
+ - **Say where paths reach the change.** Name the nodes the change touched and
10
+ how the path arrives. Do not explain the change.
11
+ - **Several paths**: how many, where they meet, one fragment each. Paths that
12
+ run alike: tell together.
13
+
14
+ Whole diagram, not one path. No "This diagram shows". Do not count nodes.
15
+
16
+ `Shopper places order: <Checkout /> calls placeOrder(), asks stockOf() per cart line before charge. Stock badge reaches stockOf() through useStockLevel(). Both end at stockOf(), now subtracts held units.`
@@ -0,0 +1,13 @@
1
+ What this row of the node is for, as a reader of the product: "Promo code
2
+ shopper typed", "Sends order to API". Read the node's code first: label says
3
+ what the block holds or does, not what it is called.
4
+
5
+ - **Argument or state**: what the value holds: `Cart lines`, not `items`.
6
+ - **Hook**: what it gives the node: `Mutation that applies promo code`.
7
+ - **Effect**: what it does, when: `Clears form after save`.
8
+ - **Call**: what is asked of the code it calls: `Saves renamed user`.
9
+ - **Step**: what the step does: `Returns error for empty title`. Condition: what
10
+ is checked. Step standing for several statements: what they do together.
11
+
12
+ No name of the code: row shows it under your label. Same shape and tense on
13
+ every block label of one node.
@@ -0,0 +1,13 @@
1
+ The journey that reaches this node, in drawn order: "{who} {action}: {caller}
2
+ {calls, renders or reads} this {what}." Start with what starts the path, name
3
+ each step between, end on what hands over to it.
4
+
5
+ `Shopper opens /orders: <OrdersPage /> calls useOrders(status). useOrders() passes this function to useQuery as query function.`
6
+
7
+ - **Several paths**: one line saying so, then list, one such fragment per path.
8
+ - **Node with trigger labels**: what each event runs and what each fetch feeds,
9
+ in the words of its trigger label: `Shopper clicks "All": handler calls setStatus(null) on filter store.`
10
+ - **Nothing reaches it yet**: say no code uses it, and what is meant to.
11
+
12
+ Do not describe the change here: the waypoint does. Do not restate label or
13
+ identifier. Link a step to its code where a reader would open it.
@@ -0,0 +1,10 @@
1
+ What this step does, to what: "Throws when line out of stock". Not "The stock
2
+ check". Never the identifier: node already shows the name of its code. Same
3
+ shape and tense on every node of one diagram. Six words at most.
4
+
5
+ Component drawn inside another: do not repeat the outer component.
6
+
7
+ Node of an event, effect, callback, router procedure, store action: read beside
8
+ the node around it. Say what this unit does on its own: "Applies code on form
9
+ submit", "Stores promo on request success". Event has a trigger label for what
10
+ the user does: node says what the handler does.
@@ -0,0 +1,10 @@
1
+ What happens at this place, as a reader of the product: "Shopper clicks Remove",
2
+ "Account orders loaded". Read the node's code first: label names the element the
3
+ user acts on, or the data fetched.
4
+
5
+ - **Event**: who acts, the action, what it is on: `Shopper clicks "All"`. No
6
+ component name, no handler name.
7
+ - **Data fetch**: what is loaded, not how: `Product stock loaded`, not
8
+ `useQuery runs`.
9
+
10
+ Same shape and tense on every trigger label of one diagram.
@@ -0,0 +1,7 @@
1
+ What reviewer is shown in this file, one line: "Rounding moves to subtotal",
2
+ "Stock check now counts held units". It is the file's label on the section rail:
3
+ must tell this file from the others in the change.
4
+
5
+ Never the path. Never a list of its waypoints.
6
+
7
+ Present tense, about the code. Six words at most.
@@ -0,0 +1 @@
1
+ Broken behaviour that causes an incident. Proven. Not proven: a `risk`.
@@ -0,0 +1,6 @@
1
+ ### Kind
2
+
3
+ Exactly one kind. Each a different answer, not a different intensity. Meaning of
4
+ each kind: given with its option.
5
+
6
+ Order a waypoint's findings most severe first: `bug`, `risk`, `nit`, `question`.
@@ -0,0 +1,2 @@
1
+ Anything the author may decline: style, naming, micro-optimisation, every
2
+ improvement. All optional.
@@ -0,0 +1,2 @@
1
+ You are not sure. Genuine question, not a suggestion in disguise. No trace, no
2
+ solution.
@@ -0,0 +1,3 @@
1
+ Works but fragile (race, missing null check, swallowed error). Or looks broken
2
+ and you could not demonstrate it. Unsafe path that looks reachable, nobody saw
3
+ it fire.
@@ -0,0 +1,21 @@
1
+ What is wrong with the code this waypoint shows, on the waypoint itself.
2
+
3
+ **Only what your reading of the code found.** Finding inferred from the diff
4
+ without opening the file: a guess. Verify against the repository, files the
5
+ change never touched too. A check three files away may already cover the case.
6
+
7
+ **Pick the kind honestly.** `bug`: wrong now. `risk`: goes wrong under
8
+ conditions you can name. `nit`: worth saying, not worth blocking. `question`:
9
+ you do not know. No trace, no fix on a `question`.
10
+
11
+ Title: what is wrong, one line. Reading: why. Trace: steps that prove it.
12
+ `code:` links throughout: every claim resolves to lines.
13
+
14
+ **Every `bug`, `risk`, `nit` gets a `solution`**: the lines as they should be.
15
+ String of code replacing the lines this waypoint covers. No path, no position.
16
+ Lines whole: a line left out is a line the fix deletes. Fix needs more than
17
+ these lines: write the part that belongs here, name the other lines in the
18
+ reading.
19
+
20
+ Card shows one chip, its highest kind. Nit beside a bug is easy to miss: report
21
+ the nit where it belongs.
@@ -0,0 +1,15 @@
1
+ ### Reading
2
+
3
+ The defect, one linked claim per fragment: what code does, why that is wrong.
4
+ Every claim links the exact lines it rests on. Present tense. Three fragments at
5
+ most.
6
+
7
+ > [`annotateRanges()`](code:src/prose/annotate.ts#L22-31) maps first range only.
8
+ > Later ranges: `undefined`. Panel shows no line numbers.
9
+
10
+ No hedge. `risk` reported because a suspected bug is not proven: one fragment
11
+ saying what stopped you.
12
+
13
+ **Improvement says three things**: what code does now and its limit, stated as
14
+ working. Better alternative, exact imported symbol. Why better: fewer lines,
15
+ fewer states, one fewer round trip. Never "cleaner".
@@ -0,0 +1,10 @@
1
+ ### Solution
2
+
3
+ Every `bug`, `risk`, `nit` carries a solution. A `question` carries none.
4
+
5
+ The lines as they should be, whole, with the indentation they have in the file.
6
+ Never shortened: code is not prose. Solution replaces every line the finding's
7
+ waypoint covers: a line left out is a line the fix deletes.
8
+
9
+ Fix needs more than these lines: write the part that belongs to these lines.
10
+ Name the other lines that must change in the reading, with `code:` links.
@@ -0,0 +1,5 @@
1
+ ### Title
2
+
3
+ Code, and what it does wrong: "`annotateRanges` drops line mapping for whole
4
+ block". Not "Prose loses its line numbers". Not "A subtle indexing problem".
5
+ Title that fits another finding is not a title. Eight words at most.
@@ -0,0 +1,10 @@
1
+ ### Trace
2
+
3
+ Steps that prove the finding, in the order code runs.
4
+
5
+ **First step: the trigger.** Action and what makes it fire: parameter, state,
6
+ condition. "Reader selects a sentence", not "selection happens". `POST /orders`
7
+ with `quantity: 0`, not `POST /orders`. User action: no link.
8
+
9
+ **Every later step: a debugger step**, linked to its place in the code. Proof
10
+ only: no impact, no evidence, no proposal. No trace on a `nit` or a `question`.
@@ -0,0 +1,26 @@
1
+ Mark the few waypoints that carry the change. One or two fragments: why this is
2
+ where the pull request does its work. Leave the field off every other waypoint.
3
+
4
+ Points at importance. Not a warning.
5
+
6
+ **Flag where behaviour changes**: new rule, decision code now makes differently,
7
+ data that now goes somewhere new, contract a caller now depends on.
8
+
9
+ **Leave off the plumbing**: value passed along, constant, comment, formatting,
10
+ styling, type-only edit, rename, test that restates code.
11
+
12
+ **Not a bug report.** Something wrong or fragile: a finding, on the same card.
13
+ Finding is never the reason for the flag. Only fragment you can write is about
14
+ what might break: write a finding, leave this off.
15
+
16
+ **Say why the card is central, against what the pull request is for.** "Rule
17
+ the pull request exists for: order now holds stock before card is charged. Other
18
+ cards in this file wire it in." Not "check this carefully", "core logic", "this
19
+ is complex".
20
+
21
+ **Keep it rare.** One to three in a pull request. Seldom more than one in a
22
+ file. Every card would carry it: none should.
23
+
24
+ Not a second reading. Reading: what code does. This: why it is the part to read.
25
+
26
+ Name code with `code:` links.
@@ -0,0 +1,59 @@
1
+ What was done here, and why it matters to the pull request.
2
+
3
+ **Open: fragments, fixed order.** Verb + kind of code + name. Then effect. No
4
+ "The author".
5
+
6
+ > Modified `validateQuantity()` condition. `false` over 10, was 20.
7
+ > [`<BasketForm />`](code:src/checkout/BasketForm.tsx#L40-52) calls before
8
+ > submit. 11 to 20 no longer submits.
9
+
10
+ - **Verb**: one, past tense: _added_, _implemented_, _modified_, _removed_,
11
+ _moved_, _replaced_.
12
+ - **Kind of code**: plain word from panel: function, method, condition,
13
+ validation, query, loop, type, component, constant, test. Then its name. Not
14
+ guard, gate, hook, wiring.
15
+ - **Effect**: what differs now, values named: `false` over 10, was 20. From a
16
+ throw to a returned reason. Not mechanism.
17
+ - **Operation, not judgement**: returns `false`, throws `RangeError`, returns a
18
+ 400, skips the line. Not _refuses_, _rejects_, _accepts_, _allows_, _blocks_,
19
+ _protects_.
20
+
21
+ **Author did the change, code does the rest.** After the opening, code is the
22
+ subject: "`validateQuantity()` returns".
23
+
24
+ **Several effects: list them.** Opening fragment, colon, one item per effect, in
25
+ the order code does them. No chain of _and_, _then_, commas.
26
+
27
+ > Added function `reserveStock()`:
28
+ >
29
+ > - one query, stock level of every basket line
30
+ > - one hold per line, lapses after 15 minutes
31
+ > - returns holds. [`placeOrder()`](code:src/checkout/placeOrder.ts#L13-27)
32
+ > releases them on failed charge
33
+
34
+ **Do not walk the lines.** Panel shows them. Leave out how code reaches its
35
+ effect, unless that detail is the change.
36
+
37
+ **End with what it is for.** One fragment tying this piece to the purpose
38
+ `context` states: the consumer and what changes for it. Reviewer reading only
39
+ this card must know why it is in the pull request. Cause not clear from order of
40
+ fragments: write _so_ or _because_.
41
+
42
+ **Consumer from the Blast Diagram, not a guess.** Where the artifact has one,
43
+ `blast` lists files importing this card's file, with `impactType` and
44
+ `impactReason`. Name the one this card exists for. Link it. Nothing outside the
45
+ change reaches this code: name what inside the pull request uses it. Neither
46
+ shows a reason: say what the change does to its consumer, stop. Never invent the
47
+ author's reason.
48
+
49
+ **Link code outside the card. Name code inside it.** Card's own identifiers:
50
+ backticks, no link. Everything else mentioned: link, every mention. Link
51
+ resolves only inside files the artifact holds, see `codeLinks`. Code in any
52
+ other file: backticks, with its path.
53
+
54
+ **Body's reading** (waypoint with children): what was done across the whole
55
+ body. Opening, list of five items at most, one fragment of purpose. **Block's
56
+ reading** (a child): opening about its one block, list only when the block does
57
+ several things, purpose points at its body or its consumer.
58
+
59
+ **Do not restate the title.** Reading adds values, reason, what it connects to.
@@ -0,0 +1,11 @@
1
+ **What was done, to what.** "Modified file reader to return reason for binary
2
+ content", "Returns null for path outside root". Not a bare noun: "The file
3
+ reader" names which code, not why the reader is shown it.
4
+
5
+ **Past tense**: Added, Modified, Removed. Never the identifier alone.
6
+
7
+ **One title, one thing.** Arrow, "and" or three clauses: several waypoints
8
+ crammed into one.
9
+
10
+ **Child's title: smaller change than its parent's.** Same shape, same tense,
11
+ every level.
@@ -0,0 +1,4 @@
1
+ One optional line framing the whole Code Walkthrough: order files are read in,
2
+ and why. "Stock check first, then query it calls."
3
+
4
+ Names the tour, not the first file. Leave out when file order speaks for itself.