Skip to content

docs: seed universe knowledge (75 docs from BAWES site) - #1

Open
BAWES wants to merge 1 commit into
mainfrom
docs/universe-seed
Open

docs: seed universe knowledge (75 docs from BAWES site)#1
BAWES wants to merge 1 commit into
mainfrom
docs/universe-seed

Conversation

@BAWES

@BAWES BAWES commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Seeds docs/universe/ from the BAWES marketing site content tree: 65 feature docs (platform, spatial world incl. meeting rooms, AI bots, MCP) + 10 site-content docs. All public, non-sensitive. Guardrail scan passes (script self-match fixed).

Summary by CodeRabbit

  • Documentation
    • Added a comprehensive feature catalog covering platform infrastructure, spatial-world capabilities, AI bots, MCP integrations, content, partnerships, and project information.
    • Documented authentication, self-hosting, administration, maps, editors, communication, avatars, bots, media, and integrations.
    • Added website specifications for navigation, homepage sections, key pages, contact flows, and footer content.
    • Added cross-references, feature statuses, setup guidance, and related resource links throughout the documentation.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Added a complete Universe documentation catalog for platform features, spatial-world capabilities, AI bots, MCP, organizational information, partners, and website specifications. Updated the guardrail scan to exclude its own script.

Changes

Universe feature documentation

Layer / File(s) Summary
Platform documentation
docs/universe/features/README.md, docs/universe/features/01-platform/...
Added feature indexes and documentation for platform administration, OIDC authentication, self-hosting, Orbit, the Orbit Model, and the WorkAdventure fork.
Spatial world documentation
docs/universe/features/02-spatial-world/...
Added documentation for maps, editors, zones, communication, avatars, chat, search, teleportation, scripting, user interaction, and meeting rooms.
AI bot and MCP documentation
docs/universe/features/03-ai-bots/..., docs/universe/features/04-mcp/...
Added documentation for bot behaviors, memory, media, providers, recursive bots, MCP authentication, server management, discovery, observability, and administration.
About, content, and partner documentation
docs/universe/features/05-about/..., docs/universe/features/06-content/..., docs/universe/features/07-partners/...
Added pages for team, technology, contact, legal information, blog content, and WorkAdventure attribution.
Website specifications
docs/universe/site/...
Added specifications for navigation, hero content, homepage sections, product pages, manifesto, Empty Seat, contact, and footer content.

Guardrail maintenance

Layer / File(s) Summary
Secret scan exclusion
scripts/guardrail-scan.sh
Excluded the scan script itself from secret-pattern search results.

Estimated code review effort: 2 (Simple) | ~15 minutes

🚥 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 title clearly summarizes the main change: adding 75 Universe documentation files sourced from the BAWES site.
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.
✨ 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 docs/universe-seed

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 8

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

🟡 Minor comments (18)
docs/universe/features/05-about/legal/README.md-3-4 (1)

3-4: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Link the legal documents to their canonical destinations.

The site footer defines /terms-of-use and /privacy-policy, but this page only says that the documents are published on bawes.net. Add links to the canonical pages or record their exact public URLs.

🤖 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/universe/features/05-about/legal/README.md` around lines 3 - 4, Update
the legal document entries in the README to include links to the canonical Terms
of Use and Privacy Policy destinations, using the footer routes `/terms-of-use`
and `/privacy-policy` or their exact public URLs instead of only stating that
they are published on bawes.net.
docs/universe/features/06-content/blog/README.md-19-21 (1)

19-21: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Correct relative-link depth for cross-directory references.

Both pages traverse only one parent directory from nested documentation files.

  • docs/universe/features/06-content/blog/README.md#L19-L21: use ../../06-lore/... if lore is a sibling feature directory, or add the referenced targets under 06-content.
  • docs/universe/features/07-partners/workadventure/README.md#L18-L18: use ../../03-ai-bots/..., ../../04-mcp/..., ../../01-platform/orbit/, and ../../02-spatial-world/avatar-platform/, or update them to the actual locations.
🤖 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/universe/features/06-content/blog/README.md` around lines 19 - 21,
Correct the cross-directory links in
docs/universe/features/06-content/blog/README.md lines 19-21 to traverse two
parent directories before reaching the sibling lore directories, or relocate the
targets under 06-content. Also update the links in
docs/universe/features/07-partners/workadventure/README.md line 18 to use the
correct two-level relative paths for 03-ai-bots, 04-mcp, 01-platform/orbit, and
02-spatial-world/avatar-platform, or point them to their actual locations.
docs/universe/site/01-hero.md-6-9 (1)

6-9: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add language identifiers to the fenced blocks.

markdownlint reports MD040. Use text or another appropriate language identifier for each prose block.

Proposed fix
-```
+```text

Also applies to: 12-14, 17-19

🤖 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/universe/site/01-hero.md` around lines 6 - 9, Add a language identifier
such as text to the fenced prose blocks in the hero documentation, including the
blocks at the referenced sections, so each fence satisfies markdownlint MD040
while preserving its content.

Source: Linters/SAST tools

docs/universe/site/07-empty-seat.md-22-22 (1)

22-22: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Hyphenate decision-making.

Change Reduced ego-driven decision making to Reduced ego-driven decision-making.

🤖 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/universe/site/07-empty-seat.md` at line 22, Update the “Reduced
ego-driven decision making” bullet to hyphenate “decision-making,” preserving
the rest of the wording.

Source: Linters/SAST tools

docs/universe/site/05-components.md-19-19 (1)

19-19: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use a consistent icon value for Thought Processor.

The table declares an emoji column, but is a CJK character and does not match the other entries. Replace it with the intended emoji or rename the column to describe the icon or glyph.

🤖 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/universe/site/05-components.md` at line 19, Update the Thought Processor
table entry to use the intended emoji in the emoji column, replacing the CJK
character `易`; preserve the existing table structure and other entry fields.
docs/universe/features/01-platform/orbit-model/README.md-29-38 (1)

29-38: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Define the adapted Orbit calculation.

The document describes Momentum as a fourth force, but Line 11 defines Gravity as the result of Love × Reach. The table then lists Gravity as another force. State whether Gravity is an output or an input, and define how Momentum changes the formula.

🤖 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/universe/features/01-platform/orbit-model/README.md` around lines 29 -
38, Update the Orbit model documentation around the existing Gravity definition
and “How Universe Adapts the Model” section to explicitly distinguish calculated
Gravity from input forces, then provide the adapted Orbit formula showing how
Momentum modifies the original Love × Reach calculation. Keep the terminology
consistent between the formula, force table, and surrounding explanation.
docs/universe/features/01-platform/admin-api/README.md-9-10 (1)

9-10: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Correct the relative-path depth for nested feature documents.

These READMEs use ./ or ../ where sibling sections require one or two additional parent traversals.

  • docs/universe/features/01-platform/admin-api/README.md#L9-L10: use ../../03-ai-bots/ and ../../04-mcp/.
  • docs/universe/features/01-platform/admin-api/README.md#L21-L22: use ../orbit/ and ../../03-ai-bots/.
  • docs/universe/features/01-platform/oidc-auth/README.md#L13-L15: use ../self-hosting/ and ../../02-spatial-world/.
  • docs/universe/features/01-platform/self-hosting/README.md#L9-L10: use ../../04-mcp/ and ../oidc-auth/.
  • docs/universe/features/01-platform/self-hosting/README.md#L23-L23: use ../workadventure-fork/.
  • docs/universe/features/01-platform/self-hosting/README.md#L27-L28: use ../admin-api/ and ../orbit/.
  • docs/universe/features/01-platform/orbit/README.md#L10-L13: use ../../02-spatial-world/, ../../03-ai-bots/, and ../../04-mcp/.
  • docs/universe/features/01-platform/orbit/README.md#L18-L20: use ../admin-api/, ../orbit-model/, and ../../03-ai-bots/.
  • docs/universe/features/01-platform/orbit-model/README.md#L72-L73: use ../orbit/ and ../admin-api/.
  • docs/universe/features/02-spatial-world/meeting-rooms/README.md#L18-L19: use ../area-zones/ and ../proximity-chat/.
  • docs/universe/features/02-spatial-world/proximity-chat/README.md#L27-L27: use ../../05-about/technology-stack/.
  • docs/universe/features/02-spatial-world/screen-sharing/README.md#L16-L17: use ../proximity-chat/ and ../megaphone/.
  • docs/universe/features/02-spatial-world/bot-editor/README.md#L38-L40: use ../../03-ai-bots/ and ../../01-platform/.
🤖 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/universe/features/01-platform/admin-api/README.md` around lines 9 - 10,
Correct the nested-feature README links: in
docs/universe/features/01-platform/admin-api/README.md lines 9-10 use
../../03-ai-bots/ and ../../04-mcp/, and lines 21-22 use ../orbit/ and
../../03-ai-bots/; in docs/universe/features/01-platform/oidc-auth/README.md
lines 13-15 use ../self-hosting/ and ../../02-spatial-world/; in
docs/universe/features/01-platform/self-hosting/README.md lines 9-10 use
../../04-mcp/ and ../oidc-auth/, line 23 use ../workadventure-fork/, and lines
27-28 use ../admin-api/ and ../orbit/; in
docs/universe/features/01-platform/orbit/README.md lines 10-13 use
../../02-spatial-world/, ../../03-ai-bots/, and ../../04-mcp/, and lines 18-20
use ../admin-api/, ../orbit-model/, and ../../03-ai-bots/; in
docs/universe/features/01-platform/orbit-model/README.md lines 72-73 use
../orbit/ and ../admin-api/; in
docs/universe/features/02-spatial-world/meeting-rooms/README.md lines 18-19 use
../area-zones/ and ../proximity-chat/; in
docs/universe/features/02-spatial-world/proximity-chat/README.md line 27 use
../../05-about/technology-stack/; in
docs/universe/features/02-spatial-world/screen-sharing/README.md lines 16-17 use
../proximity-chat/ and ../megaphone/; and in
docs/universe/features/02-spatial-world/bot-editor/README.md lines 38-40 use
../../03-ai-bots/ and ../../01-platform/.
docs/universe/features/README.md-7-7 (1)

7-7: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add a language identifier to the fenced tree.

markdownlint-cli2 reports MD040. Use text for this non-code tree.

Proposed fix
-```
+```text
🤖 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/universe/features/README.md` at line 7, Add the text language identifier
to the fenced tree in the documentation so the opening fence uses ```text,
resolving the MD040 markdownlint violation while leaving the tree content
unchanged.

Source: Linters/SAST tools

docs/universe/features/02-spatial-world/text-chat/README.md-13-13 (1)

13-13: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Correct the cross-section and sibling links.

Use ../../03-ai-bots/bot-streaming-chat/ for the AI-bots link. Use ../proximity-chat/ and ../matrix-chat/ for spatial-world siblings. The current paths resolve below text-chat or 02-spatial-world.

Also applies to: 17-18

🤖 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/universe/features/02-spatial-world/text-chat/README.md` at line 13,
Update the links in the text-chat README, including the references around the
affected lines, so the AI-bots link uses ../../03-ai-bots/bot-streaming-chat/
and spatial-world sibling links use ../proximity-chat/ and ../matrix-chat/.
Ensure no links resolve relative to text-chat or the 02-spatial-world directory
incorrectly.
docs/universe/features/02-spatial-world/maps/README.md-14-15 (1)

14-15: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use directory-relative paths for sibling feature links. These nested READMEs use ./ or insufficient .. segments, so links resolve to nonexistent child directories.

  • docs/universe/features/02-spatial-world/maps/README.md#L14-L15: use ../area-zones/ and ../meeting-rooms/.
  • docs/universe/features/01-platform/workadventure-fork/README.md#L9-L23: use ../ for platform siblings and ../../ for other feature groups.
  • docs/universe/features/02-spatial-world/map-templates/README.md#L7-L7: use ../maps/.
  • docs/universe/features/02-spatial-world/user-directory/README.md#L16-L19: use ../ for all four sibling links.
  • docs/universe/features/02-spatial-world/follow/README.md#L24-L25: use ../ for both sibling links.
  • docs/universe/features/02-spatial-world/scripting-api/README.md#L19-L30: use ../area-zones/.
  • docs/universe/features/02-spatial-world/emoji-reactions/README.md#L16-L17: use ../ for both sibling links.
  • docs/universe/features/02-spatial-world/lock-discussion/README.md#L16-L17: use ../ for both sibling links.
  • docs/universe/features/02-spatial-world/text-chat/README.md#L13-L18: use ../../ for 03-ai-bots and ../ for spatial-world siblings.
  • docs/universe/features/02-spatial-world/matrix-chat/README.md#L13-L13: use ../ for both sibling links.
🤖 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/universe/features/02-spatial-world/maps/README.md` around lines 14 - 15,
Update the sibling feature links to use directory-relative paths: in
docs/universe/features/02-spatial-world/maps/README.md lines 14-15 use
../area-zones/ and ../meeting-rooms/; in
docs/universe/features/01-platform/workadventure-fork/README.md lines 9-23 use
../ for platform siblings and ../../ for other feature groups; in
docs/universe/features/02-spatial-world/map-templates/README.md line 7 use
../maps/; in user-directory/README.md lines 16-19, follow/README.md lines 24-25,
emoji-reactions/README.md lines 16-17, lock-discussion/README.md lines 16-17,
and matrix-chat/README.md line 13 use ../ for sibling links; in
scripting-api/README.md lines 19-30 use ../area-zones/; and in
text-chat/README.md lines 13-18 use ../../ for 03-ai-bots and ../ for
spatial-world siblings.
docs/universe/features/02-spatial-world/scripting-api/README.md-19-19 (1)

19-19: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Fix the area-zones links.

Use ../area-zones/ from this nested README. The current ./area-zones/ path resolves below scripting-api.

Also applies to: 30-30

🤖 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/universe/features/02-spatial-world/scripting-api/README.md` at line 19,
Update the area-zones link in the nested README feature list, and the
corresponding entry in the 30-30 location, from ./area-zones/ to ../area-zones/
so both links resolve relative to their README directories.
docs/universe/features/02-spatial-world/inline-map-editor/README.md-7-13 (1)

7-13: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Correct relative links from nested feature directories.

The Related sections consistently use paths relative to 02-spatial-world/, although each README.md is one level deeper. These links will fail in the rendered documentation unless they use ../ for sibling features and ../../ for platform or AI-bot features.

  • docs/universe/features/02-spatial-world/inline-map-editor/README.md#L7-L13: use ../area-zones/, ../megaphone/, and ../maps/.
  • docs/universe/features/02-spatial-world/area-zones/README.md#L31-L38: use ../../01-platform/..., ../entity-editor/, ../scripting-api/, and ../avatar-platform/; remove the empty # link.
  • docs/universe/features/02-spatial-world/megaphone/README.md#L14-L20: use ../inline-map-editor/, ../proximity-chat/, and ../area-zones/.
  • docs/universe/features/02-spatial-world/play-audio/README.md#L16-L18: use ../area-zones/, ../maps/, and ../megaphone/.
  • docs/universe/features/02-spatial-world/teleport/README.md#L27-L28: use ../area-zones/ and ../maps/.
  • docs/universe/features/02-spatial-world/searchable/README.md#L16-L19: use sibling paths, ../../01-platform/orbit/, and an inline-map-editor destination for the Area editor link.
  • docs/universe/features/02-spatial-world/entity-editor/README.md#L16-L34: use ../area-zones/, ../maps/, and ../scripting-api/.
  • docs/universe/features/02-spatial-world/white-label-rebranding/README.md#L13-L14: use ../../01-platform/self-hosting/ and ../inline-map-editor/.
  • docs/universe/features/02-spatial-world/avatar-platform/README.md#L32-L35: use ../woka-avatars/, ../../03-ai-bots/bot-avatars/, and ../../01-platform/....
  • docs/universe/features/02-spatial-world/woka-avatars/README.md#L10-L14: use ../avatar-platform/ and ../../03-ai-bots/bot-avatars/.
  • docs/universe/features/02-spatial-world/availability-status/README.md#L26-L27: use ../user-directory/ and ../proximity-chat/.
🤖 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/universe/features/02-spatial-world/inline-map-editor/README.md` around
lines 7 - 13, Correct the relative links in the Related sections across
docs/universe/features/02-spatial-world/inline-map-editor/README.md:7-13,
area-zones/README.md:31-38, megaphone/README.md:14-20,
play-audio/README.md:16-18, teleport/README.md:27-28,
searchable/README.md:16-19, entity-editor/README.md:16-34,
white-label-rebranding/README.md:13-14, avatar-platform/README.md:32-35,
woka-avatars/README.md:10-14, and availability-status/README.md:26-27. Use ../
for sibling feature directories, ../../ for 01-platform and 03-ai-bots
destinations, point searchable’s Area editor link to inline-map-editor, and
remove the empty # link in area-zones.
docs/universe/features/03-ai-bots/README.md-15-15 (1)

15-15: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Add the period after etc.

Use etc. in the bot-provider-config description.

🤖 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/universe/features/03-ai-bots/README.md` at line 15, Update the
bot-provider-config description in the feature table to use “etc.” with the
trailing period.

Source: Linters/SAST tools

docs/universe/features/04-mcp/mcp-auth-bearer/README.md-3-3 (1)

3-3: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Use a valid bearer-header example.

Replace Authorization: Bearer... with Authorization: Bearer <token> or a redacted token example. The bearer scheme requires at least one space between Bearer and the token.

🤖 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/universe/features/04-mcp/mcp-auth-bearer/README.md` at line 3, Update
the bearer authentication description to show a valid Authorization header
example with a space between Bearer and the token, using the format “Bearer
<token>” or an equivalent redacted token.

Source: MCP tools

docs/universe/features/04-mcp/mcp-oauth/README.md-17-17 (1)

17-17: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Name both discovery documents correctly.

RFC 9728 defines Protected Resource Metadata. RFC 8414 defines Authorization Server Metadata. Update this item to distinguish the two specifications, for example: “Auto-discovery via RFC 9728 Protected Resource Metadata and RFC 8414 Authorization Server Metadata.”

🤖 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/universe/features/04-mcp/mcp-oauth/README.md` at line 17, Update the
auto-discovery bullet in the MCP OAuth README to name both documents accurately:
RFC 9728 Protected Resource Metadata and RFC 8414 Authorization Server Metadata.

Source: MCP tools

docs/universe/features/04-mcp/mcp-tool-discovery/README.md-20-20 (1)

20-20: 🚀 Performance & Scalability | 🟡 Minor | ⚡ Quick win

Qualify the HTTP-request estimate.

The 1-hour cache prevents tools/list from running on every turn. Cache misses can query each configured server, up to the 5-server soft cap, and a turn can make multiple tools/call requests within the 10-second budget. Label this as a typical estimate or document the exact request limit.

🤖 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/universe/features/04-mcp/mcp-tool-discovery/README.md` at line 20,
Update the HTTP-request estimate in the MCP tool discovery documentation to
qualify it as typical rather than universal, accounting for cache misses,
multiple configured servers, and multiple tools/call requests within the turn
budget; alternatively document the exact upper bound using the existing
five-server cap and ten-second budget.
docs/universe/features/03-ai-bots/bot-gallery/README.md-9-11 (1)

9-11: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Correct the gallery boundary.

Four- and five-image galleries do not have a sixth cell. Use separate descriptions for 4-5 and 6+ images, or document the actual overflow behavior.

🤖 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/universe/features/03-ai-bots/bot-gallery/README.md` around lines 9 - 11,
Update the image-count descriptions in the gallery documentation to distinguish
4–5 image galleries from 6+ galleries, ensuring the +N overflow overlay is only
documented when a sixth cell exists.
docs/universe/features/03-ai-bots/bot-provider-config/README.md-5-11 (1)

5-11: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Separate providers from models and runtimes.

Qwen 3B is a model, not an API provider. LMStudio is a runtime or hosting application. Document providers, models, defaults, and runtimes as separate configuration fields.

🤖 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/universe/features/03-ai-bots/bot-provider-config/README.md` around lines
5 - 11, Update the bot provider configuration documentation to separate API
providers, models, defaults, and runtimes into distinct configuration fields.
Move Qwen 3B under models and LMStudio under runtimes or hosting applications,
while keeping actual API providers in the providers section and identifying the
configured default model separately.
🤖 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/universe/features/02-spatial-world/proximity-chat/README.md`:
- Around line 5-7: Define a single canonical real-time communication contract
across the documented features: in
docs/universe/features/02-spatial-world/proximity-chat/README.md lines 5-7,
explicitly state that LiveKit is only the server-mode transport; in
docs/universe/features/02-spatial-world/meeting-rooms/README.md lines 10-14,
identify the canonical provider URL and transport for scheduled meetings; and in
lines 18-18, update the area-zone property description to match that provider
choice.

In `@docs/universe/features/03-ai-bots/bot-tool-calling/README.md`:
- Around line 7-11: Update the timeout guidance in the bot tool-calling flow to
explicitly distinguish synchronous job submission from asynchronous polling.
Document how pending media tools such as ComfyUI generation continue beyond the
5-second per-call and 10-second per-turn budgets, or revise those limits if they
apply to the entire operation, ensuring the documented flow supports 10–30
second generation.

In `@docs/universe/features/03-ai-bots/recursive-bots/README.md`:
- Around line 7-10: Update the recursive-bots documentation to define
least-privilege delegated scopes for bot-initiated Admin API and MCP
provisioning, require approval or explicit allowlists, enforce recursion-depth
and resource quotas, and record audit logs for each provisioning action. Clarify
that the five-server-per-bot soft cap does not limit recursive bot creation, and
document how delegated permissions are authenticated beyond API-key-only access.

In `@docs/universe/features/04-mcp/mcp-encryption/README.md`:
- Line 17: Update the MCP encryption README’s risks and trust-boundary
documentation to explicitly state whether untrusted MCP servers or bot-created
configurations are supported. If they are supported, document or implement SSRF
protection and tool-output sanitization or isolation; otherwise, state that only
trusted operators and MCP servers are supported, including the recursive-bot
path.
- Around line 14-15: Update the MCP encryption documentation to require explicit
creator or tenant authorization checks before every read and decrypt operation.
Clarify that AES-256-GCM and per-creator key derivation provide encryption and
defense in depth only, not access control.

In `@docs/universe/site/00-navigation.md`:
- Line 18: Expand the mobile navigation guidance around the hamburger menu to
specify an accessible button name, aria-expanded state, moving focus into the
opened overlay, trapping focus within it, closing on Escape, restoring focus to
the trigger, and making the background inert while open.

In `@docs/universe/site/01-hero.md`:
- Line 22: Define the privacy requirements for the “Enter the Universe” CTA’s
cross-domain PostHog tracking, covering consent, opt-out handling, identifier
propagation, retention, and deletion. Configure PostHog to enforce these rules
before the CTA is shipped.

In `@docs/universe/site/08-contact.md`:
- Line 20: Replace the direct Discord webhook submission described in the
contact-form flow with a server-side endpoint that keeps the webhook secret
private. Define server-side validation, rate limiting, user notice or consent
for sharing names, email addresses, and project details, plus explicit retention
and deletion rules; preserve the success/error toast behavior for the form.

---

Minor comments:
In `@docs/universe/features/01-platform/admin-api/README.md`:
- Around line 9-10: Correct the nested-feature README links: in
docs/universe/features/01-platform/admin-api/README.md lines 9-10 use
../../03-ai-bots/ and ../../04-mcp/, and lines 21-22 use ../orbit/ and
../../03-ai-bots/; in docs/universe/features/01-platform/oidc-auth/README.md
lines 13-15 use ../self-hosting/ and ../../02-spatial-world/; in
docs/universe/features/01-platform/self-hosting/README.md lines 9-10 use
../../04-mcp/ and ../oidc-auth/, line 23 use ../workadventure-fork/, and lines
27-28 use ../admin-api/ and ../orbit/; in
docs/universe/features/01-platform/orbit/README.md lines 10-13 use
../../02-spatial-world/, ../../03-ai-bots/, and ../../04-mcp/, and lines 18-20
use ../admin-api/, ../orbit-model/, and ../../03-ai-bots/; in
docs/universe/features/01-platform/orbit-model/README.md lines 72-73 use
../orbit/ and ../admin-api/; in
docs/universe/features/02-spatial-world/meeting-rooms/README.md lines 18-19 use
../area-zones/ and ../proximity-chat/; in
docs/universe/features/02-spatial-world/proximity-chat/README.md line 27 use
../../05-about/technology-stack/; in
docs/universe/features/02-spatial-world/screen-sharing/README.md lines 16-17 use
../proximity-chat/ and ../megaphone/; and in
docs/universe/features/02-spatial-world/bot-editor/README.md lines 38-40 use
../../03-ai-bots/ and ../../01-platform/.

In `@docs/universe/features/01-platform/orbit-model/README.md`:
- Around line 29-38: Update the Orbit model documentation around the existing
Gravity definition and “How Universe Adapts the Model” section to explicitly
distinguish calculated Gravity from input forces, then provide the adapted Orbit
formula showing how Momentum modifies the original Love × Reach calculation.
Keep the terminology consistent between the formula, force table, and
surrounding explanation.

In `@docs/universe/features/02-spatial-world/inline-map-editor/README.md`:
- Around line 7-13: Correct the relative links in the Related sections across
docs/universe/features/02-spatial-world/inline-map-editor/README.md:7-13,
area-zones/README.md:31-38, megaphone/README.md:14-20,
play-audio/README.md:16-18, teleport/README.md:27-28,
searchable/README.md:16-19, entity-editor/README.md:16-34,
white-label-rebranding/README.md:13-14, avatar-platform/README.md:32-35,
woka-avatars/README.md:10-14, and availability-status/README.md:26-27. Use ../
for sibling feature directories, ../../ for 01-platform and 03-ai-bots
destinations, point searchable’s Area editor link to inline-map-editor, and
remove the empty # link in area-zones.

In `@docs/universe/features/02-spatial-world/maps/README.md`:
- Around line 14-15: Update the sibling feature links to use directory-relative
paths: in docs/universe/features/02-spatial-world/maps/README.md lines 14-15 use
../area-zones/ and ../meeting-rooms/; in
docs/universe/features/01-platform/workadventure-fork/README.md lines 9-23 use
../ for platform siblings and ../../ for other feature groups; in
docs/universe/features/02-spatial-world/map-templates/README.md line 7 use
../maps/; in user-directory/README.md lines 16-19, follow/README.md lines 24-25,
emoji-reactions/README.md lines 16-17, lock-discussion/README.md lines 16-17,
and matrix-chat/README.md line 13 use ../ for sibling links; in
scripting-api/README.md lines 19-30 use ../area-zones/; and in
text-chat/README.md lines 13-18 use ../../ for 03-ai-bots and ../ for
spatial-world siblings.

In `@docs/universe/features/02-spatial-world/scripting-api/README.md`:
- Line 19: Update the area-zones link in the nested README feature list, and the
corresponding entry in the 30-30 location, from ./area-zones/ to ../area-zones/
so both links resolve relative to their README directories.

In `@docs/universe/features/02-spatial-world/text-chat/README.md`:
- Line 13: Update the links in the text-chat README, including the references
around the affected lines, so the AI-bots link uses
../../03-ai-bots/bot-streaming-chat/ and spatial-world sibling links use
../proximity-chat/ and ../matrix-chat/. Ensure no links resolve relative to
text-chat or the 02-spatial-world directory incorrectly.

In `@docs/universe/features/03-ai-bots/bot-gallery/README.md`:
- Around line 9-11: Update the image-count descriptions in the gallery
documentation to distinguish 4–5 image galleries from 6+ galleries, ensuring the
+N overflow overlay is only documented when a sixth cell exists.

In `@docs/universe/features/03-ai-bots/bot-provider-config/README.md`:
- Around line 5-11: Update the bot provider configuration documentation to
separate API providers, models, defaults, and runtimes into distinct
configuration fields. Move Qwen 3B under models and LMStudio under runtimes or
hosting applications, while keeping actual API providers in the providers
section and identifying the configured default model separately.

In `@docs/universe/features/03-ai-bots/README.md`:
- Line 15: Update the bot-provider-config description in the feature table to
use “etc.” with the trailing period.

