Record schema: serialise with a version, and the additions R1b/R2 need

Open
#153 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
csharp
Domain
backend

Research direction

Read the API section of the review report linked in the issue and inspect RecordFileWriter.cs at line 74, then coordinate the changes with R1b and R2. The work spans schema serialization, new schema kinds, partial record identity and path rules, and an adapter for synchronous notation checks over asynchronous language services. Done means these decisions are implemented and documented across the related work.

Written by the indexing model from the issue text.

Description

From the review of PR #147 (H:\work\gdr-design-20261102\reports\te-review-record-frame.md), API section. Do before or with R1b (SIL.TextEditing.Project).

  • RecordSchema is data but not serialisable: move ToJson/FromJson into the library with a version field (Q54': savable beside an export). ToJsonSchema() is one-way and loses Paragraphs, the ws default and rich vs reference.
  • Additive kinds: ordered vs unordered sequences (seq vs col); owned objects of several classes (class:); a read-only/computed: marker.
  • Identity: partial roots are index-only and a #field partial cannot carry a GUID (RecordFileWriter.cs:74); allow a GUID in root or guid: in field partials; R2 resolves partial roots against base. Decide outline-number paths (senses/1.2) here too.
  • INotationChecker is synchronous while ITextLanguageService is async: add an adapter that accepts only services that answer at once, documented.
Dominant language
C#
Stars
0
Forks
0
Avg merge
1h 43m
Merged PRs (30d)
43

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from sillsdev/SIL.TextEditing

All issues in sillsdev/SIL.TextEditing

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.