Park two decisions from the bindings lane
This commit is contained in:
parent
4072dd2089
commit
cebd07c530
40
NEXT.md
40
NEXT.md
@ -1,3 +1,43 @@
|
|||||||
|
## To discuss: two decisions parked during the ownership discussion
|
||||||
|
|
||||||
|
Both came out of the lane that closed the enum-layout and constant-checking gaps. Its work is sound and committed;
|
||||||
|
these are questions it raised rather than defects in it.
|
||||||
|
|
||||||
|
### 1. The header check cannot run in a worktree, and nothing says so
|
||||||
|
|
||||||
|
`.gitignore:60` ignores `vendor/raylib/web/`, so the vendored `raylib.h` exists in the main tree and **never appears
|
||||||
|
in a worktree checkout**. Every parallel lane that touches bindings is therefore checking against nothing, or
|
||||||
|
against whatever it can find. The lane that hit this found a copy in `~/.local/share/Trash` and validated it the
|
||||||
|
right way — `generate-c` rewrote `generated.flan` byte-identically before it changed anything, and the two headers
|
||||||
|
are md5-identical — but a header in the Trash is not a corpus, and the next lane may be less careful or less lucky.
|
||||||
|
|
||||||
|
The options:
|
||||||
|
|
||||||
|
- **Vendor `raylib.h` as a tracked file.** It is one header. `BUILT.md` records that requiring a header was
|
||||||
|
rejected so that "a build needs libraylib linkable and not raylib-devel installed" stays true — but tracking the
|
||||||
|
header in this repository is not the same as requiring one on the machine, since `headers` is still
|
||||||
|
`?${FLAN_RAYLIB_H}` and still opt-in. This looks like the answer and the old argument may not actually apply.
|
||||||
|
- **Fail loudly when `FLAN_RAYLIB_H` names a path that is not there.** Already the behaviour for a set-and-wrong
|
||||||
|
path; what is missing is any signal when the *default* corpus has vanished, which is the worktree case.
|
||||||
|
- Leave it, and put the warning in the agent briefs instead. Weakest — it depends on whoever writes the brief
|
||||||
|
remembering.
|
||||||
|
|
||||||
|
### 2. A missing `bindings` line does not stop a build — a judgment call, flagged for review
|
||||||
|
|
||||||
|
The lane split its findings by severity:
|
||||||
|
|
||||||
|
- A **value mismatch or a missing C name** stops an ordinary build, the way `check_structs` does.
|
||||||
|
- A **coverage or typo finding about the `bindings` file itself** gates `generate-c` only.
|
||||||
|
|
||||||
|
The consequence is the part to decide: a lane that adds a `defenum` to `raylib.flan` and forgets its `bindings`
|
||||||
|
line gets **no warning from a plain build**, only from `generate-c`. Its reasoning was that failing somebody's
|
||||||
|
build over a config file, in a message shaped like "your layout is wrong", is the wrong place to stop them.
|
||||||
|
|
||||||
|
Arguable in both directions, and the argument against it is the one this whole feature exists for: an unchecked
|
||||||
|
enum member is exactly the silent wrongness the header read was built to catch, and "you have to remember to run
|
||||||
|
`generate-c`" is the same shape as "you have to remember to check the header by eye". Overruled by dropping the
|
||||||
|
`cmapping` guard in `lib/load.ml`.
|
||||||
|
|
||||||
## Decided 2026-09-13: generics by monomorphisation, checked abstractly, with `where` predicates
|
## Decided 2026-09-13: generics by monomorphisation, checked abstractly, with `where` predicates
|
||||||
|
|
||||||
The spike answered it (`SPIKE-GENERICS.md`, on `worktree-agent-afcd2406f3660629b`): **it runs**, the whole feature
|
The spike answered it (`SPIKE-GENERICS.md`, on `worktree-agent-afcd2406f3660629b`): **it runs**, the whole feature
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user