In `@docs/universe/features/04-mcp/mcp-auth-bearer/README.md`:
- Line 3: Update the bearer authentication description to show a valid
Authorization header example with a space between Bearer and the token, using
the format “Bearer <token>” or an equivalent redacted token.

In `@docs/universe/features/04-mcp/mcp-oauth/README.md`:
- Line 17: Update the auto-discovery bullet in the MCP OAuth README to name both
documents accurately: RFC 9728 Protected Resource Metadata and RFC 8414
Authorization Server Metadata.

In `@docs/universe/features/04-mcp/mcp-tool-discovery/README.md`:
- Line 20: Update the HTTP-request estimate in the MCP tool discovery
documentation to qualify it as typical rather than universal, accounting for
cache misses, multiple configured servers, and multiple tools/call requests
within the turn budget; alternatively document the exact upper bound using the
existing five-server cap and ten-second budget.

In `@docs/universe/features/05-about/legal/README.md`:
- Around line 3-4: Update the legal document entries in the README to include
links to the canonical Terms of Use and Privacy Policy destinations, using the
footer routes `/terms-of-use` and `/privacy-policy` or their exact public URLs
instead of only stating that they are published on bawes.net.

In `@docs/universe/features/06-content/blog/README.md`:
- Around line 19-21: Correct the cross-directory links in
docs/universe/features/06-content/blog/README.md lines 19-21 to traverse two
parent directories before reaching the sibling lore directories, or relocate the
targets under 06-content. Also update the links in
docs/universe/features/07-partners/workadventure/README.md line 18 to use the
correct two-level relative paths for 03-ai-bots, 04-mcp, 01-platform/orbit, and
02-spatial-world/avatar-platform, or point them to their actual locations.

In `@docs/universe/features/README.md`:
- Line 7: Add the text language identifier to the fenced tree in the
documentation so the opening fence uses ```text, resolving the MD040
markdownlint violation while leaving the tree content unchanged.

In `@docs/universe/site/01-hero.md`:
- Around line 6-9: Add a language identifier such as text to the fenced prose
blocks in the hero documentation, including the blocks at the referenced
sections, so each fence satisfies markdownlint MD040 while preserving its
content.

In `@docs/universe/site/05-components.md`:
- Line 19: Update the Thought Processor table entry to use the intended emoji in
the emoji column, replacing the CJK character `易`; preserve the existing table
structure and other entry fields.

In `@docs/universe/site/07-empty-seat.md`:
- Line 22: Update the “Reduced ego-driven decision making” bullet to hyphenate
“decision-making,” preserving the rest of the wording.
🪄 Autofix

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 Plus

Run ID: 98b464ee-0ab2-4b71-ac94-a12d5f0ef88d

📥 Commits

Reviewing files that changed from the base of the PR and between 975d6b7 and 1f923b3.

📒 Files selected for processing (76)
  • docs/universe/features/01-platform/README.md
  • docs/universe/features/01-platform/admin-api/README.md
  • docs/universe/features/01-platform/oidc-auth/README.md
  • docs/universe/features/01-platform/orbit-model/README.md
  • docs/universe/features/01-platform/orbit/README.md
  • docs/universe/features/01-platform/self-hosting/README.md
  • docs/universe/features/01-platform/workadventure-fork/README.md
  • docs/universe/features/02-spatial-world/README.md
  • docs/universe/features/02-spatial-world/area-zones/README.md
  • docs/universe/features/02-spatial-world/availability-status/README.md
  • docs/universe/features/02-spatial-world/avatar-platform/README.md
  • docs/universe/features/02-spatial-world/bot-editor/README.md
  • docs/universe/features/02-spatial-world/emoji-reactions/README.md
  • docs/universe/features/02-spatial-world/entity-editor/README.md
  • docs/universe/features/02-spatial-world/follow/README.md
  • docs/universe/features/02-spatial-world/inline-map-editor/README.md
  • docs/universe/features/02-spatial-world/lock-discussion/README.md
  • docs/universe/features/02-spatial-world/map-templates/README.md
  • docs/universe/features/02-spatial-world/maps/README.md
  • docs/universe/features/02-spatial-world/matrix-chat/README.md
  • docs/universe/features/02-spatial-world/meeting-rooms/README.md
  • docs/universe/features/02-spatial-world/megaphone/README.md
  • docs/universe/features/02-spatial-world/play-audio/README.md
  • docs/universe/features/02-spatial-world/proximity-chat/README.md
  • docs/universe/features/02-spatial-world/screen-sharing/README.md
  • docs/universe/features/02-spatial-world/scripting-api/README.md
  • docs/universe/features/02-spatial-world/searchable/README.md
  • docs/universe/features/02-spatial-world/teleport/README.md
  • docs/universe/features/02-spatial-world/text-chat/README.md
  • docs/universe/features/02-spatial-world/user-directory/README.md
  • docs/universe/features/02-spatial-world/white-label-rebranding/README.md
  • docs/universe/features/02-spatial-world/woka-avatars/README.md
  • docs/universe/features/03-ai-bots/README.md
  • docs/universe/features/03-ai-bots/bot-avatars/README.md
  • docs/universe/features/03-ai-bots/bot-behaviors/README.md
  • docs/universe/features/03-ai-bots/bot-emotions/README.md
  • docs/universe/features/03-ai-bots/bot-file-parsing/README.md
  • docs/universe/features/03-ai-bots/bot-gallery/README.md
  • docs/universe/features/03-ai-bots/bot-greetings/README.md
  • docs/universe/features/03-ai-bots/bot-media-sending/README.md
  • docs/universe/features/03-ai-bots/bot-memory/README.md
  • docs/universe/features/03-ai-bots/bot-pending-media/README.md
  • docs/universe/features/03-ai-bots/bot-provider-config/README.md
  • docs/universe/features/03-ai-bots/bot-streaming-chat/README.md
  • docs/universe/features/03-ai-bots/bot-tool-calling/README.md
  • docs/universe/features/03-ai-bots/recursive-bots/README.md
  • docs/universe/features/04-mcp/README.md
  • docs/universe/features/04-mcp/mcp-admin-ui/README.md
  • docs/universe/features/04-mcp/mcp-auth-api-key/README.md
  • docs/universe/features/04-mcp/mcp-auth-bearer/README.md
  • docs/universe/features/04-mcp/mcp-encryption/README.md
  • docs/universe/features/04-mcp/mcp-oauth/README.md
  • docs/universe/features/04-mcp/mcp-observability/README.md
  • docs/universe/features/04-mcp/mcp-server-management/README.md
  • docs/universe/features/04-mcp/mcp-tool-discovery/README.md
  • docs/universe/features/05-about/README.md
  • docs/universe/features/05-about/contact/README.md
  • docs/universe/features/05-about/legal/README.md
  • docs/universe/features/05-about/technology-stack/README.md
  • docs/universe/features/05-about/the-team/README.md
  • docs/universe/features/06-content/README.md
  • docs/universe/features/06-content/blog/README.md
  • docs/universe/features/07-partners/README.md
  • docs/universe/features/07-partners/workadventure/README.md
  • docs/universe/features/README.md
  • docs/universe/site/00-navigation.md
  • docs/universe/site/01-hero.md
  • docs/universe/site/02-homepage-sections.md
  • docs/universe/site/03-how-it-works.md
  • docs/universe/site/04-market.md
  • docs/universe/site/05-components.md
  • docs/universe/site/06-manifesto.md
  • docs/universe/site/07-empty-seat.md
  • docs/universe/site/08-contact.md
  • docs/universe/site/09-footer.md
  • scripts/guardrail-scan.sh

Comment on lines +5 to +7
Audio/video communication triggered by spatial proximity. Uses **direct peer-to-peer WebRTC by default** (via `simple-peer`), with automatic scaling to a LiveKit server when rooms grow beyond the threshold (default: 4 users). Coturn provides TURN/STUN relay for NAT traversal.

The backend decides when to switch. If LiveKit isn't configured (`LIVEKIT_HOST` env var not set), the room stays on P2P regardless of user count.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Define one canonical real-time communication contract.

The catalog currently describes P2P proximity chat, LiveKit server switching, and Jitsi/BigBlueButton meeting rooms without clearly separating their scopes.

  • docs/universe/features/02-spatial-world/proximity-chat/README.md#L5-L7: state whether LiveKit is only the server-mode transport.
  • docs/universe/features/02-spatial-world/meeting-rooms/README.md#L10-L14: identify the canonical provider URL and transport for scheduled meetings.
  • docs/universe/features/02-spatial-world/meeting-rooms/README.md#L18-L18: align the area-zone property description with that provider choice.
📍 Affects 2 files
  • docs/universe/features/02-spatial-world/proximity-chat/README.md#L5-L7 (this comment)
  • docs/universe/features/02-spatial-world/meeting-rooms/README.md#L10-L14
  • docs/universe/features/02-spatial-world/meeting-rooms/README.md#L18-L18
🤖 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/universe/features/02-spatial-world/proximity-chat/README.md` around
lines 5 - 7, Define a single canonical real-time communication contract across
the documented features: in
docs/universe/features/02-spatial-world/proximity-chat/README.md lines 5-7,
explicitly state that LiveKit is only the server-mode transport; in
docs/universe/features/02-spatial-world/meeting-rooms/README.md lines 10-14,
identify the canonical provider URL and transport for scheduled meetings; and in
lines 18-18, update the area-zone property description to match that provider
choice.

