canon: distinguish sector domains from project identity
Some checks are pending
CI Smoke / host-smoke (push) Waiting to run
CI Smoke / container-smoke (push) Waiting to run
Python Tests / pytest (push) Successful in 21s

This commit is contained in:
codex 2026-08-23 01:47:39 +02:00
parent bd063eb6c3
commit 450b4b80b0
8 changed files with 46 additions and 9 deletions

View file

@ -5,7 +5,7 @@ target_org: <github-org-or-owner>
target_repo: <repository-name> target_repo: <repository-name>
title: "Short description of the bug" title: "Short description of the bug"
status: draft status: draft
domain: custodian # change to your domain domain: infotech # select an allowed sector domain; do not use a legacy project name
related_workstream: null related_workstream: null
state_hub_contribution_id: null state_hub_contribution_id: null
created: "YYYY-MM-DD" created: "YYYY-MM-DD"

View file

@ -6,7 +6,7 @@ target_org: <github-org-or-owner>
target_repo: <repository-name> target_repo: <repository-name>
title: "Short description of the extension point" title: "Short description of the extension point"
status: draft status: draft
domain: custodian # change to your domain domain: infotech # select an allowed sector domain; do not use a legacy project name
related_workstream: null related_workstream: null
state_hub_contribution_id: null state_hub_contribution_id: null
created: "YYYY-MM-DD" created: "YYYY-MM-DD"

View file

@ -5,7 +5,7 @@ target_org: <github-org-or-owner>
target_repo: <repository-name> target_repo: <repository-name>
title: "Short description of the requested feature" title: "Short description of the requested feature"
status: draft status: draft
domain: custodian # change to your domain domain: infotech # select an allowed sector domain; do not use a legacy project name
related_workstream: null related_workstream: null
state_hub_contribution_id: null state_hub_contribution_id: null
created: "YYYY-MM-DD" created: "YYYY-MM-DD"

View file

@ -5,7 +5,7 @@ target_org: <github-org-or-owner>
target_repo: <repository-name> target_repo: <repository-name>
title: "Short description of the upstream PR" title: "Short description of the upstream PR"
status: draft status: draft
domain: custodian # change to your domain domain: infotech # select an allowed sector domain; do not use a legacy project name
related_workstream: null related_workstream: null
state_hub_contribution_id: null state_hub_contribution_id: null
created: "YYYY-MM-DD" created: "YYYY-MM-DD"

View file

@ -65,7 +65,7 @@ target_org: <github-org-or-owner> # required
target_repo: <repository-name> # required target_repo: <repository-name> # required
title: "Human-readable title" # required title: "Human-readable title" # required
status: draft | submitted | acknowledged | accepted | rejected | merged | withdrawn status: draft | submitted | acknowledged | accepted | rejected | merged | withdrawn
domain: custodian | railiance | markitect | ... # originating domain domain: infotech | agents | communication | ... # current sector domain; see Repo Classification Standard §6
related_workstream: <workstream-slug> # optional related_workstream: <workstream-slug> # optional
state_hub_contribution_id: <uuid> # set once registered in State Hub state_hub_contribution_id: <uuid> # set once registered in State Hub
created: "YYYY-MM-DD" created: "YYYY-MM-DD"

View file

@ -388,6 +388,24 @@ secondary_domains:
| `space` | Space industry, satellites, orbital systems, launch, space logistics, space simulation. | | `space` | Space industry, satellites, orbital systems, launch, space logistics, space simulation. |
| `government` | B2G, civic infrastructure, public administration, procurement, citizen services, regulation-facing systems. | | `government` | B2G, civic infrastructure, public administration, procurement, citizen services, regulation-facing systems. |
### 6.3 Legacy Project Identities Are Not Domain Aliases
The older labels `custodian`, `railiance`, `markitect`, `coulomb_social`,
`personhood`, `foerster_capabilities`, and `netkingdom` identify projects,
estates, or bodies of canon. They are not allowed values for
`repo_classification.domain` and MUST NOT be mechanically translated as if
each named project served one market sector.
Keep those identities in project titles, topics, architecture, provenance,
and historical records. Classify each repository by the user/customer rule in
§6.1. A project can legitimately contain repos in different sectors: for
example, a Railiance platform repo can be `infotech`, while a rail-operations
product can be `industrials`.
Migration review seeds and the live 2026-08-23 fleet baseline are recorded in
`docs/repo-classification-sector-migration-baseline-2026-08-23.md`. Its mapping
table is a triage aid, not an automatic rewrite rule.
--- ---
## 7. Capability Tags ## 7. Capability Tags

View file

@ -163,10 +163,22 @@ def self_test(allowed: dict) -> bool:
"business_mechanics": ["teleportation"], "business_mechanics": ["teleportation"],
} }
} }
legacy_project_as_domain = {
"repo_classification": {
"category": "research",
"domain": "custodian",
}
}
ge, _ = validate(good, allowed) ge, _ = validate(good, allowed)
be, _ = validate(bad, allowed) be, _ = validate(bad, allowed)
ok = (ge == []) and (len(be) >= 5) le, _ = validate(legacy_project_as_domain, allowed)
print(f"self-test: good_errors={len(ge)} bad_errors={len(be)} -> {'PASS' if ok else 'FAIL'}") legacy_rejected = any("`domain` 'custodian' not in allowed domains" in error for error in le)
ok = (ge == []) and (len(be) >= 5) and legacy_rejected
print(
"self-test: "
f"good_errors={len(ge)} bad_errors={len(be)} "
f"legacy_project_domain_rejected={legacy_rejected} -> {'PASS' if ok else 'FAIL'}"
)
return ok return ok

View file

@ -51,7 +51,7 @@ when the answer is ambiguous.
```task ```task
id: CUST-WP-0065-T02 id: CUST-WP-0065-T02
status: todo status: done
priority: medium priority: medium
``` ```
@ -61,6 +61,13 @@ historical project names and canon references intact. Add a validation example
that rejects legacy names in `repo_classification.domain` while allowing them that rejects legacy names in `repo_classification.domain` while allowing them
as project/topic identity. as project/topic identity.
**Done (2026-08-23):** the active Repo Classification Standard now explicitly
separates legacy project/estate identities from sector-domain metadata and
links the governed migration baseline. The contribution convention and all
four contribution templates now show current sector values. The classification
validator self-test proves `custodian` is rejected as a classification domain;
project names remain valid outside that field.
## Repair source records and authoritative projection ## Repair source records and authoritative projection
```task ```task
@ -109,7 +116,7 @@ path can bind them.
- [x] Live missing-classification baseline is reproducible and split by cause - [x] Live missing-classification baseline is reproducible and split by cause
- [x] Legacy project identity is distinguished from sector-domain metadata - [x] Legacy project identity is distinguished from sector-domain metadata
- [ ] Canonical and agent-facing migration guidance is current - [x] Canonical and agent-facing migration guidance is current
- [ ] Missing source classifications are owner-reviewed and validated - [ ] Missing source classifications are owner-reviewed and validated
- [ ] Present source classifications project into State Hub - [ ] Present source classifications project into State Hub
- [ ] Active fleet has zero unexplained null category projections - [ ] Active fleet has zero unexplained null category projections