Skip to content

feat(docs): pull agent documentation from fullsend-ai/agents - #6953

Open
rh-hemartin wants to merge 1 commit into
mainfrom
feat/inject-agents
Open

feat(docs): pull agent documentation from fullsend-ai/agents#6953
rh-hemartin wants to merge 1 commit into
mainfrom
feat/inject-agents

Conversation

@rh-hemartin

@rh-hemartin rh-hemartin commented Sep 3, 2026

Copy link
Copy Markdown
Member

Summary

Add fullsend-ai/agents as a git submodule and serve its docs/ folder from docs/agents on the documentation site, so agent pages stay in sync with the agents repo instead of being copied by hand.

Related Issue

Closes #5710

Changes

  • Add the agents submodule at the repo root and replace docs/agents with a symlink to agents/docs
  • Auto-discover agent pages in the VitePress sidebar via getMarkdownFiles
  • Move default-vs-custom and escalation-ladder pages into docs/guides/user/
  • Rebuild the docs site when agents/ changes, matching the existing experiments/ path filters

Testing

  • make lint passes (stage changes first, then run)
  • Tests added/updated for new or modified logic

Checklist

  • PR title follows Conventional Commits (correct type, ! for breaking changes)
  • Commits are signed off (DCO) — human and human-directed agent sessions only
  • I wrote this contribution myself and can explain all changes in it

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 3, 2026

Copy link
Copy Markdown

🤖 Review · ⚠️ Cancelled · Started 10:19 AM UTC · Ended 10:40 AM UTC

Commit: f7c716f · View workflow run →

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Source agent docs from the fullsend-ai/agents submodule

✨ Enhancement 📝 Documentation ⚙️ Configuration changes 🕐 20-40 Minutes

Grey Divider

AI Description

• Sources agent reference pages from a pinned fullsend-ai/agents submodule through docs/agents.
• Auto-discovers agent sidebar entries and keeps customization guides in local user documentation.
• Rebuilds documentation whenever the agents submodule or its contents change.
Diagram

graph TD
  A["Agents Repository"] -->|pinned commit| B["Agents Submodule"] -->|docs source| C["Docs Symlink"] -->|markdown| D["VitePress Build"] --> E["Docs Site"]
  F["VitePress Config"] -->|discovers pages| D
  G["Site Workflow"] -->|runs on changes| D
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Build-time repository checkout
  • ➕ Avoids a permanent git submodule and symlink in contributor checkouts.
  • ➕ Can select a branch or tag independently during the documentation build.
  • ➖ Requires additional CI authentication and checkout logic.
  • ➖ Following a branch would make builds non-reproducible unless the commit is explicitly pinned.
  • ➖ Local documentation builds would need equivalent bootstrap tooling.
2. Git subtree import
  • ➕ Produces ordinary files that work without submodule initialization or symlink support.
  • ➕ Keeps local and CI documentation builds self-contained.
  • ➖ Reintroduces imported copies into the main repository.
  • ➖ Subtree updates create large synchronization commits and obscure upstream ownership.
  • ➖ Automated sidebar discovery would still be required.

Recommendation: The pinned submodule and symlink are the best fit because they preserve upstream ownership while keeping site builds reproducible. Explicit submodule updates are preferable to following the upstream branch implicitly; the existing build already initializes submodules, limiting additional CI complexity.

Files changed (7) +19 / -14

Enhancement (1) +6 / -10
config.tsDiscover agent pages and relocate customization navigation +6/-10

Discover agent pages and relocate customization navigation

• Replaces the hardcoded agent page list with getMarkdownFiles-based discovery from docs/agents. Adds the default-versus-custom and escalation-ladder guides under the Customizing Agents sidebar group.

docs/.vitepress/config.ts

Documentation (2) +4 / -4
default-vs-custom-agents.mdMove agent classification guidance into user guides +0/-0

Move agent classification guidance into user guides

• Relocates the default, derived, and custom agent classification page from the agent reference area into the local user-guide hierarchy.

docs/guides/user/default-vs-custom-agents.md

escalation-ladder.mdMove escalation guidance and repair sibling links +4/-4

Move escalation guidance and repair sibling links

• Relocates the agent customization escalation ladder into user guides. Updates references to target the renamed default-vs-custom-agents page in the same directory.

docs/guides/user/escalation-ladder.md

Other (4) +9 / -0
site-build.ymlRebuild the site for agents submodule changes +4/-0

Rebuild the site for agents submodule changes

• Adds the agents gitlink and descendant paths to pull-request and main-branch path filters. Documentation builds now run when the pinned agent documentation source changes.

.github/workflows/site-build.yml

.gitmodulesRegister the fullsend-ai/agents submodule +3/-0

Register the fullsend-ai/agents submodule

• Defines the root-level agents submodule using the fullsend-ai/agents GitHub repository as its source.

.gitmodules

agentsPin the agents documentation repository +1/-0

Pin the agents documentation repository

• Adds the agents gitlink pinned to commit 81b0e9bde0fae533bb4e26a731c0bca343340d79.

agents

agentsLink VitePress to upstream agent documentation +1/-0

Link VitePress to upstream agent documentation

• Replaces the locally maintained agent documentation directory with a symlink to the agents submodule's docs directory.

docs/agents

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (1) 📜 Skill insights (4)

Grey Divider


Action required

1. Moved guides omit prerequisites 📜 Skill insight ✧ Quality
Description
The newly registered escalation-ladder.md guide immediately instructs readers to follow a
four-level procedure but has no clearly labeled prerequisites section. Readers are not told what
access, configuration, or knowledge they need before beginning Level 1.
Code

docs/.vitepress/config.ts[274]

+                { text: "Agent escalation ladder", link: "/guides/user/escalation-ladder.md" },
Relevance

●●● Strong

Recent guide reviews accepted adding clearly labeled prerequisites before procedural instructions.

PR-#2663
PR-#6455

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Rule 1062078 requires a prerequisites section before procedural steps. The sidebar addition
registers the document as a user guide, while its opening proceeds directly from a status callout to
instructions to start at Level 1 without any prerequisites section.

docs/.vitepress/config.ts[270-274]
docs/guides/user/escalation-ladder.md[1-20]
Skill: writing-user-docs

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The newly placed escalation-ladder guide contains a procedural escalation path without a clearly labeled prerequisites section.

## Issue Context
PR Compliance ID 1062078 requires every guide to state prerequisites before its procedure begins.

