PR-L0 — S-98 interoperability design note#117
Draft
philliphoff wants to merge 1 commit into
Draft
Conversation
Adds docs/design/s98-interoperability.md documenting the proposed plumbing for S-98 ECDIS interoperability across the loaded dataset stack: display-plane model, an initial five inter-product rules covering S-101/S-102, S-101/S-124, S-101/S-104, and S-101/S-111, a codebase impact map (S98DisplayPlane enum, IInteroperabilityAuthority, LayerStackBuilder, processor plane defaults, S-101 fill/linework split, stack-ordered pick), the catalogue-driven rule-table shape, a snapshot rebaseline plan, and twelve open TBDs to be resolved before PR-L1. Spec cited: S-98 Edition 2.0.0 (October 2025), in particular Annex A clauses 4.4 (levels), 8 (interop rules), A-3.2 (Level 1 schema), B-3.1.2 (predefined combinations), A-6.9.1 (gridded bathymetry rule), and Main 9.2.1 (priority layers). No production code touched; only a new design doc and a one-line docs/toc.yml entry. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
Performance Gate✅ PASSED — no regressions. Threshold: 10.0%, MAD multiplier (k): 3.0, retry-zone mult: 2.0× Scenario summary
exchange-set-openIteration statistics
Spans (sum of all iterations)
Metrics
s101-portray-coldIteration statistics
Spans (sum of all iterations)
Metrics
s101-portray-warmIteration statistics
Spans (sum of all iterations)
Metrics
s101-render-warmIteration statistics
Spans (sum of all iterations)
Metrics
s102-coverageIteration statistics
Spans (sum of all iterations)
Metrics
s102-coverage-openIteration statistics
Spans (sum of all iterations)
Metrics
s102-coverage-render-largeIteration statistics
Spans (sum of all iterations)
Metrics
s124-vectorIteration statistics
Spans (sum of all iterations)
Metrics
s201-vectorIteration statistics
Spans (sum of all iterations)
Metrics
Generated by EncDotNet.S100.PerfReport gate command |
This was referenced May 20, 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.
Design / research only — no production code. Adds one markdown file and a one-line
docs/toc.ymlentry.What
docs/design/s98-interoperability.md(~1000 lines) is the design contract that PR-L1 (plumbing) and PR-L2 (rule evaluation) will implement against. Sections cover:docs/specs/.DisplayPlane { UnderRadar, OverRadar }with a new outerS98DisplayPlaneenum (9 canonical planes) used by the cross-dataset stacker. Within-plane priority continues to be driven by the existing per-instructionDrawingPriority.EncDotNet.S100.Coreadditions (S98DisplayPlane,LayerStackEntry,IInteroperabilityAuthority),DatasetResultextension, per-processor plane defaults table, S-101 fill/linework split,LayerStackBuilderinserted betweenDatasetLoaderService.FlattenLayerOrderandMapsuiMapHost,PickServicestack-order sort, bundledcontent/S98/Adapter/defaults.xml.S98Cataloguerecord graph, evaluated as a pureLayerStackEntry[] → LayerStackEntry[]function.PickService.ResolveHitsreorders Mapsui hits by descending layer-stack-order before the existing dedup; coverage pick fallback unaffected.What's deliberately not in scope of v1
S-98 Levels 3 (hybridization) and 4 (spatial operations) — Annex A §§4.4.4, 4.4.5 explicitly mark them as "should not be implemented" in this S-98 edition. Predefined-combination UX, alert wiring, colour set-aside arbitration, safety-contour synthesis from S-102+S-104 are all parked.
Reviewer guidance
Please focus on: