Repository navigation
docs(openusd): restructure run-on requirement prose - #3
marcschier wants to merge 3 commits into
Conversation
Keep only the wording edits whose Lingity protected_delta stays equivalent with zero missing, added, specified and unresolved elements, and whose replacement is genuinely better English. Lingity architecture-review 1.3.0 is unchanged by these edits: HRI 3.30, 449 defects, 49 high-severity findings, 11 substantive blocks below the 85 floor. The remaining defects are dominated by LING-PASSIVE-001, LING-ACTOR-001 and LING-AGENCY-001, which require naming an actor the specification does not name. Every such rewrite trips protected_delta, so the floor is unreachable without changing normative claims. Signed-off-by: Marc Schier <marcschier@hotmail.com>
Apply nine editor-approved readability repairs from an interactive Lingity editing session. Every split keeps the subject the source already stated, and causal and ordering cues are preserved with an equivalent connective rather than dropped. Main repairs: - Turn the four-way "discoverable / verifiable / versioned / federatable" enumeration into a list, restating the subject so it stays bound. - Split the Abstract at the em-dash and drop "in order to". The enabling verb "allows" is kept, so the registry is not newly asserted to perform storage, discovery and federation itself. - Split the asset-resolution procedure, keeping the validate-then-retrieve ordering explicit with "only after that validation". - Split the xid definition so the RFC 3986 constraints form their own sentence with xRegistry as the stated subject. - Separate the two digest obligations into one sentence each. - Split six further run-on sentences in 1.2, 1.3, 4.4, 5.3, 5.5 and 5.6. Lingity architecture-review 1.3.0, measured against the pre-edit bytes: document HRI 3.30 -> 4.21 violations 61 -> 32 defects 449 -> 419 high severity 49 -> 28 blocks below 85 11 -> 3 lowest block 73.07 -> 80.97 The comparison against the original reports missing 22 and added 29. Those are re-segmentation artifacts: the claim extractor keys a claim on a word-bag of its whole sentence, so splitting one sentence retires the long claim and registers the shorter ones. Each pair was checked by hand. It reports specified 1, "actor specified: use assigned to 'consumer'", from splitting "MUST verify it and MUST NOT use ..." into two sentences. The actor is the same sentence's own subject, "A Consumer that has retrieved an artifact for which a digest is declared", so no obligation changed holder. This delta was explicitly authorized by the editor. Twenty-eight findings are retained by editor decision. They are dominated by the mandated RFC 2119 boilerplate, by Markdown link anchors counted as hyphenated compounds or parentheticals, by OPC, UA and USD read as undefined acronyms, and by defined domain terms such as "dependency closure". The HRI 85 floor is not reachable on a normative specification without altering what it requires. Signed-off-by: Marc Schier <marcschier@hotmail.com>
Name the actors consistently. The specification placed obligations on
Consumer, Producer and implementation without defining any of them, and
spelled the same role two ways.
- Add 2.2.4 defining Consumer as the party that retrieves and composes
artifacts and Producer as the party that publishes them, and state that
capitalized role names denote defined roles.
- Normalize the nine lowercase "consumer" uses to Consumer. No genuinely
generic use existed; the split ran along normative versus narrative
text without ever being declared.
- Rename the four "publisher" uses to Producer. The editor confirmed
these name the same party as the Producer of 5.1.1, which previously
appeared in that subsection alone.
- Change the single "client" in 1.2 to Consumer.
Give three obligations an actor, each supported by its surrounding text:
- 4.1 "a collision MUST be rejected" -> "An implementation MUST
reject a case-insensitive collision", matching the parallel rule
later in the same section.
- 4.5.5 "it MUST be published" -> "a Producer MUST publish it".
- 5.1.1 "Inconsistent bindings MUST be -> "A Producer MUST reject
rejected" inconsistent bindings".
Lingity architecture-review 1.3.0, measured against the pre-edit bytes:
LING-AGENCY-001 12 -> 9
LING-PASSIVE-001 68 -> 65
actor-rule total 104 -> 94
defects 419 -> 416
blocks 240 -> 244
mean block HRI 97.25 -> 97.33
blocks scoring 100 97 -> 99
The composite document score moved 4.21 -> 4.09 while every block measure
improved. That number is dominated by the 28 unchanged high-severity
residue findings and does not track this work. Three rules rose by one
each: REDUNDANCY from repeating the role names, and ABBREVIATION and
COMPOUND-DEPTH from the new heading and its anchor.
protected_delta reports specified 2, "reject assigned to 'implementation'"
and "reject assigned to 'producer'". Both were authorized explicitly, and
both actors come from the surrounding text rather than from invention.
Three obligations keep no actor because the source does not determine one,
and they remain open rather than resolved: a usdassetid MUST NOT be derived
from the artifact's bytes, an xid MUST NOT be used as an asset identifier,
and metadata acquisition MUST be explicitly authorized. The inherited
xRegistry 2.1 boilerplate is left untouched.
Signed-off-by: Marc Schier <marcschier@hotmail.com>
|
Superseded — folded into xregistry#571 instead of shipping as a separate PR. All three commits are now in that PR, rebased onto the fork's An upstream PR against Closing without merging. No work is lost. |
What this changes
Readability repairs to
workingdrafts/models/openusd/spec.md, produced in aninteractive Lingity editing session. Every change was an explicit editor
decision; nothing was applied autonomously.
Measured result
Policy
architecture-review1.3.0 (document HRI ≥ 85, every substantive block≥ 85, zero high-severity findings), measured against the pre-edit bytes
(SHA-256
b9418c29…56524).Severity mix: high 49 → 28, medium 223 → 212, low 177 → 179.
Principal repairs
in order to→to. The enabling verballows is deliberately kept, so the registry is not newly asserted to
perform storage, discovery and federation itself.
federatable enumeration became a list, with the subject restated so it stays
bound to each item. That block went 73.07 → 98.92.
validate-then-retrieve ordering kept explicit as "only after that validation".
xiddefinition split so the RFC 3986 constraints form theirown sentence with
xRegistryas the stated subject.Every split keeps the subject the source already stated, and preserves causal
and ordering cues with an equivalent connective rather than dropping them.
Protected-meaning result, stated honestly
The comparison against the original reports
missing 22,added 29,specified 1, dispositionunresolved.missing/addedare re-segmentation artifacts. The claim extractor keys aclaim on a word-bag of its whole sentence, so splitting one sentence retires the
long claim and registers the shorter ones. Each pair was checked by hand and
carries the same obligation, actor and modality. Two are genuine clarity gains:
xRegistry also constrains…now states its subject, andthey were derivedbecame
the types were derived.specified 1is an authorized delta, not an accident:It comes from splitting "A Consumer … MUST verify it and MUST NOT use an
artifact whose digest does not match" into two sentences. The actor is the same
sentence's own subject — "A Consumer that has retrieved an artifact for which a
digestis declared" — so no obligation changed holder. This was put to theeditor as its own decision and approved with the noun repeated rather than a
pronoun.
Two candidate edits were rejected during the session for changing meaning:
naming an actor to satisfy the passive/agency rules, and rewriting the Abstract's
allows the storage… ofintostores, manages, discovers and federates.Residue — 28 findings retained by editor decision
LING-NOMINALIZATION-001composition(USD composition arcs),dependency closure(a bolded defined term in §1.1),provenance,authentication,authorization,SectionLING-COMPOUND-DEPTH-001LING-PUNCTUATION-001(`.usda`, `.usdc`, `.usd`)LING-ABBREVIATION-001OPC/UAare the standards body's own names;MUST/SHALL/MAY/REQUIREDare mandated RFC 2119 boilerplate;USDis the spec's subjectLING-LIST-001assetkindenum value listRemaining sub-floor blocks: 80.97, 81.69, 82.77.
This does not pass the policy
Final review: exit code 1,
accepted: false, HRI 4.21 against a floor of 85.The gap is a property of applying a plain-language policy to a normative
specification, not an editable defect. Editor acceptance of the residue is not a
Lingity pass, and this PR does not claim one.
Validation
tools/verify.py .— succeeded, 51 files.pytest workingdrafts/models/openusd— 1 passed.git diff --check— clean; LF endings preserved, 0 CR bytes.Update — actor naming (commit
dde0bed)A follow-up interactive session asked which actors this specification
specifies, how they are named, and whether better names exist.
What the audit found. No actor was defined anywhere. §2.1 declared no
capitalization convention and §2.2 defined only things. Eight roles were in
use, inconsistently:
Consumer/consumerProducerpublisherimplementationclientConsumerandProducerwere capitalized like defined roles, whileimplementation— carrying more obligations thanProducer— was not.Changes. Added §2.2.4 defining Consumer and Producer and stating the
capitalization convention; normalized the 9 lowercase
consumer; renamed the 4publishertoProducer; changed the singleclienttoConsumer. The authorconfirmed
publisherandProducername the same party — §5.1.1 had placedProducerandimplementationMUSTs five lines apart, which the text alone didnot resolve.
Three obligations gained an actor, each supported by surrounding text:
Measured:
LING-AGENCY-001LING-PASSIVE-001The composite document score moved 4.21 → 4.09 while every block measure
improved; that number is dominated by the 28 unchanged high-severity residue
findings and does not track this work.
protected_deltareportsspecified: 2—reject assigned to 'implementation'and
reject assigned to 'producer'. Both were explicitly authorized, and bothactors come from surrounding text rather than invention.
Still open — not resolved. Three obligations keep no actor because the source
does not determine one: §1.3 "a
usdassetidMUST NOT be derived from theartifact's bytes" (by whom?), §1.3 "an
xid… MUST NOT be used as an assetidentifier" (by whom?), and §5.1.1 "Metadata acquisition … MUST be explicitly
authorized" (by whom?).
implementationalso remains lowercase and undefinedwhile carrying 8 obligations, by author decision.