## Fix Focus Areas
- docs/guides/user/escalation-ladder.md[1-20]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. New guides missing index entries 📜 Skill insight ⚙ Maintainability
Description
The PR adds sidebar entries for default-vs-custom-agents.md and escalation-ladder.md under
docs/guides/user/ without updating docs/guides/README.md. The guide index still links to the
removed docs/agents/topics/default-vs-custom.md location and contains no escalation-ladder entry.
Code

docs/.vitepress/config.ts[R270-274]

+                {
+                  text: "Default, derived and custom agents",
+                  link: "/guides/user/default-vs-custom-agents.md",
+                },
+                { text: "Agent escalation ladder", link: "/guides/user/escalation-ladder.md" },
Relevance

●●● Strong

Recent accepted precedents require new guides to appear in README indexes.

PR-#5778
PR-#2549

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Rule 1062084 requires new guides to be included in docs/guides/README.md. The sidebar adds both
user-guide paths, while the index retains the former agents/topics path and does not list the
escalation guide.

docs/.vitepress/config.ts[270-274]
docs/guides/README.md[43-58]
Skill: writing-user-docs

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Two guides were introduced under `docs/guides/user/`, but the guide index was not updated for their new locations.

## Issue Context
PR Compliance ID 1062084 requires `docs/guides/README.md` to be updated whenever a guide is added. Replace the stale topics link and add an entry for the escalation ladder.

## Fix Focus Areas
- docs/guides/README.md[43-58]
- docs/.vitepress/config.ts[270-274]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Moved guide links are broken 📜 Skill insight ≡ Correctness
Description
The guides retain relative links written for their former docs/agents/topics/ location, so links
such as ../../guides/user/... now resolve under nonexistent docs/guides/guides/user/, while the
two ../ links in default-vs-custom-agents.md resolve to the Guides index instead of the Agents
reference. Consequently, multiple customization and agent-reference links lead users to missing
pages or the wrong documentation section.
Code

docs/.vitepress/config.ts[R270-274]

+                {
+                  text: "Default, derived and custom agents",
+                  link: "/guides/user/default-vs-custom-agents.md",
+                },
+                { text: "Agent escalation ladder", link: "/guides/user/escalation-ladder.md" },
Relevance

●●● Strong

Broken relative documentation links are consistently accepted, including after guide moves.

PR-#601
PR-#226

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Rule 1062085 requires every internal guide link to resolve, and the sidebar establishes the new
/guides/user/default-vs-custom-agents location. From docs/guides/user/, retained
../../guides/user/... links resolve into the nonexistent docs/guides/guides/user/ directory,
while ../ resolves to docs/guides/ even though the actual Agents reference is exposed at
docs/agents.

docs/.vitepress/config.ts[270-274]
docs/guides/user/default-vs-custom-agents.md[73-73]
docs/guides/user/escalation-ladder.md[43-50]
docs/.vitepress/config.ts[270-273]
docs/guides/user/default-vs-custom-agents.md[45-49]
docs/guides/user/default-vs-custom-agents.md[89-95]
docs/guides/README.md[1-5]
docs/agents[1-1]
Skill: writing-user-docs

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Correct the relative links retained from the guides' former directory so that sibling user-guide links resolve within `docs/guides/user/` and agent-reference links resolve to `docs/agents/`, rather than to nonexistent paths or the Guides index.

## Issue Context
These guides moved from `docs/agents/topics/` to `docs/guides/user/`, but some links still use traversal calculated from the old location. From the new directory, `../../guides/user/...` resolves under nonexistent `docs/guides/guides/user/`, and `../` resolves to `docs/guides/` rather than the Agents reference at `docs/agents/`.

## Fix Focus Areas
- docs/guides/user/default-vs-custom-agents.md[45-53]
- docs/guides/user/default-vs-custom-agents.md[89-103]
- docs/guides/user/escalation-ladder.md[41-50]
- docs/guides/user/escalation-ladder.md[183-194]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


View high (1)
4. Moved pages break inbound links 🐞 Bug ≡ Correctness
Description
Seventeen existing documentation links still target /agents/topics/default-vs-custom or
/agents/topics/escalation-ladder, but replacing docs/agents with the submodule symlink removes
those pages while their replacements are published under /guides/user/. These links now lead to
nonexistent pages.
Code

docs/agents[1]

+../agents/docs/
Relevance

●●● Strong

Broken internal documentation links are accepted correctness findings when destinations move or
filenames change.

PR-#601
PR-#226

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The symlink replaces the former local agents tree, and the sidebar publishes the moved pages under
/guides/user/. The cited files retain links to the old /agents/topics/ paths, so their
destinations no longer exist.

docs/agents[1-1]
docs/.vitepress/config.ts[270-274]
docs/cli/agent.md[121-121]
docs/glossary.md[48-75]
docs/guides/README.md[57-57]
docs/guides/user/adoption.md[94-94]
docs/guides/user/bring-your-own-agent.md[381-382]
docs/guides/user/building-custom-agents.md[12-14]
docs/guides/user/customizing-agents.md[398-399]
docs/guides/user/customizing-overview.md[129-130]
docs/guides/user/customizing-with-agents-md.md[153-153]
docs/guides/user/customizing-with-skills.md[197-197]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Update every internal link that still targets the removed `agents/topics/default-vs-custom.md` or `agents/topics/escalation-ladder.md` routes so it points to the corresponding page under `guides/user/`.

## Issue Context
`docs/agents` is now backed by the agents submodule, while these two pages were moved into `docs/guides/user/`. Existing inbound links were not migrated.

## Fix Focus Areas
- docs/cli/agent.md[121-121]
- docs/glossary.md[48-75]
- docs/guides/README.md[57-57]
- docs/guides/user/adoption.md[94-94]
- docs/guides/user/bring-your-own-agent.md[381-382]
- docs/guides/user/building-custom-agents.md[12-14]
- docs/guides/user/customizing-agents.md[398-399]
- docs/guides/user/customizing-overview.md[129-130]
- docs/guides/user/customizing-with-agents-md.md[153-153]
- docs/guides/user/customizing-with-skills.md[197-197]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

5. escalation-ladder procedure is unnumbered 📜 Skill insight ✧ Quality
Description
The guide tells readers to start at Level 1 and move through four levels, but presents the sequence
as prose, a code block, and separate headings rather than an ordered list. This makes the newly
introduced guide path noncompliant with the required procedure format.
Code

docs/.vitepress/config.ts[274]

+                { text: "Agent escalation ladder", link: "/guides/user/escalation-ladder.md" },
Relevance

●●● Strong

Reviewers repeatedly accepted converting procedural prose and code blocks into ordered steps.

