Skip to content

CoT type from a twin's STANAG 4817 node specialization - #2240

Open
krital wants to merge 1 commit into
developmentfrom
feat/cot-specialization
Open

krital wants to merge 1 commit into
developmentfrom
feat/cot-specialization

Conversation

@krital

@krital krital commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

A source that classifies its node but sends no MIL-STD-2525D entity code still says what kind of platform it is. Until now that went unused: such a twin fell straight through to the bare dimension of its symbol set, so an unmanned surface vehicle and the ship next to it both rendered as a-f-S.

The resolver now reads the node specialization, in the order it deserves — after the entity code, which is the finer statement, and before the symbol set alone:

specialization type
SURFACE_UNMANNED_SYSTEM a-f-S-C-U
SUBSURFACE_UNMANNED_SYSTEM a-f-U-S-U
GROUND_UNMANNED_SYSTEM a-f-G-U-C-V-U
SURFACE_VESSEL, VESSEL a-f-S
SUBSURFACE_VESSEL a-f-U
AIRCRAFT / SPACECRAFT / LAND_VEHICLE a-f-A / a-f-P / a-f-G
RADAR a-f-G-E-S-R
CBRN_SENSOR a-f-G-E-X-N
the other sensing types a-f-G-E-S

Two deliberate restraints:

  • A specialization that contradicts the symbol set is ignored. The set is the 2525 statement; a disagreement is an error at the source, and moving a sea track into the air dimension says something false rather than something less.
  • Values the table cannot place are left outOTHER, VEHICLE, and the sensing types with no physical counterpart. They say nothing the symbol set has not said already, and a crewed vessel gets its dimension only: it moves on the surface, which is not a claim that it is a combatant.

Tests cover each mapping, both spellings of the value (the $discriminator and the object key alone), the precedence against the vehicle class and the entity code, the contradiction case, a twin with no description at all, and the unvalidated path when the type table is absent. 153 tests in the package pass.

@coderabbitai

coderabbitai Bot commented Sep 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 14950bac-419c-4959-99f1-8db09c7181fb

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

A source that classifies its node but sends no 2525D entity code still says
what kind of platform it is. The resolver now reads that specialization,
between the entity code and the bare symbol-set dimension: an unmanned surface
or subsurface system or ground system gets the table's symbol for it, a crewed
vessel, aircraft or spacecraft gets its dimension, and a radar, CBRN or other
sensor gets the table's sensor symbols.

The specialization is ignored when it contradicts the symbol set. The set is
the 2525 statement; a disagreement is an error at the source, and moving a sea
track into the air dimension says something false rather than something less.
Values the table cannot place are left out on purpose.

Order is unchanged otherwise: vehicle class, then the entity code, then this,
then the symbol set alone.
@krital
krital force-pushed the feat/cot-specialization branch from 9c5e3ed to 2841812 Compare September 20, 2026 09:26
@krital
krital requested a review from mbuckton September 20, 2026 09:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants