## 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
Related Notes¶
- task-arash-20260331-175439-058148.md — Implements manuscripto core including assembly, render, and notio section type — directly precedes this render config inheritance task
- task-arash-20260331-175703-656609.md — Implements manuscript subpackage schema, assembly, and render — same files (schema.py, render.py) being modified in this task
- task-arash-20260331-175313-566067.md — manuscripto design spec covering architecture and API surface — context for ManuscriptSpec structure being extended here
- task-arash-20260331-175617-644481.md — Design spec for manuscript as notio subpackage — foundational design decisions that inform the defaults_from / render.yml inheritance pattern
- task-arash-20260331-175508-399347.md — Registers manuscripto in projio — related to the manuscript MCP tools that will surface the resolved render config
Batch Result¶
- status: done
- batch queue_id:
d4b9b2177a02 - session:
29223ba5-627f-47d9-b1cc-78330eb97d21 - batch duration: 691.0s