PR-#2277
PR-#2663

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Rule 1062079 requires procedural guide content to use ordered lists. The registered guide describes
an ordered escalation path but renders its four levels in a fenced block and prose before continuing
with level headings.

docs/.vitepress/config.ts[274-274]
docs/guides/user/escalation-ladder.md[8-34]
Skill: writing-user-docs

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The escalation procedure is expressed through narrative prose, a code block, and headings instead of numbered procedural steps.

## Issue Context
The guide explicitly directs readers to begin at Level 1 and move upward, so the four levels form an ordered procedure under PR Compliance ID 1062079.

## Fix Focus Areas
- docs/guides/user/escalation-ladder.md[8-40]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


6. Per-org removal unmentioned 📘 Rule violation § Compliance
Description
The replacement of docs/agents deletes documentation that explicitly discusses deprecated per-org
installation mode, but the PR description does not mention that impact or ADR 0044. The checklist
requires even removals of per-org-mode content to be called out explicitly.
Code

docs/agents/triage.md[77]

-**Defaults:** At install time, fullsend populates this with your org (in org mode — **deprecated**, see [ADR 0044](../ADRs/0044-deprecate-per-org-installation-mode.md)) or your repo (in per-repo mode), plus `fullsend-ai/fullsend` as an upstream target.
Relevance

●● Moderate

Deprecation documentation is enforced, but no close precedent confirms requiring PR-description
disclosure for removals.

PR-#5462
PR-#2743

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
Rule 2795055 applies to removals as well as extensions or refactors and requires the PR description
to mention deprecated per-org installation mode and ADR 0044. The deleted triage documentation
explicitly contained both an org-mode reference and an ADR 0044 link, while the supplied PR
description discusses only the submodule and documentation synchronization.

Rule 2795055: Flag and avoid changes to deprecated per-org installation mode content (ADR 0044)


Grey Divider

Context sources
✅ Compliance rules (platform): 65 rules
Review mode: ⚖️ Balanced

Grey Divider

Tip of the day
💡 Did you know, you can add REVIEW.md to your repo root and Qodo follows it on every PR

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread docs/.vitepress/config.ts Outdated
text: "Default, derived and custom agents",
link: "/guides/user/default-vs-custom-agents.md",
},
{ text: "Agent escalation ladder", link: "/guides/user/escalation-ladder.md" },

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

1. Moved guides omit prerequisites 📜 Skill insight ✧ Quality

The newly registered escalation-ladder.md guide immediately instructs readers to follow a
four-level procedure but has no clearly labeled prerequisites section. Readers are not told what
access, configuration, or knowledge they need before beginning Level 1.
Agent Prompt
## Issue description
The newly placed escalation-ladder guide contains a procedural escalation path without a clearly labeled prerequisites section.

## Issue Context
PR Compliance ID 1062078 requires every guide to state prerequisites before its procedure begins.

## Fix Focus Areas
- docs/guides/user/escalation-ladder.md[1-20]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread docs/.vitepress/config.ts Outdated
text: "Default, derived and custom agents",
link: "/guides/user/default-vs-custom-agents.md",
},
{ text: "Agent escalation ladder", link: "/guides/user/escalation-ladder.md" },

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

2. escalation-ladder procedure is unnumbered 📜 Skill insight ✧ Quality

The guide tells readers to start at Level 1 and move through four levels, but presents the sequence
as prose, a code block, and separate headings rather than an ordered list. This makes the newly
introduced guide path noncompliant with the required procedure format.
Agent Prompt
## Issue description
The escalation procedure is expressed through narrative prose, a code block, and headings instead of numbered procedural steps.

## Issue Context
The guide explicitly directs readers to begin at Level 1 and move upward, so the four levels form an ordered procedure under PR Compliance ID 1062079.

## Fix Focus Areas
- docs/guides/user/escalation-ladder.md[8-40]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread docs/.vitepress/config.ts Outdated
Comment on lines +270 to +274
{
text: "Default, derived and custom agents",
link: "/guides/user/default-vs-custom-agents.md",
},
{ text: "Agent escalation ladder", link: "/guides/user/escalation-ladder.md" },

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

3. New guides missing index entries 📜 Skill insight ⚙ Maintainability

The PR adds sidebar entries for default-vs-custom-agents.md and escalation-ladder.md under
docs/guides/user/ without updating docs/guides/README.md. The guide index still links to the
removed docs/agents/topics/default-vs-custom.md location and contains no escalation-ladder entry.
Agent Prompt
## Issue description
Two guides were introduced under `docs/guides/user/`, but the guide index was not updated for their new locations.

## Issue Context
PR Compliance ID 1062084 requires `docs/guides/README.md` to be updated whenever a guide is added. Replace the stale topics link and add an entry for the escalation ladder.

## Fix Focus Areas
- docs/guides/README.md[43-58]
- docs/.vitepress/config.ts[270-274]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread docs/.vitepress/config.ts Outdated
Comment on lines +270 to +274
{
text: "Default, derived and custom agents",
link: "/guides/user/default-vs-custom-agents.md",
},
{ text: "Agent escalation ladder", link: "/guides/user/escalation-ladder.md" },

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

4. Moved guide links are broken 📜 Skill insight ≡ Correctness

The guides retain relative links written for their former docs/agents/topics/ location, so links
such as ../../guides/user/... now resolve under nonexistent docs/guides/guides/user/, while the
two ../ links in default-vs-custom-agents.md resolve to the Guides index instead of the Agents
reference. Consequently, multiple customization and agent-reference links lead users to missing
pages or the wrong documentation section.
Agent Prompt
## Issue description
Correct the relative links retained from the guides' former directory so that sibling user-guide links resolve within `docs/guides/user/` and agent-reference links resolve to `docs/agents/`, rather than to nonexistent paths or the Guides index.

## Issue Context
These guides moved from `docs/agents/topics/` to `docs/guides/user/`, but some links still use traversal calculated from the old location. From the new directory, `../../guides/user/...` resolves under nonexistent `docs/guides/guides/user/`, and `../` resolves to `docs/guides/` rather than the Agents reference at `docs/agents/`.

