Skip to content

[codex] align docs with OpenRouter and polymorph domain - #232

Merged
NickB03 merged 3 commits into
mainfrom
codex/docs-openrouter-polymorph-domain
May 27, 2026
Merged

[codex] align docs with OpenRouter and polymorph domain#232
NickB03 merged 3 commits into
mainfrom
codex/docs-openrouter-polymorph-domain

Conversation

@NickB03

@NickB03 NickB03 commented May 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • Align production-origin docs, CI build args, Docker defaults, env examples, and public-origin tests with https://polymorph.fyi.
  • Update current architecture docs and diagram assets so OpenRouter is the default text-provider path, with Gateway limited to image generation or optional routing.
  • Refresh source-backed documentation for chat-agent modules, messages.ui_message, suggestions headers, stream metadata, eval judge credentials, and historical plan classification.

Why

The documentation audit found current docs still mixed older Vercel preview-domain, AI Gateway/Grok-era provider wording, deleted lib/agents/researcher.ts references, and stale operational details. This PR brings current docs back in line with the code and config source of truth.

Validation

  • bun run test -- lib/utils/__tests__/public-origin.test.ts
  • bun lint
  • bun typecheck
  • bun run format:check
  • git diff --check
  • rg -n "polymorph-nb\.vercel\.app" --hidden --glob '!.git/**' --glob '!node_modules/**' --glob '!services/evals/node_modules/**' . returned no matches
  • changed durable Markdown local-link check passed

Summary by CodeRabbit

  • Infrastructure & Configuration

    • Updated production app URL to polymorph.fyi
    • Configured OpenRouter as default text model provider with Vercel AI Gateway for image generation
  • Features

    • Improved guest access mode with configurable behavior and model tier defaults
  • Documentation

    • Comprehensive updates to architecture guides reflecting current AI provider setup and chat agent pipeline
    • Updated API reference and deployment documentation for clarity

Review Change Stack

@vercel

vercel Bot commented May 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
polymorph Ready Ready Preview, Comment May 27, 2026 1:54am

Request Review

@coderabbitai

coderabbitai Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

This PR updates the production app URL to polymorph.fyi and synchronizes architectural documentation to reflect internal refactoring: replacing monolithic agent orchestration with a modular chat factory/registry pattern, establishing OpenRouter as the default text provider with Vercel AI Gateway for images, updating message streaming metadata schema, and marking historical plans as superseded.

Changes

Production URL Migration and Architectural Documentation Sync

