Check import manifests by hash and name together (INFO-WP-0028 T01-T03)
import-review takes any partner manifest and returns, per concept, whether the name resolves in the ownership index and to which artifact, and per entry whether the pinned SHA-256 matches the blob at the declared source commit. Both run in one pass so neither can be recorded without the other, which is the failure this workplan exists to prevent. It exits non-zero on a finding, reads JSON or YAML, needs no partner checkout, and carries its own limit: resolution proves a name exists and names one owner, nothing more. Accepted manifests are registered under infospace/interfaces/manifests/ as provenance-preserving copies owned by the partner, with the partner revision and retrieval date recorded. Editing a copy to make a check pass is forbidden in the file itself. Validation re-resolves them and reports drift as federation_import_drift, a warning naming the partner rather than an error, because a stale partner pin is not this repository's file to fix. The review kit gains an extension-boundary-review template requiring hash count, resolution count and conflict count as three separate lines, and an operating rule saying one is never evidence of another. Both boundary files carry the standing-check result. Verified live: security-canon resolves 11 of 11, interface-canon 23 of 25 with the two known Interface and Endpoint pins. make check passes with 58 tests, clean validation and those two warnings. 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
d1254aabe6
commit
e1a6314131
14 changed files with 513 additions and 7 deletions
92
infospace/interfaces/manifests/interface-canon.json
Normal file
92
infospace/interfaces/manifests/interface-canon.json
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
{
|
||||
"schema_version": 1,
|
||||
"model": "interface-model",
|
||||
"source_repository": "info-tech-canon",
|
||||
"source_commit": "8eb1c83f2e119de57e7ad448b901381f8e92fb57",
|
||||
"imports": [
|
||||
{
|
||||
"model": "itc-land",
|
||||
"path": "infospace/models/landscape/InfoTechCanonLandscapeModel.md",
|
||||
"sha256": "4190b044fbd5e3eecf7b28e08608e99c7de3af5dd5f3a7554edee02423967fb1",
|
||||
"concepts": [
|
||||
"Interface",
|
||||
"Endpoint",
|
||||
"SoftwareSystem",
|
||||
"SoftwareComponent"
|
||||
]
|
||||
},
|
||||
{
|
||||
"model": "itc-ident",
|
||||
"path": "infospace/models/identity/InfoTechCanonIdentityModel.md",
|
||||
"sha256": "20bc844d9de07041c40009cc5e3d6eeb42aeb7adcbb86b0194d4b2517aa23f32",
|
||||
"concepts": [
|
||||
"Identifier",
|
||||
"Scoped Identifier",
|
||||
"Synonymity Assertion"
|
||||
]
|
||||
},
|
||||
{
|
||||
"model": "itc-evid",
|
||||
"path": "infospace/models/evidence/InfoTechCanonEvidenceModel.md",
|
||||
"sha256": "a93472818b3ae60c07a4c6226090d63eebf1402dfd9f46dad643dbb5608ed086",
|
||||
"concepts": [
|
||||
"Evidence",
|
||||
"Evidence Source",
|
||||
"Evidence strength"
|
||||
]
|
||||
},
|
||||
{
|
||||
"model": "itc-gov",
|
||||
"path": "infospace/models/governance/InfoTechCanonGovernanceModel.md",
|
||||
"sha256": "5f3174147ec0d6f5bb6479a7ce4dc130bf61ecc0bab3936895b92c6baf21deb5",
|
||||
"concepts": [
|
||||
"Assertion",
|
||||
"Policy",
|
||||
"Decision"
|
||||
]
|
||||
},
|
||||
{
|
||||
"model": "itc-data",
|
||||
"path": "infospace/models/data/InfoTechCanonDataModel.md",
|
||||
"sha256": "cffbbde50808719adb73c6d6c642da8d0122bdfb3e9b6aaa6bc852330089afe3",
|
||||
"concepts": [
|
||||
"Dataset",
|
||||
"DataObject",
|
||||
"Record",
|
||||
"Representation",
|
||||
"DataType",
|
||||
"Constraint"
|
||||
],
|
||||
"usage": "shared concepts referenced for mapping; no asserted equivalence"
|
||||
},
|
||||
{
|
||||
"model": "itc-infospace",
|
||||
"path": "infospace/models/information-space/InfoTechCanonInformationSpaceModel.md",
|
||||
"sha256": "ab48a679b8588b654b12687c5248a292aab13c11fe2005e060b185c551539e10",
|
||||
"concepts": [
|
||||
"KnowledgeArtifact",
|
||||
"SourceReference",
|
||||
"Citation"
|
||||
],
|
||||
"usage": "shared concepts referenced for mapping; no asserted equivalence"
|
||||
},
|
||||
{
|
||||
"model": "itc-net",
|
||||
"path": "infospace/models/network/InfoTechCanonNetworkModel.md",
|
||||
"sha256": "3ee5ed5e0423389320a0ccf86cd6b5dc55e0c1b4562b00e101d158cff6bd43c8",
|
||||
"concepts": [
|
||||
"Interface",
|
||||
"Port",
|
||||
"Endpoint"
|
||||
],
|
||||
"usage": "shared concepts referenced for mapping; no asserted equivalence"
|
||||
}
|
||||
],
|
||||
"review": {
|
||||
"date": "2026-09-09",
|
||||
"workplan": "INTERFACE-WP-0003",
|
||||
"record": "../../mappings/review-2026-09-09.md",
|
||||
"previous_manifest_commit": "dd6cdd7f83f881d7f94795b58351bbd06a056990",
|
||||
"result": "existing four imports unchanged; data, information-space, and network boundaries added"
|
||||
}
|
||||
}
|
||||
22
infospace/interfaces/manifests/manifests.yaml
Normal file
22
infospace/interfaces/manifests/manifests.yaml
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
# Registered partner import manifests.
|
||||
#
|
||||
# These are provenance-preserving copies, owned by the partner repository and
|
||||
# retrieved from it. Do not edit a copy to make a check pass: correct it in the
|
||||
# partner repository and retrieve it again, recording the new revision here.
|
||||
# The copies exist so that drift is caught when InfoTechCanon changes, not only
|
||||
# when a partner happens to look.
|
||||
#
|
||||
# Decided under INFO-WP-0028-T02.
|
||||
manifests:
|
||||
- partner: security-canon
|
||||
file: security-canon.json
|
||||
retrieved_from: infospace/vocabulary/mode-of-authority/imports.json
|
||||
partner_revision: e159fe7a1b2b9172fc979a284c4de88e4d08b933
|
||||
retrieved_at: "2026-09-20"
|
||||
boundary: ../security-canon-boundary.md
|
||||
- partner: interface-canon
|
||||
file: interface-canon.json
|
||||
retrieved_from: infospace/models/interface/imports.json
|
||||
partner_revision: 37fbe245bfd00fb1271af368eec7f0161247d57f
|
||||
retrieved_at: "2026-09-20"
|
||||
boundary: ../interface-canon-boundary.md
|
||||
69
infospace/interfaces/manifests/security-canon.json
Normal file
69
infospace/interfaces/manifests/security-canon.json
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
"manifest": "sec-authority:ModeOfAuthority imports",
|
||||
"artifact": "sec-authority:ModeOfAuthority",
|
||||
"artifact_version": "0.2.0",
|
||||
"source_repository": "info-tech-canon",
|
||||
"source_commit": "e1f98da015f32545254747c8e9f59b780c423d5b",
|
||||
"pinned_at": "2026-09-20",
|
||||
"note": "Concepts imported, not redefined. SHA-256 values are of the Git blob at source_commit. Amended 2026-09-20 by SECURITY-WP-0001-T03: Authority and Environment added as declared imports. Environment re-pointed 2026-09-20 from CARING to the Landscape Model, which the kernel map names as its owner. Name-resolution audit 2026-09-20 (InfoTechCanon INFO-WP-0027-T04): five of twelve imports named concepts their pinned artifact does not define.",
|
||||
"imports": [
|
||||
{
|
||||
"artifact": "InfoTechCanonCore",
|
||||
"path": "infospace/kernel/InfoTechCanonCore.md",
|
||||
"sha256": "74661caea603876f71b4258963bd11a338cba63ef57a00fb8c41e2e51d07742c",
|
||||
"concepts": [
|
||||
"CanonArtifact",
|
||||
"RelationshipDefinition"
|
||||
],
|
||||
"note": "Core owns CanonArtifact, any identifiable unit of canon content, and RelationshipDefinition. Corrected 2026-09-20: the earlier manifest named Artifact and Relationship, which Core does not define."
|
||||
},
|
||||
{
|
||||
"artifact": "InfoTechCanonAccessControlModel",
|
||||
"path": "infospace/models/access-control/InfoTechCanonAccessControlModel.md",
|
||||
"sha256": "456e2534264b806098ac7be85d25e5e1cd1150b1e34934b07f46dabd909343bf",
|
||||
"concepts": [
|
||||
"Subject",
|
||||
"Principal",
|
||||
"Operation"
|
||||
],
|
||||
"note": "Operation replaces the earlier AccessOperations, which was a SecurityCanon compaction of the ITC-ACCESS name."
|
||||
},
|
||||
{
|
||||
"artifact": "InfoTechCanonIdentityModel",
|
||||
"path": "infospace/models/identity/InfoTechCanonIdentityModel.md",
|
||||
"sha256": "20bc844d9de07041c40009cc5e3d6eeb42aeb7adcbb86b0194d4b2517aa23f32",
|
||||
"concepts": [
|
||||
"Scope"
|
||||
],
|
||||
"note": "Scope is the general boundary, ITC-IDENT 2.10. PrincipalType was removed 2026-09-20: the name appears nowhere in the identity model, and the dimension is SecurityCanon's own classification of the imported Principal."
|
||||
},
|
||||
{
|
||||
"artifact": "InfoTechCanonOrganizationModel",
|
||||
"path": "infospace/models/organization/InfoTechCanonOrganizationModel.md",
|
||||
"sha256": "bdb1277e78c3a0802f8ea08e058be093452390e61ca0f7e979051e48680fe6c3",
|
||||
"concepts": [
|
||||
"Actor",
|
||||
"Authority",
|
||||
"Ownership"
|
||||
],
|
||||
"note": "Ownership moved here 2026-09-20; the kernel map assigns Ownership and Stewardship to Organization, not Core."
|
||||
},
|
||||
{
|
||||
"artifact": "InfoTechCanonPurposeDemandExtension",
|
||||
"path": "infospace/models/governance/InfoTechCanonPurposeDemandExtension.md",
|
||||
"sha256": "74637a7ed997691abf2c1370fffaa173010939a070d69853dc1f0a86cc8343bb",
|
||||
"concepts": [
|
||||
"Purpose"
|
||||
]
|
||||
},
|
||||
{
|
||||
"artifact": "InfoTechCanonLandscapeModel",
|
||||
"path": "infospace/models/landscape/InfoTechCanonLandscapeModel.md",
|
||||
"sha256": "4190b044fbd5e3eecf7b28e08608e99c7de3af5dd5f3a7554edee02423967fb1",
|
||||
"concepts": [
|
||||
"Environment"
|
||||
],
|
||||
"note": "Environment is owned by the Landscape Model per the InfoTechCanon kernel map concept-owner table; CARING section 21.5 enumerates values for it. The RECOVERY value is carried as an upstream value proposal."
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue