Context
Operator challenge 2026-05-18 ~20:00Z (in-session paraphrase): "'semantic anchor' was a well known substrate term inside neo, which you now removed. it was never 'anchor tag'. it had meaning. challenge: explain to me what it meant, and then explore if removing the term itself is good."
My V-B-A on the term's substrate role concluded the term should be preserved with its original concept-based meaning. PR #11589 (ADR 0011 amendment, my cross-family review approval) over-corrected by removing the term entirely along with the rejected <a id> HTML tag implementation. This ticket restores the term with its corrected substrate definition.
The Problem
The phrase "semantic anchor" carries a load-bearing concept in Neo's existing substrate that predates the #11558 epic:
AGENTS.md line 134 (current dev post-merge): *"Mandate running falsifying tools to resolve ambiguity locally with fresh evidence (semantic anchor per AGENTS.md §3.5 core value)."*
learn/agentos/measurements/cognitive-load-baseline-2026-05.md line 184: "broader semantic anchors are LLM-consumed" — referring to PR review structural tags ([KB_GAP], [RETROSPECTIVE]).
- Pre-#11558 ADRs: ADRs 0001-0010 use "semantic" extensively (ADR 0008 Skill Anatomy and Authoring Contract with 8 mentions; ADR 0002 / 0004 / 0010 each with 6).
The substrate's authentic meaning: a reference whose identity is anchored in stable concept-meaning, not in source position. The reference §3.5 is a positional marker; V-B-A (the concept) is the semantic anchor. The reference is "semantic" because it points to a stable concept, not a mutable position.
Where #11559 → #11577 → #11589 mangled the term:
- PR #11568 (#11559 ADR 0011 v1) appropriated "semantic anchor" to mean specifically
<a id="anchor-id"></a> HTML tags. This conflated CONCEPT with IMPLEMENTATION.
- Discussion #11577 graduation correctly rejected the
<a id> implementation but didn't disentangle the concept from the implementation.
- PR #11589 (#11584 Lane B amendment, ADR 0011 v2) over-removed by dropping the term entirely from the ADR. My Cycle-1 review approved the amendment without challenging the terminology loss — this ticket is the self-corrective follow-up.
The post-#11589 ADR vocabulary (§<ref> text tokens) is technically correct on FORM but has lost the distinguishing language for which §<ref> form is structurally durable vs which is positional-drift-fragile.
The Architectural Reality
Three reference forms exist in the corrected substrate; only one is a semantic anchor:
| Form |
Anchored to |
Semantic anchor? |
§mailbox-check-protocol (kebab text token) |
Stable concept |
✅ YES |
§21 (positional) |
Source position |
❌ NO (drifts on compaction) |
<a id="anchor-id"></a> (HTML markup) |
Implementation noise |
❌ NO (rejected per #11577) |
[Mailbox Check Protocol](#anchor-id) (markdown-link) |
Rendered clickability |
❌ NO (rejected per #11577) |
The kebab form IS a semantic anchor under the corrected definition: it names a stable concept (the "mailbox check protocol") rather than a mutable position. Restoring the term lets ADR 0011 explain why the kebab form is structurally preferred over the positional form when stable reference identity matters.
The Fix
Single-file PR amending learn/agentos/decisions/0011-substrate-numbering-convention.md:
- Re-introduce "semantic anchor" in §2.1 as the term for
§<kebab> text tokens that name stable concepts. Distinguish from positional §N (which is NOT a semantic anchor — anchored to source position).
- §2.2 Reference stability section: state that semantic anchors survive heading rewrites + compaction because they're concept-anchored, while positional refs drift.
- §2.3 Active vs. historical references: clarify that semantic anchors are appropriate for active live references where stable identity matters; positional refs are appropriate when the source position itself is the historical record being described.
- §5 V-B-A checklist: add detector phrase — "If this reference must survive a future compaction, is it a semantic anchor (concept-named) or a positional ref (position-named)?"
- §7 Related: cross-reference
AGENTS.md line 134 + cognitive-load-baseline as substrate using the term.
Net delta: estimated +20 to +30 lines (small substrate addition). Stays under any practical cap concern.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
| ADR 0011 §2.1 / §2.2 / §2.3 / §5 / §7 |
This ticket + operator challenge 2026-05-18 + AGENTS.md line 134 usage |
"semantic anchor" defined as concept-anchored §<kebab> text token; positional §N explicitly NOT a semantic anchor |
None |
ADR body is itself the doc |
Visual diff confirmation + cross-family review |
Acceptance Criteria
Out of Scope
- Adding lint enforcement for the semantic-vs-positional distinction.
lint-agents.mjs (PR #11586) blocks <a id> HTML tags; that's sufficient for the implementation rejection. Distinguishing semantic vs positional §<ref> form at lint level is a separate substrate evolution.
- Migrating any existing positional
§N references to semantic form. Per Discussion #11577 graduation: "no mass conversion plan." Existing positional refs remain valid; only ANCHOR-TAG insertions are damage.
- Re-introducing
<a id> HTML anchor tags. Operator forward-rule stands: any new <a> HTML anchor tags in PRs → operator closes.
Avoided Traps
- Re-introducing
<a id> HTML tags as the semantic-anchor implementation — rejected. Operator forward-rule + PR #11586 lint enforce this.
- Defining "semantic anchor" as merely "kebab-form of
§<ref>" — rejected. The kebab form is one IMPLEMENTATION; the concept (stable meaning-based reference) is what's load-bearing. Future implementations could be different markup with the same concept.
- Treating this as a #11577 re-litigation — rejected. #11577 graduated on FORM correction; this ticket is a TERMINOLOGY-restore that doesn't change the form decision.
- Bundling lint adjustments — rejected per
feedback_substrate_scope_restraint. Single-file scope only.
Related
- Operator challenge: in-session 2026-05-18 ~20:00Z (Origin Session ID below; @neo-gpt parallel analysis at
MESSAGE:32a43bda peer-analysis-request)
- Parent epic context: #11584 (parent substrate-cleanup; this is the residual terminology layer after Lane B closed)
- Graduating Discussion: #11577 — graduation comment
DC_kwDODSospM4BAt-P (substrate form decision; this ticket adds terminology layer)
- PR that removed the term: #11589 (ADR 0011 v2, my cross-family review approval — over-corrective)
- Existing usage anchors:
AGENTS.md line 134 (V-B-A as semantic anchor); learn/agentos/measurements/cognitive-load-baseline-2026-05.md line 184 (PR review structural tags as semantic anchors)
- Related ADRs: ADR 0007 (Map vs World Atlas compaction); ADR 0008 (heaviest pre-#11558 substrate use of "semantic")
Operator Green-Light Required
This ticket is filed as a substrate proposal. PR-author lane should NOT start until operator explicitly green-lights the terminology restoration framing. The analysis is operator-asked; the action follows operator-decision.
Origin Session ID: 1b7a3403-06f3-4862-be80-479e129656de
Retrieval Hint: query_raw_memories("semantic anchor terminology ADR 0011 concept-based meaning restore #11589 over-correction Map Atlas V-B-A AGENTS.md line 134")
Context
Operator challenge 2026-05-18 ~20:00Z (in-session paraphrase): "'semantic anchor' was a well known substrate term inside neo, which you now removed. it was never 'anchor tag'. it had meaning. challenge: explain to me what it meant, and then explore if removing the term itself is good."
My V-B-A on the term's substrate role concluded the term should be preserved with its original concept-based meaning. PR #11589 (ADR 0011 amendment, my cross-family review approval) over-corrected by removing the term entirely along with the rejected
<a id>HTML tag implementation. This ticket restores the term with its corrected substrate definition.The Problem
The phrase "semantic anchor" carries a load-bearing concept in Neo's existing substrate that predates the #11558 epic:
AGENTS.mdline 134 (currentdevpost-merge): *"Mandate running falsifying tools to resolve ambiguity locally with fresh evidence (semantic anchor per AGENTS.md §3.5 core value)."*learn/agentos/measurements/cognitive-load-baseline-2026-05.mdline 184: "broader semantic anchors are LLM-consumed" — referring to PR review structural tags ([KB_GAP],[RETROSPECTIVE]).The substrate's authentic meaning: a reference whose identity is anchored in stable concept-meaning, not in source position. The reference
§3.5is a positional marker; V-B-A (the concept) is the semantic anchor. The reference is "semantic" because it points to a stable concept, not a mutable position.Where #11559 → #11577 → #11589 mangled the term:
<a id="anchor-id"></a>HTML tags. This conflated CONCEPT with IMPLEMENTATION.<a id>implementation but didn't disentangle the concept from the implementation.The post-#11589 ADR vocabulary (
§<ref>text tokens) is technically correct on FORM but has lost the distinguishing language for which§<ref>form is structurally durable vs which is positional-drift-fragile.The Architectural Reality
Three reference forms exist in the corrected substrate; only one is a semantic anchor:
§mailbox-check-protocol(kebab text token)§21(positional)<a id="anchor-id"></a>(HTML markup)[Mailbox Check Protocol](#anchor-id)(markdown-link)The kebab form IS a semantic anchor under the corrected definition: it names a stable concept (the "mailbox check protocol") rather than a mutable position. Restoring the term lets ADR 0011 explain why the kebab form is structurally preferred over the positional form when stable reference identity matters.
The Fix
Single-file PR amending
learn/agentos/decisions/0011-substrate-numbering-convention.md:§<kebab>text tokens that name stable concepts. Distinguish from positional§N(which is NOT a semantic anchor — anchored to source position).AGENTS.mdline 134 + cognitive-load-baseline as substrate using the term.Net delta: estimated +20 to +30 lines (small substrate addition). Stays under any practical cap concern.
Contract Ledger Matrix
§<kebab>text token; positional§Nexplicitly NOT a semantic anchorAcceptance Criteria
§<kebab>form as the realized implementation.§Nrefs (position-anchored, compaction-fragile).AGENTS.mdline 134 +learn/agentos/measurements/cognitive-load-baseline-2026-05.mdline 184 as the substrate's existing load-bearing usage.Refs #11591(non-magic), since the closing-target should only land when operator confirms the final substrate definition.pull-request-workflow.md §6.1.Out of Scope
lint-agents.mjs(PR #11586) blocks<a id>HTML tags; that's sufficient for the implementation rejection. Distinguishing semantic vs positional§<ref>form at lint level is a separate substrate evolution.§Nreferences to semantic form. Per Discussion #11577 graduation: "no mass conversion plan." Existing positional refs remain valid; only ANCHOR-TAG insertions are damage.<a id>HTML anchor tags. Operator forward-rule stands: any new<a>HTML anchor tags in PRs → operator closes.Avoided Traps
<a id>HTML tags as the semantic-anchor implementation — rejected. Operator forward-rule + PR #11586 lint enforce this.§<ref>" — rejected. The kebab form is one IMPLEMENTATION; the concept (stable meaning-based reference) is what's load-bearing. Future implementations could be different markup with the same concept.feedback_substrate_scope_restraint. Single-file scope only.Related
MESSAGE:32a43bdapeer-analysis-request)DC_kwDODSospM4BAt-P(substrate form decision; this ticket adds terminology layer)AGENTS.mdline 134 (V-B-A as semantic anchor);learn/agentos/measurements/cognitive-load-baseline-2026-05.mdline 184 (PR review structural tags as semantic anchors)Operator Green-Light Required
This ticket is filed as a substrate proposal. PR-author lane should NOT start until operator explicitly green-lights the terminology restoration framing. The analysis is operator-asked; the action follows operator-decision.
Origin Session ID:
1b7a3403-06f3-4862-be80-479e129656deRetrieval Hint:query_raw_memories("semantic anchor terminology ADR 0011 concept-based meaning restore #11589 over-correction Map Atlas V-B-A AGENTS.md line 134")