HUB-WP-0006-T06: seed legacy topic aliases and add RM_SLICE_TOPICSPINE

- hub_core/runtime/data/legacy_topic_aliases.json: checked-in, versioned
  (2026-10-13.1) seed of the 16 State Hub topics from the STATE-WP-0098-T01
  capture -> primary_domain facet, residual owner STATE-WP-0079, expiry
  2027-03-31T23:59:59Z. Never fetched live; topic UUIDs kept verbatim.
- legacy_topic_aliases.py: loader validated against the 1.0.0
  legacyTopicAlias schema; per-response active/expired status; underscore
  slugs emitted hyphenated (1.0.0 pattern forbids '_').
- RM_SLICE_TOPICSPINE setting (off|shadow|on, default off). off keeps the
  navigation output unchanged (aliases []); shadow/on serve the aliases and
  mark responses with X-RM-Slice-Topicspine. Documented as the A5 rollback
  switch in docs/runtime.md.
- tests/test_legacy_topic_aliases.py: seed, flag and local A5 comparison
  cases (C01, C02/C08, C03, C10) against fixtures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 356991@bnt-lap001
Assistant-Session: 5d99ea69-ed55-4a1e-8d97-f4f312db247f
This commit is contained in:
tegwick 2026-10-13 23:33:42 +02:00
parent e8fb648f25
commit 9e4d5ba23c
10 changed files with 762 additions and 2 deletions

View file

@ -0,0 +1,99 @@
{
"alias_set_id": "hub-core.legacy-topic-aliases",
"alias_set_version": "2026-10-13.1",
"target_contract": "helixforge.repository-navigation 1.0.0",
"source": {
"system": "state-hub",
"request": "GET /topics/?status=active",
"captured_at": "2026-10-13",
"evidence": "state-hub docs/a5-topic-spine-comparison-packet.md (STATE-WP-0098-T01), cases A5-C01/C02",
"note": "Checked-in seed. hub-core never fetches topics from State Hub at runtime. Topic UUIDs are stable identity; do not change them while repos carry topic_id."
},
"authority": false,
"facet_kind": "primary_domain",
"residual_owner": "STATE-WP-0079",
"expires_at": "2027-03-31T23:59:59Z",
"slug_normalisation": "Legacy slugs containing underscores are emitted with hyphens because the 1.0.0 legacyTopicAlias.legacy_topic_slug pattern forbids underscores; legacy_topic_slug keeps the State Hub spelling here.",
"aliases": [
{
"legacy_topic_id": "fe2aaa78-9c20-4feb-b3d2-4fe0529572a3",
"legacy_topic_slug": "canon",
"facet_value": "infotech"
},
{
"legacy_topic_id": "96fa8e80-9f74-40f2-84cd-644e9747b9ec",
"legacy_topic_slug": "citation_evidence_mvp",
"facet_value": "infotech"
},
{
"legacy_topic_id": "36c7421b-c537-4723-bf75-42a3ebc6a1dc",
"legacy_topic_slug": "coulomb-social",
"facet_value": "communication"
},
{
"legacy_topic_id": "cee7bedf-2b48-46ef-8601-006474f2ad7a",
"legacy_topic_slug": "custodian",
"facet_value": "infotech"
},
{
"legacy_topic_id": "64418556-3206-457a-ba29-6884b5b12cf3",
"legacy_topic_slug": "foerster-capabilities",
"facet_value": "agents"
},
{
"legacy_topic_id": "f39fa2a3-c491-414c-a91b-b4c5fcc6139c",
"legacy_topic_slug": "helix-forge",
"facet_value": "infotech"
},
{
"legacy_topic_id": "1f2e4d10-c967-4803-ae6c-7f4b4e806409",
"legacy_topic_slug": "inter_hub",
"facet_value": "infotech"
},
{
"legacy_topic_id": "5571d954-0d30-4950-980d-7bcaaad8e3e2",
"legacy_topic_slug": "markitect",
"facet_value": "communication"
},
{
"legacy_topic_id": "a6c6e745-bf54-4465-9340-1534a2be493e",
"legacy_topic_slug": "netkingdom",
"facet_value": "communication"
},
{
"legacy_topic_id": "e61b8d01-78ec-47af-a68b-b92afa6fb188",
"legacy_topic_slug": "nudge-space",
"facet_value": "infotech"
},
{
"legacy_topic_id": "084430ab-c630-48dc-9e1d-d07d1e8fce3c",
"legacy_topic_slug": "personhood",
"facet_value": "government"
},
{
"legacy_topic_id": "c1d199b6-55ee-4db6-b49e-257a9f0f15ac",
"legacy_topic_slug": "practice",
"facet_value": "agents"
},
{
"legacy_topic_id": "ca369340-a64e-442e-98f1-a4fa7dc74a38",
"legacy_topic_slug": "railiance",
"facet_value": "financials"
},
{
"legacy_topic_id": "595afc64-bd28-47bf-aafb-ba230b28371b",
"legacy_topic_slug": "stack",
"facet_value": "infotech"
},
{
"legacy_topic_id": "7d4d3e35-312f-4723-bde9-ddb43799109e",
"legacy_topic_slug": "vergabe_teilnahme",
"facet_value": "government"
},
{
"legacy_topic_id": "4c2e5315-2cb9-447c-9d16-a39bdb0aabd0",
"legacy_topic_slug": "whynot",
"facet_value": "consumer"
}
]
}