You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 04ab4ea
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: WIP.Build.md
+107-9Lines changed: 107 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -129,7 +129,10 @@ keys through .NET, because `reg.exe` mangles names outside the console code page
129
129
`lib/` — modules that every other tooling folder may import, and that import none of them.
130
130
`builder/` may not import `scripts/`, so code that both need lives here;
131
131
[lib/README.md](lib/README.md) states the rule, and `biome.jsonc` refuses an import that
132
-
breaks either one.
132
+
breaks either one. The rule has one exception, named in `biome.jsonc`:
133
+
`scripts/impexp.mjs`, a published standalone tool that must stay one dependency-free
134
+
file, which the build packs the help add-in's project file with (see [The help add-in's
135
+
project file](#the-help-add-ins-project-file)).
133
136
134
137
`wisdom/` — Discord knowledge-harvesting tool (three-phase: export → process → extract). Plans in `wisdom/PLAN-{1,2,3}.md`; implementation under `wisdom/`. Uses only Node.js built-in APIs. Running it is [WIP.Wisdom.md](WIP.Wisdom.md).
135
138
@@ -215,7 +218,7 @@ Unlike the link check, **a finding here aborts the build**. A broken link still
215
218
leaves a tree worth inspecting; a tree with a private key in it is a tree nobody
216
219
should be one `upload-pages-artifact` away from publishing.
217
220
218
-
Three details of the policy are essential:
221
+
Four details of the policy are essential:
219
222
220
223
-**`SOURCE_EXTENSIONS` and `BUILD_EXTENSIONS` are separate sets, and must stay
221
224
separate.** The build emits `.xml` and `.json`; a contributor has no business
@@ -235,6 +238,14 @@ Three details of the policy are essential:
235
238
ends spelled out, which is what makes them shippable. The same extension
236
239
anywhere else still fails; otherwise declaring one entry would bless a whole
237
240
type.
241
+
-**`addin_project` is exempt by path too, and on the tree surface only.** The
242
+
help add-in's `.twinproj` is written by the build, not found in `docs/`, so
243
+
`publishPolicyFor` puts its `dest` in a set of its own, `generated`, which only
244
+
`unpublishableTreePaths` reads. A `.twinproj` found in `docs/`, even at that
245
+
path, is refused at source: the build writes the file there, and a copy in the
246
+
source tree could only be a stale one. `check_publish_policy.mjs` asserts all
247
+
three: the path publishes from a tree, a `.twinproj` elsewhere does not, and
248
+
one at that path in `docs/` does not.
238
249
239
250
**A clean build says only that nothing in `docs/` is currently refused, which is
240
251
also what an allowlist widened until it refuses nothing says.** No build over a
0 commit comments