diff --git a/docs/_static/png/framework_agreement_types.png b/docs/_static/png/framework_agreement_types.png index 37eb74bfa..2e17a2ba2 100644 Binary files a/docs/_static/png/framework_agreement_types.png and b/docs/_static/png/framework_agreement_types.png differ diff --git a/docs/guidance/index.md b/docs/guidance/index.md index 6822c9f24..7c22d8b80 100644 --- a/docs/guidance/index.md +++ b/docs/guidance/index.md @@ -6,6 +6,8 @@ The four phases of implementation described in this guide have helped implemente Read the guidance to understand the main steps to implement OCDS and to find supporting resources. Detailed guidance on specific topics and tasks is provided in sub-pages. +Use the [OCDS Implementation Checklist](https://www.open-contracting.org/resources/ocds-implementation-checklist) to keep track of your progress. + ```{toctree} :maxdepth: 2 diff --git a/docs/guidance/map.md b/docs/guidance/map.md index f8dde3f76..32e2c836f 100644 --- a/docs/guidance/map.md +++ b/docs/guidance/map.md @@ -90,7 +90,7 @@ Mapping data to OCDS is not always obvious. Please refer to our how-to guides an map/contracting_planning_processes map/unsuccessful_processes -map/related_processes +map/framework_agreements map/pre-qualification map/awards_contracts map/contract_suspension diff --git a/docs/guidance/map/contracting_planning_processes.md b/docs/guidance/map/contracting_planning_processes.md index 289f4416b..e700db486 100644 --- a/docs/guidance/map/contracting_planning_processes.md +++ b/docs/guidance/map/contracting_planning_processes.md @@ -25,5 +25,5 @@ We recommend publishing data about planning and contracting processes under sepa ``` ```{note} -In OCDS 1.2 and earlier, it is not possible to publish all information about multi-stage procedures under a single `ocid`. There is guidance on how to deal with this for [framework agreements](related_processes) and for [pre-qualification and pre-selection](pre-qualification). If you want to disclose this type of information (including other types of multi-stage procedures, such as competitive dialogues and innovation partnerships), [contact the OCDS Helpdesk](../../support/index). The approach to modelling multi-stage procedures in a future, backwards-incompatible version of the standard is under discussion on [GitHub](https://github.com/open-contracting/standard/issues/440). +In OCDS 1.2 and earlier, it is not possible to publish all information about multi-stage procedures under a single `ocid`. There is guidance on how to deal with this for [framework agreements](framework_agreements) and for [pre-qualification and pre-selection](pre-qualification). If you want to disclose this type of information (including other types of multi-stage procedures, such as competitive dialogues and innovation partnerships), [contact the OCDS Helpdesk](../../support/index). The approach to modelling multi-stage procedures in a future, backwards-incompatible version of the standard is under discussion on [GitHub](https://github.com/open-contracting/standard/issues/440). ``` diff --git a/docs/guidance/map/related_processes.md b/docs/guidance/map/framework_agreements.md similarity index 94% rename from docs/guidance/map/related_processes.md rename to docs/guidance/map/framework_agreements.md index b23347ab9..d274422e4 100644 --- a/docs/guidance/map/related_processes.md +++ b/docs/guidance/map/framework_agreements.md @@ -1,4 +1,6 @@ -# Framework agreements and related processes +# Framework agreements + +## Definitions ```{note} In this guidance we defer to the definitions given in the [UNCITRAL Model Law on Public Procurement (2011)](https://uncitral.un.org/en/texts/procurement/modellaw/public_procurement). The model law was developed through extensive consultation and reflects the procurement practices and concepts used in many different jurisdictions. @@ -18,6 +20,10 @@ A procurement contract is defined in UNCITRAL as: > Contract concluded between the procuring entity and a supplier (or suppliers) or a contractor (or contractors) at the end of the procurement proceedings. +## Types of framework agreement + +![Framework agreement types](../../_static/png/framework_agreement_types.png) + Framework agreements can be **open** or **closed**: **Closed framework agreement** @@ -44,8 +50,6 @@ Competition at the second stage is limited to suppliers that are party to the fr The second stage of a framework agreement procedure is also known as a “call-off.” Non-competitive second stages are also known as “direct call-offs.” Competitive second stages are also known as “mini-competitions.” -![Types of framework agreement](../../_static/png/framework_agreement_types.png) - ## Modelling framework agreements in OCDS In OCDS, a contracting process brings together, under a single identifier, the information that users need to answer questions such as: @@ -62,8 +66,18 @@ The following diagram shows how OCDS models a framework agreement procedure with ![OCDS framework agreement model](../../_static/png/framework_agreement_model.png) +### Extensions + +The `tender.techniques.hasFrameworkAgreement` field, from the [Techniques](https://extensions.open-contracting.org/en/extensions/techniques/master/) extension, is used to identify contracting processes that represent the first stage of a framework agreement procedure. More information on the nature of the framework agreement can be provided via the `tender.techniques.frameworkAgreement` object. + The `tender.competitive` field, from the [Competitive](https://extensions.open-contracting.org/en/extensions/competitive/master/) extension, is used to indicate whether the second stage involves competition. +The two extensions should be declared in the package metadata: + +```{literalinclude} ../../examples/frameworks/extensions_block.json +:language: json +``` + The following guidance describes how to model the different stages of a framework agreement procedure in OCDS. ### Invitation to participate in the first stage of a framework agreement procedure @@ -78,17 +92,7 @@ The following guidance describes how to model the different stages of a framewor * If the framework agreement is closed, set `tender.tenderPeriod.endDate` to the deadline for responses to the invitation. * If the framework agreement is open, set `tender.tenderPeriod.endDate` to the last date that new suppliers can be added. -#### Setting procurement method - -The `tender.procurementMethod` field uses the [method codelist](../../schema/codelists.md#method) to describe the competitive conditions of the framework agreement procedure as a whole, not only the first stage. - -Use the following criteria to determine the procurement method: - -* If the contracting process will establish a framework agreement with a single supplier and if there are no conditions to participate in the contracting process, set `tender.procurementMethod` to 'open'. -* If the contracting process limits the suppliers that can submit a request to participate in the framework agreement, set `tender.procurementMethod` to 'limited'. -* Otherwise, set `tender.procurementMethod` to 'selective'. - -### Addition of a supplier to a framework agreement +### First-stage selection and addition of suppliers to the framework agreement * Create a release with the **same** `ocid` as the tender release and add 'award' to the `tag` array * Add an `Award` object to the `awards` array. @@ -110,11 +114,11 @@ Use the following criteria to determine the procurement method: * Create a release with a **new** `ocid` and add 'tender' to the `.tag` array * [Relate the second stage to the first stage](#relate-the-second-stage-to-the-first-stage) * [Add a buyer](#add-a-buyer) -* Populate the `tender` section, setting `tender.procurementMethod` to the same value as in the first stage +* Populate the `tender` section, setting `tender.procurementMethod` to the same value as in the first stage, and `tender.competitive` to `true` ### Award of a procurement contract resulting from a second-stage competition -* Create a release with the **same** `ocid` as the tender release *for the second stage*, and add 'award' and 'contract' to the `tag` +* Create a release with the **same** `ocid` as the tender release *for the invitation to participate in a second-stage competition*, and add 'award' and 'contract' to the `tag` * [Add an award, contract and supplier](#add-an-award-contract-and-supplier) ### Updating the contract value, period or items @@ -140,18 +144,6 @@ Use the following criteria to determine the procurement method: * Add an `OrganizationReference` object to the award's `.suppliers` array and set `.id` and `.name` to match the supplier's object in the `parties` array. * Populate the award's `.value`, `.contractPeriod` and `.items` with the initial contract value, period and items. -### Extensions - -The `tender.techniques.hasFrameworkAgreement` field, from the [Techniques](https://extensions.open-contracting.org/en/extensions/techniques/master/) extension, is used to identify contracting processes that represent the first stage of a framework agreement procedure. More information on the nature of the framework agreement can be provided via the `tender.techniques.frameworkAgreement` object. - -The `tender.competitive` field, from the [Competitive](https://extensions.open-contracting.org/en/extensions/competitive/master/) extension, is used to indicate whether the second stage involves competition. - -The two extensions should be declared in the package metadata: - -```{literalinclude} ../../examples/frameworks/extensions_block.json -:language: json -``` - ## Worked examples The following examples show how to model two framework agreements, covering a range of characteristics: diff --git a/docs/guidance/map/organization_classifications.md b/docs/guidance/map/organization_classifications.md index bcae7f076..d415c67c6 100644 --- a/docs/guidance/map/organization_classifications.md +++ b/docs/guidance/map/organization_classifications.md @@ -67,7 +67,7 @@ A third, discouraged, option is for publishers to use local extensions to disclo For example, although tracking women-owned organizations is shown example 2.2 above, this data only provides information on entities that have been registered as women-owned. Organizations without the classification can be not women-owned, women-owned but not registered as such, or the information might not be known. -To disambiguate these cases, a publisher can choose to publish a flag field for the relevant organization classification. In the fictional example below, Dhanghadi has created a local extension so they can publish data in the `parties.details` block on an organization that is `femaleChaired`, with the values of the field being either 'true' or 'false'. The publisher would document the structure of this field and its meaning in the local extension files. +To disambiguate these cases, a publisher can choose to publish a flag field for the relevant organization classification. In the fictional example below, Dhanghadi has created a local extension so they can publish data in the `parties.details` block on an organization that is `femaleChaired`, with the values of the field being either `true` or `false`. The publisher would document the structure of this field and its meaning in the local extension files. ```{jsoninclude} ../../examples/organization-classification/dhangadhi_female_chaired_example.json :jsonpointer: diff --git a/docs/history/changelog.md b/docs/history/changelog.md index c7e7de38d..c664d13f6 100644 --- a/docs/history/changelog.md +++ b/docs/history/changelog.md @@ -8,35 +8,57 @@ Per the [normative and non-normative content and changes policy](https://docs.go ### Documentation -* Getting Started section: - * [#980](https://github.com/open-contracting/standard/pull/980) Remove references to ☆ levels. - * [#1017](https://github.com/open-contracting/standard/pull/1017) Add link to bulk downloads in Guidance section. +* Primer: + * Rewrite the Getting Started section as a Primer [#1298](https://github.com/open-contracting/standard/pull/1298) [#1302](https://github.com/open-contracting/standard/pull/1302) [#1365](https://github.com/open-contracting/standard/pull/1365)[#1387](https://github.com/open-contracting/standard/pull/1387). -* Guidance section: +* Guidance: * [#986](https://github.com/open-contracting/standard/pull/986) Add implementation guidance from OCP website. - * Add worked examples for the Map phase [#947](https://github.com/open-contracting/standard/pull/947) [#948](https://github.com/open-contracting/standard/pull/948) [#950](https://github.com/open-contracting/standard/pull/950) [#974](https://github.com/open-contracting/standard/pull/974) [#990](https://github.com/open-contracting/standard/pull/990) [#999](https://github.com/open-contracting/standard/pull/999) [#1007](https://github.com/open-contracting/standard/pull/1007) [#1123](https://github.com/open-contracting/standard/pull/1123) [#1216](https://github.com/open-contracting/standard/pull/1216). - * Add worked examples for the Build phase [#951](https://github.com/open-contracting/standard/pull/951) [#997](https://github.com/open-contracting/standard/pull/997). - * [#963](https://github.com/open-contracting/standard/pull/963) Remove guidance on web discovery. - * [#986](https://github.com/open-contracting/standard/pull/986) Merge Registration page into Build page. - * [#986](https://github.com/open-contracting/standard/pull/986) [#1012](https://github.com/open-contracting/standard/pull/1012) Merge Publication policy and Licensing pages into Publish page. - * [#1013](https://github.com/open-contracting/standard/pull/1013) Replace guidance on publication levels. - * [#1016](https://github.com/open-contracting/standard/pull/1016) Add links to OCDS profiles and linked standards. - * [#1150](https://github.com/open-contracting/standard/pull/1150) Align language in Build phase with language in Map phase. - * [#1193](https://github.com/open-contracting/standard/pull/1193) Removed language distinguishing "core", "community", and "local" extensions. - * [#1337](https://github.com/open-contracting/standard/pull/1337) Improve the structure of the Map page. - * [#1338](https://github.com/open-contracting/standard/pull/1338) Improve the structure of the worked examples on the Map page. - * [#1345](https://github.com/open-contracting/standard/pull/1345) Update legal references in pre-gualification guidance. - * [#1353](https://github.com/open-contracting/standard/pull/1353) Replace "submit a tender" with "submit a bid". + * [#1386](https://github.com/open-contracting/standard/pull/1386) Add link to OCDS Implementation Checklist. + * Map: + * Add examples [#1338](https://github.com/open-contracting/standard/pull/1338): + * Organization references [#947](https://github.com/open-contracting/standard/pull/947) + * Organization identifiers [#948](https://github.com/open-contracting/standard/pull/948) + * Amendments [#950](https://github.com/open-contracting/standard/pull/950) + * Personal identifiers [#952](https://github.com/open-contracting/standard/pull/952) + * Organizational units [#961](https://github.com/open-contracting/standard/pull/961) + * Awards and contracts [#974](https://github.com/open-contracting/standard/pull/974) + * Organization classifications [#990](https://github.com/open-contracting/standard/pull/990) + * Pre-qualification and pre-selection [#999](https://github.com/open-contracting/standard/pull/999) [#1345](https://github.com/open-contracting/standard/pull/1345) + * Unsuccessful processes [#1007](https://github.com/open-contracting/standard/pull/1007) + * Milestones [#1048](https://github.com/open-contracting/standard/pull/1048) + * Framework agreements [#1123](https://github.com/open-contracting/standard/pull/1123) [#1269](https://github.com/open-contracting/standard/pull/1269) [#1332](https://github.com/open-contracting/standard/pull/1332) + * Electronic catalogs [#1223](https://github.com/open-contracting/standard/pull/1223) + * Beneficial ownership information [#1305](https://github.com/open-contracting/standard/pull/1305) + * Add pages: + * Localizing OCDS [#1043](https://github.com/open-contracting/standard/pull/1043) + * Linked standards [#1278](https://github.com/open-contracting/standard/pull/1278) + * [#1016](https://github.com/open-contracting/standard/pull/1016) [#1140](https://github.com/open-contracting/standard/pull/1140) Add links to OCDS profiles and linked standards. + * [#1193](https://github.com/open-contracting/standard/pull/1193) Removed language distinguishing "core", "community", and "local" extensions. + * Build: + * Add pages: + * "Easy" releases [#951](https://github.com/open-contracting/standard/pull/951) + * Updates and deletions [#985](https://github.com/open-contracting/standard/pull/985) + * Change history [#997](https://github.com/open-contracting/standard/pull/997) [#1047](https://github.com/open-contracting/standard/pull/1047) + * System architectures [#997](https://github.com/open-contracting/standard/pull/997) + * Data collection tools [#1061](https://github.com/open-contracting/standard/pull/1061/files) + * [#963](https://github.com/open-contracting/standard/pull/963) Remove guidance on web discovery. + * [#986](https://github.com/open-contracting/standard/pull/986) Merge Registration page into Build page. + * [#1150](https://github.com/open-contracting/standard/pull/1150) Align language in Build phase with language in Map phase. + * Publish: + * Merge Publication policy and Licensing pages into Publish page [#986](https://github.com/open-contracting/standard/pull/986) [#1012](https://github.com/open-contracting/standard/pull/1012). + * Replace guidance on publication levels [#980](https://github.com/open-contracting/standard/pull/980) [#1013](https://github.com/open-contracting/standard/pull/1013) [#1045](https://github.com/open-contracting/standard/pull/1045). + * Various minor improvements [#1051](https://github.com/open-contracting/standard/pull/1051) [#1080](https://github.com/open-contracting/standard/pull/1080) [#1083](https://github.com/open-contracting/standard/pull/1083) [#1085](https://github.com/open-contracting/standard/pull/1085) [#1091](https://github.com/open-contracting/standard/pull/1091) [#1130](https://github.com/open-contracting/standard/pull/1130) [#1227](https://github.com/open-contracting/standard/pull/1227) [#1299](https://github.com/open-contracting/standard/pull/1299) [#1337](https://github.com/open-contracting/standard/pull/1337) [#1384](https://github.com/open-contracting/standard/pull/1384). * [#908](https://github.com/open-contracting/standard/pull/908) Rename Validator to Data Review Tool. * [#955](https://github.com/open-contracting/standard/pull/955) Split the Guidance section into sub-sections. Add a new History section, and move the Changelog, Credits, and History and Development pages to it. * [#958](https://github.com/open-contracting/standard/pull/958) Governance page: Change responsibility for prioritization review to OCP's Head of Data Products & Services. Change "technical team" to "standard development team". -* [#959](https://github.com/open-contracting/standard/pull/959) History section: Merge Credits and History of OCDS pages into Development and Appreciation page. Update history from present perspective. +* [#959](https://github.com/open-contracting/standard/pull/959) [#979](https://github.com/open-contracting/standard/pull/979) History section: Merge Credits and History of OCDS pages into Development and Appreciation page. Update history from present perspective. * [#960](https://github.com/open-contracting/standard/pull/960) Support section: Merge Tools page into Support page. -* [#975](https://github.com/open-contracting/standard/pull/975) Add a Make target to generate PDFs of the documentation. -* Copy-edit and re-organize non-normative pages [#979](https://github.com/open-contracting/standard/pull/979) [#1018](https://github.com/open-contracting/standard/issues/1018) [#1023](https://github.com/open-contracting/standard/pull/1023). +* Re-organize non-normative content ([milestone](https://github.com/open-contracting/standard/milestone/29?closed=1)). +* Copy-edit non-normative pages and fix broken links ([milestone](https://github.com/open-contracting/standard/milestone/28?closed=1)). +* Change how the documentation is built ([milestone](https://github.com/open-contracting/standard/milestone/26?closed=1)). +* Update translations ([milestone](https://github.com/open-contracting/standard/milestone/27?closed=1)) * Update the changelog [#932](https://github.com/open-contracting/standard/pull/932) [#976](https://github.com/open-contracting/standard/pull/976). -* Make changes to how the documentation is built [#880](https://github.com/open-contracting/standard/pull/880) [#886](https://github.com/open-contracting/standard/pull/886) [#889](https://github.com/open-contracting/standard/pull/889) [#905](https://github.com/open-contracting/standard/pull/905) [#915](https://github.com/open-contracting/standard/pull/915) [#916](https://github.com/open-contracting/standard/pull/916) [#923](https://github.com/open-contracting/standard/pull/923) [#935](https://github.com/open-contracting/standard/pull/935) [#944](https://github.com/open-contracting/standard/pull/944) [#945](https://github.com/open-contracting/standard/pull/945) [#946](https://github.com/open-contracting/standard/pull/946) [#953](https://github.com/open-contracting/standard/pull/953) [#962](https://github.com/open-contracting/standard/pull/962) [#964](https://github.com/open-contracting/standard/pull/964) [#1002](https://github.com/open-contracting/standard/pull/1002) [#1003](https://github.com/open-contracting/standard/pull/1003). ## [1.2] - YYYY-MM-DD @@ -192,7 +214,7 @@ Per the [normative and non-normative content and changes policy](https://docs.go ## [1.1.5] - 2020-08-20 -* The [Translation and localization policy](../governance/index.md#translation-and-localization-policy) is amended to read "normative content will be translated into all core supported languages *as soon as possible*" instead of "*before the release*". A Spanish translation is ready for release, and a French translation will be ready as soon as possible. +* [#1054](https://github.com/open-contracting/standard/pull/1054) The [Translation and localization policy](../governance/index.md#translation-and-localization-policy) is amended to read "normative content will be translated into all core supported languages *as soon as possible*" instead of "*before the release*". A Spanish translation is ready for release, and a French translation will be ready as soon as possible. ### Codelists @@ -218,9 +240,9 @@ Per the [normative and non-normative content and changes policy](https://docs.go * [#965](https://github.com/open-contracting/standard/pull/965) Release Reference page: Add extensions list for the Transaction object. * [#970](https://github.com/open-contracting/standard/pull/970) Release Schema page: Correct the description of compiled releases. * [#996](https://github.com/open-contracting/standard/pull/996) Record Reference page: Rewrite page to improve clarity. -* [#1153](https://github.com/open-contracting/standard/pull/1153) Release Reference page: Remove framework agreement related sentence from Contract section. +* [#1010](https://github.com/open-contracting/standard/pull/1010) Identifiers page: Add link to organization identifiers example. * Codelists page: - * [#971](https://github.com/open-contracting/standard/pull/971) [#1032](https://github.com/open-contracting/standard/pull/1032) Remove the suggestion to use X prefixes, for the reasons expressed by the [IETF](https://tools.ietf.org/html/rfc6648#appendix-B). + * [#978](https://github.com/open-contracting/standard/pull/978) [#1032](https://github.com/open-contracting/standard/pull/1032) Remove the suggestion to use X prefixes, for the reasons expressed by the [IETF](https://tools.ietf.org/html/rfc6648#appendix-B). * [#972](https://github.com/open-contracting/standard/pull/972) Clarify the norms around open and closed codelists. * [#973](https://github.com/open-contracting/standard/pull/973) Describe the `openCodelist` and `codelist` JSON Schema properties. * [#1036](https://github.com/open-contracting/standard/pull/1036) Add instruction for OCDS publishers to contact the OCDS Helpdesk to add list codes to org-id.guide. @@ -245,19 +267,14 @@ See the changelogs for: * **Action:** Versioned releases respecting the OCDS 1.0 schema that set `Award.suppliers` will need to be re-created to validate against the OCDS 1.1 schema. * [#780](https://github.com/open-contracting/standard/pull/780) All extensions authored by the Open Contracting Partnership have been moved to the [open-contracting-extensions](https://github.com/open-contracting-extensions) organization. * **Action:** No change is required, but we recommend that publishers update the URLs of these extensions in their release packages and record packages. -* [#831](https://github.com/open-contracting/standard/pull/831) OCDS now has a [Normative and non-normative content and changes policy](https://docs.google.com/document/d/1xjlAneqgewZvHh6_hwuQ98hbjxRcA2IUqOTJiNGcOf8/edit). -* [#744](https://github.com/open-contracting/standard/pull/744) OCDS now has a [Translation and localization policy](../governance/index.md#translation-and-localization-policy). -* [#806](https://github.com/open-contracting/standard/pull/806) [#808](https://github.com/open-contracting/standard/pull/808) [#809](https://github.com/open-contracting/standard/pull/809) The documentation is now available in Italian. -* [#717](https://github.com/open-contracting/standard/pull/717) [#734](https://github.com/open-contracting/standard/pull/734) The OCDS documentation website now has a [privacy notice](../privacy-notice). - -### Bugs - * [#738](https://github.com/open-contracting/standard/pull/738) 1.1.3 changed the merging and versioning behaviors of `Item.unit`, such that it could be removed by setting it to `null`, and such that it was versioned as a whole. 1.1.4 restores the behaviors from 1.1.2, such that only its sub-fields can be removed by setting them to `null`, and such that its sub-fields are versioned individually. * **Action:** If you had upgraded to OCDS 1.1.3, then compiled releases and versioned releases that set `Item.unit` will likely need to be re-created to validate against the OCDS 1.1.4 schema. * [#810](https://github.com/open-contracting/standard/pull/810) `buyer.id`, `Tender.procuringEntity.id`, `Contract.implementation.payer.id` `Contract.implementation.payee.id`, `Budget.id`, `Identifier.id`, and `Classification.id` are now versioned, consistent with the documentation. * **Action:** Versioned releases that set these fields will likely need to be re-created to validate against the OCDS 1.1.4 schema. -* [#769](https://github.com/open-contracting/standard/pull/769) The versioned release schema now matches the release schema in: having a `minLength` validation property for `OrganizationReference.name`; having `codelist` and `openCodelist` properties for `Tender.awardCriteria`, `Tender.awardCriteriaDetails`, `Document.documentType`, `Item.unit.scheme`, `Classification.scheme`, and `RelatedProcess.scheme`; and having a `deprecated` property for `Budget.source`. All `title` and `description` metadata properties are removed from the versioned release schema. -* [#810](https://github.com/open-contracting/standard/pull/810) `tag` is now `omitWhenMerged`, consistent with the reference implementation in OCDS Merge. +* [#831](https://github.com/open-contracting/standard/pull/831) OCDS now has a [Normative and non-normative content and changes policy](https://docs.google.com/document/d/1xjlAneqgewZvHh6_hwuQ98hbjxRcA2IUqOTJiNGcOf8/edit). +* [#744](https://github.com/open-contracting/standard/pull/744) OCDS now has a [Translation and localization policy](../governance/index.md#translation-and-localization-policy). +* [#717](https://github.com/open-contracting/standard/pull/717) [#734](https://github.com/open-contracting/standard/pull/734) The OCDS documentation website now has a [privacy notice](../privacy-notice). +* The documentation is now available in Italian. ### Codelists @@ -272,9 +289,11 @@ See the changelogs for: ### Schema -* [#712](https://github.com/open-contracting/standard/pull/712) Add missing titles for `publisher` and `url` and description for `record` in the record package schema, and missing description for `releases` in release package schema. +* [#712](https://github.com/open-contracting/standard/pull/712) [#715](https://github.com/open-contracting/standard/pull/715) Add missing titles for `publisher` and `url` and description for `record` in the record package schema, and missing description for `releases` in release package schema. +* [#769](https://github.com/open-contracting/standard/pull/769) The versioned release schema now matches the release schema in: having a `minLength` validation property for `OrganizationReference.name`; having `codelist` and `openCodelist` properties for `Tender.awardCriteria`, `Tender.awardCriteriaDetails`, `Document.documentType`, `Item.unit.scheme`, `Classification.scheme`, and `RelatedProcess.scheme`; and having a `deprecated` property for `Budget.source`. All `title` and `description` metadata properties are removed from the versioned release schema. * [#838](https://github.com/open-contracting/standard/pull/838) Eliminate the conflicting rule that release identifiers must be unique within release packages. Uniqueness within the scope of a release package either implies that release identifiers must be globally unique, or imposes an arbitrary restriction on the contents of release packages, as there is no rule preventing release packages from containing releases from different contracting processes. Release identifiers are only required to be locally unique within the scope of a contracting process. The `ocid` and `id` values of a release can be used together to disambiguate releases within a release package. * Clarify the uniqueness of release identifiers in the release schema [#838](https://github.com/open-contracting/standard/pull/838) and release package schema [#831](https://github.com/open-contracting/standard/pull/831). +* [#810](https://github.com/open-contracting/standard/pull/810) `tag` is now `omitWhenMerged`, consistent with the reference implementation in OCDS Merge. * [#810](https://github.com/open-contracting/standard/pull/810) Add a dereferenced release schema to ease the implementation of the merge routine. * [#810](https://github.com/open-contracting/standard/pull/810) Add `"versionId": true` hint to `Identifier` and `Classification`. * [#845](https://github.com/open-contracting/standard/pull/845) Remove a reference to a closed issue and a note about a field name. @@ -306,8 +325,6 @@ See the changelogs for: * Add links to: * [#783](https://github.com/open-contracting/standard/pull/783) Community extensions relating to party details * [#837](https://github.com/open-contracting/standard/pull/837) OCDS profiles -* Correct typos in the documentation [#692](https://github.com/open-contracting/standard/pull/692) [#713](https://github.com/open-contracting/standard/pull/713) [#719](https://github.com/open-contracting/standard/pull/719) [#726](https://github.com/open-contracting/standard/pull/726) [#732](https://github.com/open-contracting/standard/pull/732) [#752](https://github.com/open-contracting/standard/pull/752) [#756](https://github.com/open-contracting/standard/pull/756) [#795](https://github.com/open-contracting/standard/pull/795) [#867](https://github.com/open-contracting/standard/pull/867). -* Make changes to how the documentation is built [#666](https://github.com/open-contracting/standard/pull/666) [#698](https://github.com/open-contracting/standard/pull/698) [#708](https://github.com/open-contracting/standard/pull/708) [#709](https://github.com/open-contracting/standard/pull/709) [#721](https://github.com/open-contracting/standard/pull/721) [#724](https://github.com/open-contracting/standard/pull/724) [#727](https://github.com/open-contracting/standard/pull/727) [#729](https://github.com/open-contracting/standard/pull/729) [#733](https://github.com/open-contracting/standard/pull/733) [#740](https://github.com/open-contracting/standard/pull/740) [#747](https://github.com/open-contracting/standard/pull/747) [#753](https://github.com/open-contracting/standard/pull/753) [#762](https://github.com/open-contracting/standard/pull/762) [#767](https://github.com/open-contracting/standard/pull/767) [#783](https://github.com/open-contracting/standard/pull/783) [#787](https://github.com/open-contracting/standard/pull/787) [#796](https://github.com/open-contracting/standard/pull/796) [#813](https://github.com/open-contracting/standard/pull/813) [#836](https://github.com/open-contracting/standard/pull/836) [#875](https://github.com/open-contracting/standard/pull/875). ### Extensions @@ -322,11 +339,12 @@ See the changelogs for: ## [1.1.3] - 2018-04-16 -### Bugs +### Schema * [#646](https://github.com/open-contracting/standard/pull/646) Disallow use of `null` as an entry in the array for `Tender.additionalProcurementCategories`. * [#639](https://github.com/open-contracting/standard/issues/639) Make `name` field optional for `OrganizationReference`. * [#630](https://github.com/open-contracting/standard/issues/630) Allow optional field `Item.unit` to be `null`. **(Reverted in 1.1.4)** +* [#663](https://github.com/open-contracting/standard/pull/663) Add `"type": "object"` to objects in the versioned release schema. * [a75c1c5](https://github.com/open-contracting/standard/pull/667/commits/a75c1c50379881f618df97ed3b9967297ed2edca) Make `record-package-schema.json` use the `codelist` property to reference `releaseTag.csv`, and update the `enum` accordingly. ### Codelists @@ -352,13 +370,18 @@ See the changelogs for: ### Codelists -* [#554](https://github.com/open-contracting/standard/issues/554) Update the currency codelist for ISO4217 amendment 163 (2017-06-09). XBT (Bitcoin) is removed from the codelist as it is not part of ISO4217. +* [#609](https://github.com/open-contracting/standard/pull/609) Update the currency codelist for ISO4217 amendment 163 (2017-06-09). XBT (Bitcoin) is removed from the codelist as it is not part of ISO4217. + +### Documentation + +* [#565](https://github.com/open-contracting/standard/pull/565) Add explanatory text for the schema browser. +* [#590](https://github.com/open-contracting/standard/pull/590) [#591](https://github.com/open-contracting/standard/pull/591) Add 1.0.1 and 1.0.3 to the changelog. ## [1.1.1] - 2017-07-31 -### Bugs +### Schema -* [#482](https://github.com/open-contracting/standard/pull/482) Allow optional field `parties.role` to be `null`. +* [#251](https://github.com/open-contracting/standard/issues/251) Allow optional field `parties.role` to be `null`. * [#479](https://github.com/open-contracting/standard/issues/479) Remove `releases` as a required field in [`record-package-schema.json`](../schema/record_package). * [#475](https://github.com/open-contracting/standard/issues/475) Add an `enum` property to every field in the schema with a closed codelist. @@ -370,12 +393,11 @@ See the changelogs for: ### Documentation +* [#457](https://github.com/open-contracting/standard/pull/457) List all registered extensions. * [#480](https://github.com/open-contracting/standard/pull/480/commits/c3c41225639a06b0b0552016b32e2fe2e901a8fe) Align the tables and text in the [publication levels](../guidance/publish/quality) guidance. * [#489](https://github.com/open-contracting/standard/issues/489) Change the milestone documents extension to a core extension. This extension is only needed by publishers with legacy data containing documents within milestones. -* [#493](https://github.com/open-contracting/standard/issues/493) Update the description of the [Organization Identifier Scheme codelist](../schema/codelists.md#organization-identifier-scheme), to reflect that it is now maintained by [org-id.guide](http://org-id.guide). +* [#612](https://github.com/open-contracting/standard/pull/612) Update the description of the [Organization Identifier Scheme codelist](../schema/codelists.md#organization-identifier-scheme), to reflect that it is now maintained by [org-id.guide](http://org-id.guide). * [#506](https://github.com/open-contracting/standard/issues/506) Remove `make_field_definitions.py` from the utility scripts, as it is no longer required. -* Fix typographic errors throughout the documentation and codelist descriptions. -* Add docstrings to utility scripts. ## [1.1.0] - 2017-05-01 @@ -398,7 +420,8 @@ See the changelogs for: * [#166](https://github.com/open-contracting/standard/issues/166) **[Indicate encoding for CSV serializations](../guidance/build/serialization.md#multi-table)** - We have added information on CSV encoding to the implementation guidance to recommend UTF-8 or Windows-1252. * [#336](https://github.com/open-contracting/standard/issues/336) **[Codelist properties in schema](https://github.com/open-contracting/standard/commit/ee1db256d7364ee70e3553f4384d9908bff604a6)** - We have included explicit references to the codelist files (CSV versions) in the schema. This will be used in future versions of the validator to support validation against codelists. * [#301](https://github.com/open-contracting/standard/issues/301) **[Specifying versions and extensions in package metadata](../schema/records_reference.md#package-metadata)** - We have updated the package schemas to require that version is declared, and to provide a means of declaring extensions in use. This will be used in future versions of the validator to support validation against extensions. -* [#287](https://github.com/open-contracting/standard/issues/287) **[Remove all ocdsMerge strategies](../schema/merging)** - We have remove all 'merge strategies' from the schema as these are no longer required, now that all objects in arrays contain an id element. +* [#287](https://github.com/open-contracting/standard/issues/287) [#447](https://github.com/open-contracting/standard/pull/447) **[Change how merge strategies are expressed](../schema/merging)** - The `omitWhenMerged` and `wholeListMerge` properties replace the `mergeStrategy` and `mergeOptions` properties, with different semantics. +* [#431](https://github.com/open-contracting/standard/pull/431) **Add `minLength` property to required string fields**. #### Schema definition updates @@ -424,7 +447,7 @@ See the changelogs for: ### Added -* [#371](https://github.com/open-contracting/standard/issues/371) **[Linking related processes](../schema/reference.md#relatedprocess)** - We have introduced a new RelatedProcess block at the release and contract level +* [#371](https://github.com/open-contracting/standard/issues/371) [#439](https://github.com/open-contracting/standard/pull/439) **[Linking related processes](../schema/reference.md#relatedprocess)** - We have introduced a new RelatedProcess block at the release and contract level * [#374](https://github.com/open-contracting/standard/issues/374) **[Duration in periods](../schema/reference.md#period)** - We have introduced fields for duration in days, and maximum extent, to the period building block * [#374](https://github.com/open-contracting/standard/issues/374) **[Contract and Award Periods in Tender](../schema/reference.md#tender)** - We have introduced contract period in tender and updated the definition of award period. * [#376](https://github.com/open-contracting/standard/issues/376) **[Contract type (supplies, works and services)](../schema/codelists.md#procurement-category)** - We have introduced a procurementCategory field to specify whether contracts are for supplies, works, services, consultancyServices or mixed @@ -433,7 +456,7 @@ See the changelogs for: ### Extensions -* [#335](https://github.com/open-contracting/standard/issues/335) **[Core and community extensions](../guidance/map/extensions)** - We have introduced widespread use of extensions throughout the standard. An extension provides fields and data structures that are optional, either because (a) they are only relevant in particular contexts or contracting processes; or (b) they represent a 'stretch goal' for most data publishers, and so are not currently suitable for inclusion in the main standard. We divide these extensions into 'core extensions' which have wide enough relevance, and technical maturity to be included in the main standard documentation (and which are versioned along with the standard documentation), and 'community extensions' which may have less technical maturity, or which might be versioned independently of the main standard. +* [#335](https://github.com/open-contracting/standard/issues/335) [#411](https://github.com/open-contracting/standard/pull/411) **[Core and community extensions](../guidance/map/extensions)** - We have introduced widespread use of extensions throughout the standard. An extension provides fields and data structures that are optional, either because (a) they are only relevant in particular contexts or contracting processes; or (b) they represent a 'stretch goal' for most data publishers, and so are not currently suitable for inclusion in the main standard. We divide these extensions into 'core extensions' which have wide enough relevance, and technical maturity to be included in the main standard documentation (and which are versioned along with the standard documentation), and 'community extensions' which may have less technical maturity, or which might be versioned independently of the main standard. * [#259](https://github.com/open-contracting/standard/issues/259) **[Enquiries](https://extensions.open-contracting.org/en/extensions/enquiries/)** - We have introduced a core enquiries extension for providing information on enquiries received during the tender stage. * [#342](https://github.com/open-contracting/standard/issues/342) **[Overall contracting process description](../schema/reference.md#release)** - We have introduced a new top-level title and description for the contracting process as a core extension. * [#274](https://github.com/open-contracting/standard/issues/274) **[New property of contract: extendsContractID](../schema/reference.md#contract)** - We have introduced a new field 'extendsContractID' to the Contract block to support contract cross-referencing between contracts. @@ -451,7 +474,7 @@ See the changelogs for: ## [1.0.3] - 2017-07-31 -### Bugs +### Schema * [#329](https://github.com/open-contracting/standard/issues/329) Update `Item.quantity` to allow decimal values. * [#253](https://github.com/open-contracting/standard/issues/253) Update `Value.amount` to allow negative values. @@ -470,33 +493,30 @@ See the changelogs for: ### Documentation * [#228](https://github.com/open-contracting/standard/issues/228) Update the documentation to use "Object" not "Reference" in Format column of field tables. -* Add CSV download links for registered ocids and publication levels. -* Update the publication levels spreadsheet to reflect above changes. -* Remove the old Spanish documentation translations from `standard/docs/es`. +* [#331](https://github.com/open-contracting/standard/pull/331) Add a Governance page. +* [#332](https://github.com/open-contracting/standard/pull/332) Replace the license. +* [#332](https://github.com/open-contracting/standard/pull/332) Add a Contributor Licence Agreement. +* [#360](https://github.com/open-contracting/standard/pull/360) Clarify the CSV serialization guidance. +* Add CSV download links for registered ocids and publication levels. Update the publication levels spreadsheet accordingly. ## [1.0.1] - 2016-03-14 -### Bugs - -* [#300](https://github.com/open-contracting/standard/issues/300) Remove `"format": "uri"` from `publisher.scheme` field. -* [#295](https://github.com/open-contracting/standard/issues/295) Allow optional fields `Award.status` and `Contract.status` to be `null`. -* [#267](https://github.com/open-contracting/standard/issues/267) Rename codes in documentType codelist: 'Tender notice' to 'tenderNotice', 'Award notice' to 'awardNotice', 'Contract notice' to 'contractNotice'. -* Fix bugs in versioned release schema. - ### Codelists -* Remove reference to non-existent `statusDescription` field in awardStatus codelist. +* [#267](https://github.com/open-contracting/standard/issues/267) Rename codes in the `documentType` codelist: 'Tender notice' to 'tenderNotice', 'Award notice' to 'awardNotice', and 'Contract notice' to 'contractNotice'. +* [#307](https://github.com/open-contracting/standard/pull/307) Remove a reference to a non-existent `statusDescription` field in the `awardStatus` codelist. ### Schema -* Add or update `title` and `description` properties. -* [#283](https://github.com/open-contracting/standard/issues/283) Remove `"mergeStrategy": "ocdsVersion"` from `planning.budget` field. +* [#283](https://github.com/open-contracting/standard/issues/283) Remove `"mergeStrategy": "ocdsVersion"` from the `planning.budget` field. +* [#295](https://github.com/open-contracting/standard/issues/295) Allow the optional fields `Award.status` and `Contract.status` to be `null`. +* [#300](https://github.com/open-contracting/standard/issues/300) Remove `"format": "uri"` from the `publisher.scheme` field. +* [#304](https://github.com/open-contracting/standard/pull/304) Fix the versioning of arrays in the versioned release schema. +* [#305](https://github.com/open-contracting/standard/pull/305) Add `title` and `description` properties and fix typos. ### Documentation -* Restructure the documentation, including: expanding Getting Started section, adding more examples. -* Fix broken links. -* Make changes to how the documentation is built, including: improving the translation process, adding some schema tests. +* Restructure the documentation, including: expanding the Getting Started section and adding more examples. ## [1.0.0] - 2015-07-29 @@ -506,12 +526,12 @@ See the changelogs for: ### Schema +* [#188](https://github.com/open-contracting/standard/pull/188) Add the `tender.numberOfTenderers` and `tender.tenderers` fields. * [#199](https://github.com/open-contracting/standard/issues/199) Add the `Award.contractPeriod` field, to disclose the anticipated contract period without creating a `Contract` object. * Update the `description` property of the `Award.date` field. ### Documentation -* Fix typos in Markdown text and JSON examples. * Add changelog. ## [1.0.RC] - 2014-11-18 diff --git a/docs/schema/reference.md b/docs/schema/reference.md index 778a1c692..a1fd51755 100644 --- a/docs/schema/reference.md +++ b/docs/schema/reference.md @@ -178,7 +178,7 @@ The [Bid statistics and details](https://extensions.open-contracting.org/en/exte ### Award -The award section is used to announce any awards issued for this tender. There can be multiple awards made. Releases can contain all, or a subset, of these awards. A related award block is required for every contract block, as the award contains information on the suppliers. In particular cases there can be multiple suppliers for a single award: for example, in the case of [consortia](../guidance/map/buyers_suppliers.md#consortia-suppliers) and in [framework agreements](../guidance/map/related_processes). +The award section is used to announce any awards issued for this tender. There can be multiple awards made. Releases can contain all, or a subset, of these awards. A related award block is required for every contract block, as the award contains information on the suppliers. In particular cases there can be multiple suppliers for a single award: for example, in the case of [consortia](../guidance/map/buyers_suppliers.md#consortia-suppliers) and in [framework agreements](../guidance/map/framework_agreements). ```{jsonschema} ../../build/current_lang/release-schema.json :pointer: /definitions/Award diff --git a/manage.py b/manage.py index 4b34e5095..5163ca4d8 100755 --- a/manage.py +++ b/manage.py @@ -469,6 +469,69 @@ def unused_terms(filename): click.echo(line, nl=False) +@cli.command() +@click.option('--ignore-base', help='A base branch to ignore, e.g. 1.2-dev') +def missing_changelog(ignore_base): + """ + Print pull requests not mentioned in the changelog. + """ + + # Ignore PRs to the ppp-extension branch, which became OCDS for PPPs. + ignore = ['ppp-extension'] + if ignore_base: + ignore.append(ignore_base) + + # Ignore PRs to unmerged branches. + url = 'https://api.github.com/repos/open-contracting/standard/pulls?per_page=100&state=open' + response = requests.get(url) + response.raise_for_status() + ignore.extend(pr['head']['ref'] for pr in response.json()) + + with open(basedir / 'docs' / 'history' / 'changelog.md') as f: + prs = [int(n) for n in re.findall(r'https://github.com/open-contracting/standard/pull/(\d+)', f.read())] + + prs.extend([ + # Reverted + 971, 977, + # Obsoleted by the Primer + 1017, + ]) + + # Ignore PRs that sync branches or that release versions/ + pattern = re.compile(r'^(?:Merge \S+ into \S+|\S+ Release)$') + + count = 0 + + url = 'https://api.github.com/repos/open-contracting/standard/pulls?per_page=100&state=closed' + while url: + response = requests.get(url) + response.raise_for_status() + url = response.links.get('next', {}).get('url') + + for pr in response.json(): + number = pr['number'] + merged_at = pr['merged_at'] + milestone = pr['milestone'] or {} + milestone_number = milestone.get('number') + milestone_title = milestone.get('title') + title = pr['title'] + base_ref = pr['base']['ref'] + + # Include merged PRs, not in the "Minor:" or "1.0-RC" milestones, not syncing branches, and not ignored. + if not merged_at or milestone_number in (26, 27, 28, 29, 2) or pattern.search(title) or base_ref in ignore: + if number in prs: + print(f'WARNING: #{number} should not be in changelog', file=sys.stderr) + continue + + if number not in prs: + count += 1 + print(f"[#{number}](https://github.com/open-contracting/standard/pull/{number}) ({milestone_title}) " + f"{merged_at[:10]}: {title} ({base_ref}:{pr['head']['ref']})") + + if count: + print(count) + + @cli.command() def pre_commit(): """