Repository navigation
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 36e866cb05
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const workOnlyFields = ["director", "artist", "creator", "release-year", "genre", "season-number", "episode-number"]; | ||
| if (workOnlyFields.includes(node.name) && !WORK_FIELD_PARENTS[node.name].includes(parentName)) { |
There was a problem hiding this comment.
Validate parent contexts for shared work fields
When an unsupported field is shared with ebook metadata, the parser moves it outside the work record, and this check excludes it from parent validation. For example, film\ntitle "Movie"\nauthor "Person" returns valid: true and emits an orphan <author> after the film; the same happens with publisher on a song. Consequently, field/type compatibility checks silently accept these invalid records and detach their data. Validate shared fields against their combined metadata/work parent sets as well, so fields relocated by parser boundary inference cannot bypass validation.
Useful? React with 👍 / 👎.
Description
MML can now describe creative works using
film,song,album,book,series,episode,game, andpodcast. Each record requires one nonempty title and accepts optional fields appropriate to its type, including repeated genres and credits.Compiles to:
Different work types automatically become sibling entries. A record closer can finish its final scalar field, so
/filmworks without a preceding/genre. Inside a song,albumis a text field; use/songbefore starting an independent album record.Validate nonempty scalar fields, field/type compatibility, singleton fields, four-digit years, series year ordering, and episode numbering. Preserve existing ebook metadata, event dates, and timeline behavior.
bookdescribes a work;ebookstill holds its actual content for export.Update the tag registry (95 canonical tags), specification, dependency reference, README, generated schema index, and published documentation. Add a Load Film Example button and preview styles. Regenerating the documentation also exposed stale local links; fix those references so the link check passes.
Related Issue(s)
Closes #13
Type of Change
Validation
npm test: 77 passed, 0 failed (62 existing tests plus 15 new regression tests).npm run check:examples: 5 examples checked, 0 issues, including the documented film example and deliberately invalid input.npm run check:links: 0 issues.npm run build:schema-indexand documentation HTML generation completed.git diff --check: passed.Checklist