Layer / File(s) Summary
Production URL migration
.env.local.example, .github/workflows/ci.yml, .github/workflows/docker-build.yml, .github/workflows/release.yml, Dockerfile, lib/utils/__tests__/public-origin.test.ts, docs/operations/DEPLOYMENT.md, docs/reference/API.md, README.md
The production domain is updated from polymorph-nb.vercel.app to polymorph.fyi across all CI/build workflows, Docker config, example env files, test fixtures, and deployment/monitoring documentation.
Chat agent orchestration refactoring
GEMINI.md, docs/architecture/OVERVIEW.md, docs/architecture/RESEARCH-AGENT.md, docs/proposals/SKILLS-ROUTING.md, docs/reference/FILE-INDEX.md
Documentation is updated to reflect the transition from lib/agents/researcher.ts to a modular chat agent factory/registry/route-handler pattern with per-agent prompts and active tool lists; key file references are adjusted accordingly and file index entries are pruned.
AI provider and model selection
GEMINI.md, docs/architecture/MODEL-CONFIGURATION.md, docs/architecture/OVERVIEW.md, docs/assets/architecture-mermaid.md, docs/getting-started/QUICKSTART.md, docs/operations/DEPLOYMENT.md, README.md
OpenRouter is established as the default text provider (with DeepSeek V4 Flash as default model) and Vercel AI Gateway for image generation; Gateway fallback routing logic is documented for when OpenRouter is disabled; architecture diagram is updated to show the new provider relationships.
Message metadata and streaming contract
GEMINI.md, docs/architecture/OVERVIEW.md, docs/architecture/RESEARCH-AGENT.md, docs/architecture/STREAMING.md
SSE stream start events, persistence, and ephemeral stream documentation is updated to reflect the new metadata shape: { correlationId, otelTraceId, userMode, modelType, modelId } replacing { traceId, searchMode, modelId }.
API, security, and reference updates
docs/reference/API.md, SECURITY.md, docs/reference/FILE-INDEX.md, docs/operations/runbooks/day-2-operations.md, docs/README.md
API reference for guest-mode behavior, searchMode cookie handling, and health check endpoints is clarified; SECURITY.md authentication rules and RLS policies are updated; file index transitions from comprehensive to curated; key rotation and failure-mode guidance is expanded for evals infrastructure.
Historical plan status archival
docs/plans/*, docs/superpowers/plans/*
Multiple plan and proposal documents are marked as completed, historical, or superseded with status notes clarifying current implementations (e.g., dashboard-v2 completion, parts table removal via migration 0025, prompt injection not yet shipped).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

  • NickB03/polymorph#77: Both PRs modify Docker's NEXT_PUBLIC_APP_URL handling—main PR updates the value to https://polymorph.fyi in docker-build.yml/Dockerfile, while PR #77 adds/propagates the NEXT_PUBLIC_APP_URL Docker build arg + ENV wiring in the same files.
  • NickB03/polymorph#148: Both PRs update SECURITY.md's documented authentication/authorization rules—specifically the / root chat being public only when ENABLE_GUEST_CHAT=true (otherwise sign-in required)—so they are directly related at the level of the same access-control semantics.
  • NickB03/polymorph#205: Both PRs touch the same prompt-injection protection doc (docs/superpowers/plans/2026-05-06-prompt-injection-protection.md), with the main PR only tweaking its status note while the retrieved PR adds the full multi-milestone plan content and related CLAUDE.md invariant.

Poem

🐰 Hop, hop! The domain hops to .fyi,
Chat agents now split—no monolith's sigh,
DeepSeek meets OpenRouter, Gateway for sight,
Metadata fields dance in correlation light,
Plans marked historic, the docs all align,
A rabbit's refactor—the architecture's divine!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly summarizes the main changes: updating documentation and configuration to align with OpenRouter as the default text provider and polymorph.fyi as the production domain.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/docs-openrouter-polymorph-domain

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Trivy (0.69.3)

Trivy execution failed: 2026-05-27T02:11:45Z FATAL Fatal error run error: fs scan error: scan error: scan failed: failed analysis: post analysis error: post analysis error: helm scan error: fs filter error: fs filter error: walk error range error: stat .coderabbit-opengrep-fallback.yml: no such file or directory: range error: stat .coderabbit-opengrep-fallback.yml: no such file or directory


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@NickB03
NickB03 marked this pull request as ready for review May 27, 2026 02:10

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (5)
docs/superpowers/plans/2026-05-19-bklit-charts-in-admin-evals.md (1)

3-4: 💤 Low value

Markdownlint rule violation: blank line inside blockquote.

The blank line at line 4 between two blockquotes violates MD028 (no-blanks-blockquote). Same formatting pattern across multiple plan documents in this layer.

Fix for markdownlint MD028 violation

Remove the blank line between blockquotes:

 > **Status:** Completed historical plan. Gauge, area, and radar chart work is already wired into the admin evals dashboard; use this document for implementation history only.
-
 > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.

As per coding guidelines: Prettier formatting with LF line endings applies to all **/*.md files.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/plans/2026-05-19-bklit-charts-in-admin-evals.md` around
lines 3 - 4, Remove the blank line between consecutive blockquote lines to
satisfy markdownlint MD028: locate the blockquote starting with "> **Status:**
Completed historical plan." and the following blockquote and delete the empty
line between them so they are adjacent; apply the same fix to other plan
documents with the same pattern, then run Prettier to ensure LF line endings and
overall formatting consistency.
docs/superpowers/plans/2026-04-30-evals-dashboard-ia-migration.md (1)

3-4: 💤 Low value

Markdownlint rule violation: blank line inside blockquote.

The blank line at line 4 between the status blockquote and the worker instructions blockquote violates MD028 (no-blanks-blockquote). To fix, either merge these into a single blockquote or remove the blank line.

Fix for markdownlint MD028 violation

Option 1 - Remove the blank line:

 > **Status:** Completed historical plan. `/admin/evals` now uses the dashboard-v2 IA; use this document for implementation history only, not as current work instructions.
-
 > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.

Option 2 - Merge into single blockquote:

-> **Status:** Completed historical plan. `/admin/evals` now uses the dashboard-v2 IA; use this document for implementation history only, not as current work instructions.
+> **Status:** Completed historical plan. `/admin/evals` now uses the dashboard-v2 IA; use this document for implementation history only, not as current work instructions.
+>
+> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.

As per coding guidelines: Prettier formatting with LF line endings applies to all **/*.md files.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/plans/2026-04-30-evals-dashboard-ia-migration.md` around
lines 3 - 4, The MD028 violation is caused by a blank line inside the blockquote
between the "**Status:** Completed historical plan..." line and the following
worker-instructions blockquote; fix it by either removing the blank line so both
blockquote lines are contiguous or by merging the two blockquote sections into a
single blockquote paragraph in the file
docs/superpowers/plans/2026-04-30-evals-dashboard-ia-migration.md, ensuring the
result passes markdownlint and Prettier (LF) formatting.
docs/superpowers/plans/2026-05-05-evals-phoenix-insight-suite-focus.md (1)

