InterfaceRL.{hpp,cpp,tpp} + InterfaceRLFileFormat.hpp are the upstream
reference implementation of the entire NISPS feedback subsystem —
nisps/ml/{geo_push,replay,feedback,jolt,ou_noise}.hpp are all ports of it,
several still carrying `// upstream InterfaceRL.hpp:NNN` line references.
The Phase-4 vendoring dropped examples/ because nothing compiled it. That
was correct for the build and wrong for the codebase: with the source of
truth out of tree, upstream redesigned the geometric dislike (deleted the
/(1+len) taper, doubled kGeometricPushScale, tripled the negative-LR base,
moved to batch training over all negatives every tick) and we did not notice
for months.
Copied verbatim from memllib @ e291192 — the same commit the rest of the
vendored tree pins — into lib/memllib/reference/, which sits OUTSIDE src/
and is therefore never compiled: PlatformIO's LDF only recursively builds an
Arduino-format library's src/ folder. Verified: slpworkshop still builds
(RAM 28.8%, flash 2.1%).
reference/README.md states the two rules (never compiled, never edited — a
divergence from upstream is a recorded decision, not an edit here) and
VENDORED.md's "what was dropped" section now tells the truth.
Resolves ALIGNMENT defect 6c.
19 lines
625 B
C++
19 lines
625 B
C++
#ifndef INTERFACE_RL_FILE_FORMAT_HPP
|
|
#define INTERFACE_RL_FILE_FORMAT_HPP
|
|
|
|
#include <stdint.h>
|
|
|
|
static constexpr uint16_t MEML_FILE_FORMAT_VERSION = 1;
|
|
|
|
// Binary file layout:
|
|
// MEMLFileHeader (26 bytes)
|
|
// extra_size bytes of mode-specific data (may be 0)
|
|
// MLP binary (existing format)
|
|
struct MEMLFileHeader {
|
|
char magic[4]; // always "MEML"
|
|
uint16_t format_version; // MEML_FILE_FORMAT_VERSION
|
|
char mode_tag[16]; // null-padded mode identifier, e.g. "VerbFX"
|
|
uint16_t extra_size; // bytes of mode-specific data immediately following
|
|
};
|
|
|
|
#endif // INTERFACE_RL_FILE_FORMAT_HPP
|