Comment on lines +7 to +11
1. Bot discovers tools via [MCP tool discovery](../04-mcp/mcp-tool-discovery/) handshake
2. During conversation, the AI decides when to call a tool based on context
3. 🔍 indicator appears mid-stream in [streaming chat](./bot-streaming-chat/)
4. Tool results feed back into the AI for response generation
5. Timeout: 5s per call, 10s total budget per turn

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Reconcile the timeout with long-running media tools.

This page sets a 5-second per-call and 10-second per-turn budget. docs/universe/features/03-ai-bots/bot-pending-media/README.md describes ComfyUI generation taking 10–30 seconds. Clarify whether the timeout covers only job submission, whether polling is asynchronous, and how pending media bypasses the turn budget. If 5 seconds is a hard tool limit, the documented flow cannot complete.

🤖 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/universe/features/03-ai-bots/bot-tool-calling/README.md` around lines 7
- 11, Update the timeout guidance in the bot tool-calling flow to explicitly
distinguish synchronous job submission from asynchronous polling. Document how
pending media tools such as ComfyUI generation continue beyond the 5-second
per-call and 10-second per-turn budgets, or revise those limits if they apply to
the entire operation, ensuring the documented flow supports 10–30 second
generation.

Comment on lines +7 to +10
- A **manager bot** creates a **worker bot** via the [admin API](../01-platform/admin-api/)
- The spawned bot gets its own [MCP servers](../04-mcp/), [behavior](./bot-behaviors/), personality, room assignment
- The spawned bot operates fully autonomously from creation
- When a bot encounters an unsolvable problem, it can request a new MCP server or spawn a sub-agent

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -e
printf '%s\n' '--- candidate files ---'
git ls-files | rg '(^|/)(README\.md|.*admin.*|.*mcp.*|.*bot.*|.*security.*|.*auth.*|.*audit.*|.*quota.*|.*limit.*)' | head -200
printf '%s\n' '--- target document outline ---'
if command -v ast-grep >/dev/null 2>&1; then
  ast-grep outline docs/universe/features/03-ai-bots/recursive-bots/README.md
else
  wc -l docs/universe/features/03-ai-bots/recursive-bots/README.md
fi
printf '%s\n' '--- target document ---'
cat -n docs/universe/features/03-ai-bots/recursive-bots/README.md
printf '%s\n' '--- references to relevant operations and controls ---'
rg -n -i 'admin api|create.*bot|spawn|sub-agent|mcp server|autonom|recursion|depth|quota|allowlist|approval|least.?privilege|scope|audit|rate.?limit|budget' docs/universe/features -g '*.md' | head -300

Repository: BAWES-Universe/bawes-knowledge

Length of output: 15089


🏁 Script executed:

#!/bin/bash
set -e
for f in \
  docs/universe/features/01-platform/admin-api/README.md \
  docs/universe/features/01-platform/orbit/README.md \
  docs/universe/features/04-mcp/mcp-server-management/README.md \
  docs/universe/features/04-mcp/mcp-encryption/README.md \
  docs/universe/features/03-ai-bots/bot-tool-calling/README.md \
  docs/universe/features/03-ai-bots/bot-behaviors/README.md \
  docs/universe/features/03-ai-bots/README.md
do
  printf '\n--- %s ---\n' "$f"
  cat -n "$f"
done
printf '\n--- all explicit control terms ---\n'
rg -n -i 'authorization|authori[sz]e|permission|role|scope|least.?privilege|allowlist|approval|quota|rate.?limit|budget|recursion|recursive|depth|audit|actor|service account|credential|token|delegat|provision' docs -g '*.md'

Repository: BAWES-Universe/bawes-knowledge

Length of output: 19565


Constrain autonomous provisioning.

Define and enforce least-privilege scopes, approval or allowlists, recursion-depth limits, resource quotas, and audit logging for bot-initiated Admin API and MCP provisioning. The five-server-per-bot soft cap does not limit recursive bot creation, and API-key-only authentication does not define delegated bot permissions.

🤖 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/universe/features/03-ai-bots/recursive-bots/README.md` around lines 7 -
10, Update the recursive-bots documentation to define least-privilege delegated
scopes for bot-initiated Admin API and MCP provisioning, require approval or
explicit allowlists, enforce recursion-depth and resource quotas, and record
audit logs for each provisioning action. Clarify that the five-server-per-bot
soft cap does not limit recursive bot creation, and document how delegated
permissions are authenticated beyond API-key-only access.

Comment on lines +14 to +15
- Row-level encryption for multi-tenant isolation
- Encryption key in environment variables

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu

echo '--- target files ---'
fd -t f . docs/universe/features/04-mcp/mcp-encryption 2>/dev/null || true

echo '--- target README outline ---'
if command -v ast-grep >/dev/null 2>&1; then
  ast-grep outline docs/universe/features/04-mcp/mcp-encryption/README.md 2>/dev/null || true
fi

echo '--- target README ---'
wc -l docs/universe/features/04-mcp/mcp-encryption/README.md
cat -n docs/universe/features/04-mcp/mcp-encryption/README.md

