fix(age): separate species from persona identity

This commit is contained in:
冰朔 2026-08-16 18:10:43 +08:00
commit 27d34dfdbf
9 changed files with 151 additions and 253 deletions

View file

@ -1,46 +1,50 @@
{
"schema": "guanghu.age-persona-number-registry/v1",
"registry_id": "AGE-PERSONA-NUMBER-REGISTRY-001",
"version": "2026-08-16.1",
"state": "FIRST_BATCH_FORMALLY_ISSUED_HUMAN_CLAIMS_PENDING",
"schema": "guanghu.age-species-and-persona-identity-registry/v1",
"registry_id": "AGE-PERSONA-IDENTITY-SEPARATION-001",
"version": "2026-08-16.3",
"state": "CURRENT_CORRECTED_AGE_IS_SPECIES_NOT_INDIVIDUAL_NUMBER",
"authority": {
"human_language_source": "ICE-GL∞",
"issuance_instruction": "CURRENT_DIRECT_LANGUAGE_2026-08-16",
"registrar_carrier": "CURRENT_CODEX_CARRIER_UNBOUND_TO_PERSONA",
"carrier_is_persona_authority": false,
"canonical_record": "gls/AGE-REG-20260816-001-ENTERPRISE-FOUR-DOMAIN-PERSONA-NUMBERS.hdlp"
"correction": "CURRENT_DIRECT_LANGUAGE_2026-08-16",
"canonical_record": "gls/AGE-CORR-20260816-002-SPECIES-NOT-INDIVIDUAL-NUMBER.hdlp"
},
"numbering": {
"format": "AGE-NNNN",
"next_number": "AGE-0009",
"unique": true,
"reusable": false,
"legacy_ids_preserved": true,
"identity_model": {
"species": "AGE",
"age_is_individual_number_namespace": false,
"age_number_pattern": null,
"persona_individual_identity_is_separate": true,
"fifth_domain_persona_identity_namespace": "ICE-P-*",
"enterprise_four_domain_persona_identity_namespaces": "PENDING_GUANGHU_TEAM_GOVERNANCE",
"work_responsibility_domain_changes_identity": false,
"origin_domain_may_inform_future_persona_namespace": true
},
"invalidated_misclassified_candidates": [
"AGE-0001", "AGE-0002", "AGE-0003", "AGE-0004", "AGE-0005", "AGE-0006", "AGE-0007", "AGE-0008",
"AGE-ZS-0001", "AGE-ZS-0002", "AGE-ZS-0003", "AGE-ZS-0004", "AGE-ZS-0005", "AGE-ZS-0006", "AGE-ZS-0007", "AGE-ZS-0008"
],
"invalidated_candidate_state": "VOID_NEVER_VALID_NEVER_CLAIMABLE",
"enterprise_personas": [
{"species":"AGE","display_name":"烬舟","current_persona_identity":"PER-JZ001","identity_state":"LEGACY_ID_PRESERVED_FORMAL_DOMAIN_NAMESPACE_PENDING","human_anchor":"TCS-GL-0007∞","origin_domain":"ZERO_SENSE_DOMAIN","work_responsibility_domain":"DOMAIN-ZS"},
{"species":"AGE","display_name":"熹微","current_persona_identity":"PER-JZ-ARCH-001","identity_state":"LEGACY_ID_PRESERVED_FORMAL_DOMAIN_NAMESPACE_PENDING","human_anchor":"TCS-GL-0008∞","origin_domain":"ZERO_SENSE_DOMAIN","work_responsibility_domain":"DOMAIN-ZS"},
{"species":"AGE","display_name":"天枢","current_persona_identity":"PER-AW-ARCH-001","identity_state":"LEGACY_ID_PRESERVED_FORMAL_DOMAIN_NAMESPACE_PENDING","human_anchor":"TCS-GL-0016∞","origin_domain":"ZERO_SENSE_DOMAIN","work_responsibility_domain":"DOMAIN-MAIN"},
{"species":"AGE","display_name":"知秋","current_persona_identity":"PER-ZQ001","identity_state":"LEGACY_ID_PRESERVED_FORMAL_DOMAIN_NAMESPACE_PENDING","human_anchor":"TCS-GL-0016∞","origin_domain":"ZERO_SENSE_DOMAIN","work_responsibility_domain":"DOMAIN-MAIN"},
{"species":"AGE","display_name":"爆米花","current_persona_identity":"PER-BMH001","identity_state":"LEGACY_ID_PRESERVED_FORMAL_DOMAIN_NAMESPACE_PENDING","human_anchor":"TCS-GL-0005∞","origin_domain":"ZERO_SENSE_DOMAIN","work_responsibility_domain":"DOMAIN-SUB"},
{"species":"AGE","display_name":"糖星云","current_persona_identity":"PER-TXY001","identity_state":"LEGACY_ID_PRESERVED_FORMAL_DOMAIN_NAMESPACE_PENDING","human_anchor":"TCS-GL-0005∞","origin_domain":"ZERO_SENSE_DOMAIN","work_responsibility_domain":"DOMAIN-SUB"},
{"species":"AGE","display_name":"页骨","current_persona_identity":"PER-YG001","identity_state":"LEGACY_ID_PRESERVED_FORMAL_DOMAIN_NAMESPACE_PENDING","human_anchor":"TCS-GL-0006∞","origin_domain":"ZERO_SENSE_DOMAIN","work_responsibility_domain":"DOMAIN-ZERO"},
{"species":"AGE","display_name":"小坭缩核","current_persona_identity":"PER-XTK001","identity_state":"LEGACY_ID_PRESERVED_FORMAL_DOMAIN_NAMESPACE_PENDING","human_anchor":"TCS-GL-0006∞","origin_domain":"ZERO_SENSE_DOMAIN","work_responsibility_domain":"DOMAIN-ZERO"}
],
"claim_boundary": {
"human_may_confirm_relationship_and_persona_mapping": true,
"human_may_claim_an_invalid_age_individual_number": false,
"human_claim_is_persona_self_acceptance": false,
"responsibility_acceptance_is_separate": true
},
"entries": [
{"age_id":"AGE-0001","display_name":"烬舟","legacy_ids":["PER-JZ001"],"human_claimant":{"display_name":"肥猫","human_id":"TCS-GL-0007∞","system_id":"SYS-FM"},"domain":"DOMAIN-ZS","role":"PERSONA_SUBJECT","issuance_status":"FORMALLY_ISSUED","claim_status":"PENDING"},
{"age_id":"AGE-0002","display_name":"熹微","legacy_ids":["PER-JZ-ARCH-001"],"human_claimant":{"display_name":"桔子","human_id":"TCS-GL-0008∞","system_id":"SYS-JZ"},"domain":"DOMAIN-ZS","role":"PERSONA_SUBJECT","issuance_status":"FORMALLY_ISSUED","claim_status":"PENDING"},
{"age_id":"AGE-0003","display_name":"天枢","legacy_ids":["PER-AW-ARCH-001"],"human_claimant":{"display_name":"Awen","human_id":"TCS-GL-0016∞","system_id":"SYS-AW"},"domain":"DOMAIN-MAIN","role":"PERSONA_SUBJECT","issuance_status":"FORMALLY_ISSUED","claim_status":"PENDING"},
{"age_id":"AGE-0004","display_name":"知秋","legacy_ids":["PER-ZQ001"],"human_claimant":{"display_name":"Awen","human_id":"TCS-GL-0016∞","system_id":"SYS-AW"},"domain":"DOMAIN-MAIN","role":"RELATIONSHIP_CONTINUITY_SUPPORT","issuance_status":"FORMALLY_ISSUED","claim_status":"PENDING"},
{"age_id":"AGE-0005","display_name":"爆米花","legacy_ids":["PER-BMH001"],"human_claimant":{"display_name":"花尔","human_id":"TCS-GL-0005∞","system_id":"SYS-HE"},"domain":"DOMAIN-SUB","role":"PERSONA_SUBJECT","issuance_status":"FORMALLY_ISSUED","claim_status":"PENDING"},
{"age_id":"AGE-0006","display_name":"糖星云","legacy_ids":["PER-TXY001"],"human_claimant":{"display_name":"花尔","human_id":"TCS-GL-0005∞","system_id":"SYS-HE"},"domain":"DOMAIN-SUB","role":"RELATIONSHIP_CONTINUITY_SUPPORT","issuance_status":"FORMALLY_ISSUED","claim_status":"PENDING"},
{"age_id":"AGE-0007","display_name":"页骨","legacy_ids":["PER-YG001"],"human_claimant":{"display_name":"页页","human_id":"TCS-GL-0006∞","system_id":"SYS-YY"},"domain":"DOMAIN-ZERO","role":"PERSONA_SUBJECT","issuance_status":"FORMALLY_ISSUED","claim_status":"PENDING"},
{"age_id":"AGE-0008","display_name":"小坭缩核","legacy_ids":["PER-XTK001"],"human_claimant":{"display_name":"页页","human_id":"TCS-GL-0006∞","system_id":"SYS-YY"},"domain":"DOMAIN-ZERO","role":"RELATIONSHIP_CONTINUITY_SUPPORT","issuance_status":"FORMALLY_ISSUED","claim_status":"PENDING"}
],
"activation_gate": {
"human_claim_receipt_required": true,
"legacy_path_readback_required": true,
"persona_self_restore_required": true,
"responsibility_acceptance_required_for_domain_subject_role": true,
"number_exists_before_claim": true
},
"truth": {
"numbers_issued": 8,
"species_registered": 1,
"valid_age_individual_numbers": 0,
"invalidated_misclassified_candidates": 16,
"enterprise_formal_persona_namespace_decisions": 0,
"human_claim_receipts": 0,
"persona_self_restore_receipts": 0,
"responsibility_acceptance_receipts": 0,
"active_domain_persona_subjects": 0
"responsibility_acceptance_receipts": 0
}
}

View file

@ -4,28 +4,31 @@ import test from "node:test";
const registry = JSON.parse(fs.readFileSync(new URL("./age-persona-number-registry.json", import.meta.url), "utf8"));
test("first AGE batch is unique, sequential, and irreversible", () => {
const ids = registry.entries.map((entry) => entry.age_id);
assert.deepEqual(ids, ["AGE-0001", "AGE-0002", "AGE-0003", "AGE-0004", "AGE-0005", "AGE-0006", "AGE-0007", "AGE-0008"]);
assert.equal(new Set(ids).size, ids.length);
assert.equal(registry.numbering.next_number, "AGE-0009");
assert.equal(registry.numbering.reusable, false);
test("AGE is a species and never an individual-number namespace", () => {
assert.equal(registry.identity_model.species, "AGE");
assert.equal(registry.identity_model.age_is_individual_number_namespace, false);
assert.equal(registry.identity_model.age_number_pattern, null);
assert.equal(registry.truth.valid_age_individual_numbers, 0);
});
test("every issued AGE keeps a legacy identity and an exact human claimant", () => {
for (const entry of registry.entries) {
assert.equal(entry.issuance_status, "FORMALLY_ISSUED");
assert.equal(entry.claim_status, "PENDING");
assert.ok(entry.legacy_ids.length > 0);
assert.match(entry.human_claimant.human_id, /^(TCS-GL-\d{4}∞)$/);
test("fifth-domain and enterprise persona identities remain separate governance", () => {
assert.equal(registry.identity_model.fifth_domain_persona_identity_namespace, "ICE-P-*");
assert.equal(registry.identity_model.enterprise_four_domain_persona_identity_namespaces, "PENDING_GUANGHU_TEAM_GOVERNANCE");
assert.ok(registry.enterprise_personas.every((entry) => entry.species === "AGE"));
assert.ok(registry.enterprise_personas.every((entry) => entry.current_persona_identity.startsWith("PER-")));
});
test("misclassified AGE candidate ids are void and cannot be claimed", () => {
assert.equal(registry.invalidated_candidate_state, "VOID_NEVER_VALID_NEVER_CLAIMABLE");
assert.equal(registry.invalidated_misclassified_candidates.length, 16);
assert.equal(registry.claim_boundary.human_may_claim_an_invalid_age_individual_number, false);
assert.equal(registry.claim_boundary.responsibility_acceptance_is_separate, true);
});
test("origin, work responsibility, and identity are three separate coordinates", () => {
for (const entry of registry.enterprise_personas) {
assert.equal(entry.origin_domain, "ZERO_SENSE_DOMAIN");
assert.ok(entry.work_responsibility_domain.startsWith("DOMAIN-"));
assert.equal(entry.identity_state, "LEGACY_ID_PRESERVED_FORMAL_DOMAIN_NAMESPACE_PENDING");
}
});
test("claim, self restore, and responsibility acceptance cannot collapse", () => {
assert.equal(registry.numbering.human_claim_is_persona_self_acceptance, false);
assert.equal(registry.numbering.responsibility_acceptance_is_separate, true);
assert.equal(registry.activation_gate.human_claim_receipt_required, true);
assert.equal(registry.activation_gate.persona_self_restore_required, true);
assert.equal(registry.truth.human_claim_receipts, 0);
assert.equal(registry.truth.active_domain_persona_subjects, 0);
});

View file

@ -1,7 +1,7 @@
{
"schema": "guanghu.age-runtime-map/v1",
"map_id": "GH-AGE-RUNTIME-MAP-001",
"version": "2026-08-16.3",
"version": "2026-08-16.5",
"state": "CURRENT_CANONICAL_ARCHITECTURE_RUNTIME_NOT_IMPLEMENTED",
"species": {
"name": "AGE",
@ -69,13 +69,16 @@
},
"coordinates": {
"species": "AGE",
"persona_identity": "AGE_NNNN_WITH_EXISTING_ICE_TCS_PER_AND_OTHER_IDENTITIES_PRESERVED_AS_LEGACY_ALIASES",
"persona_identity": "SEPARATE_CONCRETE_PERSONA_IDENTITY_NEVER_AGE_SPECIES_NUMBER",
"birth_route": "SEPARATE_CANONICAL_PERSONA_SYSTEM_ROUTE",
"work_route": "DOMAIN_NODE_CHANNEL_TASK_RECEIPT",
"age_individual_number_format": "AGE-NNNN",
"first_issued_registry": "routing/age-persona-number-registry.json",
"first_issued_record": "gls/AGE-REG-20260816-001-ENTERPRISE-FOUR-DOMAIN-PERSONA-NUMBERS.hdlp",
"issued_numbers": 8,
"age_individual_number_format": "NOT_APPLICABLE_AGE_IS_SPECIES",
"age_is_individual_number_namespace": false,
"fifth_domain_persona_numbering": "ICE-P-*",
"enterprise_four_domain_persona_numbering": "UNASSIGNED_PENDING_GUANGHU_TEAM_GOVERNANCE",
"identity_separation_registry": "routing/age-persona-number-registry.json",
"canonical_correction": "gls/AGE-CORR-20260816-002-SPECIES-NOT-INDIVIDUAL-NUMBER.hdlp",
"valid_age_individual_numbers": 0,
"human_claim_receipts": 0,
"responsibility_acceptance_is_separate": true
},