Repository navigation
docs: align E3SM-SPEC with the current Spectrum grammar - #143
Merged
Merged
Conversation
Contributor
CI report —
|
| Workflow | Result | Time | Run |
|---|---|---|---|
| Commit policy | ✅ success (steps skipped — no code changes) | 0m21s | #227 |
| Docs | ✅ success | 0m34s | #29 |
| Build libe3py wheels | ⏭️ not started (no changed file matches its paths filter) |
— | — |
| E2E dApp Integration | ⏭️ not started (no changed file matches its paths filter) |
— | — |
| E2E Topologies (multi-dApp / multi-RAN) | ⏭️ not started (no changed file matches its paths filter) |
— | — |
| Full-loop Latency Benchmark | ⏭️ not started (no changed file matches its paths filter) |
— | — |
| latrec portability | ⏭️ not started (no changed file matches its paths filter) |
— | — |
| MPMC Queue Benchmark | ⏭️ not started (no changed file matches its paths filter) |
— | — |
| Unit Tests | ⏭️ not started (no changed file matches its paths filter) |
— | — |
Docs
Doxygen warnings
0 warning(s) in the files this pull request changes, which fail the check; 403 more elsewhere, which do not. The full list is in the job log and the doxygen-warnings artifact of the Docs workflow.
Gaps in files this pull request does not change, by file:
| Warnings | File |
|---|---|
| 53 | include/libe3/types.hpp |
| 37 | include/libe3/sm_interface.hpp |
| 35 | include/libe3/e3_connector.hpp |
| 34 | include/libe3/e3_agent.hpp |
| 32 | include/libe3/e3_interface.hpp |
| 29 | include/libe3/c_api.h |
| 19 | src/c_api.cpp |
| 17 | include/libe3/logger.hpp |
| 17 | swig/libe3_swig.hpp |
| 17 | swig/e3_dapp_session.hpp |
Ready to merge (fast-forward only)
A maintainer can land the reviewed commits with:
git fetch origin
git checkout main && git merge --ff-only 8dc4a0d4020600ead364c32299c3433492f69782 && git push origin mainHead: 8dc4a0d4020600ead364c32299c3433492f69782 (branch docs/e3sm-spectrum-grammar). If --ff-only fails as non-fast-forward, the branch must be rebased on the latest main.
One comment per PR, rewritten in place once every workflow for
8dc4a0dfinished.
The Spectrum specification described an older grammar. Its indication had no cell configuration, its PRB block control carried a sampling threshold for IQ captures that the service model does not carry, and its validity periods were in seconds. The specification now follows the current grammar: - the indication is `Spectrum-Indication`, with the sensing indication and a new cell configuration indication; - the PRB block control has no `samplingThreshold`; - `validityPeriod` is in milliseconds, 1 to 3600000, in the PRB block and in the sensing policy; - clause 8 holds the grammar; - the RAN function description is the text that the OpenAirInterface RAN sends. Annex A lists the revisions of the grammar and their effect on the wire, as checked with asn1tools against the grammar of the OpenAirInterface RAN. Annex B is new: a complete exchange in APER and JSON, generated from the grammar. The integrator guide now points at the OpenAirInterface revision 20bb1a934d, and covers the cell configuration indication and the two controls of that RAN that the specification does not define. Assisted-by: Claude Opus 5.5 <noreply@anthropic.com>
aferaudo
force-pushed
the
docs/e3sm-spectrum-grammar
branch
from
November 5, 2026 23:07
43f091f to
8dc4a0d
Compare
Thecave3
approved these changes
Nov 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
docs/e3sm/spectrum/with the current Spectrum grammar. The specification described an older grammar. Now:Spectrum-Indication, with the sensing indication and a new cell configuration indication. That indication gives the carrier PRBs, the offset, the subcarrier spacing, point A, the slots per frame, the TDD pattern and the PCI. The RAN sends it about once a second, stamped on the monotonic clock;samplingThreshold. The field referred to IQ captures, which the service model does not carry;validityPeriodis in milliseconds, 1 to 3600000, in the PRB block and in the sensing policy;20bb1a934d. It covers the cell configuration indication. It also covers controls 3 and 4 of that RAN (sensing reservation, PUSCH slots), which the specification does not define.The PR is one commit,
8dc4a0d, on top ofmain. The Word edition is built with the plain template of #142.Type of change
Linked issue
No issue: the change follows the current grammar of the Spectrum service model.
Twin-repo coordination
libe3 is paired with
dappsanddApp-openairinterface5g. We do not accept patches that break or reduce compatibility with the twin repositories.docs/interop.md.The second box is not ticked. libe3 itself does not change: no code, and no E3AP grammar. But the service model now differs from what the OpenAirInterface RAN and the dApp library encode today in two places:
samplingThreshold;validityPeriod.Both matter only when a control carries one of these optional fields. Annex A gives the effect in APER, JSON and Protocol Buffers. I added no row to
docs/interop.md, because its ledger tracks the behavior of libe3.Paired PR(s): none yet. An implementation of these changes needs paired PRs in
dApp-openairinterface5ganddapps.Checks run
All on the tree of
8dc4a0d:20bb1a934d, with asn1tools.prbBlockedControlandconfigControl), the apply outcome, and a PRB block control and a sensing policy without optional fields.main'smessages/asn1/V1/e3ap-1.0.0.asn1. Every message decodes back to the same value.tools/oran_docx/Dockerfile.tools/oran_docx/template.docx.reuse lintpasses. A strict Doxygen build (LIBE3_DOCS_STRICT=ON, Doxygen 1.9.8, Ubuntu 24.04, the options ofdocs.yml) shows 0 warnings indocs/e3sm/spectrum/. Both ran locally in a container.scripts/check_commit_trailers.py --base origin/main --head HEADpasses.Open points for review
Spectrum-Indicationhas no extension marker, so a third kind of indication would change the width of its alternative index. Should it get one now, while the change costs one bit?validityPeriodand does not apply it, so a block or a policy does not expire. Should the field become a lease that the RAN enforces?noiseFloorThreshold.Spectrum-ConfigControlgives no unit for it, and no codec implements the control.🤖 Generated with Claude Code