This Markdown Specification project implements an example of a structure to store and collaborate on a 3GPP specification in a git repository. The base version of the specification is v18.0.0 of TS38.331. The example recreates the RILs for the UAV work item starting in RAN2#125. The RILs are named as they were in that reivew, the review file for which can be found linked below in the resources section. The RILs were recreated to closely match their corresponding edits to the frozen specification, as if each RIL were submitted with text proposals for changes. The RILs were then implemented through merges and merge conflict resolution.
# RILs
RILs are comments or direct suggestions for changes to a frozen release under review. Historically, RILs were written such that they would point to a specific example in the specification, with discussion that changes should apply to each relevant section of the specification. However, the RILs for this project have been created differently. Here, the RILs are able to modify related text throughout the specification as to propose a full set of common changes at the same time. For example, procedural text related to releasing configurations might need to be updated in several parts of the specification to address the same issue. One RIL could implement the chagnes all at once.
# Demonstration
In this demonstration, 27 RILs, which were agreed to be implemented in the specification, were transcribed from the initial review of 38.331 v18.0.0. Each RIL modifies the specification text directly and is stored in its own branch.
## Structure
The following structure has been developed for the demonstration. It is a first attempt, and is up for discussion.
* main - Contains the clean specification v18.0.0, and would eventually contain final versions of the modified specifications, e.g., v18.1.0.
* NR_UAV-core_R2_125 - Contains all changes related to a WI, which can eventually be merged as a running CR, either into the specification or into another running CR capturing other WIs.
* NR_UAV-core_R2_125_RIL - Contains all changes related to the RIL for this WI. The agreed RILs would eventually be merged here.
* NR_UAV-core_R2_125_RIL_* - The RIL branches contain changes that make focused modifications ot the specification and can include changes in more than one part of the specification, but the changes should be related to one another.
* NR_UAV-core_R2_125_impl_v0 - Contains the first set of implemented changes as shown in the the running CR for the WI, which can be found [here](https://www.3gpp.org/ftp/tsg_ran/WG2_RL2/TSGR2_125/Docs/R2-2401605.zip)
* NR_UAV-core_R2_125_impl_v1 - Adds changes from a second set of changes to demonstrate how further changes could come during a meeting or in a revised CR.
* NR_UAV-core_R2_125_impl_v2 - Adds editorial changes and any inconsistently or uncompletely implemented changes.
As is demonstrated by the structure, RILs are submitted independently from one another and are merged in as they are agreed. Branches can derive from other branches, creating a hierarchy. Because the branches were based on the clean specification, the final set of changes are fully compatible with the clean specification and can be merged in as a set.
# RIL Report
## Simple Report
RIL reports could come in different forms. On the most basic level, the branches and an excerpt from their comment can be easily produced directly by the git tool as shown or in the [web interface](https://forge.etsi.org/rep/fevold/markdown-specification/-/branches/active].
Note that this simple example can be improved upon with filtering and a full listing of the commoent associated with the latest commit to the branch. The web tool or the command-line tool can be used to determine the difference proposed by the change.
```git branch -v
NR_UAV-core_R2_125 d256c74 Initial, clean commit of 38331 v18.0.0
NR_UAV-core_R2_125_RIL d256c74 Initial, clean commit of 38331 v18.0.0