Mark NWS forecast discussion resilience implemented
This commit is contained in:
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
## Status
|
## Status
|
||||||
|
|
||||||
The original heading-variant work and the first resilience follow-up are
|
Implemented.
|
||||||
implemented. A second resilience follow-up is proposed to cover additional
|
|
||||||
observed NWS heading and key-message formats without changing the canonical
|
The original heading-variant work and both resilience follow-ups are
|
||||||
forecast-discussion contract.
|
implemented without changing the canonical forecast-discussion contract.
|
||||||
|
|
||||||
## Completed Baseline
|
## Completed Baseline
|
||||||
|
|
||||||
@@ -23,9 +23,10 @@ change markers, and keeps the first occurrence of each mapped role. Provider and
|
|||||||
normalizer tests cover two office-format families while preserving the existing
|
normalizer tests cover two office-format families while preserving the existing
|
||||||
wire contract.
|
wire contract.
|
||||||
|
|
||||||
## Remaining Problem
|
## Implemented Extensions
|
||||||
|
|
||||||
Observed AFDs still expose common forms outside the completed baseline:
|
The parser now handles common AFD forms that were outside the completed
|
||||||
|
baseline:
|
||||||
|
|
||||||
- a qualifier may appear between the identity and terminal ellipsis, as in
|
- a qualifier may appear between the identity and terminal ellipsis, as in
|
||||||
`.DISCUSSION (Today through Thursday)...`;
|
`.DISCUSSION (Today through Thursday)...`;
|
||||||
@@ -39,21 +40,20 @@ Observed AFDs still expose common forms outside the completed baseline:
|
|||||||
`LONG TERM` sections, so wording flexibility cannot safely rely on treating
|
`LONG TERM` sections, so wording flexibility cannot safely rely on treating
|
||||||
every similar identity as an alias.
|
every similar identity as an alias.
|
||||||
|
|
||||||
These gaps do not undermine the provider-local architecture, but they mean the
|
These provider-local extensions preserve the architecture while strengthening
|
||||||
parser is still brittle at its syntax, semantic-alias, and list-tokenization
|
syntax, semantic-alias, and list-tokenization handling. Compact cross-office
|
||||||
extension points. The current compact cross-office fixture does not exercise
|
fixtures exercise each added format family.
|
||||||
these format families.
|
|
||||||
|
|
||||||
## Objective
|
## Implementation Approach
|
||||||
|
|
||||||
Make common, minor NWS presentation changes local and inexpensive to support
|
Common, minor NWS presentation changes remain local and inexpensive to support
|
||||||
while preserving strict structural recognition and the existing canonical
|
while strict structural recognition and the existing canonical schema are
|
||||||
schema. A new observed heading form should require an isolated grammar helper;
|
preserved. Each observed heading form uses an isolated grammar helper, a true
|
||||||
a true synonym should require one role-registry entry; and a new list marker
|
synonym uses one role-registry entry, and each list marker uses one
|
||||||
should require one marker-classifier case. None should require changes to the
|
marker-classifier case. None requires changes to the scanner, canonical model,
|
||||||
scanner, canonical model, normalizer architecture, or downstream contracts.
|
normalizer architecture, or downstream contracts.
|
||||||
|
|
||||||
## Target End State
|
## Implemented Behavior
|
||||||
|
|
||||||
### Heading syntax
|
### Heading syntax
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ ellipsis-first form. Malformed heading-like lines remain body content.
|
|||||||
|
|
||||||
Every successfully parsed heading is a section boundary regardless of whether
|
Every successfully parsed heading is a section boundary regardless of whether
|
||||||
its identity has a canonical role. This includes `DISCUSSION`, `NEAR TERM`,
|
its identity has a canonical role. This includes `DISCUSSION`, `NEAR TERM`,
|
||||||
aviation, marine, hydrology, office-specific sections, and future structurally
|
aviation, marine, hydrology, office-specific sections, and other structurally
|
||||||
compatible identities.
|
compatible identities.
|
||||||
|
|
||||||
### Canonical role aliases
|
### Canonical role aliases
|
||||||
@@ -166,9 +166,9 @@ The implementation remains confined to the NWS provider parser plus owning
|
|||||||
provider and normalizer tests. It uses the Go standard library and introduces no
|
provider and normalizer tests. It uses the Go standard library and introduces no
|
||||||
runtime configuration or general parser framework.
|
runtime configuration or general parser framework.
|
||||||
|
|
||||||
## Acceptance Criteria
|
## Acceptance Coverage
|
||||||
|
|
||||||
The follow-up is complete when automated tests demonstrate that:
|
Automated tests demonstrate that:
|
||||||
|
|
||||||
- all previously supported heading, scanning, preamble, marker, and canonical
|
- all previously supported heading, scanning, preamble, marker, and canonical
|
||||||
results remain compatible;
|
results remain compatible;
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
|
|
||||||
Complete the remaining resilience work defined in
|
All resilience work defined in
|
||||||
[`afd-section-heading-variants.md`](afd-section-heading-variants.md) without
|
[`afd-section-heading-variants.md`](afd-section-heading-variants.md) is
|
||||||
changing the canonical forecast-discussion contract. Stages 1-8 summarize work
|
complete without changing the canonical forecast-discussion contract. This plan
|
||||||
already completed. Implement Stages 9-13 in order.
|
preserves the implementation details as a historical record.
|
||||||
|
|
||||||
## Cross-Stage Constraints
|
## Cross-Stage Constraints
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ Focused tests, the full repository suite, static analysis, and diff checks
|
|||||||
passed. The public model and schemas remained unchanged, and the roadmap was
|
passed. The public model and schemas remained unchanged, and the roadmap was
|
||||||
updated to describe the completed behavior.
|
updated to describe the completed behavior.
|
||||||
|
|
||||||
## Stage 9: Add Parenthesized-Terminal Heading Syntax
|
## Stage 9: Add Parenthesized-Terminal Heading Syntax — Completed
|
||||||
|
|
||||||
Recognize the observed `.<IDENTITY> (<qualifier>)...` family without weakening
|
Recognize the observed `.<IDENTITY> (<qualifier>)...` family without weakening
|
||||||
generic identity validation.
|
generic identity validation.
|
||||||
@@ -141,7 +141,7 @@ go test -count=1 ./internal/providers/nws
|
|||||||
|
|
||||||
Do not proceed until all previous heading and scanner tests still pass.
|
Do not proceed until all previous heading and scanner tests still pass.
|
||||||
|
|
||||||
## Stage 10: Add Explicit Canonical Role Aliases
|
## Stage 10: Add Explicit Canonical Role Aliases — Completed
|
||||||
|
|
||||||
Make true wording synonyms cheap to support while preserving semantic
|
Make true wording synonyms cheap to support while preserving semantic
|
||||||
distinctions.
|
distinctions.
|
||||||
@@ -180,7 +180,7 @@ go test -count=1 ./internal/providers/nws
|
|||||||
|
|
||||||
Do not change the canonical model to expose near-term or discussion content.
|
Do not change the canonical model to expose near-term or discussion content.
|
||||||
|
|
||||||
## Stage 11: Harden Key-Message Metadata and Item Parsing
|
## Stage 11: Harden Key-Message Metadata and Item Parsing — Completed
|
||||||
|
|
||||||
Replace prefix-sensitive, hyphen-only parsing with conservative metadata and
|
Replace prefix-sensitive, hyphen-only parsing with conservative metadata and
|
||||||
list classifiers.
|
list classifiers.
|
||||||
@@ -247,7 +247,7 @@ gofmt -w internal/providers/nws/forecast_discussion.go internal/providers/nws/fo
|
|||||||
go test -count=1 ./internal/providers/nws
|
go test -count=1 ./internal/providers/nws
|
||||||
```
|
```
|
||||||
|
|
||||||
## Stage 12: Add Representative Numbered and Key-Points Fixtures
|
## Stage 12: Add Representative Numbered and Key-Points Fixtures — Completed
|
||||||
|
|
||||||
Prove the new extension points through provider and normalizer boundaries.
|
Prove the new extension points through provider and normalizer boundaries.
|
||||||
|
|
||||||
@@ -290,7 +290,7 @@ gofmt -w internal/providers/nws/forecast_discussion_test.go internal/normalizers
|
|||||||
go test -count=1 ./internal/providers/nws ./internal/normalizers/nws
|
go test -count=1 ./internal/providers/nws ./internal/normalizers/nws
|
||||||
```
|
```
|
||||||
|
|
||||||
## Stage 13: Reconcile Documentation and Perform Final Validation
|
## Stage 13: Reconcile Documentation and Perform Final Validation — Completed
|
||||||
|
|
||||||
Close the second resilience follow-up only after all behavior is implemented and
|
Close the second resilience follow-up only after all behavior is implemented and
|
||||||
verified.
|
verified.
|
||||||
|
|||||||
Reference in New Issue
Block a user