Skip to content

## Prompt Update manuscripto (notio

Prompt

Update manuscripto (notio.manuscript) to inherit render settings from .projio/render.yml.

Context

.projio/render.yml is the new single source of truth for render config (pdf_engine, csl, bibliography, conda_env). ManuscriptSpec currently duplicates these settings in manuscript.yml. This task makes manuscripto inherit project-level defaults while allowing per-manuscript overrides.

Deliverables

1. Add defaults_from field to ManuscriptSpec

In packages/notio/src/notio/manuscript/schema.py, update RenderConfig and BibConfig:

@dataclass
class BibConfig:
    bib_file: str = ""
    csl: str = ""
    # Empty string means "inherit from .projio/render.yml"

Add a top-level defaults_from field to ManuscriptSpec:

@dataclass  
class ManuscriptSpec:
    name: str
    ...
    defaults_from: str = "../../.projio/render.yml"  # relative to manuscript.yml

2. Implement config merging in schema.py

Add a resolve_render_config(spec: ManuscriptSpec, base_dir: Path) -> ResolvedRender function that: 1. Loads .projio/render.yml if defaults_from is set and file exists 2. Merges: project defaults ← manuscript.yml overrides (manuscript wins) 3. Returns a resolved config with all paths made absolute

The merge logic: for each field in RenderConfig/BibConfig, use the manuscript value if non-empty, otherwise fall back to the project default.

3. Update render.py to use resolved config

render() should call resolve_render_config() instead of reading bib/csl/engine directly from the spec. This way: - manuscript.yml with empty bib_file and csl → uses project defaults from render.yml - manuscript.yml with explicit csl: bib/csl/apa.csl → overrides project default

4. Update manuscript_init to read project defaults

When scaffold_spec() creates a new manuscript.yml, it should: - Check if .projio/render.yml exists in the project root - If yes, leave bib/csl/engine fields empty in manuscript.yml (they'll inherit) - Set defaults_from to the relative path to render.yml - If no, fill in empty defaults as before

5. Update manuscript_validate to check resolved config

validate.py should resolve the render config before checking bibliography existence and pandoc availability.

Notes

  • Import from projio.render is NOT needed — manuscripto should parse render.yml itself using plain YAML loading (no projio dependency in notio)
  • The render.yml format is simple enough that notio.manuscript can read it directly with yaml.safe_load
  • This keeps notio independent of projio while still benefiting from the shared config

Batch Result

  • status: done
  • batch queue_id: d4b9b2177a02
  • session: 29223ba5-627f-47d9-b1cc-78330eb97d21
  • batch duration: 691.0s