baseline-pin
Skill15 starsChanged 9 days agoMITView on GitHub
Identify the real strongest baseline, fetch it, pin an exact commit, build it with a recorded recipe, verify correctness, and record everything in baselines/MANIFEST.md with a fairness checklist. Use at P4 before any comparison is measured, and again whenever a reviewer or falsifier questions a baseline.
In this repository29 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- abstract-craftSkill
- anonymize-checkSkill
- artifact-packSkill
- bench-protocolSkill
- bib-verifySkill
- camera-readySkill
- eprint-searchSkill
- experiments-writingSkill
- falsifySkill
- figure-harvestSkill
- idea-mining-loopSkill
- lean-bridgeSkill
- lit-matrixSkill
- log-to-evidenceSkill
- mock-reviewSkill
- paper-figuresSkill
- paper-playbookSkill
- param-estimationSkill
- phase-gateSkill
- polish-writingSkill
- reading-notesSkill
- rebuttalSkill
- related-work-writingSkill
- sage-checkSkill
- technique-overviewSkill
- textbook-indexSkill
- venue-calibrationSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 35
Never commit third-party source trees into the research repo.
- Very specific: line 52
If a configuration misbehaves only at one optimisation level, record which level was used for each number.
- Distinctive: line 80
Add a "Practical build priority" list: which baseline to reproduce first, and why.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
baseline-pin
1. Identify the real baseline (before fetching anything)
- The paper you are improving on is not automatically the baseline. Ask these
questions:
- Is its construction a re-derivation of earlier work? Search for the core idea under other names.
- Has a follow-up already improved on it? Check citing papers and ePrint from the last 24 months.
- Is a different library much faster for the same task? For example, an implementation in another language or with a different backend.
- The strongest fair comparison beats the most convenient one. Write the decision in DECISIONS.md: "baseline = X because ..., rejected Y because ...".
- Record the best reproducible local number as the bar to clear. The paper's single-thread number may understate what the baseline achieves with trivial, standard optimisations such as parallelisation. If a trivial engineering change makes the baseline much faster, that faster version is the bar.
2. Fetch and pin
references/baselines/fetch.sh "$PROJECT/baselines" openfhe lattice-estimator
# -> baselines/PINNED.tsv with full SHAs- Pin a full commit SHA. A tag or branch name is not enough, because tags can move and branches always do.
- Research artifacts often ship as patches to a library rather than as a standalone program. Pin both: the upstream SHA and the patched fork's SHA or patch hash.
- Never commit third-party source trees into the research repo. Commit only the MANIFEST row and the fetch command.
3. Build recipe (exact, copy-pasteable)
Record the exact configure and build commands, compiler and version, flags, dependency versions (NTL/GMP, Rust toolchain, Go version), and environment variables needed at runtime.
Runtime linkage is a classic trap. If several versions of a shared library are
installed, the binary may silently load the wrong one. Set LD_LIBRARY_PATH
explicitly, then check with ldd. Keep one build directory per configuration:
build-release-native/, build-release-portable/. Never benchmark from a build
directory whose provenance you cannot state. Stale builds from an earlier
configuration have produced wrong numbers many times. crbench stale BIN SRC flags
sources newer than the binary.
If a configuration misbehaves only at one optimisation level, record which level
was used for each number. An example is a code-generation problem at -O2 that
disappears at -O0, or the reverse.
4. Verify before timing
- The library's own tests pass.
- End-to-end correctness on your parameter set: decrypt equals expected, the signature verifies, the proof verifies, PSI output equals the true intersection. Print every slot, not a sample.
- The runtime parameters are printed and diffed against the paper you compare with (ring dimension, moduli, gadget base, key distribution, failure probability, security level). A library preset named "128-bit" can use different concrete values from those in a paper citing it. If the paper's speed-up used different parameters from the library default, the denominator changed.
- Record the failure modes. If a configuration is infeasible, document the
boundary with the exact error message, for example "parameter X too small to
hold Y", "unsupported ring shape" or "Decrypting with too much noise". Make the
harness catch the exception and print
FAILED (<reason>)instead of dumping core.
5. MANIFEST row (the project's baselines/MANIFEST.md)
| name | url | commit (full SHA) | tag | build recipe | compiler + flags | threads | bench command | parser | role | fairness notes |
|---|---|---|---|---|---|---|---|---|---|---|
| toylib | https://example.org/toylib.git | 0123456789abcdef0123456789abcdef01234567 | v1.2.0 | `cmake -B b -DCMAKE_BUILD_TYPE=Release && cmake --build b -j4` | gcc 12.3, -O3 -march=native | 1 | `b/bench --set toy128` | gbench | strongest public implementation of X | preset toy128 has n=..., log q=... (paper Table 3 quotes different n); we use the preset on both arms |Add a "Practical build priority" list: which baseline to reproduce first, and why.
6. Fairness checklist (sign off before handing to experimenter)
- Same parameters and the same security estimate (see
skills/param-estimation). - Same threads. Report single-thread as well as parallel.
- Same compiler, flags and SIMD or accelerator backend.
- Same machine, same session, interleaved rounds.
- Same work, with the same phases timed. Offline and online are reported separately.
- Every cited baseline number has been re-measured locally. Cited and local numbers are never mixed in one ratio.
- The strongest known baseline is included, not only the one the target paper used.
- Build freshness is verified, and runtime library linkage is verified with
ldd.
Hand-off
The row is complete, every checklist box is ticked or has a written exception, and a
single-arm reference run (crbench run -a base=..., at least 3 repeats) is logged.
Next agent: experimenter.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

