Upstream FRMR feedback (drafts ready to file)¶
Issues we've found vendoring and consuming the FedRAMP/docs FRMR catalog that are worth raising upstream. Each is drafted as a ready-to-paste issue body.
The maintainer files these against FedRAMP/docs directly with their own
attribution; this doc is the working draft, not the filed issue.
Draft #1 — Inconsistent placement of statement field across KSIs in 0.9.43-beta¶
Suggested title: Some KSI statement fields live at top level; others at varies_by_level.{level}.statement — consumers need consistent placement
Suggested labels: documentation, consumer-feedback, consistency
Body:
Hi FedRAMP team — thanks for the FRMR catalog and the v0.9.x progression. One observation while building a tooling integration:
In
FRMR.documentation.jsonv0.9.43-beta, the per-KSIstatementfield is placed inconsistently across the 60 thematic KSIs:
- 55 KSIs carry a top-level
statementfield on the indicator object.- 5 KSIs carry no top-level
statementand instead nest the level-specific text undervaries_by_level.{low,moderate,high}.statement. The 5 are:KSI-CNA-EIS,KSI-MLA-ALA,KSI-SVC-PRR,KSI-SVC-RUD,KSI-SVC-VCM.The catalog's
updatedlog notes that the v0.9.0 standardization moved impact-specific statements down a level for some KSIs, but the migration appears partial — most KSIs retained their original top-level statements while these 5 moved entirely.Why it matters for downstream consumers: A naive loader that reads
statementfrom the top-level indicator object silently drops the statement for those 5 KSIs. The downstream tool then either misclassifies ("this KSI has no outcome to evidence") or has to special-case the 5.Suggested resolutions (any one would work; no preference from our side):
Standardize on
varies_by_level— move all 60 KSI statements tovaries_by_level.{level}.statement. This is the more expressive form (different impact levels can carry different text) and the v0.9.0 note suggests that was the intent.Standardize on top-level
statement— move the 5 outliers' moderate statement back up. Less expressive but consistent.Document the dual placement — update the FRMR schema to make the invariant explicit: "A KSI has a statement either at top level OR in
varies_by_level.{level}.statement, never both." Make the schema reject KSIs that have neither.The 5 KSIs in question all have substantive moderate-level statements (visible at
varies_by_level.moderate.statement); this isn't a content gap, just a placement inconsistency.Happy to send a PR if a specific resolution is desired.
Reference: catalogs/frmr/FRMR.documentation.json @ 0.9.43-beta as
vendored at https://github.com/FedRAMP/docs/blob/main/FRMR.documentation.json
on 2026-04-08.
Draft #2 — KSI-CSX-ORD prescribed sequence uses "(RSC)" abbreviation but the matching KSI ID has SCG suffix¶
Suggested title: KSI-CSX-ORD.following_information says "Secure Configuration Guide (RSC)" but the corresponding KSI ID is KSI-AFR-SCG
Suggested labels: documentation, consistency
Body:
Small one: the
following_informationarray underFRR.KSI.data.20x.CSX.KSI-CSX-ORDlists the prescribed initial-authorization sequence as 10 phrases of the form"<Full Name> (<3-letter code>)". For the seventh entry, the catalog says:But the corresponding KSI in the AFR theme has ID
KSI-AFR-SCG, notKSI-AFR-RSC. Every other entry's parenthetical 3-letter code matches the corresponding KSI ID's 3-letter suffix:
Phrase KSI ID Minimum Assessment Scope (MAS) KSI-AFR-MAS Authorization Data Sharing (ADS) KSI-AFR-ADS Using Cryptographic Modules (UCM) KSI-AFR-UCM Vulnerability Detection and Response (VDR) KSI-AFR-VDR Significant Change Notifications (SCN) KSI-AFR-SCN Persistent Validation and Assessment (PVA) KSI-AFR-PVA Secure Configuration Guide (RSC) KSI-AFR-SCG Collaborative Continuous Monitoring (CCM) KSI-AFR-CCM FedRAMP Security Inbox (FSI) KSI-AFR-FSI Incident Communications Procedures (ICP) KSI-AFR-ICP Suggested fix: change the seventh entry from
"Secure Configuration Guide (RSC)"to"Secure Configuration Guide (SCG)"so a consumer mapping the prescribed sequence to KSI IDs by 3-letter code finds a clean match.(We worked around this by matching on the long-form name, which is robust to the abbreviation typo, but the fix would simplify other consumers' implementations.)
Filing checklist (for the maintainer)¶
When ready to file:
- [ ] Open https://github.com/FedRAMP/docs/issues
- [ ] Search for prior art — these may already be filed by other consumers.
- [ ] Paste the appropriate draft.
- [ ] Add a one-line context: "Filing on behalf of Efterlev
(https://github.com/efterlev/efterlev), an OSS FedRAMP 20x compliance
scanner that consumes
FRMR.documentation.jsondirectly." - [ ] Link to the specific Efterlev PRs that worked around each issue:
- For draft #1: PR #82 (loader fix for
varies_by_level) - For draft #2: PR #85 (POA&M
--csx-ord-sortmode using name-matching) - [ ] After filing: link the upstream issue number from this doc as evidence that the feedback flowed.
Why we file these (and why we wait until after v0.1.0)¶
Open feedback to upstream is a healthy posture; FedRAMP has an open contribution model on the docs repo. We hold these drafts until v0.1.0 ships so the filed issue can reference an actual project, with actual users, rather than a pre-launch demo. Once v0.1.0 publishes, the issues become "consumer feedback from a working FedRAMP 20x toolchain" rather than a hypothetical observation — that's a meaningful difference for how the FedRAMP team prioritizes catalog consistency work.