<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mwiki.costasano.club/index.php?action=history&amp;feed=atom&amp;title=ICT%3ANumbering_v_4.0</id>
	<title>ICT:Numbering v 4.0 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mwiki.costasano.club/index.php?action=history&amp;feed=atom&amp;title=ICT%3ANumbering_v_4.0"/>
	<link rel="alternate" type="text/html" href="https://mwiki.costasano.club/index.php?title=ICT:Numbering_v_4.0&amp;action=history"/>
	<updated>2026-07-22T23:28:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://mwiki.costasano.club/index.php?title=ICT:Numbering_v_4.0&amp;diff=256&amp;oldid=prev</id>
		<title>Mngr: Created page with &quot;= Identifier and Numbering Strategy =  This page defines the official strategy for generating stable, human-readable identifiers and page names for entities created in the Costasano Heritage Database.  The goal is to ensure:  * consistency * uniqueness * predictability * easy sorting * long-term stability * minimal editorial effort  Identifiers must be generated automatically wherever possible.  Manual numbering is not permitted.    == Purpose ==  Identifiers serve three...&quot;</title>
		<link rel="alternate" type="text/html" href="https://mwiki.costasano.club/index.php?title=ICT:Numbering_v_4.0&amp;diff=256&amp;oldid=prev"/>
		<updated>2026-01-30T10:59:06Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Identifier and Numbering Strategy =  This page defines the official strategy for generating stable, human-readable identifiers and page names for entities created in the Costasano Heritage Database.  The goal is to ensure:  * consistency * uniqueness * predictability * easy sorting * long-term stability * minimal editorial effort  Identifiers must be generated automatically wherever possible.  Manual numbering is not permitted.    == Purpose ==  Identifiers serve three...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Identifier and Numbering Strategy =&lt;br /&gt;
&lt;br /&gt;
This page defines the official strategy for generating stable, human-readable identifiers and page names for entities created in the Costasano Heritage Database.&lt;br /&gt;
&lt;br /&gt;
The goal is to ensure:&lt;br /&gt;
&lt;br /&gt;
* consistency&lt;br /&gt;
* uniqueness&lt;br /&gt;
* predictability&lt;br /&gt;
* easy sorting&lt;br /&gt;
* long-term stability&lt;br /&gt;
* minimal editorial effort&lt;br /&gt;
&lt;br /&gt;
Identifiers must be generated automatically wherever possible.&lt;br /&gt;
&lt;br /&gt;
Manual numbering is not permitted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Identifiers serve three functions:&lt;br /&gt;
&lt;br /&gt;
* provide stable page names&lt;br /&gt;
* support chronological and contextual grouping&lt;br /&gt;
* enable simple referencing in research, citations, and exports&lt;br /&gt;
&lt;br /&gt;
Identifiers are &amp;#039;&amp;#039;&amp;#039;technical labels&amp;#039;&amp;#039;&amp;#039;, not semantic descriptions.&lt;br /&gt;
&lt;br /&gt;
They must never encode complex meaning or editorial interpretation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Core principle ==&lt;br /&gt;
&lt;br /&gt;
Identifiers are:&lt;br /&gt;
&lt;br /&gt;
* mechanical&lt;br /&gt;
* uniform in structure&lt;br /&gt;
* automatically generated&lt;br /&gt;
* independent of entity semantics&lt;br /&gt;
&lt;br /&gt;
Entity meaning is modeled in fields and relationships — not in the identifier itself.&lt;br /&gt;
&lt;br /&gt;
The data model must never be distorted to simplify identifiers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope ==&lt;br /&gt;
&lt;br /&gt;
This numbering strategy applies to:&lt;br /&gt;
&lt;br /&gt;
* DigitalAsset pages&lt;br /&gt;
* HeritageObject pages (if numbered)&lt;br /&gt;
* other research entities where sequential registration is required&lt;br /&gt;
* file names derived from DigitalAssets&lt;br /&gt;
&lt;br /&gt;
It does NOT apply to:&lt;br /&gt;
&lt;br /&gt;
* Persons&lt;br /&gt;
* Keywords&lt;br /&gt;
* lookup tables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Identifier structure =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Standard format ==&lt;br /&gt;
&lt;br /&gt;
All numbered entities use the same structure:&lt;br /&gt;
&lt;br /&gt;
  CHAPTER–CONTEXT–COUNTER&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  CH03-ROM-0007&lt;br /&gt;
  CH02-ARCH-0012&lt;br /&gt;
  CH01-SAN-0003&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
&lt;br /&gt;
==== Chapter ====&lt;br /&gt;
&lt;br /&gt;
Short code of the ResearchChapter.&lt;br /&gt;
&lt;br /&gt;
Provides narrative grouping.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* CH01&lt;br /&gt;
* CH02&lt;br /&gt;
* CH03&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Context ====&lt;br /&gt;
&lt;br /&gt;
Short code describing &amp;#039;&amp;#039;&amp;#039;where or by whom&amp;#039;&amp;#039;&amp;#039; the entity is primarily associated.&lt;br /&gt;
&lt;br /&gt;
The context may reference either:&lt;br /&gt;
&lt;br /&gt;
* an Organization (actor), or&lt;br /&gt;
* a Place (location)&lt;br /&gt;
&lt;br /&gt;
Only ONE context is used.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
* ROM (Rome – Place)&lt;br /&gt;
* FLO (Florence – Place)&lt;br /&gt;
* ARCH (Archive – Organization)&lt;br /&gt;
* CONG (Congregation – Organization)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The context slot is intentionally neutral.&lt;br /&gt;
&lt;br /&gt;
It does not distinguish whether the source is an Organization or a Place.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Counter ====&lt;br /&gt;
&lt;br /&gt;
A sequential integer:&lt;br /&gt;
&lt;br /&gt;
* unique within (Chapter + Context)&lt;br /&gt;
* zero padded&lt;br /&gt;
* automatically generated&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
  0001&lt;br /&gt;
  0002&lt;br /&gt;
  0003&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Padding ensures correct lexical sorting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Full example ==&lt;br /&gt;
&lt;br /&gt;
  CH03-ROM-0015&lt;br /&gt;
&lt;br /&gt;
Means:&lt;br /&gt;
&lt;br /&gt;
* Chapter 03&lt;br /&gt;
* Context Rome&lt;br /&gt;
* 15th registered entity in this group&lt;br /&gt;
&lt;br /&gt;
Nothing more.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Relationship to the data model =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Conceptual rule ==&lt;br /&gt;
&lt;br /&gt;
Identifiers must NOT determine entity semantics.&lt;br /&gt;
&lt;br /&gt;
Specifically:&lt;br /&gt;
&lt;br /&gt;
* cities are Places (not Organizations)&lt;br /&gt;
* organizations remain actors&lt;br /&gt;
* identifiers simply reference a context code&lt;br /&gt;
&lt;br /&gt;
If both a Place and an Organization exist, the editor chooses the most appropriate contextual grouping for numbering.&lt;br /&gt;
&lt;br /&gt;
This is an editorial convenience only.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Why context is unified ==&lt;br /&gt;
&lt;br /&gt;
The system deliberately uses one neutral &amp;quot;context&amp;quot; slot instead of:&lt;br /&gt;
&lt;br /&gt;
  chapter–organisation–counter&lt;br /&gt;
  chapter–city–counter&lt;br /&gt;
&lt;br /&gt;
because conditional formats:&lt;br /&gt;
&lt;br /&gt;
* complicate generation&lt;br /&gt;
* break sorting&lt;br /&gt;
* create inconsistent identifiers&lt;br /&gt;
* increase maintenance&lt;br /&gt;
&lt;br /&gt;
Uniform structure is mandatory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Required fields =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Organizations ==&lt;br /&gt;
&lt;br /&gt;
Organizations must include:&lt;br /&gt;
&lt;br /&gt;
* name&lt;br /&gt;
* short code (unique)&lt;br /&gt;
* place (optional)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Places ==&lt;br /&gt;
&lt;br /&gt;
Places must include:&lt;br /&gt;
&lt;br /&gt;
* name&lt;br /&gt;
* short code (unique)&lt;br /&gt;
* optional hierarchy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Chapters ==&lt;br /&gt;
&lt;br /&gt;
ResearchChapters must include:&lt;br /&gt;
&lt;br /&gt;
* title&lt;br /&gt;
* short code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Short codes should:&lt;br /&gt;
&lt;br /&gt;
* be short (3–6 characters)&lt;br /&gt;
* be stable&lt;br /&gt;
* avoid spaces&lt;br /&gt;
* avoid punctuation&lt;br /&gt;
* not be changed after use&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Automatic generation (Page Forms + Cargo) =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
Identifiers are generated automatically during form submission.&lt;br /&gt;
&lt;br /&gt;
Process:&lt;br /&gt;
&lt;br /&gt;
1. editor selects Chapter&lt;br /&gt;
2. editor selects either Organization or Place&lt;br /&gt;
3. system determines context code&lt;br /&gt;
4. system calculates next counter using Cargo query&lt;br /&gt;
5. system builds page name&lt;br /&gt;
6. page is saved using that name&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 1 – store codes ==&lt;br /&gt;
&lt;br /&gt;
Each of:&lt;br /&gt;
&lt;br /&gt;
* ResearchChapters&lt;br /&gt;
* Organizations&lt;br /&gt;
* Places&lt;br /&gt;
&lt;br /&gt;
must contain:&lt;br /&gt;
&lt;br /&gt;
  code (string)&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  CH03&lt;br /&gt;
  ROM&lt;br /&gt;
  ARCH&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 2 – determine context code ==&lt;br /&gt;
