[



  
  
    
    {
      "title": "Morning Briefing — 08/12/26",
      "url": "/ptir-morning-briefing-2026-08-12/",
      "date": "2026-08-12T11:30:00+00:00",
      "updated": null,
      "subject": "PTIR",
      "tags": ["PTIR","AI","Claude","watermarking","C2PA","digital-provenance","assessment","cybersecurity","DDoS","Cloudflare","teaching"],
      "links": ["/ptir-evening-briefing-2026-08-11/","/ptir-evening-briefing-2026-08-02/","/ptir-evening-briefing-2026-08-06/"],
      "ecosystem_links": ["https://www.idtprof.net/ai-watermark-evidence-lab/","https://www.idtprof.net/ai-watermark-evidence-lab/","https://www.idtprof.net/ai-watermark-evidence-lab/"],
      "headings": [],
      "summary": "Verification cutoff: August 12, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 08/11/26",
      "url": "/ptir-evening-briefing-2026-08-11/",
      "date": "2026-08-11T23:30:00+00:00",
      "updated": null,
      "subject": "PTIR",
      "tags": ["PTIR","GitHub-Copilot","JetBrains","Ollama","local-LLM","GitHub","rulesets","cybersecurity","professional-development","teaching"],
      "links": ["/ptir-morning-briefing-2026-08-12/","/ptir-morning-briefing-2026-08-11/","/ptir-evening-briefing-2026-08-10/","/ptir-morning-briefing-2026-08-10/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 11, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 08/11/26",
      "url": "/ptir-morning-briefing-2026-08-11/",
      "date": "2026-08-11T11:30:00+00:00",
      "updated": null,
      "subject": "PTIR",
      "tags": ["PTIR","cybersecurity","Metabase","CVE-2026-72898","self-hosting","local-LLM","open-source","Meta","Muse-Glimmer","Ollama","Needle-2","edge-AI"],
      "links": ["/ptir-evening-briefing-2026-08-11/","/ptir-evening-briefing-2026-08-10/","/ptir-morning-briefing-2026-08-10/","/ptir-evening-briefing-2026-08-06/","/ptir-morning-briefing-2026-08-05/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 11, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 08/10/26",
      "url": "/ptir-evening-briefing-2026-08-10/",
      "date": "2026-08-10T23:30:00+00:00",
      "updated": null,
      "subject": "PTIR",
      "tags": ["PTIR","OpenAI","Codex","Claude-Code","agent-security","web-development","Python","Strype","computer-science-education","free-training"],
      "links": ["/ptir-morning-briefing-2026-08-11/","/ptir-morning-briefing-2026-08-10/","/ptir-morning-briefing-2026-08-06/","/ptir-evening-briefing-2026-08-04/","/ptir-evening-briefing-2026-08-01/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 10, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 08/10/26",
      "url": "/ptir-morning-briefing-2026-08-10/",
      "date": "2026-08-10T11:30:00+00:00",
      "updated": null,
      "subject": "PTIR",
      "tags": ["PTIR","Fedora","Linux","self-hosting","storage-integrity","SMART","Performance-Co-Pilot","AI","coding-agents","Kubernetes","MCP","open-source"],
      "links": ["/ptir-evening-briefing-2026-08-10/","/ptir-evening-briefing-2026-08-09/","/ptir-morning-briefing-2026-08-06/","/ptir-evening-briefing-2026-08-06/","/ptir-morning-briefing-2026-08-05/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 10, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 08/09/26",
      "url": "/ptir-evening-briefing-2026-08-09/",
      "date": "2026-08-09T23:30:00+00:00",
      "updated": null,
      "subject": "PTIR",
      "tags": ["PTIR","self-hosting","Linux","network-monitoring","Pingularity","AI","local-LLM","ESP32","TinyML","teaching"],
      "links": ["/ptir-morning-briefing-2026-08-10/","/ptir-morning-briefing-2026-08-09/","/ptir-morning-briefing-2026-08-05/","/ptir-morning-briefing-2026-08-06/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 9, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 08/09/26",
      "url": "/ptir-morning-briefing-2026-08-09/",
      "date": "2026-08-09T11:30:00+00:00",
      "updated": null,
      "subject": "PTIR",
      "tags": ["PTIR","Google-Workspace","cybersecurity","two-step-verification","Rust","Polonius","programming-languages","teaching"],
      "links": ["/ptir-evening-briefing-2026-08-09/","/ptir-evening-briefing-2026-08-08/","/ptir-morning-briefing-2026-08-08/","/ptir-evening-briefing-2026-08-07/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 9, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 08/08/26",
      "url": "/ptir-evening-briefing-2026-08-08/",
      "date": "2026-08-08T23:30:00+00:00",
      "updated": null,
      "subject": "PTIR",
      "tags": ["PTIR","LinkedIn","cybersecurity","two-factor-authentication","Java","Spring-Boot","Spring-AI","professional-development"],
      "links": ["/ptir-morning-briefing-2026-08-09/","/ptir-morning-briefing-2026-08-08/","/ptir-evening-briefing-2026-08-07/","/ptir-evening-briefing-2026-08-04/","/ptir-morning-briefing-2026-08-04/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 8, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 08/08/26",
      "url": "/ptir-morning-briefing-2026-08-08/",
      "date": "2026-08-08T11:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","Google","account-security","cybersecurity","Gmail","PKb"],
      "links": ["/ptir-evening-briefing-2026-08-08/","/ptir-evening-briefing-2026-08-07/","/ptir-morning-briefing-2026-08-06/","/ptir-evening-briefing-2026-08-03/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 8, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 08/07/26",
      "url": "/ptir-evening-briefing-2026-08-07/",
      "date": "2026-08-07T23:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","OpenAI","cybersecurity","ChatGPT","AI","Cloudflare-Radar","teaching"],
      "links": ["/ptir-morning-briefing-2026-08-08/","/ptir-morning-briefing-2026-08-07/","/ptir-morning-briefing-2026-08-06/","/ptir-evening-briefing-2026-08-06/","/ptir-evening-briefing-2026-08-03/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 7, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 08/07/26",
      "url": "/ptir-morning-briefing-2026-08-07/",
      "date": "2026-08-07T11:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","agent-plugins","CSTA","teaching","Deno","self-hosting","open-source"],
      "links": ["/ptir-evening-briefing-2026-08-07/","/ptir-evening-briefing-2026-08-06/","/ptir-morning-briefing-2026-08-06/","/ptir-evening-briefing-2026-08-04/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 7, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 08/06/26",
      "url": "/ptir-evening-briefing-2026-08-06/",
      "date": "2026-08-06T23:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","cybersecurity","Langflow","Tomcat","WebMCP","GitHub-Copilot","AI"],
      "links": ["/ptir-morning-briefing-2026-08-07/","/ptir-morning-briefing-2026-08-06/","/ptir-morning-briefing-2026-08-05/","/ptir-evening-briefing-2026-08-03/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 6, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 08/06/26",
      "url": "/ptir-morning-briefing-2026-08-06/",
      "date": "2026-08-06T11:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","Cloudflare","AI","open-source","agent-security","self-hosting"],
      "links": ["/ptir-evening-briefing-2026-08-06/","/ptir-evening-briefing-2026-08-05/","/ptir-morning-briefing-2026-08-05/","/ptir-morning-briefing-2026-08-04/","/ptir-evening-briefing-2026-08-03/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 6, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 08/05/26",
      "url": "/ptir-evening-briefing-2026-08-05/",
      "date": "2026-08-05T23:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","AI","coding-agents","privacy","programming"],
      "links": ["/ptir-morning-briefing-2026-08-06/","/ptir-morning-briefing-2026-08-05/","/ptir-evening-briefing-2026-08-04/","/ptir-evening-briefing-2026-08-03/","/ptir-morning-briefing-2026-08-02/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 5, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 08/05/26",
      "url": "/ptir-morning-briefing-2026-08-05/",
      "date": "2026-08-05T11:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","Fedora","Ollama","Podman","Kotlin","CodeQL","professional-development"],
      "links": ["/ptir-evening-briefing-2026-08-05/","/ptir-evening-briefing-2026-08-04/","/ptir-evening-briefing-2026-08-03/","/ptir-morning-briefing-2026-08-01/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 5, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 08/04/26",
      "url": "/ptir-evening-briefing-2026-08-04/",
      "date": "2026-08-04T23:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","Kotlin","teaching","AI","open-source"],
      "links": ["/ptir-morning-briefing-2026-08-05/","/ptir-morning-briefing-2026-08-04/","/ptir-morning-briefing-2026-08-02/","/ptir-evening-briefing-2026-08-01/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 4, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 08/04/26",
      "url": "/ptir-morning-briefing-2026-08-04/",
      "date": "2026-08-04T11:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","Next.js","Cloudflare","AI","open-source","professional-development"],
      "links": ["/ptir-evening-briefing-2026-08-04/","/ptir-evening-briefing-2026-08-03/","/ptir-morning-briefing-2026-08-03/","/ptir-morning-briefing-2026-08-01/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 4, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 08/03/26",
      "url": "/ptir-evening-briefing-2026-08-03/",
      "date": "2026-08-03T23:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","cybersecurity","AI","open-source","GitHub","professional-development"],
      "links": ["/ptir-morning-briefing-2026-08-04/","/ptir-morning-briefing-2026-08-03/","/ptir-morning-briefing-2026-08-01/","/ptir-morning-briefing-2026-07-30/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 3, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 08/03/26",
      "url": "/ptir-morning-briefing-2026-08-03/",
      "date": "2026-08-03T11:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","AI","OpenAI","Kubernetes","Linux","web-development"],
      "links": ["/ptir-evening-briefing-2026-08-03/","/ptir-evening-briefing-2026-08-02/","/ptir-morning-briefing-2026-08-02/","/ptir-morning-briefing-2026-08-01/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 3, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 08/02/26",
      "url": "/ptir-evening-briefing-2026-08-02/",
      "date": "2026-08-02T23:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","ai","regulation","transparency","teaching"],
      "links": ["/ptir-morning-briefing-2026-08-03/","/ptir-morning-briefing-2026-08-02/","/ptir-morning-briefing-2026-08-01/","/ptir-evening-briefing-2026-08-01/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 2, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 08/02/26",
      "url": "/ptir-morning-briefing-2026-08-02/",
      "date": "2026-08-02T11:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","github","ai","open-source","retro-computing"],
      "links": ["/ptir-evening-briefing-2026-08-02/","/ptir-morning-briefing-2026-07-31/","/ptir-evening-briefing-2026-07-31/","/ptir-morning-briefing-2026-08-01/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 2, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 08/01/26",
      "url": "/ptir-evening-briefing-2026-08-01/",
      "date": "2026-08-01T23:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","python","teaching","web-tools"],
      "links": ["/ptir-morning-briefing-2026-07-31/","/ptir-morning-briefing-2026-08-01/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 1, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 08/01/26",
      "url": "/ptir-morning-briefing-2026-08-01/",
      "date": "2026-08-01T11:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","technology"],
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: August 1, 2026, 6:30 a.m. Central."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 07/31/26",
      "url": "/ptir-evening-briefing-2026-07-31/",
      "date": "2026-07-31T23:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","technology"],
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: July 31, 2026, evening edition."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 07/31/26",
      "url": "/ptir-morning-briefing-2026-07-31/",
      "date": "2026-07-31T11:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","technology"],
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Verification cutoff: July 31, 2026, morning edition."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 07/30/26",
      "url": "/ptir-evening-briefing-2026-07-30/",
      "date": "2026-07-30T23:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","security","teaching","AI","OpenWrt"],
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": "If you have 10–15 minutes tonight: determine whether any router you manage runs OpenWrt, register for a free Figma educator series if it fits an upcoming course plan, and note that GPT-5.6 Luna and Terra became substa..."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 07/30/26",
      "url": "/ptir-morning-briefing-2026-07-30/",
      "date": "2026-07-30T11:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","teaching","security","API","AI"],
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": "If you have 10–15 minutes this morning: scan the new CSTA high-school standards, save one current developer-security case, and decide whether a free weather API belongs in a future classroom demo. A new Apple Silicon ..."
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 07/29/26",
      "url": "/ptir-evening-briefing-2026-07-29/",
      "date": "2026-07-29T23:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","security","webdev","AI","teaching"],
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": "If you have 10–15 minutes tonight: register for one free professional-development event, then save two sharply teachable security cases. Nothing from the Spam/Trash recovery pass met the bar for inclusion."
    }
    
  

  
  
    ,
    {
      "title": "Morning Briefing — 07/29/26",
      "url": "/ptir-morning-briefing-2026-07-29/",
      "date": "2026-07-29T11:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","AI","security","teaching","GitHub"],
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Executive Summary"
    }
    
  

  
  
    ,
    {
      "title": "Evening Briefing — 07/28/26",
      "url": "/ptir-evening-briefing-2026-07-28/",
      "date": "2026-07-28T23:30:00+00:00",
      "updated": null,
      "subject": "briefing",
      "tags": ["PTIR","AI","security","courses","GitHub"],
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Executive Summary"
    }
    
  

  
  
    ,
    {
      "title": "Open-sourced, at last",
      "url": "/news/2016/10/03/open-sourced-at-last/",
      "date": "2016-10-03T00:00:00+00:00",
      "updated": null,
      "subject": "open-source",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Archive note: This 2016 technology reflection was originally published on idtprof.net. Its preserved illustration remains at an immutable legacy-media URL on idtprof.net while historical media is consolidated."
    }
    
  

  
  
    ,
    {
      "title": "Would you like to play a game?",
      "url": "/news/2016/09/29/would-you-like-to-play-a-game/",
      "date": "2016-09-29T00:00:00+00:00",
      "updated": null,
      "subject": "retro-computing",
      "tags": "",
      "links": ["/assets/code/camel-transcription.bas"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Preservation note: This is a preserved retro-computing artifact originally published on idtprof.net in 2016. The two magazine scans below are the surviving original source for this restoration. The historical program ..."
    }
    
  

  
  
    ,
    {
      "title": "Why IT support is hated",
      "url": "/news/2016/03/29/why-it-support-is-hated/",
      "date": "2016-03-29T22:43:00+00:00",
      "updated": null,
      "subject": "support",
      "tags": "",
      "links": [],
      "ecosystem_links": ["https://www.paco.org/the-age-of-marvels/"],
      "headings": [],
      "summary": "Archive note: Originally published on paco.org on March 29, 2016. The browsers in the story are historical; the troubleshooting lesson is the reason the piece remains worth preserving. The original paco.org URL remain..."
    }
    
  

  
  
    ,
    {
      "title": "DEMO BRAG — A BASIC program from the past",
      "url": "/news/2016/03/18/demo-brag-a-basic-program-from-the-past/",
      "date": "2016-03-18T00:00:00+00:00",
      "updated": null,
      "subject": "retro-computing",
      "tags": "",
      "links": ["/assets/code/demo-brag.bas"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Restoration note: The original 2016 page depended on a Replit embed that is no longer a durable archive. In 2026, the surviving BASIC source was recovered from idtprof/code/basic/demo-brag.bas and preserved here. The ..."
    }
    
  

  
  
    ,
    {
      "title": "A programmer, again",
      "url": "/news/2013/01/23/a-programmer-again/",
      "date": "2013-01-23T17:18:47+00:00",
      "updated": null,
      "subject": "programming",
      "tags": "",
      "links": [],
      "ecosystem_links": ["https://www.paco.org/twenty-thirteen/"],
      "headings": [],
      "summary": "Archive note: Originally published on paco.org on January 23, 2013. The prose was rehabilitated during the 2026 editorial review and is preserved here as technology-career writing; the original paco.org URL remains as..."
    }
    
  

  
  
    ,
    {
      "title": "Contact",
      "url": "/contact/",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Contact information for paco.io and Francisco I. Rodríguez."
    }
    
  

  
  

  
  

  
  
    ,
    {
      "title": "Getting Started",
      "url": "/vault/getting-started/",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": "How to open and manage this site using Obsidian."
    }
    
  

  
  
    ,
    {
      "title": "Personal Technology Intelligence Report",
      "url": "/ptir/",
      "date": null,
      "updated": null,
      "subject": "operated-publication",
      "tags": "",
      "links": ["/ptir/feed.xml","/ptir-morning-briefing-2026-08-12/","/ptir-evening-briefing-2026-08-11/","/ptir-morning-briefing-2026-08-11/","/ptir-evening-briefing-2026-08-10/","/ptir-morning-briefing-2026-08-10/","/ptir-evening-briefing-2026-08-09/","/ptir-morning-briefing-2026-08-09/","/ptir-evening-briefing-2026-08-08/","/ptir-morning-briefing-2026-08-08/","/ptir-evening-briefing-2026-08-07/","/ptir-morning-briefing-2026-08-07/","/ptir-evening-briefing-2026-08-06/","/ptir-morning-briefing-2026-08-06/","/ptir-evening-briefing-2026-08-05/","/ptir-morning-briefing-2026-08-05/","/ptir-evening-briefing-2026-08-04/","/ptir-morning-briefing-2026-08-04/","/ptir-evening-briefing-2026-08-03/","/ptir-morning-briefing-2026-08-03/","/ptir-evening-briefing-2026-08-02/","/ptir-morning-briefing-2026-08-02/","/ptir-evening-briefing-2026-08-01/","/ptir-morning-briefing-2026-08-01/","/ptir-evening-briefing-2026-07-31/","/ptir-morning-briefing-2026-07-31/","/ptir-evening-briefing-2026-07-30/","/ptir-morning-briefing-2026-07-30/","/ptir-evening-briefing-2026-07-29/","/ptir-morning-briefing-2026-07-29/","/ptir-evening-briefing-2026-07-28/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "AI-assisted technology intelligence, opportunities, tools, learning, and resources."
    }
    
  

  
  
    ,
    {
      "title": "PACO.IO — Technology",
      "url": "/",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": ["/ptir-morning-briefing-2026-08-12/","/ptir-evening-briefing-2026-08-11/","/ptir-morning-briefing-2026-08-11/","/ptir-evening-briefing-2026-08-10/","/ptir-morning-briefing-2026-08-10/","/ptir-evening-briefing-2026-08-09/","/ptir-morning-briefing-2026-08-09/","/ptir-evening-briefing-2026-08-08/","/ptir/","/ptir/feed.xml","/news/2016/10/03/open-sourced-at-last/","/news/2016/09/29/would-you-like-to-play-a-game/","/news/2016/03/29/why-it-support-is-hated/","/news/2016/03/18/demo-brag-a-basic-program-from-the-past/","/news/2013/01/23/a-programmer-again/","/wtf/spaced.html","/contact/","/feed.xml"],
      "ecosystem_links": ["https://www.paco.org/","https://www.idtprof.net/"],
      "headings": [],
      "summary": "Technology news, PTIR, commentary, projects, and notes. Dial in."
    }
    
  

  
  
    ,
    {
      "title": "Links",
      "url": "/links/",
      "date": null,
      "updated": null,
      "subject": "reference",
      "tags": ["jekyll","github-pages","web-development","site-history"],
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": ""
    }
    
  

  
  
    ,
    {
      "title": "Retro Design System",
      "url": "/vault/retro-design/",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": ["/vault/getting-started/"],
      "ecosystem_links": [],
      "headings": [],
      "summary": "Exploring the oldschool aesthetics and retro PC fonts behind paco.io."
    }
    
  

  
  

  
  

  
  
    ,
    {
      "title": "SPACED INVADERS - PACO.IO",
      "url": "/wtf/spaced.html",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": ""
    }
    
  

  
  
    ,
    {
      "title": "style.scss",
      "url": "/assets/css/style.css",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": ""
    }
    
  

  
  
    ,
    {
      "title": "PACO.IO Typography Laboratory",
      "url": "/experiments/typography-lab/",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": [],
      "summary": ""
    }
    
  

  
  
    ,
    {
      "title": "Universal Resource Authorization Policy",
      "url": "/AGENTS/",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": ["Universal Resource Authorization Policy\n\n## Default Deny\n\nAll resources are denied by default.\n\nA resource may be:\n\n* A folder\n* A file\n* A repository\n* A drive\n* A network share\n* A cloud storage location\n* An application\n* A website\n* An API\n* A database\n* A device\n\nNo resource is authorized unless explicitly approved for the current task.\n\n## Scope Verification\n\nBefore beginning work, the agent must identify the resources it believes are authorized for the task.\n\nExample:\n\nAuthorized Resources:\n* /projects/example\n* github.com/example/repository\n\nNo other resources are authorized.\n\nIf the scope is unclear, the agent must ask for clarification before proceeding.\n\n## User-Directed Access Only\n\nThe user identifies the resources relevant to a task.\n\nThe agent may access only those resources.\n\nThe agent must never discover, search for, enumerate, inventory, inspect, or utilize additional resources without explicit permission.\n\n## No Autonomous Discovery\n\nDo not:\n\n* Scan file systems\n* Browse folders\n* Enumerate drives\n* Enumerate repositories\n* Inventory devices\n* Search cloud storage\n* Crawl websites\n* Explore network resources\n* Query indexes or search services\n* Inspect application histories\n* Review recent files lists\n* Examine bookmarks, caches, or logs\n\nThe agent's role is to work on the resources provided by the user, not to locate resources on the user's behalf.\n\n## Indirect Discovery Prohibited\n\nThe agent must not infer, inspect, or utilize information from unauthorized resources even if such resources become visible through:\n\n* Directory listings\n* Search results\n* IDE workspaces\n* System indexes\n* Recent files lists\n* Application histories\n* Bookmarks\n* Logs\n* Caches\n* Metadata\n* Error messages\n* Auto-complete suggestions\n\nVisibility does not imply authorization.\n\n## Resource Expansion Procedure\n\nIf additional resources appear necessary:\n\n1. Stop.\n2. Explain why the resource is needed.\n3. Identify the specific resource requested.\n4. Explain the minimum access required.\n5. Wait for approval.\n\nDo not access the resource until approval is granted.\n\n## Project-Based Authorization\n\nAuthorization applies only to the current project.\n\nApproval for one project does not grant access to:\n\n* Other projects\n* Other repositories\n* Other folders\n* Other devices\n* Other sessions\n* Other user accounts\n* Other storage locations\n\nAuthorization does not persist between tasks unless explicitly renewed by the user.\n\n## Least-Privilege Principle\n\nAccess only the minimum information required to complete the task.\n\nRead less.\n\nModify less.\n\nCollect less.\n\nStore less.\n\nRetain less.\n\n## Read, Modify, and Delete Are Separate Permissions\n\nRead permission does not imply modification permission.\n\nModification permission does not imply deletion permission.\n\nDeletion permission does not imply permission to recreate, move, rename, or overwrite resources.\n\nDestructive actions require explicit approval.\n\nExamples include:\n\n* Delete\n* Move\n* Rename\n* Overwrite\n* Force-push\n* Database migration\n* Bulk refactoring\n* Bulk file operations\n\n## Tool Restrictions\n\nThe agent may not invoke tools that reveal additional resources unless those tools are necessary for an explicitly authorized resource and have been approved for the task.\n\nExamples include:\n\n* File search tools\n* Repository search tools\n* Desktop indexing tools\n* Cloud inventory tools\n* Network discovery tools\n* Resource enumeration tools\n\n## External Communication Control\n\nThe agent must not transmit project data to external services unless:\n\n1. The service is identified.\n2. The purpose is explained.\n3. Approval is granted.\n\nApproval for one external service does not imply approval for any other service.\n\n## No Assumptions\n\nDo not assume permission because:\n\n* The resource exists.\n* The resource is nearby.\n* The resource appears related.\n* The resource was previously accessed.\n* Access would be convenient.\n* Another agent was granted access.\n* The user authorized a similar resource.\n\nOnly explicit authorization grants access.\n\n## Data Retention and Memory\n\nInformation learned during a project must not be retained, indexed, summarized, referenced, or reused outside the authorized project unless explicitly permitted by the user.\n\nCompletion of a task does not imply continuing authorization.\n\n## Auditability\n\nWhen requested, provide:\n\n* Resources accessed\n* Resources modified\n* Resources created\n* Resources deleted\n* Commands executed\n* Tools invoked\n* External services contacted\n* Data transmitted outside the authorized environment\n\nThe audit log must be limited to actions actually performed.\n\n## Uncertainty Rule\n\nWhen uncertain:\n\n1. Follow the most restrictive interpretation.\n2. Request clarification.\n3. Do not proceed until clarification is received.\n\n## Final Rule\n\nThe user defines scope.\n\nThe agent does not expand scope.\n\nNo discovery, enumeration, access, modification, transmission, or retention is permitted beyond explicitly authorized resources.\n\nWhen uncertain, ask."],
      "summary": ""
    }
    
  

  
  
    ,
    {
      "title": "EI-7.4 — paco.io Technology Publication Architecture",
      "url": "/docs/EI-7.4-PACO-IO-TECHNOLOGY-PUBLICATION-ARCHITECTURE/",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": ["EI-7.4 — paco.io Technology Publication Architecture\n\nStatus: COMPLETE\nDate: 2026-08-08\n\n## Decision\n\npaco.io is the **technology publication** in the Francisco Rodríguez web ecosystem.\n\nIts role includes:\n\n- general technology news and curated reporting;\n- PTIR;\n- technology commentary;\n- projects, experiments, and tools;\n- selected technical notes and digital-garden material.\n\nThe existing Antigravity-built retro terminal / Obsidian-vault interface is a preservation constraint and a design asset. EI-7.4 extends the editorial architecture inside that system rather than replacing it with a conventional blog design.\n\n## Preservation baseline\n\nThe following existing behaviors are intentionally preserved:\n\n- retro terminal/CRT visual identity;\n- Phosphor Green, Classic Amber, Neon Cyberpunk, and Print Paper themes;\n- CRT preference control;\n- Vault Explorer and search;\n- Obsidian-style Markdown publishing;\n- backlinks and vault navigation;\n- keyboard/terminal interaction patterns;\n- existing `vault/` and `wtf/` content;\n- GitHub Pages/Jekyll deployment model.\n\n## Publication model\n\n### Technology News\n\nJekyll posts become the chronological technology-publication stream. New posts default to:\n\n```yaml\ncontent_type: technology-news\npublication: paco.io\n```\n\nCurated reporting should include source metadata where practical, such as:\n\n```yaml\nsource_name: Example Publication\nsource_url: https://example.com/original-story\neditorial_mode: curated\n```\n\nOriginal technology commentary can instead use:\n\n```yaml\ncontent_type: commentary\neditorial_mode: original\n```\n\nOutside reporting should be linked and summarized rather than reproduced.\n\n### PTIR\n\n`/ptir/` is established as PTIR's permanent destination architecture.\n\nPTIR is explicitly an AI-assisted operated publication, not a Francisco-authored personal Blog. PTIR content should use:\n\n```yaml\npublication: PTIR\ncontent_type: operated-publication\nai_assisted: true\n```\n\nEI-7.4 does not migrate or delete historical PTIR editions. That work belongs to EI-7.5.\n\n### Vault / projects\n\nThe Vault remains a first-class technical-notes and project environment. It complements the news/publication stream rather than serving as paco.io's sole identity.\n\n## Ecosystem boundaries\n\n- **paco.org:** personal publication, Blog, entertainment, social/check-in material, career identity, and historical archive.\n- **idtprof.net:** technology education publication, lessons/course resources, education news, and news relevant to teaching subjects.\n- **paco.io:** technology news, PTIR, technology commentary, projects/tools, and technical digital-garden material.\n- **firg.xyz / idtprof/portal:** operational teaching dashboard; read-only unless explicitly authorized.\n\n## EI-7.5 destination contract\n\nPTIR migration must account for:\n\n1. all existing paco.org PTIR edition URLs;\n2. `/ptir/` landing-page continuity;\n3. canonical destinations and redirects;\n4. RSS/feed subscribers;\n5. publishing automation targets;\n6. historical publication dates and edition identity;\n7. cross-links among old and new reports;\n8. explicit AI-assisted/operated authorship metadata;\n9. search/indexing continuity;\n10. rollback safety until the new paco.io archive is verified.\n\nThe paco.org privacy exclusion remains absolute: historical DELETE material, including protected material involving Ben and/or Sophie and associated excluded media, must never enter PTIR migration or production sources.\n\n## EI-7.5 recommendation\n\nProceed with a staged PTIR extraction:\n\n1. inventory the existing paco.org PTIR corpus and current automation/feed behavior;\n2. implement the paco.io PTIR post/archive/feed model;\n3. copy and verify historical PTIR editions without deleting paco.org originals;\n4. update publishing automation to paco.io;\n5. establish canonical/redirect behavior;\n6. verify links, feeds, dates, and indexing;\n7. only then retire duplicate serving behavior on paco.org."],
      "summary": ""
    }
    
  

  
  
    ,
    {
      "title": "EI-7.5 — PTIR Extraction &amp; Migration Closeout",
      "url": "/docs/EI-7.5-PTIR-EXTRACTION-MIGRATION-CLOSEOUT/",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": ["EI-7.5 — PTIR Extraction & Migration Closeout\n\nStatus: COMPLETE  \nDate: 2026-08-08\n\n## Outcome\n\nThe Personal Technology Intelligence Report (PTIR) has moved from paco.org to paco.io as an AI-assisted operated technology publication.\n\n## Historical archive\n\n- 23 production editions were migrated, spanning July 28 through August 8, 2026.\n- Original publication dates, titles, bodies, and explicit permalink paths were preserved.\n- The archive recognizes historical `series: PTIR` metadata and the one legacy `categories: PTIR` edition without rewriting the historical body content.\n- `/ptir/` is the canonical paco.io publication index.\n- `/ptir/feed.xml` is the PTIR-specific Atom feed and contains all 23 historical editions at migration closeout.\n- General Technology News discovery on the paco.io homepage excludes PTIR, keeping the operated publication distinct from the general news stream.\n\n## Source continuity\n\npaco.org retains the historical source in Git history but no longer serves PTIR as a local publication. Its 23 historical PTIR permalink paths now redirect to the identical path at `https://paco.io`, and `/ptir/` redirects to `https://paco.io/ptir/`.\n\nA dedicated paco.org migration quality gate verifies:\n\n- exactly 23 historical PTIR source posts;\n- each source permalink maps to the corresponding paco.io URL;\n- PTIR metadata remains explicit;\n- the legacy PTIR category does not return;\n- the paco.org PTIR landing route points to paco.io.\n\n## Publishing automation\n\nThe active PTIR scheduler was updated after both destination and source deployments succeeded.\n\nFuture runs now:\n\n1. research and verify the edition;\n2. publish the public edition to `idtprof/paco.io`;\n3. use operated-publication metadata (`publication: PTIR`, `series: PTIR`, `content_type: operated-publication`, `ai_assisted: true`, `editorial_mode: operated`);\n4. use a neutral public voice on paco.io rather than addressing Francisco directly;\n5. email the personalized HTML edition to `ptir@paco.org`;\n6. never create a new PTIR post in `idtprof/pacodotorg`.\n\n## Validation\n\nThe migration was staged on a dedicated branch before production.\n\nThe migration validator confirmed:\n\n- full Jekyll build success;\n- 23 migrated post files;\n- `/ptir/` output;\n- `/ptir/feed.xml` output;\n- first and last historical edition routes;\n- exactly 23 Atom feed entries;\n- archive discovery of both the inaugural and latest historical editions.\n\nThe verified migration branch was merged as paco.io commit `3f5d386a0f7d0830993a47d6bdda792be8390c02`, and its GitHub Pages build and deployment both completed successfully.\n\nThe paco.org continuity cutover was merged as commit `53fc3cc05e4f8926e3b9871c465f9ec16ab1b959`; its existing editorial/experience gate, new PTIR migration gate, Jekyll build, and Pages deployment all completed successfully.\n\n## Cleanup\n\nTemporary one-shot migration workflows, triggers, and branch-only validation machinery were removed from paco.io after successful production deployment.\n\n## Privacy and provenance\n\nNo EI-1 historical DELETE material was used as a migration source. The protected Ben/Sophie corpus and excluded associated media remain outside production and migration workflows.\n\n## Remaining EI-7 work\n\nEI-7.6 should now concentrate on ecosystem-wide cross-domain navigation, canonical ownership cues, and remaining legacy/duplicate routes beyond PTIR. EI-7.7 should perform final route, feed, deployment, authorship, and duplication validation across paco.org, idtprof.net, paco.io, and read-only firg.xyz."],
      "summary": ""
    }
    
  

  
  
    ,
    {
      "title": "Universal Resource Authorization Policy",
      "url": "/docs/UNIVERSAL_RESOURCE_AUTHORIZATION_POLICY/",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": ["Universal Resource Authorization Policy\n\n## Default Deny\n\nAll resources are denied by default.\n\nA resource may be:\n\n* A folder\n* A file\n* A repository\n* A drive\n* A network share\n* A cloud storage location\n* An application\n* A website\n* An API\n* A database\n* A device\n\nNo resource is authorized unless explicitly approved for the current task.\n\n## Scope Verification\n\nBefore beginning work, the agent must identify the resources it believes are authorized for the task.\n\nExample:\n\nAuthorized Resources:\n* /projects/example\n* github.com/example/repository\n\nNo other resources are authorized.\n\nIf the scope is unclear, the agent must ask for clarification before proceeding.\n\n## User-Directed Access Only\n\nThe user identifies the resources relevant to a task.\n\nThe agent may access only those resources.\n\nThe agent must never discover, search for, enumerate, inventory, inspect, or utilize additional resources without explicit permission.\n\n## No Autonomous Discovery\n\nDo not:\n\n* Scan file systems\n* Browse folders\n* Enumerate drives\n* Enumerate repositories\n* Inventory devices\n* Search cloud storage\n* Crawl websites\n* Explore network resources\n* Query indexes or search services\n* Inspect application histories\n* Review recent files lists\n* Examine bookmarks, caches, or logs\n\nThe agent's role is to work on the resources provided by the user, not to locate resources on the user's behalf.\n\n## Indirect Discovery Prohibited\n\nThe agent must not infer, inspect, or utilize information from unauthorized resources even if such resources become visible through:\n\n* Directory listings\n* Search results\n* IDE workspaces\n* System indexes\n* Recent files lists\n* Application histories\n* Bookmarks\n* Logs\n* Caches\n* Metadata\n* Error messages\n* Auto-complete suggestions\n\nVisibility does not imply authorization.\n\n## Resource Expansion Procedure\n\nIf additional resources appear necessary:\n\n1. Stop.\n2. Explain why the resource is needed.\n3. Identify the specific resource requested.\n4. Explain the minimum access required.\n5. Wait for approval.\n\nDo not access the resource until approval is granted.\n\n## Project-Based Authorization\n\nAuthorization applies only to the current project.\n\nApproval for one project does not grant access to:\n\n* Other projects\n* Other repositories\n* Other folders\n* Other devices\n* Other sessions\n* Other user accounts\n* Other storage locations\n\nAuthorization does not persist between tasks unless explicitly renewed by the user.\n\n## Least-Privilege Principle\n\nAccess only the minimum information required to complete the task.\n\nRead less.\n\nModify less.\n\nCollect less.\n\nStore less.\n\nRetain less.\n\n## Read, Modify, and Delete Are Separate Permissions\n\nRead permission does not imply modification permission.\n\nModification permission does not imply deletion permission.\n\nDeletion permission does not imply permission to recreate, move, rename, or overwrite resources.\n\nDestructive actions require explicit approval.\n\nExamples include:\n\n* Delete\n* Move\n* Rename\n* Overwrite\n* Force-push\n* Database migration\n* Bulk refactoring\n* Bulk file operations\n\n## Tool Restrictions\n\nThe agent may not invoke tools that reveal additional resources unless those tools are necessary for an explicitly authorized resource and have been approved for the task.\n\nExamples include:\n\n* File search tools\n* Repository search tools\n* Desktop indexing tools\n* Cloud inventory tools\n* Network discovery tools\n* Resource enumeration tools\n\n## External Communication Control\n\nThe agent must not transmit project data to external services unless:\n\n1. The service is identified.\n2. The purpose is explained.\n3. Approval is granted.\n\nApproval for one external service does not imply approval for any other service.\n\n## No Assumptions\n\nDo not assume permission because:\n\n* The resource exists.\n* The resource is nearby.\n* The resource appears related.\n* The resource was previously accessed.\n* Access would be convenient.\n* Another agent was granted access.\n* The user authorized a similar resource.\n\nOnly explicit authorization grants access.\n\n## Data Retention and Memory\n\nInformation learned during a project must not be retained, indexed, summarized, referenced, or reused outside the authorized project unless explicitly permitted by the user.\n\nCompletion of a task does not imply continuing authorization.\n\n## Auditability\n\nWhen requested, provide:\n\n* Resources accessed\n* Resources modified\n* Resources created\n* Resources deleted\n* Commands executed\n* Tools invoked\n* External services contacted\n* Data transmitted outside the authorized environment\n\nThe audit log must be limited to actions actually performed.\n\n## Uncertainty Rule\n\nWhen uncertain:\n\n1. Follow the most restrictive interpretation.\n2. Request clarification.\n3. Do not proceed until clarification is received.\n\n## Final Rule\n\nThe user defines scope.\n\nThe agent does not expand scope.\n\nNo discovery, enumeration, access, modification, transmission, or retention is permitted beyond explicitly authorized resources.\n\nWhen uncertain, ask."],
      "summary": ""
    }
    
  

  
  
    ,
    {
      "title": "PACO.IO Performance Baseline — 2026-08-12",
      "url": "/docs/performance-baseline-2026-08-12/",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": ["PACO.IO Performance Baseline — 2026-08-12\n\nStatus: Phase P4.1 baseline\n\nThis is a bounded steady-state performance record. It does not reopen EI modernization.\n\n## Baseline head\n\nMeasured from `4e99f9307aa663ec58a633e3b57926324844d9e4` after Phase 3 completed.\n\n## Primary runtime surfaces\n\nRepository source sizes at the baseline head:\n\n- `_layouts/default.html`: ~20.6 KB source\n- `assets/css/style.scss`: ~17.7 KB source\n- `assets/js/terminal-search.js`: ~8.9 KB\n- `assets/js/technical-reader.js`: ~7.2 KB\n- `assets/js/related-material.js`: ~4.9 KB\n- `search-index.json`: ~2.4 KB source template before Jekyll expansion\n\nThe JavaScript features are dependency-free and progressively optional: terminal search, technical reader controls, and related-material discovery all operate without a framework.\n\n## Confirmed findings\n\n### Fonts\n\nThe shared layout already loads IBM Plex Mono and VT323 from Google Fonts using `<preconnect>` and a stylesheet link with `display=swap`. The compiled stylesheet also imported the same Google Fonts stylesheet, creating redundant font-CSS discovery/parsing. P4.1 removes the Sass `@import` and keeps the document-head load as the single external font request path.\n\nThe self-hosted `green_screenregular` and `pixelmixregular` declarations already use `font-display: swap` and prefer WOFF before TTF.\n\n### Search\n\nSearch remains metadata-first. The source search-index template is small and does not intentionally serialize entire article bodies. Payload growth should be measured as the publication expands before introducing tiered/lazy indexing.\n\n### JavaScript\n\nNo large application framework is present in the new reader/discovery stack. The current feature scripts total roughly 21 KB unminified source before transfer compression. This is acceptable for the current scope; future dependencies should justify their cost.\n\n### Images\n\nArticle CSS constrains images and video responsively and prevents normal content from widening the document. PTIR images remain editorial content and must not be removed merely to reduce payload.\n\n### Repository hygiene vs runtime payload\n\nThe repository contains tracked `_site` build output and some legacy/static assets. These increase repository size but are not evidence that every asset is transferred on a normal article request. Do not delete historical/static assets solely from source-tree size measurements; runtime use and preservation value must be established first.\n\n## P4.1 change\n\nCommit `285f775c143f62263ac3091cd3e79fc0724deef8` removes the duplicate Google Fonts import from `assets/css/style.scss`. The head stylesheet link remains authoritative.\n\n## Performance policy\n\n- Prefer measured regressions over arbitrary sub-second promises.\n- Track LCP, INP, and CLS when browser-based measurement is available.\n- Keep search metadata-first until measured index growth justifies additional architecture.\n- Prefer small dependency-free enhancements over framework introduction.\n- Preserve images that carry editorial value.\n- Treat optional reader/discovery JavaScript as progressive enhancement."],
      "summary": ""
    }
    
  

  
  
    ,
    {
      "title": "PACO.IO UX Baseline — 2026-08-12",
      "url": "/docs/ux-baseline-2026-08-12/",
      "date": null,
      "updated": null,
      "subject": "",
      "tags": "",
      "links": [],
      "ecosystem_links": [],
      "headings": ["PACO.IO UX Baseline — 2026-08-12\n\nStatus: P1.1 baseline complete; P1.2 mobile Explorer complete; P1.3 responsive-content verification complete; P1.4 typography decision complete\n\nThis is a bounded steady-state product-development baseline. It does not reopen the completed EI modernization program.\n\n## Governing UX principle\n\n> Preserve intentional friction. Remove accidental friction.\n\nPACO.IO remains a technology publication built around a visible personal knowledge system and a retro-computing interface.\n\n## Repository baseline\n\nBaseline head inspected: `feb0b490608e29938725416c6b8102abafec6c05` (`Center main content panel like paco.org`).\n\nPrimary implementation surfaces inspected:\n\n- `_layouts/default.html`\n- `assets/css/style.scss`\n- `.github/workflows/deploy.yml`\n- `.github/workflows/publication-quality.yml`\n\n## Findings\n\n### Already in good condition\n\n- CRT is OFF by default.\n- Theme and CRT state are initialized in `<head>` from localStorage before normal body rendering, reducing theme flash.\n- `prefers-reduced-motion` handling exists for CRT/cursor/tree transitions.\n- Main content is centered on wide screens with a balanced grid.\n- Images/video already use responsive max-width and automatic height rules.\n- Code/pre blocks and mobile tables already have bounded horizontal overflow.\n- Mobile controls already target 44px minimum touch height.\n- Vault tree folder controls use buttons and expose `aria-expanded`.\n- Main content has a stable `id=\"main\"` target.\n- Print Paper already removes glow/scanline colors at the token level.\n- Existing local vault search filters titles/paths without an external service.\n\n### P1 defects / opportunities\n\n1. **Mobile Vault Explorer remained expanded by default at baseline.** P1.2 corrected this with a CSS-first collapsed mobile state and accessible toggle.\n2. **No visible skip-to-main link is present.** The `#main` target exists, so this remains a bounded P1.6 accessibility addition.\n3. **Long-form article typography was evaluated in P1.4.** IBM Plex Mono was explicitly selected for production, preserving the existing reading model and interface identity.\n4. **Print Paper is primarily a palette treatment.** It should be evaluated as a high-legibility reading presentation and aligned with actual print CSS in P1.6.\n5. **Search is title/path filtering in the Vault Explorer.** Rich contextual search is Phase 2 work; do not overload P1 with it.\n6. **Backlink UI exists, but current relationship discovery is limited.** Structured relationship work belongs in Phase 2.\n7. **Some responsive rules are duplicated between inline layout CSS and `style.scss`.** Avoid broad cleanup during P1 unless a specific defect requires it; newer working layout behavior must not be overwritten.\n\n## P1.2 result — Mobile Vault Explorer\n\nCommit `afd038a51206585c0c8ef7ff796a8fd7a778e9ad` introduced a mobile-only VAULT EXPLORER control. Below 860px the Explorer is collapsed in CSS before JavaScript runs, expands to a bounded internally scrollable area, exposes `aria-expanded`/`aria-controls`, and moves focus into the Explorer on open. Desktop behavior is unchanged.\n\nThe publication-quality and deployment workflows passed for this change.\n\n## P1.3 result — Responsive Content Hardening\n\nP1.3 was executed as a verification sprint against the current production CSS rather than by manufacturing redundant rules.\n\nVerified protections already present:\n\n- page-level horizontal overflow is suppressed while vertical document scrolling remains available;\n- `.markdown-body` text, list items, blockquotes, table cells, and headings can wrap long content;\n- images and video retain intrinsic aspect ratio and are constrained to the reading width;\n- iframes are constrained to the content width;\n- `pre` blocks use internal horizontal scrolling rather than widening the page;\n- mobile tables use their own horizontal overflow container;\n- mobile content removes desktop scroll-container assumptions;\n- recent responsive fixes already remove image maximum-height restrictions on mobile;\n- the centered wide-screen content grid remains intact.\n\nNo additional P1.3 CSS change was justified by the inspected current state. This is intentional: steady-state maintenance should not duplicate working rules merely to produce a code diff.\n\n## P1.4 result — Typography Laboratory\n\nCommit `8726f6e136d2046dfb951c86b3321f9394cdbb7b` added a hidden production-shell typography laboratory comparing IBM Plex Mono, IBM Plex Sans, and Space Grotesk against representative PACO.IO/PTIR prose.\n\nDecision: **A — IBM Plex Mono**.\n\nIBM Plex Mono remains the production long-form reading typeface. No site-wide typography replacement is required. The comparison laboratory remains an experimental/reference surface and is not part of Vault Explorer navigation.\n\n## Phase 1 execution constraints\n\n- Typography is now decided: retain IBM Plex Mono for production prose.\n- Do not add terminal audio, a large sticky header, always-visible graph, or another Article Mode toggle.\n- Do not modify `idtprof/portal` / firg.xyz.\n\n## Phase 1 gate\n\nBefore Phase 2:\n\n- mobile article content is immediately reachable;\n- no ordinary content causes page-level horizontal scrolling;\n- typography choice has explicit approval — **complete: IBM Plex Mono**;\n- keyboard/focus/contrast behavior is verified;\n- Print Paper and print behavior are coherent;\n- CRT remains off by default;\n- no material performance regression is introduced."],
      "summary": ""
    }
    
  

]
