From 6e847054859b2f2fc4b7f0ae54f8c0c85e139252 Mon Sep 17 00:00:00 2001 From: Rob Jacques <2531474+robbyrob42@users.noreply.github.com> Date: Fri, 4 Sep 2026 18:04:36 -0700 Subject: [PATCH 1/3] feat(forensics): the Organization sameAs has its first real profile The LinkedIn company page exists and now lists forensic technical witness services among Root System's, which makes it the first URL that meets the bar this field was holding out for: a page that exists, that the practice controls, and that is demonstrably the same entity. The names do not match -- the Organization node is 'Root System Forensics' and the page is Root System's -- so the comment states the assumption rather than leaving a reader to infer it. The practice is a service line, not a separate company. If that ever changes, the entry moves to its own page and the relationship becomes parentOrganization. A Google Business Profile and a Crunchbase record are still missing; issue #80 tracks them, and each is its own entry when it exists. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01CpEXBMByKmpV1f9G7UUZhF --- sites/forensics/src/copy/landing.ts | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/sites/forensics/src/copy/landing.ts b/sites/forensics/src/copy/landing.ts index b90bb70..009fa7c 100644 --- a/sites/forensics/src/copy/landing.ts +++ b/sites/forensics/src/copy/landing.ts @@ -631,17 +631,27 @@ const copy: Landing = landingSchema.parse({ // Structured-data identity. Nothing here renders as visible copy. // - // EMPTY AND WAITING ON REAL URLS. `sameAs` should list canonical profiles - // that are demonstrably this practice -- a LinkedIn company page, a - // Crunchbase entry, a professional-society listing. It is the Knowledge Graph - // disambiguation signal and the cheapest trust signal available, but every - // entry has to be a page that exists and that the practice controls: a - // `sameAs` pointing at something that is not the same entity merges two - // entities in the index, which is worse than saying nothing. + // `sameAs` lists canonical profiles that are demonstrably this practice. It + // is the Knowledge Graph disambiguation signal and the cheapest trust signal + // available, but every entry has to be a page that exists and that the + // practice controls: a `sameAs` pointing at something that is not the same + // entity merges two entities in the index, which is worse than saying + // nothing. + // + // ASSUMPTION, stated because the names do not match. The Organization node + // is named 'Root System Forensics'; the LinkedIn page is Root System's. They + // are treated as one entity because they are one -- the forensics practice is + // a service line of Root System, not a separate company, and the company page + // now lists forensic technical witness services among them. If the practice + // is ever incorporated separately, this entry moves to its own page and the + // relationship becomes `parentOrganization` instead. + // + // Still missing, and each is a separate entry when it exists: a Google + // Business Profile and a Crunchbase record (issue #80). // // The same field exists per person on each expert profile below. organization: { - sameAs: [], + sameAs: ['https://www.linkedin.com/company/root-system-com/'], }, }) From 0be0554b5476b9fca6e1fbe06143dcb205d0d283 Mon Sep 17 00:00:00 2001 From: Rob Jacques <2531474+robbyrob42@users.noreply.github.com> Date: Fri, 4 Sep 2026 18:26:31 -0700 Subject: [PATCH 2/3] feat(forensics): the second ASMC 2000 paper, read off the ORCID record The profile listed one publication because one was what the older written bio recorded. The ORCID record now lists two, both from IEEE/SEMI ASMC 2000, and this adds the missing one: Evaluation of the yield impact of epitaxial defects on advanced semiconductor technologies -- doi 10.1109/asmc.2000.902550 Read from the public ORCID API rather than transcribed from memory, which is the same reason the profile was written from the LinkedIn export in the first place. Publications feed `subjectOf` on the Person node, so this is a schema change as well as a copy one: the markup now claims two ScholarlyArticles and the ORCID record in `sameAs` corroborates both, where before it resolved to a record with no works on it at all. The co-author line needs Rob's eye. ORCID's contributor list for the paper reads R. Williams, M. Akbulut, Wayne Chen -- followed by his own name five times, plainly an import artifact -- so the names are probably right and the list is not provably complete. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01CpEXBMByKmpV1f9G7UUZhF --- sites/forensics/src/copy/landing.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/sites/forensics/src/copy/landing.ts b/sites/forensics/src/copy/landing.ts index 009fa7c..bd754e1 100644 --- a/sites/forensics/src/copy/landing.ts +++ b/sites/forensics/src/copy/landing.ts @@ -584,6 +584,10 @@ const copy: Landing = landingSchema.parse({ }, ], affiliations: ['IEEE, 2000–2009'], + // Both papers are from the same conference, ASMC 2000, and both are on + // the ORCID record below, which is where these entries were read from + // rather than from memory. Each renders on the profile and feeds a + // `ScholarlyArticle` in the Person markup. publications: [ { title: @@ -591,18 +595,26 @@ const copy: Landing = landingSchema.parse({ where: 'IEEE/SEMI Advanced Semiconductor Manufacturing Conference, 2000', note: 'With Process Metrix/Insitec Measurement Systems, SEMATECH and Sandia National Laboratories.', }, + { + title: + 'Evaluation of the yield impact of epitaxial defects on advanced semiconductor technologies', + where: 'IEEE/SEMI Advanced Semiconductor Manufacturing Conference, 2000', + note: 'Co-authored with R. Williams, M. Akbulut and Wayne Chen.', + }, ], // Canonical profiles elsewhere, feeding `sameAs` in the Person markup. // Both were verified before being published here: the ORCID record // resolves to Rob Jacques through the public API, and the LinkedIn - // vanity URL is the one the profile copy was written from. + // vanity URL is the one the profile copy was written from. The ORCID + // record now lists both ASMC 2000 papers, so it corroborates the + // publications above instead of resolving to an empty record. // // ORCID is listed as the resolvable https:// form rather than the bare // identifier, because `sameAs` takes URLs and a bare ORCID is not one. // // No Google Scholar entry: a Scholar profile is a researcher page a // person claims at scholar.google.com, and there is no reason to create - // one around a single conference paper from 2000. If the practice starts + // one around two conference papers from 2000. If the practice starts // publishing, that changes. sameAs: [ 'https://www.linkedin.com/in/robertjacques1/', From a7d7a039434ff096b48308acafafd8f0e8e17bcd Mon Sep 17 00:00:00 2001 From: Rob Jacques <2531474+robbyrob42@users.noreply.github.com> Date: Fri, 4 Sep 2026 18:30:34 -0700 Subject: [PATCH 3/3] fix(forensics): both publication notes name co-authors in the same shape Rob confirmed the contributor lists off the ORCID record, which settles the open question on the previous commit and adds one the profile did not have: HiVol is R. Williams, E. Wickesberg, M. Bonin and D. Holve. That left the two entries in different framings -- one naming institutions, the other naming people -- which reads as carelessness on a page whose whole job is withstanding a credentials check. Both now name co-authors. HiVol keeps its institutions as well, because SEMATECH and Sandia carry weight the co-author list does not replace. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01CpEXBMByKmpV1f9G7UUZhF --- sites/forensics/src/copy/landing.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/sites/forensics/src/copy/landing.ts b/sites/forensics/src/copy/landing.ts index bd754e1..80e7ace 100644 --- a/sites/forensics/src/copy/landing.ts +++ b/sites/forensics/src/copy/landing.ts @@ -588,18 +588,25 @@ const copy: Landing = landingSchema.parse({ // the ORCID record below, which is where these entries were read from // rather than from memory. Each renders on the profile and feeds a // `ScholarlyArticle` in the Person markup. + // + // The notes name co-authors in the same shape for both, because two + // adjacent entries in different framings -- one listing institutions, the + // other people -- reads as carelessness on a page whose whole job is + // withstanding a credentials check. The HiVol note keeps its institutions + // as well: SEMATECH and Sandia are worth naming, and the co-authors do + // not replace them. publications: [ { title: 'Evaluation of the ‘HiVol’ above-wafer in-situ particle monitoring sensor', where: 'IEEE/SEMI Advanced Semiconductor Manufacturing Conference, 2000', - note: 'With Process Metrix/Insitec Measurement Systems, SEMATECH and Sandia National Laboratories.', + note: 'With R. Williams, E. Wickesberg, M. Bonin and D. Holve, across Process Metrix/Insitec Measurement Systems, SEMATECH and Sandia National Laboratories.', }, { title: 'Evaluation of the yield impact of epitaxial defects on advanced semiconductor technologies', where: 'IEEE/SEMI Advanced Semiconductor Manufacturing Conference, 2000', - note: 'Co-authored with R. Williams, M. Akbulut and Wayne Chen.', + note: 'With R. Williams, M. Akbulut and Wayne Chen.', }, ], // Canonical profiles elsewhere, feeding `sameAs` in the Person markup.