&lt;br /&gt;
Pseudo logic:&lt;br /&gt;
&lt;br /&gt;
  if organization exists → use organization.code&lt;br /&gt;
  else → use place.code&lt;br /&gt;
&lt;br /&gt;
Only one is required.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 3 – compute next counter ==&lt;br /&gt;
&lt;br /&gt;
Cargo query:&lt;br /&gt;
&lt;br /&gt;
  {{#cargo_query:&lt;br /&gt;
   tables=DigitalAssets&lt;br /&gt;
   |fields=MAX(sequence_number)=maxnum&lt;br /&gt;
   |where=chapter_id={{{chapter_id}}} AND context_code=&amp;#039;{{{context_code}}}&amp;#039;&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
  {{#expr: {{{maxnum|0}}} + 1 }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 4 – compose identifier ==&lt;br /&gt;
&lt;br /&gt;
  {{chapter_code}}-{{context_code}}-{{padleft:counter|4|0}}&lt;br /&gt;
&lt;br /&gt;
Use this value for:&lt;br /&gt;
&lt;br /&gt;
* page name&lt;br /&gt;
* id field&lt;br /&gt;
* display label&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 5 – file naming ==&lt;br /&gt;
&lt;br /&gt;
Uploaded files should reuse the same identifier:&lt;br /&gt;
&lt;br /&gt;
  CH03-ROM-0015.jpg&lt;br /&gt;
  CH03-ROM-0015.tif&lt;br /&gt;
&lt;br /&gt;
Benefits:&lt;br /&gt;
&lt;br /&gt;
* easy matching&lt;br /&gt;
* export safety&lt;br /&gt;
* external archival compatibility&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Editorial workflow =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a new DigitalAsset ==&lt;br /&gt;
&lt;br /&gt;
Editor:&lt;br /&gt;
&lt;br /&gt;
# uploads file&lt;br /&gt;
# opens DigitalAsset form&lt;br /&gt;
# selects chapter&lt;br /&gt;
# selects place or organization&lt;br /&gt;
# saves&lt;br /&gt;
&lt;br /&gt;
System:&lt;br /&gt;
&lt;br /&gt;
# assigns number automatically&lt;br /&gt;
# creates page with generated name&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rules for editors ==&lt;br /&gt;
&lt;br /&gt;
Editors must NOT:&lt;br /&gt;
&lt;br /&gt;
* type identifiers manually&lt;br /&gt;
* reuse old numbers&lt;br /&gt;
* change page titles after creation&lt;br /&gt;
* encode meaning in identifiers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Design principles =&lt;br /&gt;
&lt;br /&gt;
The numbering system prioritizes:&lt;br /&gt;
&lt;br /&gt;
* stability over meaning&lt;br /&gt;
* simplicity over flexibility&lt;br /&gt;
* automation over manual control&lt;br /&gt;
&lt;br /&gt;
Identifiers exist only to identify.&lt;br /&gt;
&lt;br /&gt;
All interpretation belongs in structured metadata.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Status =&lt;br /&gt;
&lt;br /&gt;
This document defines the official identifier strategy.&lt;br /&gt;
&lt;br /&gt;
All new implementations and forms must follow this specification.&lt;/div&gt;</summary>
		<author><name>Mngr</name></author>
	</entry>
</feed>