Resolve the two senses of Authority and declare the unowned remainder (T05, T07)
R-3 is resolved by disambiguation without a rename. CARING section 10.7 now says its Authority exposure mode names a demanding party rather than a right, links to ITC-ORG section 10.17, and notes that such an Authority holds no organizational authority over the system it compels. ITC-ORG carries the reciprocal sentence and records that SecurityCanon's AuthMode qualifies the exercise of the right rather than redefining it. The seventeen concepts no artifact declared are now declared: eleven to the Organization Model, four to CARING and two to the Capability Model. Capacity in the Organization Model and Capacity behaviour in the Capability Model are two concepts, not one, and neither moves. Two of CARING's four turned out not to be new concepts at all but the prose spellings of CaringCapabilityProfile and CaringDerivedCapability; both spellings are declared to the same owner so the name a reader meets resolves. Effective Access and Declared Access were genuinely undeclared. Three boundary reviews are added for organization, caring and capability, bringing the count to fourteen. The concept_defined_without_owner warning is at zero, and the test that asserted it fires now proves it on a modified corpus instead of on the live one. make check passes with 54 tests, clean validation, no warnings, no stale assets. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 3588@bnt-lap001 Assistant-Session: 24b80f66-e5a7-4e61-99fe-2d422e6d17da
This commit is contained in:
parent
4a35bfe489
commit
5f652d200f
18 changed files with 326 additions and 17 deletions
|
|
@ -160,15 +160,26 @@ def test_concept_coverage_cli_reports_one_artifact(capsys):
|
|||
assert [item["artifact"] for item in payload["artifacts"]] == ["model/identity"]
|
||||
|
||||
|
||||
def test_declaration_checks_warn_on_unowned_and_error_on_silence(tmp_path):
|
||||
def test_every_defined_concept_has_an_owner():
|
||||
context = load_context()
|
||||
ownership = concept_ownership(context)
|
||||
result = concept_declaration_checks(context, ownership)
|
||||
result = concept_declaration_checks(context, concept_ownership(context))
|
||||
|
||||
assert not result["errors"]
|
||||
warned = {item["artifact_id"] for item in result["warnings"]}
|
||||
assert "model/organization" in warned
|
||||
assert all(item["code"] == "concept_defined_without_owner" for item in result["warnings"])
|
||||
assert not result["warnings"]
|
||||
|
||||
|
||||
def test_declaration_warning_fires_for_a_concept_nobody_owns(corpus):
|
||||
target = corpus / "standards/caring/InfoTechCanonCaringAccessGovernanceStandard.md"
|
||||
text = target.read_text(encoding="utf-8")
|
||||
target.write_text(text.replace(" - Effective Access\n", "", 1), encoding="utf-8")
|
||||
|
||||
context = load_context(corpus)
|
||||
result = concept_declaration_checks(context, concept_ownership(context))
|
||||
|
||||
warned = {item["artifact_id"]: item for item in result["warnings"]}
|
||||
assert "standard/caring" in warned
|
||||
assert "Effective Access" in warned["standard/caring"]["concepts"]
|
||||
assert warned["standard/caring"]["code"] == "concept_defined_without_owner"
|
||||
|
||||
|
||||
def test_declaration_error_fires_when_an_artifact_declares_nothing(corpus):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue