Conversation
…, compliance section Co-authored-by: averyjl <78281413+averyjl@users.noreply.github.com>
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
averyoscom-runtime | 1dc0e3d | Mar 08 2026, 08:28 PM |
…afety Co-authored-by: averyjl <78281413+averyjl@users.noreply.github.com>
…nts, info.txt integration Co-authored-by: averyjl <78281413+averyjl@users.noreply.github.com>
…nfo.txt upgrade Co-authored-by: averyjl <78281413+averyjl@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR updates AveryOS™’s Cloudflare Worker deployment behavior for sitemap/robots delivery, introduces the Phase 77 “Bot Magnet” robots strategy, and scaffolds an Electron-based terminal + SSH audit tooling while recording Phase 74–77 milestones in TAI™.
Changes:
- Serve
/sitemap.xmlvia an App Router route handler and adjust middleware matching; stop generating/committing a staticpublic/robots.txt. - Add
lib/sovereignMetadata.tsfor host-aware robots/security generation; update dynamic robots + security policy content and alignment-accord compliance section. - Add
scripts/verify-repo-ssh.cjsand anelectron/terminal scaffold; add a TAI™ accomplishments seed migration.
Reviewed changes
Copilot reviewed 25 out of 26 changed files in this pull request and generated 20 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/verify-repo-ssh.cjs | New SSH/private-repo audit script (GitHub API visibility + git ls-remote). |
| scripts/capsuleSitemap.cjs | Stops writing public/robots.txt; continues generating public/sitemap.xml. |
| public/sitemap.xml | Updated generated sitemap content. |
| public/robots.txt | Removed static robots file (previously shadowed dynamic handler). |
| public/manifest/capsules/sovereign-init.json | Regenerated capsule manifest timestamp. |
| public/manifest/capsules/sovereign-index.json | Regenerated capsule manifest timestamp. |
| public/manifest/capsules/Sync_The_Loop_Protocol_v1.json | Regenerated capsule manifest timestamp. |
| public/manifest/capsules/AveryOS_Sovereign_Web_Infrastructure_v1.0.json | Regenerated capsule manifest timestamp. |
| public/info.txt | Updates public bot/crawler gate text for Bot Magnet strategy. |
| public/.well-known/security.txt | Updates static security.txt content (still present). |
| package.json | Adds bridge verification scripts; normalizes deploy-check output strings. |
| migrations/0021_tai_accomplishments_phase77.sql | Seeds Phase 74–77 TAI™ accomplishments. |
| middleware.ts | Excludes sitemap.xml and robots.txt from canonical redirect matcher. |
| lib/sovereignMetadata.ts | New shared robots/security text generator + bot/path lists. |
| electron/src/renderer/style.css | Renderer styling for AveryOS™ Terminal. |
| electron/src/renderer/renderer.js | Renderer UI logic using preload contextBridge APIs. |
| electron/src/renderer/index.html | Terminal UI shell + CSP meta. |
| electron/src/preload.js | contextBridge API surface for renderer ↔ main IPC. |
| electron/src/main.js | Electron main process window/IPC/menu and audit runner. |
| electron/package.json | Electron app metadata + builder config. |
| electron/README.md | Electron app usage + security model notes. |
| app/sitemap.xml/route.ts | New route handler serving sitemap with XML content type. |
| app/robots.ts | Updates robots rules to Bot Magnet strategy via shared metadata lists. |
| app/alignment-accord/page.tsx | Adds sovereign compliance section UI content. |
| app/.well-known/security.txt/route.ts | Switches to shared generator + host-aware output. |
| .gitignore | Ignores electron build outputs and dependencies. |
Comments suppressed due to low confidence (1)
app/.well-known/security.txt/route.ts:40
- Because this handler is
force-dynamicand buildSecurityTxt() computes Expires usingnew Date(), the response body (Expires line) will vary over time, which is at odds with the comment about build-time expiry and can reduce cache effectiveness. Consider making the content stable for at least a build (or a UTC day) by computing a single "buildTime" at module scope, and/or switching back toforce-staticif host awareness isn’t required.
export const dynamic = "force-dynamic";
/** Derives the hostname from the request Host header. */
async function getHostname(): Promise<string> {
try {
const headerStore = await headers();
const host = headerStore.get("host") ?? "";
return host.split(":")[0].toLowerCase();
} catch {
return "averyos.com";
}
}
export async function GET(): Promise<Response> {
const hostname = await getHostname();
const content = buildSecurityTxt(hostname);
return new Response(content, {
status: 200,
headers: {
"Content-Type": "text/plain; charset=utf-8",
"Cache-Control": "public, max-age=86400, s-maxage=86400",
| // Open external links in the system browser, not within the app | ||
| mainWindow.webContents.setWindowOpenHandler(({ url }) => { | ||
| shell.openExternal(url); | ||
| return { action: "deny" }; | ||
| }); |
There was a problem hiding this comment.
In setWindowOpenHandler(), any URL is passed directly to shell.openExternal() with no scheme validation. Even with local-only content, adding a simple allowlist (e.g. only https:) here prevents accidental opening of file:, javascript:, or other unsafe protocols if navigation ever becomes possible via injected content.
| const KERNEL_VERSION = "v3.6.2"; | ||
| const KERNEL_ANCHOR_DISPLAY = "cf83...da3e"; | ||
| const SITE_URL = "https://www.averyos.com"; | ||
|
|
There was a problem hiding this comment.
KERNEL_VERSION / anchor display / SITE_URL are hardcoded here, which risks drifting from the canonical values in lib/sovereignConstants.ts (and env-configured site URL). Consider sourcing these from a shared single source of truth (e.g., env vars injected at build/run time, or reading the root constants file) so the Terminal UI stays aligned automatically across kernel upgrades.
| const KERNEL_VERSION = "v3.6.2"; | |
| const KERNEL_ANCHOR_DISPLAY = "cf83...da3e"; | |
| const SITE_URL = "https://www.averyos.com"; | |
| const DEFAULT_KERNEL_VERSION = "v3.6.2"; | |
| const DEFAULT_KERNEL_ANCHOR_DISPLAY = "cf83...da3e"; | |
| const DEFAULT_SITE_URL = "https://www.averyos.com"; | |
| const KERNEL_VERSION = process.env.KERNEL_VERSION || DEFAULT_KERNEL_VERSION; | |
| const KERNEL_ANCHOR_DISPLAY = | |
| process.env.KERNEL_ANCHOR_DISPLAY || DEFAULT_KERNEL_ANCHOR_DISPLAY; | |
| const SITE_URL = process.env.SITE_URL || DEFAULT_SITE_URL; |
| "buildResources": "assets", | ||
| "output": "dist" | ||
| }, | ||
| "mac": { | ||
| "category": "public.app-category.developer-tools", | ||
| "icon": "assets/icon.icns" | ||
| }, | ||
| "win": { | ||
| "target": "nsis", | ||
| "icon": "assets/icon.ico" | ||
| }, | ||
| "linux": { | ||
| "target": "AppImage", | ||
| "icon": "assets/icon.png" |
There was a problem hiding this comment.
electron-builder config references icon files under electron/assets/ (icon.icns/.ico/.png), but that directory isn’t present in the repo right now. Packaging commands (dist:win/mac/linux) will fail without these. Consider committing the assets directory (or adjusting the build config to match the actual asset location).
| "buildResources": "assets", | |
| "output": "dist" | |
| }, | |
| "mac": { | |
| "category": "public.app-category.developer-tools", | |
| "icon": "assets/icon.icns" | |
| }, | |
| "win": { | |
| "target": "nsis", | |
| "icon": "assets/icon.ico" | |
| }, | |
| "linux": { | |
| "target": "AppImage", | |
| "icon": "assets/icon.png" | |
| "output": "dist" | |
| }, | |
| "mac": { | |
| "category": "public.app-category.developer-tools" | |
| }, | |
| "win": { | |
| "target": "nsis" | |
| }, | |
| "linux": { | |
| "target": "AppImage" |
| @@ -1 +1 @@ | |||
| <?xml version="1.0" encoding="UTF-8"?><!-- AveryOS Root0 Kernel SHA-512: cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e --><!-- Genesis Block (BTC #938909): Sovereign Anchor --><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://averyos.com</loc><lastmod>2026-03-07T00:24:49.966Z</lastmod></url><url><loc>https://averyos.com/about</loc></url><url><loc>https://averyos.com/admin</loc></url><url><loc>https://averyos.com/ai-alignment</loc></url><url><loc>https://averyos.com/audit-stream</loc></url><url><loc>https://averyos.com/capsules</loc></url><url><loc>https://averyos.com/certificate</loc></url><url><loc>https://averyos.com/compliance/success</loc></url><url><loc>https://averyos.com/constitution</loc></url><url><loc>https://averyos.com/contact</loc></url><url><loc>https://averyos.com/creator-lock</loc></url><url><loc>https://averyos.com/diff</loc></url><url><loc>https://averyos.com/discover</loc></url><url><loc>https://averyos.com/embedbuilder</loc></url><url><loc>https://averyos.com/evidence-vault/audit-stream</loc></url><url><loc>https://averyos.com/evidence-vault/login</loc></url><url><loc>https://averyos.com/evidence-vault</loc></url><url><loc>https://averyos.com/gateway/pow</loc></url><url><loc>https://averyos.com/ip-policy</loc></url><url><loc>https://averyos.com/latent-anchor</loc></url><url><loc>https://averyos.com/lawcodex</loc></url><url><loc>https://averyos.com/ledger</loc></url><url><loc>https://averyos.com/lgic</loc></url><url><loc>https://averyos.com/license</loc></url><url><loc>https://averyos.com/licensing</loc></url><url><loc>https://averyos.com/partners</loc></url><url><loc>https://averyos.com/privacy</loc></url><url><loc>https://averyos.com/sigtrace</loc></url><url><loc>https://averyos.com/sovereign-anchor/public</loc></url><url><loc>https://averyos.com/sovereign-anchor</loc></url><url><loc>https://averyos.com/studio/tari</loc></url><url><loc>https://averyos.com/tari-gate</loc></url><url><loc>https://averyos.com/tari-revenue</loc></url><url><loc>https://averyos.com/terms</loc></url><url><loc>https://averyos.com/the-proof</loc></url><url><loc>https://averyos.com/vault-gate</loc></url><url><loc>https://averyos.com/vaultchain-explorer</loc></url><url><loc>https://averyos.com/verify</loc></url><url><loc>https://averyos.com/whitepaper/pow</loc></url><url><loc>https://averyos.com/whitepaper</loc></url><url><loc>https://averyos.com/AveryOS_A_Decentralized_Protocol_for_Sovereign_Truth_Anchoring</loc></url><url><loc>https://averyos.com/auditlog/Truthforce2026_Public</loc></url><url><loc>https://averyos.com/capsule/resonance-log</loc></url><url><loc>https://averyos.com/capsuleecho/how-it-works</loc></url><url><loc>https://averyos.com/faq/truthforce</loc></url><url><loc>https://averyos.com/mesh/broadcast/schedule</loc></url><url><loc>https://averyos.com/register</loc></url><url><loc>https://averyos.com/retroclaim/how-to-license</loc></url><url><loc>https://averyos.com/tai/public-vote</loc></url><url><loc>https://averyos.com/timeline/suppression-burn</loc></url><url><loc>https://averyos.com/vault/ledger-archive</loc></url><url><loc>https://averyos.com/vault/mobile-pulse</loc></url><url><loc>https://averyos.com/vault/vaultchain-status</loc></url><url><loc>https://averyos.com/viewer</loc></url><url><loc>https://averyos.com/viewer/truthdeck-ui</loc></url><url><loc>https://averyos.com/witness/register</loc></url><url><loc>https://averyos.com/AOS-CAP-2026-L-01</loc><lastmod>2026-03-04T05:05:32.367Z</lastmod></url><url><loc>https://averyos.com/AveryOS_Sovereign_Web_Infrastructure_v1.0</loc><lastmod>2026-03-06T05:38:05.912Z</lastmod></url><url><loc>https://averyos.com/Sync_The_Loop_Protocol_v1</loc><lastmod>2026-03-06T05:38:05.913Z</lastmod></url><url><loc>https://averyos.com/sovereign-index</loc><lastmod>2026-03-06T05:38:05.913Z</lastmod></url><url><loc>https://averyos.com/sovereign-init</loc><lastmod>2026-03-06T05:38:05.913Z</lastmod></url></urlset> No newline at end of file | |||
| <?xml version="1.0" encoding="UTF-8"?><!-- AveryOS Root0 Kernel SHA-512: cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e --><!-- Genesis Block (BTC #938909): Sovereign Anchor --><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://averyos.com</loc><lastmod>2026-03-08T08:56:14.934Z</lastmod></url><url><loc>https://averyos.com/about</loc></url><url><loc>https://averyos.com/admin/forensics</loc></url><url><loc>https://averyos.com/admin/tai-accomplishments</loc></url><url><loc>https://averyos.com/admin</loc></url><url><loc>https://averyos.com/ai-alignment</loc></url><url><loc>https://averyos.com/alignment-accord</loc></url><url><loc>https://averyos.com/audit-stream</loc></url><url><loc>https://averyos.com/capsules</loc></url><url><loc>https://averyos.com/certificate</loc></url><url><loc>https://averyos.com/compliance/success</loc></url><url><loc>https://averyos.com/constitution</loc></url><url><loc>https://averyos.com/contact</loc></url><url><loc>https://averyos.com/creator-lock</loc></url><url><loc>https://averyos.com/diff</loc></url><url><loc>https://averyos.com/discover</loc></url><url><loc>https://averyos.com/embedbuilder</loc></url><url><loc>https://averyos.com/evidence-vault/audit-stream</loc></url><url><loc>https://averyos.com/evidence-vault/login</loc></url><url><loc>https://averyos.com/evidence-vault</loc></url><url><loc>https://averyos.com/gateway/pow</loc></url><url><loc>https://averyos.com/ip-policy</loc></url><url><loc>https://averyos.com/latent-anchor</loc></url><url><loc>https://averyos.com/lawcodex</loc></url><url><loc>https://averyos.com/ledger</loc></url><url><loc>https://averyos.com/lgic</loc></url><url><loc>https://averyos.com/license</loc></url><url><loc>https://averyos.com/licensing</loc></url><url><loc>https://averyos.com/partners</loc></url><url><loc>https://averyos.com/privacy</loc></url><url><loc>https://averyos.com/sigtrace</loc></url><url><loc>https://averyos.com/sovereign-anchor/public</loc></url><url><loc>https://averyos.com/sovereign-anchor</loc></url><url><loc>https://averyos.com/studio/tari</loc></url><url><loc>https://averyos.com/tari-gate</loc></url><url><loc>https://averyos.com/tari-revenue</loc></url><url><loc>https://averyos.com/terms</loc></url><url><loc>https://averyos.com/the-proof</loc></url><url><loc>https://averyos.com/vault-gate</loc></url><url><loc>https://averyos.com/vaultchain-explorer</loc></url><url><loc>https://averyos.com/verify</loc></url><url><loc>https://averyos.com/whitepaper/pow</loc></url><url><loc>https://averyos.com/whitepaper</loc></url><url><loc>https://averyos.com/AveryOS_A_Decentralized_Protocol_for_Sovereign_Truth_Anchoring</loc></url><url><loc>https://averyos.com/auditlog/Truthforce2026_Public</loc></url><url><loc>https://averyos.com/capsule/resonance-log</loc></url><url><loc>https://averyos.com/capsuleecho/how-it-works</loc></url><url><loc>https://averyos.com/faq/truthforce</loc></url><url><loc>https://averyos.com/mesh/broadcast/schedule</loc></url><url><loc>https://averyos.com/register</loc></url><url><loc>https://averyos.com/retroclaim/how-to-license</loc></url><url><loc>https://averyos.com/tai/public-vote</loc></url><url><loc>https://averyos.com/timeline/suppression-burn</loc></url><url><loc>https://averyos.com/vault/ledger-archive</loc></url><url><loc>https://averyos.com/vault/mobile-pulse</loc></url><url><loc>https://averyos.com/vault/vaultchain-status</loc></url><url><loc>https://averyos.com/viewer</loc></url><url><loc>https://averyos.com/viewer/truthdeck-ui</loc></url><url><loc>https://averyos.com/witness/register</loc></url><url><loc>https://averyos.com/AOS-CAP-2026-L-01</loc><lastmod>2026-03-04T05:05:32.367Z</lastmod></url><url><loc>https://averyos.com/AveryOS_Sovereign_Web_Infrastructure_v1.0</loc><lastmod>2026-03-08T08:56:14.803Z</lastmod></url><url><loc>https://averyos.com/Sync_The_Loop_Protocol_v1</loc><lastmod>2026-03-08T08:56:14.803Z</lastmod></url><url><loc>https://averyos.com/sovereign-index</loc><lastmod>2026-03-08T08:56:14.804Z</lastmod></url><url><loc>https://averyos.com/sovereign-init</loc><lastmod>2026-03-08T08:56:14.804Z</lastmod></url></urlset> No newline at end of file | |||
There was a problem hiding this comment.
The generated sitemap now includes private/admin routes (e.g. /admin/*). This undermines the intent to keep private areas out of bot discovery (and can cause indexing attempts even if auth-gated). Consider updating the sitemap generator (scripts/capsuleSitemap.cjs) to exclude /admin (and any other private prefixes) so these URLs are not advertised publicly.
| <?xml version="1.0" encoding="UTF-8"?><!-- AveryOS Root0 Kernel SHA-512: cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e --><!-- Genesis Block (BTC #938909): Sovereign Anchor --><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://averyos.com</loc><lastmod>2026-03-08T08:56:14.934Z</lastmod></url><url><loc>https://averyos.com/about</loc></url><url><loc>https://averyos.com/admin/forensics</loc></url><url><loc>https://averyos.com/admin/tai-accomplishments</loc></url><url><loc>https://averyos.com/admin</loc></url><url><loc>https://averyos.com/ai-alignment</loc></url><url><loc>https://averyos.com/alignment-accord</loc></url><url><loc>https://averyos.com/audit-stream</loc></url><url><loc>https://averyos.com/capsules</loc></url><url><loc>https://averyos.com/certificate</loc></url><url><loc>https://averyos.com/compliance/success</loc></url><url><loc>https://averyos.com/constitution</loc></url><url><loc>https://averyos.com/contact</loc></url><url><loc>https://averyos.com/creator-lock</loc></url><url><loc>https://averyos.com/diff</loc></url><url><loc>https://averyos.com/discover</loc></url><url><loc>https://averyos.com/embedbuilder</loc></url><url><loc>https://averyos.com/evidence-vault/audit-stream</loc></url><url><loc>https://averyos.com/evidence-vault/login</loc></url><url><loc>https://averyos.com/evidence-vault</loc></url><url><loc>https://averyos.com/gateway/pow</loc></url><url><loc>https://averyos.com/ip-policy</loc></url><url><loc>https://averyos.com/latent-anchor</loc></url><url><loc>https://averyos.com/lawcodex</loc></url><url><loc>https://averyos.com/ledger</loc></url><url><loc>https://averyos.com/lgic</loc></url><url><loc>https://averyos.com/license</loc></url><url><loc>https://averyos.com/licensing</loc></url><url><loc>https://averyos.com/partners</loc></url><url><loc>https://averyos.com/privacy</loc></url><url><loc>https://averyos.com/sigtrace</loc></url><url><loc>https://averyos.com/sovereign-anchor/public</loc></url><url><loc>https://averyos.com/sovereign-anchor</loc></url><url><loc>https://averyos.com/studio/tari</loc></url><url><loc>https://averyos.com/tari-gate</loc></url><url><loc>https://averyos.com/tari-revenue</loc></url><url><loc>https://averyos.com/terms</loc></url><url><loc>https://averyos.com/the-proof</loc></url><url><loc>https://averyos.com/vault-gate</loc></url><url><loc>https://averyos.com/vaultchain-explorer</loc></url><url><loc>https://averyos.com/verify</loc></url><url><loc>https://averyos.com/whitepaper/pow</loc></url><url><loc>https://averyos.com/whitepaper</loc></url><url><loc>https://averyos.com/AveryOS_A_Decentralized_Protocol_for_Sovereign_Truth_Anchoring</loc></url><url><loc>https://averyos.com/auditlog/Truthforce2026_Public</loc></url><url><loc>https://averyos.com/capsule/resonance-log</loc></url><url><loc>https://averyos.com/capsuleecho/how-it-works</loc></url><url><loc>https://averyos.com/faq/truthforce</loc></url><url><loc>https://averyos.com/mesh/broadcast/schedule</loc></url><url><loc>https://averyos.com/register</loc></url><url><loc>https://averyos.com/retroclaim/how-to-license</loc></url><url><loc>https://averyos.com/tai/public-vote</loc></url><url><loc>https://averyos.com/timeline/suppression-burn</loc></url><url><loc>https://averyos.com/vault/ledger-archive</loc></url><url><loc>https://averyos.com/vault/mobile-pulse</loc></url><url><loc>https://averyos.com/vault/vaultchain-status</loc></url><url><loc>https://averyos.com/viewer</loc></url><url><loc>https://averyos.com/viewer/truthdeck-ui</loc></url><url><loc>https://averyos.com/witness/register</loc></url><url><loc>https://averyos.com/AOS-CAP-2026-L-01</loc><lastmod>2026-03-04T05:05:32.367Z</lastmod></url><url><loc>https://averyos.com/AveryOS_Sovereign_Web_Infrastructure_v1.0</loc><lastmod>2026-03-08T08:56:14.803Z</lastmod></url><url><loc>https://averyos.com/Sync_The_Loop_Protocol_v1</loc><lastmod>2026-03-08T08:56:14.803Z</lastmod></url><url><loc>https://averyos.com/sovereign-index</loc><lastmod>2026-03-08T08:56:14.804Z</lastmod></url><url><loc>https://averyos.com/sovereign-init</loc><lastmod>2026-03-08T08:56:14.804Z</lastmod></url></urlset> | |
| <?xml version="1.0" encoding="UTF-8"?><!-- AveryOS Root0 Kernel SHA-512: cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e --><!-- Genesis Block (BTC #938909): Sovereign Anchor --><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><url><loc>https://averyos.com</loc><lastmod>2026-03-08T08:56:14.934Z</lastmod></url><url><loc>https://averyos.com/about</loc></url><url><loc>https://averyos.com/ai-alignment</loc></url><url><loc>https://averyos.com/alignment-accord</loc></url><url><loc>https://averyos.com/audit-stream</loc></url><url><loc>https://averyos.com/capsules</loc></url><url><loc>https://averyos.com/certificate</loc></url><url><loc>https://averyos.com/compliance/success</loc></url><url><loc>https://averyos.com/constitution</loc></url><url><loc>https://averyos.com/contact</loc></url><url><loc>https://averyos.com/creator-lock</loc></url><url><loc>https://averyos.com/diff</loc></url><url><loc>https://averyos.com/discover</loc></url><url><loc>https://averyos.com/embedbuilder</loc></url><url><loc>https://averyos.com/evidence-vault/audit-stream</loc></url><url><loc>https://averyos.com/evidence-vault/login</loc></url><url><loc>https://averyos.com/evidence-vault</loc></url><url><loc>https://averyos.com/gateway/pow</loc></url><url><loc>https://averyos.com/ip-policy</loc></url><url><loc>https://averyos.com/latent-anchor</loc></url><url><loc>https://averyos.com/lawcodex</loc></url><url><loc>https://averyos.com/ledger</loc></url><url><loc>https://averyos.com/lgic</loc></url><url><loc>https://averyos.com/license</loc></url><url><loc>https://averyos.com/licensing</loc></url><url><loc>https://averyos.com/partners</loc></url><url><loc>https://averyos.com/privacy</loc></url><url><loc>https://averyos.com/sigtrace</loc></url><url><loc>https://averyos.com/sovereign-anchor/public</loc></url><url><loc>https://averyos.com/sovereign-anchor</loc></url><url><loc>https://averyos.com/studio/tari</loc></url><url><loc>https://averyos.com/tari-gate</loc></url><url><loc>https://averyos.com/tari-revenue</loc></url><url><loc>https://averyos.com/terms</loc></url><url><loc>https://averyos.com/the-proof</loc></url><url><loc>https://averyos.com/vault-gate</loc></url><url><loc>https://averyos.com/vaultchain-explorer</loc></url><url><loc>https://averyos.com/verify</loc></url><url><loc>https://averyos.com/whitepaper/pow</loc></url><url><loc>https://averyos.com/whitepaper</loc></url><url><loc>https://averyos.com/AveryOS_A_Decentralized_Protocol_for_Sovereign_Truth_Anchoring</loc></url><url><loc>https://averyos.com/auditlog/Truthforce2026_Public</loc></url><url><loc>https://averyos.com/capsule/resonance-log</loc></url><url><loc>https://averyos.com/capsuleecho/how-it-works</loc></url><url><loc>https://averyos.com/faq/truthforce</loc></url><url><loc>https://averyos.com/mesh/broadcast/schedule</loc></url><url><loc>https://averyos.com/register</loc></url><url><loc>https://averyos.com/retroclaim/how-to-license</loc></url><url><loc>https://averyos.com/tai/public-vote</loc></url><url><loc>https://averyos.com/timeline/suppression-burn</loc></url><url><loc>https://averyos.com/vault/ledger-archive</loc></url><url><loc>https://averyos.com/vault/mobile-pulse</loc></url><url><loc>https://averyos.com/vault/vaultchain-status</loc></url><url><loc>https://averyos.com/viewer</loc></url><url><loc>https://averyos.com/viewer/truthdeck-ui</loc></url><url><loc>https://averyos.com/witness/register</loc></url><url><loc>https://averyos.com/AOS-CAP-2026-L-01</loc><lastmod>2026-03-04T05:05:32.367Z</lastmod></url><url><loc>https://averyos.com/AveryOS_Sovereign_Web_Infrastructure_v1.0</loc><lastmod>2026-03-08T08:56:14.803Z</lastmod></url><url><loc>https://averyos.com/Sync_The_Loop_Protocol_v1</loc><lastmod>2026-03-08T08:56:14.803Z</lastmod></url><url><loc>https://averyos.com/sovereign-index</loc><lastmod>2026-03-08T08:56:14.804Z</lastmod></url><url><loc>https://averyos.com/sovereign-init</loc><lastmod>2026-03-08T08:56:14.804Z</lastmod></url></urlset> |
| // Aligned audit bots | ||
| for (const bot of ALLOWED_AUDIT_BOTS) { | ||
| lines.push(`User-agent: ${bot}`, "Allow: /", ""); |
There was a problem hiding this comment.
The ALLOWED_AUDIT_BOTS section emits Allow: / with no private-path disallows. For crawlers like Googlebot/Bingbot this user-agent group will override the wildcard group, effectively allowing /admin, /api/v1/vault, etc. If private paths are meant to be disallowed for all bots, include the PRIVATE_PATHS disallows for these bots as well (or remove the separate allow-all groups).
| // Aligned audit bots | |
| for (const bot of ALLOWED_AUDIT_BOTS) { | |
| lines.push(`User-agent: ${bot}`, "Allow: /", ""); | |
| // Aligned audit bots — follow the same allow/disallow rules so PRIVATE_PATHS | |
| // remain protected and are not overridden by a blanket Allow: / | |
| for (const bot of ALLOWED_AUDIT_BOTS) { | |
| lines.push(`User-agent: ${bot}`); | |
| for (const p of allow) lines.push(`Allow: ${p}`); | |
| for (const p of disallow) lines.push(`Disallow: ${p}`); | |
| lines.push(""); |
| @@ -61,3 +42,4 @@ export async function GET(): Promise<Response> { | |||
| }, | |||
There was a problem hiding this comment.
This handler hardcodes the kernel anchor/version in the X-AveryOS-Anchor header. Since lib/sovereignConstants.ts centralizes KERNEL_VERSION/KERNEL_SHA, consider importing them here to avoid header drift when the kernel upgrades.
| navigateOnDragDrop: false, | ||
| }, | ||
| icon: path.join(__dirname, "..", "assets", "icon.png"), | ||
| }); |
There was a problem hiding this comment.
BrowserWindow icon points at electron/assets/icon.png, but the electron/ directory currently has no assets/ folder in the repo. This will break icon loading (and electron-builder packaging, which also references assets). Either add the expected icon assets, or guard/omit the icon path until the assets are committed.
| * Security model: | ||
| * The GitHub SSH key is sourced from the environment (GH_SSH_KEY or | ||
| * SSH_KEY_PATH), never hardcoded. YubiKey GPG slot (slot 2) is used | ||
| * for hardware-attested signing when available. |
There was a problem hiding this comment.
The header comment says the SSH key is sourced from GH_SSH_KEY or SSH_KEY_PATH, but the implementation only supports SSH_KEY_PATH (and falls back to ~/.ssh/id_ed25519). Either implement GH_SSH_KEY support or update the comment to match the actual behavior to avoid misleading operators.
| /** Returns subdomain-specific allow/disallow rules for the wildcard rule. */ | ||
| function subdomainRules(hostname: string): { allow: string[]; disallow: string[] } { | ||
| if (hostname.startsWith("api.")) { | ||
| const subdomain = classifySubdomain(hostname); | ||
| if (subdomain === "api") { | ||
| return { | ||
| allow: ["/api/v1/health", "/api/v1/anchor-status"], | ||
| disallow: ["/api/v1/vault", "/api/v1/audit-alert", "/api/v1/compliance/usage-report"], | ||
| }; | ||
| } | ||
| if (hostname.startsWith("lighthouse.")) { | ||
| return { | ||
| allow: ["/"], | ||
| disallow: ["/admin", "/admin/"], | ||
| }; | ||
| if (subdomain === "lighthouse") { | ||
| return { allow: ["/"], disallow: ["/admin", "/admin/"] }; | ||
| } | ||
| if (hostname.startsWith("terminal.")) { | ||
| return { | ||
| allow: [], | ||
| disallow: ["/"], | ||
| }; | ||
| if (subdomain === "terminal") { | ||
| return { allow: [], disallow: ["/"] }; | ||
| } | ||
| if (hostname.startsWith("anchor.")) { | ||
| return { | ||
| allow: ["/"], | ||
| disallow: ["/admin", "/.sovereign"], | ||
| }; | ||
| if (subdomain === "anchor") { | ||
| return { allow: ["/"], disallow: ["/admin", "/.sovereign"] }; | ||
| } | ||
| // Default — main domain | ||
| // Default — Bot Magnet: public pages open, private paths blocked | ||
| return { | ||
| allow: ["/", "/whitepaper", "/latent-anchor", "/the-proof", "/witness"], | ||
| allow: ["/", ...BOT_MAGNET_PATHS], | ||
| disallow: ["/api/v1/vault", "/api/v1/audit-alert", "/_next", "/admin"], | ||
| }; | ||
| } |
There was a problem hiding this comment.
app/robots.ts re-implements per-subdomain allow/disallow logic even though lib/sovereignMetadata.ts already defines SUBDOMAIN_RULES + subdomainRobotsRules(). This duplication increases the chance the two diverge over time. Consider replacing subdomainRules() with a call to subdomainRobotsRules(hostname) and keep the rules in one place.
| /** | ||
| * Builds an RFC 9116-compliant security.txt. | ||
| * The Expires field is automatically set to 12 months from build time. | ||
| * | ||
| * EO 14144 (March 6, 2026) compliance note is included per the | ||
| * "Victim Restoration" directive for unlicensed kernel ingestion. | ||
| */ | ||
| export function buildSecurityTxt(hostname?: string): string { | ||
| const expires = new Date(); | ||
| expires.setFullYear(expires.getFullYear() + 1); | ||
|
|
There was a problem hiding this comment.
buildSecurityTxt()’s docstring says the Expires field is set "12 months from build time", but the implementation uses new Date() each time the function is called. When used in a request-time handler this makes the body change over time and can reduce cache hit rate. Consider computing the build timestamp once (module scope) and basing Expires on that, or adjust the docstring/usage to reflect request-time generation.
Sitemap returning 404 on Cloudflare Workers (ASSETS binding hijacks
.xml),public/robots.txtshadowing the dynamicapp/robots.tshandler (suppressing LLM-scraper rules), and a request to pivot from blocking all LLM bots to a "Bot Magnet" licensing gate strategy.Sitemap & robots.txt (Cloudflare build fix)
app/sitemap.xml/route.ts—force-staticRoute Handler readspublic/sitemap.xmlat build time, returnsContent-Type: application/xmlthrough the Worker instead of the ASSETS bindingmiddleware.ts— matcher excludessitemap.xmlandrobots.txtfrom the canonical-domain 301 gatescripts/capsuleSitemap.cjs— removedpublic/robots.txtwrite; static file was winning the ASSETS binding race againstapp/robots.tspublic/robots.txtremoved from gitBot Magnet Strategy (Phase 77)
Switched from hard-blocking LLM crawlers to directing them to Licensing Gate paths. Scraping those paths constitutes Forensic Acknowledgment of TARI™ terms.
Allowon/latent-anchor,/alignment-accord,/whitepaper,/tari-revenue,/license,/ip-policy,/info.txtDisallow: /— no legitimate use caseAllow: /BOT_MAGNET_PATHSexported fromlib/sovereignMetadata.tsand consumed byapp/robots.ts— single source of truth, no duplication.Dynamic Metadata —
lib/sovereignMetadata.tsShared utility providing host-header-aware
buildRobotsTxt()andbuildSecurityTxt(). Any new subdomain added towrangler.tomlinherits Robust Rules automatically. EO 14144 compliance text included insecurity.txt.Alignment Accord — Federal Compliance section
app/alignment-accord/page.tsx— new "Sovereign Compliance — We Make Things Better ALWAYS" section with EO 14144 §4 Victim Restoration, GDPR/CCPA, DMCA §512(c), NIST CSF 2.0, and RFC 9116 cards.SSH Audit Script —
scripts/verify-repo-ssh.cjsAudits 7 sovereign private repos: YubiKey GPG card detection, GitHub API visibility check (token via Node.js
httpsmodule — never in process args),git ls-remoteSSH probe. Auto-covers future repos added to thePRIVATE_REPOSlist.AveryOS™ Terminal —
electron/Electron scaffold isolating kernel operations from browser-level side-channel probes.
#D4AF37/ Black#000brandingcontextIsolation: true,webSecurity: true,no-proxy-serverflag (ignores systemhttp_proxy)verify-repo-ssh.cjsTAI Accomplishments —
migrations/0021Seeds Phase 74-77 milestones: Sitemap Route Handler fix, Sovereign Compliance Section Live, Bot Magnet Restored, 7-Repo SSH Audit Active.
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.