6e3c3cf2a2
Nuevo tipo de artefacto para papers académicos reproducibles (papers/<NNNN-slug>/): - Plantillas docs/templates/paper.md (IMRaD completo con guías por sección: Abstract, Introduction, Related work, Methods, Results, Discussion con Limitaciones + Amenazas a la validez, Conclusion + Future work) y docs/templates/preregistration.md (H0/H1 falsable, variables, diseño, plan de análisis con test exacto + effect size + corrección múltiple, predicción cuantitativa; nota anti-HARKing de congelado). - Pipeline init_paper (bash/functions/pipelines/init_paper.sh + .md): calcula el siguiente NNNN, crea las subcarpetas (experiments data figures reviews out), copia las plantillas rellenando el frontmatter (title, slug, date, phase=question, status=draft) y crea references.md. No hace git init (fase interna local). - Función atómica reutilizable next_numbered_dir (bash/functions/io): siguiente prefijo NNNN- escaneando un directorio numerado (reutilizable por papers/reports/issues). - papers/ como artefacto local gitignored (bloque en .gitignore + papers/.gitkeep): un paper en fase interna no contamina el repo padre; al promocionar a publishable se vuelve sub-repo Gitea propio. - Página de capacidad docs/capabilities/papers.md + fila en el INDEX: tabla de funciones del grupo papers (disponibles + en construcción por la flota), ejemplo canónico end-to-end y fronteras. Reutiliza slugify_ascii del registry. Diseño: reports/0001-2026-06-30-papers-system-design.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
47 lines
1.6 KiB
Bash
47 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
# next_numbered_dir — Compute the next NNNN- prefix for a numbered directory.
|
|
#
|
|
# Scans the DIRECT subdirectories of <parent_dir> whose names start with a
|
|
# numeric prefix of the form `NNNN-` (4+ digits followed by a hyphen), takes
|
|
# the maximum number, adds 1, and prints it zero-padded to <width> (default 4).
|
|
# If <parent_dir> does not exist or contains no matching subdir, prints the
|
|
# first number (0001 at default width).
|
|
|
|
next_numbered_dir() {
|
|
local parent_dir="${1:-}"
|
|
local width="${2:-4}"
|
|
|
|
if [[ -z "$parent_dir" ]]; then
|
|
echo "usage: next_numbered_dir <parent_dir> [width]" >&2
|
|
return 1
|
|
fi
|
|
|
|
local max=0
|
|
local entry base num
|
|
|
|
if [[ -d "$parent_dir" ]]; then
|
|
# Iterate only over direct subdirectories. The trailing slash in the
|
|
# glob ensures files (e.g. .gitkeep) are skipped — only dirs match.
|
|
for entry in "$parent_dir"/*/; do
|
|
# If the glob matched nothing it stays literal; guard with -d.
|
|
[[ -d "$entry" ]] || continue
|
|
base="$(basename "$entry")"
|
|
# Require a prefix of 4+ digits followed by a hyphen.
|
|
if [[ "$base" =~ ^([0-9]{4,})- ]]; then
|
|
num="${BASH_REMATCH[1]}"
|
|
# Force base 10 so leading zeros (08, 09) are not read as octal.
|
|
num=$((10#$num))
|
|
if (( num > max )); then
|
|
max=$num
|
|
fi
|
|
fi
|
|
done
|
|
fi
|
|
|
|
printf "%0*d\n" "$width" $(( max + 1 ))
|
|
}
|
|
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
next_numbered_dir "$@"
|
|
fi
|