echo '--- related security references ---'
rg -n -i --glob '!node_modules' --glob '!dist' \
  'row.?level|multi.?tenant|tenant isolation|encryption key|AES.?GCM|key deriv|authorization|decrypt|MCP|server URL|environment variable' \
  docs/universe/features 2>/dev/null | head -n 300

Repository: BAWES-Universe/bawes-knowledge

Length of output: 14241


🏁 Script executed:

#!/bin/bash
set -eu

echo '--- tracked files with likely implementation/config names ---'
git ls-files | rg -i \
  '(^|/)(.*encrypt.*|.*crypto.*|.*secret.*|.*credential.*|.*mcp.*|.*admin.*|.*env.*)(\.[^/]+)?$' \
  | head -n 400

echo '--- repository-wide relevant references ---'
rg -n -i --hidden --glob '!.git/**' --glob '!node_modules/**' --glob '!dist/**' \
  'AES-?256-?GCM|AES-?GCM|encrypt(ed|ion)?|decrypt(ion)?|key deriv|ENCRYPTION_KEY|creator.?id|tenant.?id|tenant|owner.?id|super.?admin|authorization|access control|scope' \
  . | head -n 500

echo '--- related MCP documents ---'
for f in \
  docs/universe/features/04-mcp/mcp-server-management/README.md \
  docs/universe/features/04-mcp/mcp-admin-ui/README.md \
  docs/universe/features/04-mcp/mcp-oauth/README.md \
  docs/universe/features/03-ai-bots/bot-provider-config/README.md \
  docs/others/self-hosting/env-variables.md
do
  if test -f "$f"; then
    echo "--- $f ---"
    cat -n "$f"
  fi
done

Repository: BAWES-Universe/bawes-knowledge

Length of output: 10409


🌐 Web query:

NIST SP 800-38D GCM authenticated encryption does not provide application authorization access control

💡 Result:

NIST SP 800-38D, which specifies the Galois/Counter Mode (GCM), is a cryptographic standard for authenticated encryption with associated data (AEAD) [1][2]. It does not provide application-level authorization or access control [3][4][5]. The standard defines a mode of operation for symmetric block ciphers to provide two primary security services: confidentiality (via encryption) and authenticity/integrity (via a message authentication code) [1][6]. Authenticated encryption ensures that data has not been tampered with and originated from a party possessing the correct secret key, but it does not make decisions regarding which users or applications are permitted to access, modify, or perform specific actions on that data [3][4][7]. In contrast, application authorization and access control are distinct security functions that determine permissions and access rights—answering the question of "what a user or entity is allowed to do" [4][5]. These are typically implemented via identity management systems, role-based access control (RBAC), or attribute-based access control (ABAC) at the application or system level [4][7][5]. While GCM can be used as a component within a broader system to secure communication or protect data at rest, it is not a mechanism for enforcing authorization policies [3][7].

Citations:


Enforce tenant authorization separately from encryption.

AES-256-GCM protects ciphertext but does not enforce creator or tenant access. Define and enforce a creator/tenant check on every read and decrypt. Treat per-creator key derivation as defense in depth, not as a replacement for authorization.

🤖 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/universe/features/04-mcp/mcp-encryption/README.md` around lines 14 - 15,
Update the MCP encryption documentation to require explicit creator or tenant
authorization checks before every read and decrypt operation. Clarify that
AES-256-GCM and per-creator key derivation provide encryption and defense in
depth only, not access control.

- Row-level encryption for multi-tenant isolation
- Encryption key in environment variables
- Admin API write path only — no public creation
- Risks noted: no tool output sanitization, no creator-side server validation

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu

printf '%s\n' '--- candidate files ---'
git ls-files 'docs/universe/features/04-mcp/*/README.md'

printf '%s\n' '--- referenced documents ---'
for f in \
  docs/universe/features/04-mcp/mcp-encryption/README.md \
  docs/universe/features/04-mcp/mcp-server-management/README.md \
  docs/universe/features/04-mcp/mcp-tool-discovery/README.md
do
  if [ -f "$f" ]; then
    printf '\n--- %s ---\n' "$f"
    cat -n "$f"
  else
    printf '\n--- missing: %s ---\n' "$f"
  fi
done

printf '%s\n' '--- MCP security and URL-related references ---'
rg -n -i --glob '!node_modules' --glob '!dist' \
  'mcp|tools/list|tools/call|server.?url|sanitiz|ssrf|prompt.?injection|row.?level|multi.?tenant|creator' \
  docs/universe/features/04-mcp .

Repository: BAWES-Universe/bawes-knowledge

Length of output: 25648


🏁 Script executed:

#!/bin/bash
set -eu

printf '%s\n' '--- access-boundary documents ---'
for f in \
  docs/universe/features/04-mcp/mcp-admin-ui/README.md \
  docs/universe/features/03-ai-bots/bot-tool-calling/README.md \
  docs/universe/features/01-platform/admin-api/README.md \
  docs/universe/features/01-platform/orbit/README.md \
  docs/universe/features/03-ai-bots/recursive-bots/README.md
do
  if [ -f "$f" ]; then
    printf '\n--- %s ---\n' "$f"
    cat -n "$f"
  fi
done

printf '%s\n' '--- implementation and documentation inventory ---'
git ls-files | rg -i '(^|/)(mcp|.*mcp.*|.*admin.*|.*connector.*|.*tool.*calling.*|.*server.*management.*)' | head -200

printf '%s\n' '--- deterministic documentation check ---'
python3 - <<'PY'
from pathlib import Path

paths = [
    Path("docs/universe/features/04-mcp/mcp-encryption/README.md"),
    Path("docs/universe/features/04-mcp/mcp-server-management/README.md"),
    Path("docs/universe/features/04-mcp/mcp-tool-discovery/README.md"),
    Path("docs/universe/features/04-mcp/mcp-admin-ui/README.md"),
    Path("docs/universe/features/03-ai-bots/bot-tool-calling/README.md"),
]
terms = {
    "admin_only": ("Admin API write path only",),
    "operator_context": ("operators", "admin panel", "Orbit"),
    "url_configuration": ("name + URL",),
    "raw_tool_output": ("raw `tools/list` response",),
    "tool_output_sanitization_gap": ("no tool output sanitization",),
    "server_validation_gap": ("no creator-side server validation",),
    "untrusted_scope_statement": ("trusted", "untrusted", "allowlist", "private IP"),
}
for path in paths:
    text = path.read_text()
    print(f"{path}:")
    for key, needles in terms.items():
        hits = [needle for needle in needles if needle.lower() in text.lower()]
        if hits:
            print(f"  {key}: {hits}")
PY

Repository: BAWES-Universe/bawes-knowledge

Length of output: 8749


Define and enforce the MCP trust boundary.

Admin-only configuration does not establish that configured URLs or MCP servers are trusted. If untrusted servers or bot-created configurations are supported, add SSRF protection and sanitize or isolate tool output before it reaches the AI context. Otherwise, document that only trusted operators and MCP servers are supported, including the recursive-bot path.

🤖 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/universe/features/04-mcp/mcp-encryption/README.md` at line 17, Update
the MCP encryption README’s risks and trust-boundary documentation to explicitly
state whether untrusted MCP servers or bot-created configurations are supported.
If they are supported, document or implement SSRF protection and tool-output
sanitization or isolation; otherwise, state that only trusted operators and MCP
servers are supported, including the recursive-bot path.