3-4: 💤 Low value

Markdownlint rule violation: blank line inside blockquote.

The blank line at line 4 between two blockquotes violates MD028 (no-blanks-blockquote). Same issue as in the evals-dashboard-ia-migration.md file.

Fix for markdownlint MD028 violation

Remove the blank line between blockquotes:

 > **Status:** Completed historical plan, later superseded by the current dashboard-v2 attention helper. References to `phoenix-insight.tsx` describe a removed intermediate component.
-
 > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.

As per coding guidelines: Prettier formatting with LF line endings applies to all **/*.md files.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/plans/2026-05-05-evals-phoenix-insight-suite-focus.md`
around lines 3 - 4, The MD028 markdownlint violation is caused by a blank line
inside the blockquote between the lines that start with "**Status:** Completed
historical plan, later superseded by the current dashboard-v2 attention helper."
and "References to `phoenix-insight.tsx` describe a removed intermediate
component."; remove the blank line so the two blockquote lines are contiguous
(no empty line between them) and reformat to match Prettier LF rules for .md
files.
docs/superpowers/plans/2026-05-06-prompt-injection-protection.md (1)

3-4: 💤 Low value

Markdownlint rule violation: blank line inside blockquote.

The blank line at line 4 between two blockquotes violates MD028 (no-blanks-blockquote). Same issue pattern across multiple plan documents.

Fix for markdownlint MD028 violation

Remove the blank line between blockquotes:

 > **Status:** Active proposal, not implemented. Revalidate source paths and current protections before execution: the continuation validation path has moved, and the CSP/search/fetch/eval protections proposed here are not currently shipped.
-
 > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.

As per coding guidelines: Prettier formatting with LF line endings applies to all **/*.md files.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/plans/2026-05-06-prompt-injection-protection.md` around
lines 3 - 4, Remove the stray blank line between consecutive blockquote lines
that triggers markdownlint MD028 in the plan document (the blank line between
the two leading "> " lines in the quoted status text); update the file to
collapse adjacent blockquotes into contiguous lines with no empty line between
them, apply Prettier formatting with LF line endings, and sweep other plan
documents for the same pattern to ensure no other MD028 violations remain.
docs/superpowers/plans/2026-05-20-tool-selection-evaluator.md (1)

3-4: 💤 Low value

Markdownlint rule violation: blank line inside blockquote.

The blank line at line 4 between two blockquotes violates MD028 (no-blanks-blockquote). This is the sixth occurrence of the same pattern across the plan documents in this PR.

Fix for markdownlint MD028 violation

Remove the blank line between blockquotes:

 > **Status:** Completed historical plan with one operational caveat: the evaluator and dashboard labels are implemented, but judge validation against live/human-labeled production calls should be tracked in an active runbook if it is still required.
-
 > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.

As per coding guidelines: Prettier formatting with LF line endings applies to all **/*.md files.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/plans/2026-05-20-tool-selection-evaluator.md` around lines 3
- 4, Remove the stray blank line between adjacent blockquote lines in the plan
header (the line after "**Status:** Completed..." that created an empty
blockquote), so the two blockquote lines are contiguous and MD028 is satisfied;
then reformat the file with Prettier (LF endings) to ensure markdownlint rules
are enforced.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/plans/admin-evals-polish.md`:
- Around line 3-4: Remove the blank line inside the blockquote that begins with
"**Status:** Completed historical plan." in docs/plans/admin-evals-polish.md so
the blockquote has no empty lines between its lines (fixes markdownlint
MD028/no-blanks-blockquote); edit the blockquote content to be contiguous text
without any blank line separators.

In `@docs/superpowers/plans/2026-04-20-geo-map-tier-2-expansion.md`:
- Around line 3-4: The blockquote in the document contains an internal blank
line that triggers markdownlint MD028; edit the blockquote so there are no blank
lines between lines that begin with ">" (i.e., collapse the two separate ">"
paragraphs into a single contiguous blockquote), ensuring each quoted line
starts with ">" and there are no empty ">" lines inside the blockquote.

In
`@docs/superpowers/plans/2026-04-23-ai-sdk-contract-standardization-phase-2.md`:
- Around line 3-4: Remove the blank line inside the blockquote so the blockquote
uses consecutive '>' lines without an empty '>' line; locate the block
containing the line that starts with "> **Status:** Completed historical
plan..." and delete the empty line between the blockquote lines so markdownlint
MD028 is no longer triggered.

In `@docs/superpowers/plans/2026-04-23-pr-171-ai-sdk-contract-remediation.md`:
- Around line 3-4: Remove the stray blank line inside the opening blockquote to
satisfy markdownlint MD028: edit the callout that begins with "**Status:**
Historical PR remediation plan. The referenced PR and source ownership have
moved on; use this document only for review history." so the two blockquote
lines are contiguous (no empty line between them), resulting in a single
continuous blockquote.

In `@SECURITY.md`:
- Line 47: Update the SECURITY.md line about eval_summaries and
eval_case_results to explicitly state the RLS policy: specify whether rows are
readable by any authenticated app session or restricted to the admin identity
only (e.g., the user matching ADMIN_USER_ID via isAdminUserId(user.id)); change
the sentence to state the exact rule (for example, "readable only to admin user
where isAdminUserId(user.id) is true" or "readable to all authenticated app
sessions (any logged-in user)"), and if needed add a short note linking this to
the admin route requirement (isAdminUserId and ADMIN_USER_ID) so readers know
which policy applies.

---

Nitpick comments:
In `@docs/superpowers/plans/2026-04-30-evals-dashboard-ia-migration.md`:
- Around line 3-4: The MD028 violation is caused by a blank line inside the
blockquote between the "**Status:** Completed historical plan..." line and the
following worker-instructions blockquote; fix it by either removing the blank
line so both blockquote lines are contiguous or by merging the two blockquote
sections into a single blockquote paragraph in the file
docs/superpowers/plans/2026-04-30-evals-dashboard-ia-migration.md, ensuring the
result passes markdownlint and Prettier (LF) formatting.

In `@docs/superpowers/plans/2026-05-05-evals-phoenix-insight-suite-focus.md`:
- Around line 3-4: The MD028 markdownlint violation is caused by a blank line
inside the blockquote between the lines that start with "**Status:** Completed
historical plan, later superseded by the current dashboard-v2 attention helper."
and "References to `phoenix-insight.tsx` describe a removed intermediate
component."; remove the blank line so the two blockquote lines are contiguous
(no empty line between them) and reformat to match Prettier LF rules for .md
files.

In `@docs/superpowers/plans/2026-05-06-prompt-injection-protection.md`:
- Around line 3-4: Remove the stray blank line between consecutive blockquote
lines that triggers markdownlint MD028 in the plan document (the blank line
between the two leading "> " lines in the quoted status text); update the file
to collapse adjacent blockquotes into contiguous lines with no empty line
between them, apply Prettier formatting with LF line endings, and sweep other
plan documents for the same pattern to ensure no other MD028 violations remain.

In `@docs/superpowers/plans/2026-05-19-bklit-charts-in-admin-evals.md`:
- Around line 3-4: Remove the blank line between consecutive blockquote lines to
satisfy markdownlint MD028: locate the blockquote starting with "> **Status:**
Completed historical plan." and the following blockquote and delete the empty
line between them so they are adjacent; apply the same fix to other plan
documents with the same pattern, then run Prettier to ensure LF line endings and
overall formatting consistency.

In `@docs/superpowers/plans/2026-05-20-tool-selection-evaluator.md`:
- Around line 3-4: Remove the stray blank line between adjacent blockquote lines
in the plan header (the line after "**Status:** Completed..." that created an
empty blockquote), so the two blockquote lines are contiguous and MD028 is
satisfied; then reformat the file with Prettier (LF endings) to ensure
markdownlint rules are enforced.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f3cbe573-4656-4c3e-a0eb-47dac7e36400

📥 Commits

Reviewing files that changed from the base of the PR and between 8fd7e1e and a9b7240.

⛔ Files ignored due to path filters (4)
  • docs/assets/architecture-dark.png is excluded by !**/*.png
  • docs/assets/architecture-dark.svg is excluded by !**/*.svg
  • docs/assets/architecture.png is excluded by !**/*.png
  • docs/assets/architecture.svg is excluded by !**/*.svg
📒 Files selected for processing (36)
  • .env.local.example
  • .github/workflows/ci.yml
  • .github/workflows/docker-build.yml
  • .github/workflows/release.yml
  • Dockerfile
  • GEMINI.md
  • README.md
  • SECURITY.md
  • docs/README.md
  • docs/architecture/MODEL-CONFIGURATION.md
  • docs/architecture/OVERVIEW.md
  • docs/architecture/RESEARCH-AGENT.md
  • docs/architecture/STREAMING.md
  • docs/assets/architecture-mermaid.md
  • docs/getting-started/QUICKSTART.md
  • docs/operations/DEPLOYMENT.md
  • docs/operations/runbooks/day-2-operations.md
  • docs/plans/admin-evals-polish.md
  • docs/plans/evals-dashboard-ia-migration.md
  • docs/proposals/SKILLS-ROUTING.md
  • docs/reference/API.md
  • docs/reference/FILE-INDEX.md
  • docs/superpowers/plans/2026-04-19-canvas-code-block-diff.md
  • docs/superpowers/plans/2026-04-20-geo-map-tier-2-expansion.md
  • docs/superpowers/plans/2026-04-21-docs-accuracy-audit-plan.md
  • docs/superpowers/plans/2026-04-23-ai-sdk-contract-standardization-phase-1.md
  • docs/superpowers/plans/2026-04-23-ai-sdk-contract-standardization-phase-2.md
  • docs/superpowers/plans/2026-04-23-pr-171-ai-sdk-contract-remediation.md
  • docs/superpowers/plans/2026-04-27-ai-sdk-contract-standardization-phase-3.md
  • docs/superpowers/plans/2026-04-30-evals-dashboard-ia-migration.md
  • docs/superpowers/plans/2026-05-04-parts-table-removal.md
  • docs/superpowers/plans/2026-05-05-evals-phoenix-insight-suite-focus.md
  • docs/superpowers/plans/2026-05-06-prompt-injection-protection.md
  • docs/superpowers/plans/2026-05-19-bklit-charts-in-admin-evals.md
  • docs/superpowers/plans/2026-05-20-tool-selection-evaluator.md
  • lib/utils/__tests__/public-origin.test.ts

Comment on lines +3 to +4
> **Status:** Completed historical plan. The polish pieces described here are already represented in the current dashboard-v2 components; use this document for implementation history only.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Remove the blank line inside the blockquote.

This trips markdownlint MD028 (no-blanks-blockquote) and can fail doc lint pipelines.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 4-4: Blank line inside blockquote

(MD028, no-blanks-blockquote)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/plans/admin-evals-polish.md` around lines 3 - 4, Remove the blank line
inside the blockquote that begins with "**Status:** Completed historical plan."
in docs/plans/admin-evals-polish.md so the blockquote has no empty lines between
its lines (fixes markdownlint MD028/no-blanks-blockquote); edit the blockquote
content to be contiguous text without any blank line separators.

