@kidlat-dakila/flightplan 0.0.0-stage → 0.1.5
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/LICENSE.md +105 -0
- package/README.md +174 -2
- package/backend/configurations/default-configurations/minimal/blast.nodes.impactReason.md +7 -0
- package/backend/configurations/default-configurations/minimal/blast.nodes.impactType.behaviour-changes.md +1 -0
- package/backend/configurations/default-configurations/minimal/blast.nodes.impactType.breaks.md +1 -0
- package/backend/configurations/default-configurations/minimal/blast.nodes.impactType.md +10 -0
- package/backend/configurations/default-configurations/minimal/blast.nodes.impactType.unaffected.md +1 -0
- package/backend/configurations/default-configurations/minimal/context.md +58 -0
- package/backend/configurations/default-configurations/minimal/journey.description.md +16 -0
- package/backend/configurations/default-configurations/minimal/journey.nodes.blockLabels.label.md +13 -0
- package/backend/configurations/default-configurations/minimal/journey.nodes.description.md +13 -0
- package/backend/configurations/default-configurations/minimal/journey.nodes.label.md +10 -0
- package/backend/configurations/default-configurations/minimal/journey.nodes.triggerLabels.label.md +10 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.title.md +7 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.kind.bug.md +1 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.kind.md +6 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.kind.nit.md +2 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.kind.question.md +2 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.kind.risk.md +3 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.md +21 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.reading.md +15 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.solution.md +10 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.title.md +5 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.findings.trace.md +10 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.needsAttention.md +26 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.reading.md +59 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.title.md +11 -0
- package/backend/configurations/default-configurations/minimal/walkthrough.intro.md +4 -0
- package/backend/configurations/default-configurations/minimal/writingStyle.md +100 -0
- package/backend/configurations/default-configurations/onboardee/blast.nodes.impactReason.md +8 -0
- package/backend/configurations/default-configurations/onboardee/blast.nodes.impactType.behaviour-changes.md +1 -0
- package/backend/configurations/default-configurations/onboardee/blast.nodes.impactType.breaks.md +1 -0
- package/backend/configurations/default-configurations/onboardee/blast.nodes.impactType.md +11 -0
- package/backend/configurations/default-configurations/onboardee/blast.nodes.impactType.unaffected.md +1 -0
- package/backend/configurations/default-configurations/onboardee/context.md +70 -0
- package/backend/configurations/default-configurations/onboardee/contextCodeBlocks.description.md +62 -0
- package/backend/configurations/default-configurations/onboardee/journey.description.md +10 -0
- package/backend/configurations/default-configurations/onboardee/journey.nodes.blockLabels.label.md +9 -0
- package/backend/configurations/default-configurations/onboardee/journey.nodes.description.md +7 -0
- package/backend/configurations/default-configurations/onboardee/journey.nodes.label.md +5 -0
- package/backend/configurations/default-configurations/onboardee/journey.nodes.triggerLabels.label.md +6 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.title.md +7 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.kind.bug.md +2 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.kind.md +7 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.kind.nit.md +3 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.kind.question.md +2 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.kind.risk.md +3 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.md +30 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.reading.md +14 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.solution.md +12 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.title.md +6 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.findings.trace.md +12 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.needsAttention.md +36 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.reading.md +68 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.files.waypoints.title.md +12 -0
- package/backend/configurations/default-configurations/onboardee/walkthrough.intro.md +5 -0
- package/backend/configurations/default-configurations/onboardee/writingStyle.md +137 -0
- package/backend/configurations/default-configurations/standard/blast.nodes.impactReason.md +8 -0
- package/backend/configurations/default-configurations/standard/blast.nodes.impactType.behaviour-changes.md +1 -0
- package/backend/configurations/default-configurations/standard/blast.nodes.impactType.breaks.md +1 -0
- package/backend/configurations/default-configurations/standard/blast.nodes.impactType.md +11 -0
- package/backend/configurations/default-configurations/standard/blast.nodes.impactType.unaffected.md +1 -0
- package/backend/configurations/default-configurations/standard/context.md +70 -0
- package/backend/configurations/default-configurations/standard/journey.description.md +10 -0
- package/backend/configurations/default-configurations/standard/journey.nodes.blockLabels.label.md +9 -0
- package/backend/configurations/default-configurations/standard/journey.nodes.description.md +7 -0
- package/backend/configurations/default-configurations/standard/journey.nodes.label.md +5 -0
- package/backend/configurations/default-configurations/standard/journey.nodes.triggerLabels.label.md +6 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.title.md +7 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.kind.bug.md +2 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.kind.md +7 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.kind.nit.md +3 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.kind.question.md +2 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.kind.risk.md +3 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.md +30 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.reading.md +14 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.solution.md +12 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.title.md +6 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.findings.trace.md +12 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.needsAttention.md +36 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.reading.md +68 -0
- package/backend/configurations/default-configurations/standard/walkthrough.files.waypoints.title.md +12 -0
- package/backend/configurations/default-configurations/standard/walkthrough.intro.md +5 -0
- package/backend/configurations/default-configurations/standard/writingStyle.md +137 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/blast.nodes.impactReason.md +8 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/blast.nodes.impactType.behaviour-changes.md +1 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/blast.nodes.impactType.breaks.md +1 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/blast.nodes.impactType.md +11 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/blast.nodes.impactType.unaffected.md +1 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/context.md +70 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/contextCodeBlocks.description.md +98 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/journey.description.md +10 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/journey.nodes.blockLabels.label.md +9 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/journey.nodes.description.md +7 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/journey.nodes.label.md +5 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/journey.nodes.triggerLabels.label.md +6 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.title.md +7 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.kind.bug.md +2 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.kind.md +7 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.kind.nit.md +3 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.kind.question.md +2 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.kind.risk.md +3 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.md +30 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.reading.md +14 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.solution.md +12 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.title.md +6 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.findings.trace.md +12 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.needsAttention.md +36 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.reading.md +68 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.files.waypoints.title.md +12 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/walkthrough.intro.md +5 -0
- package/backend/configurations/default-configurations/unfamiliar-territory/writingStyle.md +137 -0
- package/backend/configurations/system-instructions/artifactFormat.md +103 -0
- package/backend/configurations/system-instructions/blast.md +67 -0
- package/backend/configurations/system-instructions/blast.nodes.impactReason.md +3 -0
- package/backend/configurations/system-instructions/blast.nodes.impactType.md +5 -0
- package/backend/configurations/system-instructions/codeLinks.md +67 -0
- package/backend/configurations/system-instructions/context.md +22 -0
- package/backend/configurations/system-instructions/contextCodeBlocks.description.md +3 -0
- package/backend/configurations/system-instructions/contextCodeBlocks.md +52 -0
- package/backend/configurations/system-instructions/id.md +8 -0
- package/backend/configurations/system-instructions/journey.description.md +14 -0
- package/backend/configurations/system-instructions/journey.md +144 -0
- package/backend/configurations/system-instructions/journey.nodes.blockLabels.label.md +6 -0
- package/backend/configurations/system-instructions/journey.nodes.description.md +3 -0
- package/backend/configurations/system-instructions/journey.nodes.label.md +2 -0
- package/backend/configurations/system-instructions/journey.nodes.triggerLabels.label.md +4 -0
- package/backend/configurations/system-instructions/title.md +8 -0
- package/backend/configurations/system-instructions/walkthrough.files.md +25 -0
- package/backend/configurations/system-instructions/walkthrough.files.summary.md +4 -0
- package/backend/configurations/system-instructions/walkthrough.files.title.md +2 -0
- package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.kind.md +4 -0
- package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.md +117 -0
- package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.reading.md +4 -0
- package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.solution.md +9 -0
- package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.title.md +4 -0
- package/backend/configurations/system-instructions/walkthrough.files.waypoints.findings.trace.md +5 -0
- package/backend/configurations/system-instructions/walkthrough.files.waypoints.md +55 -0
- package/backend/configurations/system-instructions/walkthrough.files.waypoints.needsAttention.md +8 -0
- package/backend/configurations/system-instructions/walkthrough.files.waypoints.reading.md +3 -0
- package/backend/configurations/system-instructions/walkthrough.files.waypoints.title.md +3 -0
- package/backend/configurations/system-instructions/walkthrough.intro.md +3 -0
- package/backend/configurations/system-instructions/walkthrough.md +14 -0
- package/backend/configurations/system-instructions/writingStyle.md +5 -0
- package/backend/main.js +161666 -0
- package/backend/plugin/.claude-plugin/plugin.json +15 -0
- package/backend/plugin/.mcp.json +8 -0
- package/backend/plugin/skills/review/SKILL.md +360 -0
- package/frontend/assets/_branchId--sAXSZ0Z.js +1 -0
- package/frontend/assets/_branchId-BctD9BVI.js +1 -0
- package/frontend/assets/_id-DS2_k7mD.js +1 -0
- package/frontend/assets/_id-ZvG2tACL.js +1 -0
- package/frontend/assets/agents-Cg-w99VB.js +1 -0
- package/frontend/assets/agents-DbSvvIcf.js +1 -0
- package/frontend/assets/configuration-B1tYKnw1.js +1 -0
- package/frontend/assets/configuration-PLwRj92u.js +1 -0
- package/frontend/assets/create-BXn1thks.js +1 -0
- package/frontend/assets/create-CGIYQfn-.js +1 -0
- package/frontend/assets/create-CNT_ktA4.js +1 -0
- package/frontend/assets/create-DQsVrUIP.js +1 -0
- package/frontend/assets/download-BsAZZo3P.js +1 -0
- package/frontend/assets/forges-ChElPpOV.js +1 -0
- package/frontend/assets/forges-D5lw6fYh.js +1 -0
- package/frontend/assets/index-9KbVyMz4.js +1 -0
- package/frontend/assets/index-B7lg0P4V.js +1 -0
- package/frontend/assets/index-BBbL0wfM.js +1 -0
- package/frontend/assets/index-BCEvS2zI.js +1 -0
- package/frontend/assets/index-BWM8kiQ0.js +1 -0
- package/frontend/assets/index-BYtgetD4.js +1 -0
- package/frontend/assets/index-Baaegu29.js +1 -0
- package/frontend/assets/index-BsRx8Pzi.js +1 -0
- package/frontend/assets/index-C8gx27Rr.js +1 -0
- package/frontend/assets/index-CIReAhWD.js +1 -0
- package/frontend/assets/index-CPyhbNqS.js +1 -0
- package/frontend/assets/index-CX9sF5Fh.js +441 -0
- package/frontend/assets/index-Ccx_zqhL.js +1 -0
- package/frontend/assets/index-CqVakH8R.js +1 -0
- package/frontend/assets/index-D3gI7yfx.js +1 -0
- package/frontend/assets/index-D6S4PGCc.js +1 -0
- package/frontend/assets/index-Dfzoepph.js +1 -0
- package/frontend/assets/index-DgodP5aC.js +1 -0
- package/frontend/assets/index-DvVl2gWR.js +1 -0
- package/frontend/assets/index-DzSYBwXV.js +1 -0
- package/frontend/assets/index-eMdhkBjo.js +1 -0
- package/frontend/assets/index-ec_xLUMF.css +1 -0
- package/frontend/assets/index-h6dRc3tV.js +157 -0
- package/frontend/assets/index-s0xxzhVW.js +1 -0
- package/frontend/assets/index-xoWXUJLW.js +1 -0
- package/frontend/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2 +0 -0
- package/frontend/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2 +0 -0
- package/frontend/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2 +0 -0
- package/frontend/assets/inter-greek-wght-normal-CkhJZR-_.woff2 +0 -0
- package/frontend/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/frontend/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -0
- package/frontend/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2 +0 -0
- package/frontend/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
- package/frontend/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
- package/frontend/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/frontend/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/frontend/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
- package/frontend/assets/repositories-DdOEWFoL.js +1 -0
- package/frontend/assets/repositories-Di8qfiyD.js +1 -0
- package/frontend/assets/route-qbVbAxtx.js +1 -0
- package/frontend/favicon.ico +0 -0
- package/frontend/index.html +14 -0
- package/frontend/logo-small.png +0 -0
- package/frontend/logo.png +0 -0
- package/package.json +27 -4
- package/published-review/app.css +1 -0
- 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
|
-
#
|
|
1
|
+
# Flight Plan
|
|
2
2
|
|
|
3
|
-
|
|
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.
|
package/backend/configurations/default-configurations/minimal/blast.nodes.impactType.breaks.md
ADDED
|
@@ -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.
|
package/backend/configurations/default-configurations/minimal/blast.nodes.impactType.unaffected.md
ADDED
|
@@ -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.`
|
package/backend/configurations/default-configurations/minimal/journey.nodes.blockLabels.label.md
ADDED
|
@@ -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.
|
package/backend/configurations/default-configurations/minimal/journey.nodes.triggerLabels.label.md
ADDED
|
@@ -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,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,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.
|
package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.reading.md
ADDED
|
@@ -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.
|
package/backend/configurations/default-configurations/minimal/walkthrough.files.waypoints.title.md
ADDED
|
@@ -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.
|