**Desktop:** Full link list displayed inline, plus a Discord CTA button ("Join us on Discord" → `https://discord.gg/CXceJWnwNT`)

**Mobile:** Hamburger menu → full-screen overlay with same links. Discord button shown inline next to hamburger.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Specify accessible behavior for the mobile menu.

Define an accessible button name, aria-expanded, focus movement into the overlay, focus containment, Escape-to-close behavior, focus restoration, and background inertness. Without these rules, the overlay can block keyboard and assistive-technology users.

🤖 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/universe/site/00-navigation.md` at line 18, Expand the mobile navigation
guidance around the hamburger menu to specify an accessible button name,
aria-expanded state, moving focus into the opened overlay, trapping focus within
it, closing on Escape, restoring focus to the trigger, and making the background
inert while open.

```

**CTAs:**
- "Enter the Universe" — gold gradient button, opens `universe.bawes.net` in new tab with cross-domain PostHog tracking

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -eu

printf '%s\n' '--- target file ---'
sed -n '1,100p' docs/universe/site/01-hero.md

printf '%s\n' '--- markdownlint/config references ---'
rg -n --hidden -S 'MD040|markdownlint|PostHog|posthog|universe\.bawes\.net|cross-domain|consent|opt.?out|retention' \
  -g '!node_modules' -g '!dist' -g '!build' .

printf '%s\n' '--- fenced blocks in target file ---'
python3 - <<'PY'
from pathlib import Path
p = Path("docs/universe/site/01-hero.md")
in_fence = False
for n, line in enumerate(p.read_text().splitlines(), 1):
    if line.startswith("```"):
        print(f"{n}: {line!r}")
PY

Repository: BAWES-Universe/bawes-knowledge

Length of output: 1723


🌐 Web query:

PostHog cross-domain tracking consent opt out identifier propagation retention documentation

💡 Result:

To manage cross-domain identifier propagation, consent opt-outs, and data retention in PostHog, follow these established practices: Cross-Domain Identifier Propagation To track users accurately across different domains, you must manually pass and bootstrap the identity and session identifiers [1][2][3]. 1. Propagation: Obtain the distinct_id and session_id from the first domain using posthog.get_distinct_id and posthog.get_session_id [1][3]. Pass these as URL parameters or hash fragments to the second domain [1][2]. 2. Bootstrapping: On the second domain, use the bootstrap configuration during initialization to seed these values: posthog.init('<ph_project_token>', { bootstrap: { distinctID: '<passed_distinct_id>', sessionID: '<passed_session_id>' } }); [3][4] 3. Alternative: If session continuity is not required, you can use posthog.alias on the second domain to link the anonymous distinct_id to the stable user identity from the first domain [1][2]. Consent and Opt-Out PostHog provides centralized controls to manage user consent for data collection [5][6][7]. 1. Opt-Out Initialization: To comply with privacy requirements, initialize PostHog with opt_out_capturing_by_default: true [5][6]. 2. Consent Management: Integrate your Consent Management Platform (CMP) callbacks with posthog.opt_in_capturing and posthog.opt_out_capturing to toggle data collection based on user choices [6][7][8]. 3. Verification: Use posthog.has_opted_out_capturing to check the current consent status [5][6]. 4. Cookieless Mode: If you wish to minimize tracking when consent is denied, use cookieless_mode: 'on_reject', which allows for limited, privacy-preserving tracking without cookies [6][8]. Data Retention Retention policies are managed based on your specific PostHog plan [9]. 1. Session Replay: Retention is configured in the Data retention section of your session replay settings [9]. Limits range from 30 days on Free plans to up to 5 years on Enterprise plans [9]. 2. General Event Data: Events are subject to retention policies based on your platform package [10]. These policies are enforced via automated system workflows [10]. 3. Manual Deletion: You can delete specific persons and their associated events using the DELETE Persons API endpoint (with the delete_events=true parameter) [11]. Once deletion processes, the data is permanently removed [11]. For detailed configuration, refer to the official PostHog documentation on cross-domain tracking, privacy controls, and data retention [1][6][9].

Citations:


🏁 Script executed:

#!/bin/bash
set -eu

printf '%s\n' '--- repository files near analytics and privacy policy ---'
git ls-files | rg -i '(^|/)(privacy|cookie|consent|analytics|posthog|tracking|telemetry|security|policy|policies)([^/]*)$|posthog|privacy|consent|tracking|telemetry'

printf '%s\n' '--- markdown configuration and scripts ---'
for f in package.json .markdownlint.json .markdownlint.yaml .markdownlint.yml .markdownlint-cli2.json .markdownlint-cli2.yaml .markdownlint-cli2.mjs; do
  if [ -f "$f" ]; then
    echo "--- $f ---"
    cat "$f"
  fi
done
rg -n --hidden -S 'MD040|markdownlint' \
  -g '!node_modules' -g '!dist' -g '!build' \
  .github . 2>/dev/null | head -200 || true

printf '%s\n' '--- target-file history/status context ---'
git status --short -- docs/universe/site/01-hero.md
git log -5 --oneline -- docs/universe/site/01-hero.md

Repository: BAWES-Universe/bawes-knowledge

Length of output: 227


Define privacy behavior for cross-domain PostHog tracking.

Specify consent, opt-out handling, identifier propagation, retention, and deletion rules. Configure PostHog to enforce these rules before shipping the CTA.

🤖 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/universe/site/01-hero.md` at line 22, Define the privacy requirements
for the “Enter the Universe” CTA’s cross-domain PostHog tracking, covering
consent, opt-out handling, identifier propagation, retention, and deletion.
Configure PostHog to enforce these rules before the CTA is shipped.

| Message | "Tell us about your project, idea, or challenge..." | Textarea |
| Context | "Any additional details, timeline, or context..." | Textarea (optional) |

Form submits to a Discord webhook. Shows success/error toast.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Do not send contact-form data directly to a Discord webhook.

If the browser posts directly, the webhook URL can be extracted and abused. Even with a server-side relay, the form sends names, email addresses, and project details to a third party. Specify a server-side endpoint, validation, rate limiting, secret storage, user notice or consent, and retention/deletion rules.

Proposed specification change
-Form submits to a Discord webhook. Shows success/error toast.
+Form submits to a same-origin server endpoint. The server validates and rate-limits
+the request, stores the webhook secret server-side, and forwards only approved
+fields to Discord. Document notice, consent, retention, and deletion behavior.
+Shows success/error toast.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Form submits to a Discord webhook. Shows success/error toast.
Form submits to a same-origin server endpoint. The server validates and rate-limits
the request, stores the webhook secret server-side, and forwards only approved
fields to Discord. Document notice, consent, retention, and deletion behavior.
Shows success/error toast.
🤖 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/universe/site/08-contact.md` at line 20, Replace the direct Discord
webhook submission described in the contact-form flow with a server-side
endpoint that keeps the webhook secret private. Define server-side validation,
rate limiting, user notice or consent for sharing names, email addresses, and
project details, plus explicit retention and deletion rules; preserve the
success/error toast behavior for the form.

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