Comment on lines +3 to +4
> **Status:** Completed historical plan. Geo Tier 2 tools are already part of the current chat-agent toolset; source paths below predate the `lib/agents/chat/*` module split and should not be used as fresh execution instructions.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix blockquote spacing to satisfy markdownlint.

There is a blank line inside the blockquote, which triggers MD028 (no-blanks-blockquote).

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 4-4: Blank line inside blockquote

(MD028, no-blanks-blockquote)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/plans/2026-04-20-geo-map-tier-2-expansion.md` around lines 3
- 4, The blockquote in the document contains an internal blank line that
triggers markdownlint MD028; edit the blockquote so there are no blank lines
between lines that begin with ">" (i.e., collapse the two separate ">"
paragraphs into a single contiguous blockquote), ensuring each quoted line
starts with ">" and there are no empty ">" lines inside the blockquote.

Comment on lines +3 to +4
> **Status:** Completed historical plan. Current runtime ownership lives in `lib/agents/chat/*`, and `messages.ui_message` is the canonical persistence contract; use this document only for implementation history.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Remove the empty line within the blockquote block.

markdownlint flags this as MD028 (no-blanks-blockquote).

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 4-4: Blank line inside blockquote

(MD028, no-blanks-blockquote)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/plans/2026-04-23-ai-sdk-contract-standardization-phase-2.md`
around lines 3 - 4, Remove the blank line inside the blockquote so the
blockquote uses consecutive '>' lines without an empty '>' line; locate the
block containing the line that starts with "> **Status:** Completed historical
plan..." and delete the empty line between the blockquote lines so markdownlint
MD028 is no longer triggered.

Comment on lines +3 to +4
> **Status:** Historical PR remediation plan. The referenced PR and source ownership have moved on; use this document only for review history.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Address markdownlint MD028 in the opening callout.

The blank line between blockquote lines should be removed to keep the blockquote contiguous.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 4-4: Blank line inside blockquote

(MD028, no-blanks-blockquote)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/plans/2026-04-23-pr-171-ai-sdk-contract-remediation.md`
around lines 3 - 4, Remove the stray blank line inside the opening blockquote to
satisfy markdownlint MD028: edit the callout that begins with "**Status:**
Historical PR remediation plan. The referenced PR and source ownership have
moved on; use this document only for review history." so the two blockquote
lines are contiguous (no empty line between them), resulting in a single
continuous blockquote.

Comment thread SECURITY.md
- **canvasArtifacts**, **canvasArtifactVersions** -- Access scoped to the owning user via the parent chat chain.
- **artifacts**, **artifactRevisions**, **artifactRuntimeSessions** -- Legacy artifact tables; access scoped to the owning user via the parent artifact/chat chain.
- **feedback** -- Anyone can insert feedback; all feedback is readable (no sensitive user data stored).
- **eval_summaries**, **eval_case_results** -- readable to authenticated app sessions for the admin dashboard.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Clarify the RLS policy for eval tables.

The description "readable to authenticated app sessions for the admin dashboard" is ambiguous. Does this mean:

  • All authenticated users can read these tables (but only admin users can view the dashboard UI)?
  • Only the admin user (matching ADMIN_USER_ID) can read these tables?

Based on line 35's description of admin routes requiring isAdminUserId(user.id), consider clarifying whether the RLS policy is authenticated-wide or admin-only.

📝 Suggested clarification

If admin-only:

-- **eval_summaries**, **eval_case_results** -- readable to authenticated app sessions for the admin dashboard.
+- **eval_summaries**, **eval_case_results** -- admin-only access for the `/admin/evals` dashboard.

If authenticated-wide:

-- **eval_summaries**, **eval_case_results** -- readable to authenticated app sessions for the admin dashboard.
+- **eval_summaries**, **eval_case_results** -- readable by all authenticated users; surfaced in the admin-only `/admin/evals` dashboard.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@SECURITY.md` at line 47, Update the SECURITY.md line about eval_summaries and
eval_case_results to explicitly state the RLS policy: specify whether rows are
readable by any authenticated app session or restricted to the admin identity
only (e.g., the user matching ADMIN_USER_ID via isAdminUserId(user.id)); change
the sentence to state the exact rule (for example, "readable only to admin user
where isAdminUserId(user.id) is true" or "readable to all authenticated app
sessions (any logged-in user)"), and if needed add a short note linking this to
the admin route requirement (isAdminUserId and ADMIN_USER_ID) so readers know
which policy applies.

@NickB03
NickB03 merged commit b30052f into main May 27, 2026
9 checks passed
@NickB03
NickB03 deleted the codex/docs-openrouter-polymorph-domain branch May 27, 2026 02:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant