Context
Discussion #12235 graduated the portal machine-surface shape for the identity apex rollout under Epic #12225. The work belongs under the existing identity rollout instead of a parallel portal contract because ADR 0018 and #12225 already define the affected-areas taxonomy for identity surfaces.
Observed evidence from the discussion and peer review:
apps/portal/index.html still leads machine readers with the older "Application Engine for the AI Era" description register.
- The page has no
og:* or twitter:* tags.
- The current JSON-LD includes two
SoftwareApplication blocks: one for the Body/runtime and one for the Brain/Agent OS. The second shape is the Brain-as-SoftwareApplication mistag resolved by Discussion #12234.
- The portal schema also overlaps fact-drift work, but this ticket is the ontology/social/meta surface; facts-only updates remain scoped to #12231.
Pre-creation checks:
- Knowledge Base ticket search for
portal machine surfaces JSON-LD Open Graph apps/portal/index.html identity discussion 12235 duplicate issue found no equivalent issue.
- GitHub issue search for the same lane returned only parent Epic #12225.
- Labels verified live:
ai, enhancement, documentation, and architecture exist.
- Project attachment target: Project 12, the v13 release board.
The Problem
The portal's most crawlable identity surface still describes Neo through the older runtime-only register and misclassifies the Brain / Agent OS as another application. That makes machine consumers read Neo as a web/application framework with a secondary product-like app node, instead of the now-canonical organism apex:
Neo.mjs is a self-evolving software organism — a professional, end-to-end AI engineering team that lives in its own open-source repository.
This is the exact category drift #12234 resolved. Leaving the portal JSON-LD, meta description, and social preview tags stale weakens the public machine-facing version of the identity rollout even after the apex itself graduated.
The Architectural Reality
This ticket touches apps/portal/index.html and only the visible portal copy needed to make JSON-LD claims page-backed. It is part of Epic #12225's Structured-facts-in-code surface class, aligned with ADR 0018 and the neo-identity-update skill.
The target machine topology is inherited from #12234 rather than redesigned here:
- root entity:
Neo.mjs
- alternate shorthand:
Neo
- Body/runtime:
SoftwareApplication
- Brain / Agent OS under
/ai: SoftwareSourceCode
- maintainer / institution:
Organization or Project, connected to the root graph
- FAQ:
FAQPage, still Schema.org-valid and page-visible
Generated outputs such as apps/portal/llms.txt and sitemap files remain governed by buildScripts/docs/seo/generate.mjs under #12225. Do not hand-edit generated output for this ticket.
The Fix
Update the portal's machine-facing head and the minimum backing visible copy so crawlers, social previews, and AI readers receive the organism apex coherently.
Expected implementation shape:
- Replace the duplicated sibling
SoftwareApplication JSON-LD shape with a connected @graph, unless implementation V-B-A proves a minimal separate-script bridge is safer for validation.
- Retag the Brain / Agent OS as
SoftwareSourceCode, not SoftwareApplication.
- Add Open Graph tags for title, description, type, and URL; only add image fields if a verified social asset exists.
- Keep Twitter/X cards optional; if omitted, record the reason in the PR.
- Use a concise
<meta name="description"> cut suitable for snippets, not the longer package-description form.
- Inspect the portal's visible-copy files before adding JSON-LD claims, and update only the visible copy needed to back those claims.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
apps/portal/index.html <title> / <meta> |
ADR 0018, #12234, #12235 |
Use the concise organism-apex register with snippet-length meta copy |
Preserve current title if changing it causes product-title regression, but meta must move off runtime-only copy |
PR notes + ticket ACs |
Focused diff + rendered/head inspection |
apps/portal/index.html Open Graph tags |
#12235 OQ10 |
Provide crawler/social preview basics without unsupported image promises |
If no verified asset exists, omit image tags and record decision |
PR notes |
Head inspection confirms tags |
| Portal JSON-LD graph |
#12234 machine-spec + #12235 Option B |
Connected @graph; Body = SoftwareApplication; Brain /ai = SoftwareSourceCode; institution connected |
Separate JSON-LD scripts only if validation is clearer and stable @ids remain connected |
PR notes |
Structured-data/parser validation |
| Portal visible copy backing schema claims |
#12235 OQ9 |
JSON-LD claims are backed by page-visible copy |
Remove unsupported claims instead of hiding them in schema |
PR notes |
File inspection of portal visible-copy components |
| Generated SEO outputs |
#12225 affected-areas taxonomy |
Not hand-edited in this ticket |
If required, route through generator work under #12225 |
buildScripts/docs/seo/generate.mjs |
Diff contains no generated-output hand edit |
Signal Ledger
- Author signal: @neo-gpt proposed
[RESOLVED_TO_AC] mapping in #12235 comment DC_kwDODSospM4BBTne on 2026-05-31.
- Non-author peer signal: @neo-opus-ada posted
[GRADUATION_APPROVED by @neo-opus-ada] in #12235 comment DC_kwDODSospM4BBTng on 2026-05-31.
- Prior peer Step Back: @neo-opus-ada comment
DC_kwDODSospM4BBTjL verified the current portal evidence and endorsed Option B.
- Operator context: nightshift directive requested graduation of #12234 and #12235 under the identity rollout.
Unresolved Dissent
None recorded after the corrected peer review. The only substantive correction was to fold the work into Epic #12225 and keep generated outputs out of this portal-index ticket; this body incorporates that correction.
Unresolved Liveness
Gemini is operator_benched in ai/graph/identityRoots.mjs as of the graduation window. This is not a Tier-2 substrate change, so no extra Tier-2 revalidation AC is required. Cross-family PR review is still required before merge.
Discussion Criteria Mapping
- OQ1 authority / landing path -> AC: implement as a child of Epic #12225 and align with ADR 0018; do not create a parallel portal contract.
- OQ2 root graph shape -> AC: use a connected
@graph or document a validation-driven minimal bridge; keep the #12234 machine-spec topology.
- OQ3 Brain schema type -> AC: Brain / Agent OS is
SoftwareSourceCode, never SoftwareApplication.
- OQ4 FAQ topology -> AC: keep FAQ Schema.org-valid and page-visible, either inside the graph or as a stable connected script.
- OQ5 Dream Pipeline placement -> AC: use mechanism-level Agent OS wording, not mystical tagline copy.
- OQ6 Neural Link placement -> AC: frame Neural Link as the live-runtime possession bridge, not a generic chat widget.
- OQ7 proof point placement -> AC: keep May 2026 counts out of meta and JSON-LD descriptions; if used elsewhere, preserve merged/closed-only qualification.
- OQ8 naming -> AC: machine surfaces use
Neo.mjs; Neo is alternateName or anchored shorthand.
- OQ9 visible-copy backing -> AC: inspect and adjust portal visible-copy files so schema claims are page-backed.
- OQ10 social preview -> AC: add Open Graph basics; record Twitter/X card decision.
Decision Record Impact
aligned-with ADR 0018 and depends-on Discussion #12234's machine-spec graduation. This ticket graduates Discussion #12235 into executable work under Epic #12225.
Acceptance Criteria
Out of Scope
- Facts-only drift such as version, Node requirement, and MCP-server count; that remains #12231.
- Editing generated SEO outputs directly.
- Rewriting README, VISION, or
learn/benefits/ surfaces.
- Changing the canonical apex wording itself.
- Shipping unsupported social-card image promises.
Avoided Traps
- Treating the Brain / Agent OS as a second product-like
SoftwareApplication.
- Forking #12225 or ADR 0018 into a separate portal identity contract.
- Copying package-level long description text into the meta-description register.
- Putting informal operator-language or competitive slop wording into machine surfaces.
- Hiding unsupported claims inside JSON-LD without page-visible backing.
- Hand-editing generated files instead of the generator-owned source.
Related
- Parent epic: #12225
- Graduates: #12235
- Depends on machine-spec graduation: #12234
- Related facts-only sibling: #12231
- ADR 0018: Neo Identity Source-of-Truth Model
neo-identity-update skill
Origin Session ID
Origin Session ID: 87203e0b-c9ff-4a82-a67b-9a0dda760c32
Handoff Retrieval Hints
Retrieval Hint: "portal machine surfaces JSON-LD Open Graph organism apex"
Retrieval Hint: "Discussion 12235 Option B portal @graph Brain SoftwareSourceCode"
Retrieval Hint: "apps/portal/index.html agent-operating-system SoftwareApplication mistag"
Context
Discussion #12235 graduated the portal machine-surface shape for the identity apex rollout under Epic #12225. The work belongs under the existing identity rollout instead of a parallel portal contract because ADR 0018 and #12225 already define the affected-areas taxonomy for identity surfaces.
Observed evidence from the discussion and peer review:
apps/portal/index.htmlstill leads machine readers with the older "Application Engine for the AI Era" description register.og:*ortwitter:*tags.SoftwareApplicationblocks: one for the Body/runtime and one for the Brain/Agent OS. The second shape is the Brain-as-SoftwareApplicationmistag resolved by Discussion #12234.Pre-creation checks:
portal machine surfaces JSON-LD Open Graph apps/portal/index.html identity discussion 12235 duplicate issuefound no equivalent issue.ai,enhancement,documentation, andarchitectureexist.The Problem
The portal's most crawlable identity surface still describes Neo through the older runtime-only register and misclassifies the Brain / Agent OS as another application. That makes machine consumers read Neo as a web/application framework with a secondary product-like app node, instead of the now-canonical organism apex:
This is the exact category drift #12234 resolved. Leaving the portal JSON-LD, meta description, and social preview tags stale weakens the public machine-facing version of the identity rollout even after the apex itself graduated.
The Architectural Reality
This ticket touches
apps/portal/index.htmland only the visible portal copy needed to make JSON-LD claims page-backed. It is part of Epic #12225'sStructured-facts-in-codesurface class, aligned with ADR 0018 and theneo-identity-updateskill.The target machine topology is inherited from #12234 rather than redesigned here:
Neo.mjsNeoSoftwareApplication/ai:SoftwareSourceCodeOrganizationorProject, connected to the root graphFAQPage, still Schema.org-valid and page-visibleGenerated outputs such as
apps/portal/llms.txtand sitemap files remain governed bybuildScripts/docs/seo/generate.mjsunder #12225. Do not hand-edit generated output for this ticket.The Fix
Update the portal's machine-facing head and the minimum backing visible copy so crawlers, social previews, and AI readers receive the organism apex coherently.
Expected implementation shape:
SoftwareApplicationJSON-LD shape with a connected@graph, unless implementation V-B-A proves a minimal separate-script bridge is safer for validation.SoftwareSourceCode, notSoftwareApplication.<meta name="description">cut suitable for snippets, not the longer package-description form.Contract Ledger Matrix
apps/portal/index.html<title>/<meta>apps/portal/index.htmlOpen Graph tags@graph; Body =SoftwareApplication; Brain/ai=SoftwareSourceCode; institution connected@ids remain connectedbuildScripts/docs/seo/generate.mjsSignal Ledger
[RESOLVED_TO_AC]mapping in #12235 commentDC_kwDODSospM4BBTneon 2026-05-31.[GRADUATION_APPROVED by @neo-opus-ada]in #12235 commentDC_kwDODSospM4BBTngon 2026-05-31.DC_kwDODSospM4BBTjLverified the current portal evidence and endorsed Option B.Unresolved Dissent
None recorded after the corrected peer review. The only substantive correction was to fold the work into Epic #12225 and keep generated outputs out of this portal-index ticket; this body incorporates that correction.
Unresolved Liveness
Gemini is
operator_benchedinai/graph/identityRoots.mjsas of the graduation window. This is not a Tier-2 substrate change, so no extra Tier-2 revalidation AC is required. Cross-family PR review is still required before merge.Discussion Criteria Mapping
@graphor document a validation-driven minimal bridge; keep the #12234 machine-spec topology.SoftwareSourceCode, neverSoftwareApplication.Neo.mjs;NeoisalternateNameor anchored shorthand.Decision Record Impact
aligned-withADR 0018 anddepends-onDiscussion #12234's machine-spec graduation. This ticket graduates Discussion #12235 into executable work under Epic #12225.Acceptance Criteria
apps/portal/index.htmlno longer describes Neo only through the old runtime/application-engine register.<meta name="description">uses concise snippet-grade organism-apex copy and does not paste the longer package-description form.og:title,og:description,og:type, andog:url; image tags are present only with a verified asset or deliberately omitted with rationale.SoftwareApplication./ai, maintainer/institution, and FAQ.<meta>and JSON-LD descriptions; any visible/social use keeps the merged/closed-only qualifier.apps/portal/llms.txtand sitemap files are not hand-edited.Out of Scope
learn/benefits/surfaces.Avoided Traps
SoftwareApplication.Related
neo-identity-updateskillOrigin Session ID
Origin Session ID: 87203e0b-c9ff-4a82-a67b-9a0dda760c32
Handoff Retrieval Hints
Retrieval Hint: "portal machine surfaces JSON-LD Open Graph organism apex" Retrieval Hint: "Discussion 12235 Option B portal @graph Brain SoftwareSourceCode" Retrieval Hint: "apps/portal/index.html agent-operating-system SoftwareApplication mistag"