Resolve corresponding artifact family dependencies

This commit is contained in:
2026-08-30 14:20:03 +00:00
parent fb9a4d14f4
commit 257f10c9fb
8 changed files with 285 additions and 11 deletions

View File

@@ -438,7 +438,7 @@ For each `pipeline.scriptorium.artifact_families.<name>`:
| `for_each` | string | Yes | exactly `party.characters` |
| `output_path_pattern` | string | Yes | safe path beneath `artifacts/` with exactly one `{character_id}` token and no other brace syntax |
| `member_vars` | map | No | maps an ordinary Scriptorium variable name to a supported canonical character selector |
| `member_dependencies` | list | No | retained as typed family metadata; it does not yet add ordinary dependencies |
| `member_dependencies` | list | No | unique family keys; each generated member depends on the corresponding generated member of each listed family |
| `publish` | map | No | typed family publish metadata (`enabled`, `required`, `dest_pattern`); it does not yet create publish outputs |
Generated keys are `<family>_<character_id>` and generated output paths must
@@ -452,6 +452,13 @@ Their resolved values are strings. A member variable may not reuse a static
`vars` name; `session_id` remains owned and overwritten by Narratio as for any
other Scriptorium artifact.
Within a family only, an input source may use
`narratio.member_artifact.<family>`. The referenced family must be named in
that family's `member_dependencies`; resolution rewrites the source to the
corresponding ordinary `narratio.artifact.<family>_<character_id>` source.
This syntax is rejected in explicit artifacts and never reaches runtime stages
or Scriptorium.
### Notifications
Narratio currently supports only `notification.mode: noop`, which is also the

View File

@@ -102,6 +102,10 @@ Configured sources (`narratio.artifact.*`):
rewriting manifest state. Catalog construction iterates current
configuration, so removed or renamed records are not advertised.
`narratio.member_artifact.*` is not a runtime source family. Configuration
resolution accepts it only in an artifact-family declaration and rewrites it
to the corresponding configured source before this catalog is built.
Prepared stable sources (`narratio.input.*`):
- resolve only from the current manifest's exact prepared-input record;

View File

@@ -129,5 +129,9 @@ therefore receive only concrete artifact maps.
The catalog retains sorted family member keys plus family/character/source
origins and the typed dependency/publish declarations for their later owners.
It does not create a new runtime artifact type, dependency edge, or publish
rule during this resolution step.
`member_dependencies` add corresponding ordinary concrete dependencies, while
the family-only `narratio.member_artifact.<family>` input form is rewritten to
the matching ordinary configured-artifact source. The catalog records those
resolved dependency and input identities with their declaring family and party
member. No member-artifact source is registered as a runtime policy source.
The typed publish declaration still does not create a publish rule here.

View File

@@ -9,7 +9,8 @@ dependency order, and safely materialize validated outputs.
- ordinary configured artifacts from `pipeline.scriptorium.artifacts`; canonical
party artifact families have already expanded into this map during
configuration resolution
configuration resolution, including corresponding member dependencies and
rewritten member-artifact input sources
- optional selected artifact keys supplied through the stage environment
- built-in, configured, extraction, and previous-session source references in
artifact inputs

View File

@@ -813,7 +813,7 @@ Scriptorium artifacts with member-specific identity, paths, and variables.
## Stage 14 — Same-Member Dependencies And Member Artifact Sources
**Status: Pending**
**Status: Completed**
### Goal