## Fix Focus Areas
- docs/guides/user/default-vs-custom-agents.md[45-53]
- docs/guides/user/default-vs-custom-agents.md[89-103]
- docs/guides/user/escalation-ladder.md[41-50]
- docs/guides/user/escalation-ladder.md[183-194]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread docs/agents/triage.md
- upstream-org/specific-repo
```

**Defaults:** At install time, fullsend populates this with your org (in org mode — **deprecated**, see [ADR 0044](../ADRs/0044-deprecate-per-org-installation-mode.md)) or your repo (in per-repo mode), plus `fullsend-ai/fullsend` as an upstream target.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

5. Per-org removal unmentioned 📘 Rule violation § Compliance

The replacement of docs/agents deletes documentation that explicitly discusses deprecated per-org
installation mode, but the PR description does not mention that impact or ADR 0044. The checklist
requires even removals of per-org-mode content to be called out explicitly.

Comment thread docs/agents
@@ -0,0 +1 @@
../agents/docs/ No newline at end of file

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Action required

6. Moved pages break inbound links 🐞 Bug ≡ Correctness

Seventeen existing documentation links still target /agents/topics/default-vs-custom or
/agents/topics/escalation-ladder, but replacing docs/agents with the submodule symlink removes
those pages while their replacements are published under /guides/user/. These links now lead to
nonexistent pages.
Agent Prompt
## Issue description
Update every internal link that still targets the removed `agents/topics/default-vs-custom.md` or `agents/topics/escalation-ladder.md` routes so it points to the corresponding page under `guides/user/`.

## Issue Context
`docs/agents` is now backed by the agents submodule, while these two pages were moved into `docs/guides/user/`. Existing inbound links were not migrated.

## Fix Focus Areas
- docs/cli/agent.md[121-121]
- docs/glossary.md[48-75]
- docs/guides/README.md[57-57]
- docs/guides/user/adoption.md[94-94]
- docs/guides/user/bring-your-own-agent.md[381-382]
- docs/guides/user/building-custom-agents.md[12-14]
- docs/guides/user/customizing-agents.md[398-399]
- docs/guides/user/customizing-overview.md[129-130]
- docs/guides/user/customizing-with-agents-md.md[153-153]
- docs/guides/user/customizing-with-skills.md[197-197]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

Site preview

Preview: https://f9852188-site.fullsend-ai.workers.dev

Commit: a50397923f98d066dfb494e24be279f78e158a27

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 3, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 10:41 AM UTC · Completed 11:02 AM UTC

Commit: 229fa6f · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $7.18

@codecov

codecov Bot commented Sep 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 3, 2026

Copy link
Copy Markdown

Risk Assessment: moderate (2/5)

Details

Re-review anchoring preserved the prior score of 2: Tier 1 signals are unchanged (large blast radius, 4 protected paths, CI workflow touched, no test files), Tier 2 shows typical multi-author doc/config churn with no reversions, and Tier 3 confirms all acceptance criteria are satisfied with no risk labels — the elevated metadata signal scores are structurally inflated by submodule and docs-only changes rather than representing genuine production risk.

Previous run

Risk Assessment: moderate (2/5)

Details

Moderate risk — Tier 1 signals are unchanged from prior assessment (large blast radius, protected CI paths, no test files), but this remains fundamentally a documentation/submodule integration PR with no production code changes, no security-sensitive files, clear acceptance criteria fully satisfied, and straightforward rollback.

Previous run (2)

Risk Assessment: moderate (2/5)

Details

Moderate risk — large file count (41) and protected path changes (CI workflows) elevate Tier 1 signals, but this is fundamentally a documentation/submodule integration PR with no production code changes, clear acceptance criteria fully addressed, no security-sensitive files touched, and straightforward rollback.

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 3, 2026

Copy link
Copy Markdown

Review

Findings

Medium

  • [protected-path] .github/workflows/lint.yml, .github/workflows/site-build.yml, .pre-commit-config.yaml, agents, skills/author-fullsend-augmentations/SKILL.md — This PR modifies 5 protected governance/infrastructure files (submodule init in the lint workflow, path triggers for the agents submodule in site-build, a lychee exclusion update, the new agents submodule reference, and a path update in the augmentations skill). The PR links to issue Include fullsend-ai/agents docs in the documentation site #5710 and the rationale is clear, but human approval is always required for protected-path changes. (Unchanged from the prior review — same file set, same rationale.)

Low

  • [secret-exposure] .github/workflows/lint.yml:23 — The default CI job (test, runs on every pull_request, no path filter) now runs git submodule update --init agents right after actions/checkout, which defaults to persist-credentials: true. .gitmodules' URL and the agents gitlink SHA are both PR-controlled, so every PR now triggers a credentialed git fetch of a PR-chosen GitHub URL. The checkout's persisted credential extraheader is host-scoped to github.com and the workflow's permissions: contents: read is unchanged, so this is hardening rather than a demonstrated token-exfiltration path — the same persist-credentials + git submodule update --init pattern already exists, unmodified, in site-build.yml's build step. This PR does extend the pattern to the unfiltered default CI job that runs on every PR.
    Remediation: Set persist-credentials: false on the actions/checkout step in lint.yml (the job never pushes) and let git submodule update --init agents run unauthenticated for the public submodule.

  • [documentation-staleness] docs/guides/getting-started/configuring-github.md:127 — The "Next steps" section links to ../../agents/README.md. This PR deletes docs/agents/README.md from this repo and turns docs/agents into a symlink to ../agents/docs/ in the new submodule. Pages this PR did retarget to the agents reference use the directory form instead of a specific filename (e.g. docs/guides/user/customizing-with-agents-md.md now uses ../../agents/). This file, untouched by the PR, still uses the old specific-filename form — not a proven broken link (the submodule may still ship a README.md), but inconsistent with the link form used elsewhere in this same PR.
    Remediation: Update [Agents](../../agents/README.md) to [Agents](../../agents/), matching the directory form used on the pages this PR touched.

  • [documentation-staleness] docs/guides/getting-started/org-mode.md:207 — Same leftover ../../agents/README.md link as configuring-github.md:127 above, in the "Next Steps" section. (This page documents the deprecated per-org installation mode — the org-mode content itself is unrelated to this PR; only the coincidental stale link matters here.)
    Remediation: Update [Agents](../../agents/README.md) to [Agents](../../agents/).


Labels: PR restructures documentation delivery (new agents submodule, docs/agents symlink, sidebar auto-discovery) and modifies CI workflow files (lint.yml, site-build.yml); neither the docs nor CI component labels are currently applied.


Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run

Review

Findings

Medium

  • [protected-path] .github/workflows/lint.yml, .github/workflows/site-build.yml, .pre-commit-config.yaml, agents, skills/author-fullsend-augmentations/SKILL.md — This PR modifies 5 protected governance/infrastructure files. The changes add agents submodule initialization to the lint workflow, add path triggers for the agents submodule to site-build, update lychee exclusion in pre-commit, add the agents submodule reference, and update path references in the augmentations skill. The PR links to issue Include fullsend-ai/agents docs in the documentation site #5710 and the rationale is clear, but human approval is always required for protected-path changes.

Low

  • [always-true-guard] Makefile:83 — The submodule initialization guard [ ! -d "agents/.git" ] in ensure-hooks (line 83) and bootstrap (line 49) never evaluates to false after initialization. In initialized git submodules, .git is a file (containing gitdir: ...), not a directory, so ! -d is always true. This causes git submodule update --init agents to run on every make lint invocation.
    Remediation: Use [ ! -e "agents/.git" ] instead of [ ! -d "agents/.git" ].

  • [scope-creep] docs/guides/user/escalation-ladder.md:22 — The escalation-ladder.md file undergoes a content modification during the rename: the ‘four levels’ monospace code block is reformatted into a numbered markdown list. This formatting change is not described in the PR body.
    Remediation: Either revert the code-block-to-list reformatting or describe the content change explicitly in the PR body.

  • [sidebar-items-lost] docs/.vitepress/config.ts:255getMarkdownFiles('agents', 'agents') only discovers top-level .md files and immediate subdirectories with README.md. If the agents submodule’s docs/ later adds nested directories with content pages, those would be silently omitted. This matches the existing experiments sidebar section behavior.


Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run (2)

Review

Findings

High

  • [stale-doc] docs/guides/user/default-vs-custom-agents.md:46 — The relative link (../) was correct in the old location docs/agents/topics/ where ../ resolved to docs/agents/. After the rename to docs/guides/user/, ../ resolves to docs/guides/ — the guides index — not the agents reference. The inline text explicitly says "docs/agents/<agent>.md" making the mismatch obvious to readers.
    Remediation: Change ../ to ../../agents/ so the link correctly points to the agents reference documentation.

  • [stale-doc] docs/guides/user/default-vs-custom-agents.md:93 — The "See also" entry [Agents reference](../) has the same broken relative path. From docs/guides/user/, ../ resolves to docs/guides/ instead of docs/agents/.
    Remediation: Change ../ to ../../agents/ on the Agents reference see-also entry.

  • [stale-doc] docs/guides/user/escalation-ladder.md:45 — The table cell Each agent's [reference page](../) has a broken relative path. The file was moved from docs/agents/topics/ (where ../ = docs/agents/) to docs/guides/user/ (where ../ = docs/guides/). The PR updated sibling-relative links in this file but missed this parent-directory link.
    Remediation: Change ../ to ../../agents/ so the link correctly points to the agents reference documentation.

Medium

  • [stale-reference] skills/author-fullsend-augmentations/SKILL.md:253 — Two references to docs/agents/topics/default-vs-custom.md remain in this file (lines 253 and 314). The PR removes the docs/agents/topics/ directory entirely — docs/agents is now a symlink to ../agents/docs/, and the topics/ subdirectory does not exist in the agents submodule. The file was moved to docs/guides/user/default-vs-custom-agents.md. These paths will be broken after merge.
    Remediation: Update both occurrences to docs/guides/user/default-vs-custom-agents.md.

  • [inconsistent-lychee-exclusion] Makefile:180 — The Makefile lychee invocation uses --exclude-path ^agents/ but does NOT include --exclude-path docs/agents/. Since docs/agents is now a symlink to ../agents/docs/, the glob '**/*.md' will follow the symlink and discover markdown files under docs/agents/. Those paths start with docs/agents/, which do not match the ^agents/ regex. The pre-commit config correctly adds --exclude-path docs/agents/ but the Makefile does not.
    Remediation: Add --exclude-path docs/agents/ to the Makefile lychee invocation.

  • [naming-convention] docs/.vitepress/config.ts:272 — The two new sidebar entries (lines 272 and 274) carry .md extensions in their link values (/guides/user/default-vs-custom-agents.md and /guides/user/escalation-ladder.md). All other sidebar links — including those produced by getMarkdownFiles and all ~30 hardcoded entries — omit the extension. VitePress resolves both forms, but this violates the established codebase convention.
    Remediation: Remove the .md suffix from both link values.

  • [protected-path] .github/workflows/lint.yml, .github/workflows/site-build.yml, .pre-commit-config.yaml, agents — This PR modifies 4 protected governance/infrastructure files. The changes add agents submodule initialization to the lint workflow, add path triggers for the agents submodule to site-build, update lychee exclusion in pre-commit, and add the agents submodule reference. The PR links to issue Include fullsend-ai/agents docs in the documentation site #5710 and the rationale is clear, but human approval is always required for protected-path changes.

Low

  • [sidebar-items-lost] docs/.vitepress/config.ts:255getMarkdownFiles('agents', 'agents') only discovers top-level .md files and immediate subdirectories with README.md. If the agents submodule's docs/ later adds nested directories with content pages, those would be silently omitted. This matches the existing experiments sidebar section behavior.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR
Previous run (3)

Review

Findings

Medium

  • [stale-reference] skills/author-fullsend-augmentations/SKILL.md:253,314 — Two references to docs/agents/topics/default-vs-custom.md remain in this file (lines 253 and 314). The PR removes docs/agents/topics/ entirely — the docs/agents directory is now a symlink to ../agents/docs/, and the topics/ subdirectory does not exist in the agents submodule. The file was moved to docs/guides/user/default-vs-custom-agents.md. These paths will be broken after merge.
    Remediation: Update both occurrences to docs/guides/user/default-vs-custom-agents.md.

  • [inconsistent-lychee-exclusion] Makefile:180 — The Makefile's lychee exclusion uses --exclude-path ^agents/ (regex anchored to start-of-path), which correctly excludes files directly under agents/ but does NOT exclude files reached through the docs/agents symlink (which resolves to paths like docs/agents/code.md). The Makefile passes '**/*.md' as a literal glob to lychee, which follows symlinks during traversal. Files discovered via the symlink will have paths starting with docs/agents/, not agents/, so they bypass the ^agents/ exclusion. The pre-commit config separately adds --exclude-path docs/agents/ but not ^agents/.
    Remediation: Add --exclude-path docs/agents/ to the Makefile lychee invocation (in addition to the existing ^agents/). Optionally add --exclude-path ^agents/ to pre-commit for symmetry.

  • [naming-convention] docs/.vitepress/config.ts:270 — The two new sidebar entries use .md extensions in their link values (/guides/user/default-vs-custom-agents.md, /guides/user/escalation-ladder.md). These are the only two sidebar links in the entire file that include the .md extension — all other links (~30+) omit it. VitePress resolves both forms, so this is not a functional bug, but it violates the established codebase convention.
    Remediation: Remove the .md suffix from both new link values: /guides/user/default-vs-custom-agents and /guides/user/escalation-ladder.

  • [protected-path] .github/workflows/lint.yml, .github/workflows/site-build.yml, .pre-commit-config.yaml — This PR modifies 3 protected governance/infrastructure files. The changes add agents submodule initialization to the lint workflow, add path triggers for the agents submodule to site-build, and exclude symlinked agent docs from lychee link checking. The PR links to issue Include fullsend-ai/agents docs in the documentation site #5710 and the rationale is clear, but human approval is always required for protected-path changes.

Low

  • [sidebar-items-lost] docs/.vitepress/config.ts:255getMarkdownFiles('agents', 'agents') only discovers top-level .md files and immediate subdirectories with README.md. Currently, all agent docs in the submodule are top-level and correctly represented. If the agents submodule's docs/ later adds nested directories with content pages (not just README.md), those would be silently omitted from the sidebar.

Next steps:

  • /fs-fix — agent addresses review findings automatically
  • /fs-fix <your instruction> — agent fixes with your specific guidance
  • Push commits directly — review re-runs automatically on push
  • /fs-fix-stop — disable automatic fix runs for this PR

fullsend-ai-review[bot]

This comment was marked as outdated.

@waynesun09 waynesun09 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Additional review finding (posted programmatically, deduplicated against existing comments):

Comment thread docs/doc-site.md Outdated
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 7, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 8:49 AM UTC · Completed 9:12 AM UTC

Commit: 9b83535 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $7.43

fullsend-ai-review[bot]

This comment was marked as outdated.

fullsend-ai-review[bot]

This comment was marked as outdated.

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 7, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 9:39 AM UTC · Completed 9:58 AM UTC

Commit: a503979 · View workflow run →

Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $6.21

fullsend-ai-review[bot]

This comment was marked as outdated.

@rh-hemartin

This comment was marked as off-topic.

@fullsend-ai-review

fullsend-ai-review Bot commented Sep 10, 2026

Copy link
Copy Markdown

🤖 Review · ⚠️ Cancelled · Started 6:55 AM UTC · Ended 6:57 AM UTC

Commit: e97c3e8 · View workflow run →

Add fullsend-ai/agents as a submodule and link its docs/
folder into docs/agents, so the contents are fresh from
that repository. Rebuild the docs site when the agents
submodule changes, matching the experiments/ path filters.

There will be a drift as the submodule gets updated, but
we can deal with that later.

Signed-off-by: Hector Martinez <hemartin@redhat.com>
Assisted-By: Grok 4.6 (Pi runtime)
Signed-off-by: Hector Martinez <hemartin@redhat.com>
@fullsend-ai-review

fullsend-ai-review Bot commented Sep 10, 2026

Copy link
Copy Markdown

🤖 Finished Review · ✅ Success · Started 6:58 AM UTC · Completed 7:21 AM UTC

Commit: 2b3fed4 · View workflow run →

Runtime: pi · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $6.65

@fullsend-ai-review fullsend-ai-review Bot removed the risk/moderate PR risk: moderate label Sep 10, 2026

@fullsend-ai-review fullsend-ai-review 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.

See the review comment for full details.

# this submodule is checked out. experiments/ does not need this: that
# symlink points at the gitlink directory itself.
- name: Initialize agents submodule
run: git submodule update --init agents

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

[low] secret-exposure

The default CI job (test, runs on every pull_request, no path filter) now runs git submodule update --init agents immediately after actions/checkout, which defaults to persist-credentials: true. The .gitmodules URL and the agents gitlink SHA are both PR-controlled, so every PR now triggers a credentialed git fetch of a PR-chosen GitHub URL. The persisted credential extraheader is host-scoped to github.com and permissions: contents: read is unchanged, so this is hardening rather than a demonstrated token-exfiltration path -- the same persist-credentials + git submodule update --init pattern already exists, unmodified, in site-build.yml's build step. This PR extends the pattern to the unfiltered default CI job that runs on every PR.

Suggested fix: Set persist-credentials: false on the actions/checkout step in lint.yml (the job never pushes) and let git submodule update --init agents run unauthenticated for the public submodule.

@fullsend-ai-review fullsend-ai-review Bot added component/docs User-facing documentation component/ci CI pipelines and checks labels Sep 10, 2026

@waynesun09 waynesun09 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Review-only pass (no approval, no change request). Findings below were verified against head 2b3fed4 with the agents submodule checked out at the pinned commit, and deduplicated against the existing comments on this PR.

Two findings have no line in this diff to anchor to, so they are here:


[MEDIUM] CODEOWNERS has no blank-owner entry for the new agents submodule, so its Renovate bumps cannot auto-merge — CODEOWNERS

CODEOWNERS (full file read at head) is: * @fullsend-ai/core, then a comment block stating "Submodule paths — no code-owner review required so Renovate digest bumps can auto-merge after CI passes", then blank-owner entries for .gitmodules, experiments, eval/.agent-eval-harness. There is no agents entry, and CODEOWNERS is not touched by this PR at all. renovate.json:19-23 automerges every git-submodules update, so agents gitlink bumps will be created and then blocked pending @fullsend-ai/core review — inconsistent with the two existing submodules and with the stated rationale in that very comment block.

Suggested fix: Add agents to the blank-owner list in CODEOWNERS, directly alongside experiments and eval/.agent-eval-harness.


[MEDIUM] Issue-filing guidance covers the experiments submodule split but was not extended to the new agents split — AGENTS.md:21, CONTRIBUTING.md:155-166, skills/filing-issues/SKILL.md:26-43

AGENTS.md:21, CONTRIBUTING.md:155-166 ("Where to file experiments-related issues", with the source-vs-wiring table) and skills/filing-issues/SKILL.md:26-43 all spell out the fullsend-ai/experiments split in detail — source in the submodule repo, submodule integration (.gitmodules, CODEOWNERS, Renovate, docs symlink, docs-site wiring) here. Grep at head confirms none of the three has any parallel rule for agents; the only agents mention in the diff is a path update in skills/author-fullsend-augmentations/SKILL.md. This matters immediately because the highest-severity finding on this PR (the 18 dead source links) has to be fixed in fullsend-ai/agents, not here, and nothing in the repo tells a contributor or an agent that.

Suggested fix: Add a parallel agents entry mirroring the experiments guidance in all three places: agent-definition and agent-doc content goes to fullsend-ai/agents; submodule integration (.gitmodules, CODEOWNERS, Renovate policy, the docs/agents symlink, sidebar wiring) stays in this tracker.

Comment thread docs/.vitepress/config.ts
{ text: "Default vs. Custom", link: "/agents/topics/default-vs-custom" },
{ text: "Escalation Ladder", link: "/agents/topics/escalation-ladder" },
],
items: getMarkdownFiles("agents", "agents"),

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[HIGH] Submodule agent pages ship 18 dead links, and the lychee exclusion added in this PR removes the only check that would catch them

Verified at head 2b3fed4 with the pinned submodule (81b0e9b) checked out. The 8 pages now served from docs/agents (-> ../agents/docs/) were written for the agents-repo layout and carry 18 repo-relative links to paths that do not exist on the docs site: ../harness/{code,fix,prioritize,retro,review,scribe,triage}.yaml (8), ../policies/base.yaml (4, in code.md:86 and network-policy.md:23,101,128), ../profiles/ (3, code.md:87 and network-policy.md:25,130), ../scripts/lib/pr-assignee.lib.sh (code.md:170).

This is a regression introduced by the swap, not pre-existing: the deleted in-tree docs/agents/code.md used an absolute URL for the same link ([`fullsend-ai/agents` — `harness/code.yaml`](https://github.com/fullsend-ai/agents/blob/main/harness/code.yaml)), and grep of the old page shows every cross-repo reference was absolute.

Nothing catches the new relative form: docs/.vitepress/config.ts:195 sets ignoreDeadLinks: true, config.ts has no markdown link transform, and this PR adds --exclude-path docs/agents/ to both .pre-commit-config.yaml:165 and Makefile:184 (on top of the existing ^agents/ in the Makefile), so lychee never reads those files. Note the exclusion was added in response to the review comment on Makefile:180, which asked for it on consistency grounds — the side effect of silencing 18 real dead links was not considered on that thread.

Suggested fix: Fix in fullsend-ai/agents first: restore absolute https://github.com/fullsend-ai/agents/blob/main/... URLs for the harness/, policies/, profiles/ and scripts/ references in docs/*.md, then re-pin here. If you want the fix in this repo instead, add a markdown-it link rule in config.ts that rewrites ../harness/, ../policies/, ../profiles/ and ../scripts/ from pages under /agents/ to the agents GitHub blob URL. Please do not merge with docs/agents/ excluded from lychee while the relative links are still there — the exclusion is what makes this silent.

# this submodule is checked out. experiments/ does not need this: that
# symlink points at the gitlink directory itself.
- name: Initialize agents submodule
run: git submodule update --init agents

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[MEDIUM] fullsend's Go toolchain now compiles, vets and tests review-eval fixture code from the agents submodule

Confirmed by running go list ./... on the PR head with the submodule initialised: it now returns github.com/fullsend-ai/fullsend/agents/eval/review/cases/002-risk-high-auth-change/repo/internal/auth. agents/ has no go.mod (find agents -name go.mod is empty), so the new "Initialize agents submodule" step at lint.yml:22-23 — which runs before actions/setup-go — folds that package into the fullsend module. It is then built by go test -race -coverprofile=coverage.out ./... (lint.yml:57), by golangci-lint run ./... (Makefile:131), and by the go vet ./... pre-commit hook (.pre-commit-config.yaml:106-111, pass_filenames: false).

It happens to pass today (go vet ./agents/... exits 0), but the file is a deliberately-flawed review fixture (a static valid-token auth handler) and is not even gofmt-clean (gofmt -l lists it). renovate.json:20-23 automerges all git-submodules updates, so a future agents commit that adds a fixture which does not compile, or imports outside stdlib, will break fullsend CI on an auto-merged bump with no human in the loop.

(Distinct from the existing persist-credentials comment on this line.)

Suggested fix: Keep Go's package walk out of the submodule: move the submodule-init step after the Go steps (only lychee and the symlink lint consume it), or scope the Go commands (go test $(go list ./... | grep -v '/agents/'), plus exclude-dirs: [agents] in .golangci.yml and a scoped go vet in the hook). Mounting the submodule at a Go-ignored path (_agents/) and repointing the symlink also works.

Comment thread docs/agents/code.md
| `ready-to-code` | Triggers the code agent. Applied by the [triage](triage.md) post-script for low-risk categories (bug, documentation, performance), or manually by a human for feature work after prioritization. |
| `ready-for-review` | Applied by the code agent's post-script after pushing a PR. In per-repo installs, triggers review when applied to a PR; also marks workflow state for humans and the retro agent. |

## Configuration and extension

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[MEDIUM] Two substantial user-facing configuration sections are dropped and exist in neither repo at the pinned commit

Heading diff of the deleted pages against agents/docs/* at pin 81b0e9b.

  1. ### Image and network policy synchronization (old code.md:53-104) is gone: the Warning callout about customizing image/policy/providers on only one of the code/fix harnesses, and the recommended dual-harness .fullsend/harness/{code,fix}.yaml example that keeps them in sync. grep -rn -i 'Image and network policy synchronization' and grep -rn 'harness/fix.yaml' over docs/ and skills/ return nothing across the whole fullsend tree and agents/docs/.
  2. ### Scheduled scoring (old prioritize.md:68-374, ~300 lines) is gone entirely — the GitHub Projects v2 RICE-field prerequisites, the required FULLSEND_PRIORITIZE_CLIENT_ID / FULLSEND_PRIORITIZE_APP_PRIVATE_KEY / FULLSEND_FULLSEND_CLIENT_ID / FULLSEND_FULLSEND_APP_PRIVATE_KEY variables table, and the complete example prioritize-scheduler.yml. grep -rn -i 'scheduled scoring' matches nothing anywhere. prioritize.md drops 377 -> 118 lines.
  3. The README loses its Configuration and Custom Agents sections; the submodule README replaces them with a single "see the fullsend docs" link.

This is fullsend-configuration guidance, not agent-definition content, so it has no natural home in the agents repo either.

Suggested fix: Move the two dropped sections into this repo before merge — the sync guidance into docs/guides/user/customizing-agents.md, and Scheduled scoring into a docs/guides/user/ page (both are fullsend config/ops content) — or land them in fullsend-ai/agents and re-pin. Either way, list the intentional drops in the PR description; today the PR body does not mention any content loss.

Comment thread docs/.vitepress/config.ts
{ text: "Default vs. Custom", link: "/agents/topics/default-vs-custom" },
{ text: "Escalation Ladder", link: "/agents/topics/escalation-ladder" },
],
items: getMarkdownFiles("agents", "agents"),

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[MEDIUM] Agents sidebar loses its curated workflow order and becomes alphabetical with two extra pages interleaved

The diff replaces an explicit eight-item list (Triage, Code, Review, Fix, Retro, Prioritize — SDLC workflow order — plus the two topic pages) with items: getMarkdownFiles("agents", "agents"). getMarkdownFiles (config.ts:22-27) iterates fs.readdirSync(fullDir).sort() with no ordering hook, so the rendered sidebar becomes Code, Fix, Custom network policy, Prioritize, Retro, Review, Scribe, Triage — the reading order that taught the pipeline is gone, and the two new pages the pin adds (network-policy.md, scribe.md) land in the middle of the agent list rather than being grouped.

Distinct from the existing sidebar-items-lost comments on this line, which are about nested subdirectories being silently omitted, not about ordering.

Suggested fix: Keep an explicit ordered list of the known agent slugs and append anything getMarkdownFiles discovers beyond it, or give getMarkdownFiles an optional sort key / read an order: frontmatter field. If alphabetical is acceptable, please say so in the PR body — it is a deliberate IA change the description does not currently mention.

@@ -14,17 +14,15 @@ This ladder applies to **core agent roles that fullsend already ships**
(triage, code, review, fix, retro, prioritize). If you are building an agent

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[MEDIUM] Published /agents/topics/* URLs are removed with no redirect or stub, and this repo has no mechanism to add one

(File-level finding; anchored here because the page is the one that moves.)

Both topic pages move to /docs/guides/user/default-vs-custom-agents and /docs/guides/user/escalation-ladder. In-repo links were correctly updated (grep -rn 'agents/topics' over the tree returns nothing), and the old URLs are live today (curl of the site preview returns HTTP 200 for /docs/agents/topics/escalation-ladder), so external bookmarks, search results and links from existing issues will start 404ing at deploy.

Correcting a mechanism proposed elsewhere: CANONICAL_REDIRECTS in docs/.vitepress/seo.ts:31-34 is not an HTTP redirect — it only overrides the canonical/og:url tag for a page that still exists — and grep -rni redirect cloudflare_site/ finds no redirect handling in the worker or wrangler.toml. So there is currently no mechanism at all. The repo's one precedent for a moved page (a stub page plus canonical, as with archived-roadmap.md) is also unavailable here, because docs/agents/ is now a symlink into the submodule, so a stub cannot be added under docs/agents/topics/ from this repo.

Suggested fix: Handle it in cloudflare_site/worker/src/index.ts: map /docs/agents/topics/default-vs-custom -> /docs/guides/user/default-vs-custom-agents and /docs/agents/topics/escalation-ladder -> /docs/guides/user/escalation-ladder with a 301, preserving the fragment. If a worker change is out of scope for this PR, file a follow-up and note in the PR body that the two URLs will 404.

Comment thread Makefile

ensure-hooks:
@if [ -d "agents" ] && [ ! -e "agents/.git" ] && [ -f ".gitmodules" ]; then \
git submodule update --init agents >/dev/null 2>&1 || true; \

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[MEDIUM] ensure-hooks hides submodule-init failures, and bare commits / new worktrees still fail lint-broken-symlinks

Residual of the already-addressed docs/doc-site.md:45 thread — bootstrap and ensure-hooks now do init the submodule, so that comment is resolved, but three gaps remain:

  1. Makefile:84 runs git submodule update --init agents >/dev/null 2>&1 || true, discarding network/auth errors; the contributor then sees only lint-broken-symlinks failing on a dangling docs/agents with no hint of the real cause.
  2. ensure-hooks only runs via make. Reproduced on the PR head: git worktree add creates agents/ as an empty directory, and running ./hack/lint-broken-symlinks there fails with ERROR: docs/agents -> ../agents/docs/ ... 1 broken symlink(s) found. Since the hook is always_run: true (.pre-commit-config.yaml:149-154), any bare git commit with hooks installed, any pre-commit run, and every new worktree fails until the developer manually inits.
  3. The doc-site.md sentence added by this PR ("when building locally or running make lint, you may need to run git submodule update --init manually") names exactly the two cases that already auto-init — package.json:15-16 docs:dev/docs:build both prefix git submodule update --init, and make lint depends on ensure-hooks — while omitting the cases that actually break.

(Distinct from the always-true-guard comment on line 83.)

Suggested fix: Drop the >/dev/null 2>&1 || true on Makefile:84 (or keep stdout quiet but let stderr and the exit status through). Teach hack/lint-broken-symlinks to recognise a symlink target under a registered-but-uninitialised submodule (git submodule status prefix -) and fail with the actionable message run: git submodule update --init agents. Reword the doc-site.md note to name direct git commit / pre-commit run / new worktrees, and give the exact command.

- "package-lock.json"
- "experiments"
- "experiments/**"
- "agents"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[MEDIUM] PR asserts tests were added when the diff has none, and the docs site has never been built successfully in CI with this configuration

  1. The PR body ticks "[x] Tests added/updated for new or modified logic", but git diff --name-only origin/main...HEAD | grep -i test returns nothing — the change to getMarkdownFiles's contract (it now walks a symlink into a submodule) has no test.
  2. The build check at head 2b3fed4 is not a pass: job 102775611654 was cancelled at the 10-minute timeout during "Build documentation site", and the last six site-build runs on main are all cancelled the same way, so it is pre-existing — but the consequence is that no CI run has ever produced the site with docs/agents backed by the submodule, and the PR body does not disclose that. The site preview linked in the comments is stale pre-PR output, verified: /docs/agents/network-policy 404s, /docs/agents/topics/escalation-ladder still 200s, and og:description on /docs/agents/code still carries the old in-tree frontmatter. So there is currently no artifact anywhere that shows the new configuration rendering.
  3. e2e is also red at head (TestAdminInstallUninstall) while recent e2e runs on main are green and the diff touches no admin code — likely a flake, but it is a required check.

Suggested fix: Untick the tests checkbox, or add a config.ts unit test that runs getMarkdownFiles over a symlinked fixture directory. Run npx vitepress build docs locally with the submodule initialised and paste the result (or a fresh working preview URL) into the PR — that is also how the 18 dead links flagged above become visible. Re-run e2e before merge. Note the PR is currently reported as mergeable: CONFLICTING and needs a rebase regardless.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component/ci CI pipelines and checks component/docs User-facing documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Include fullsend-ai/agents docs in the documentation site

2 participants