Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
104 changes: 104 additions & 0 deletions .github/instructions/docs_coverage.instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
---
applyTo: '**'
---

# Documentation Coverage

## Why this exists

The documentation site is kept in sync with the application by a generated
inventory plus tests. Before this was in place, coverage decayed silently: the
app had 111 capability toggles, 18 admin settings tabs, 27 action plugins, and

Check warning on line 11 in .github/instructions/docs_coverage.instructions.md

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains AI, plugin, agent, or workspace boundary marker. Recommendation%3A Check whether prompts, chat history, uploaded documents, embeddings, citations, settings, or identity can cross a new boundary.
47 chat controls while the docs described roughly a dozen capabilities and had
no per-tab, per-action, or per-control reference at all.

## The rule

When a change adds or renames any of the following, the same change must update
the documentation:

| You added or renamed | Document it in |
|---|---|
| An `enable_*` settings key | The relevant `docs/admin/<tab>.md` settings table, and claim the key in `docs/_data/features.yml` |
| An admin settings tab | A new `docs/admin/<tab-id>.md` page |
| A Semantic Kernel action plugin | A new `docs/reference/actions/<slug>.md` page |

Check warning on line 24 in .github/instructions/docs_coverage.instructions.md

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains AI, plugin, agent, or workspace boundary marker. Recommendation%3A Check whether prompts, chat history, uploaded documents, embeddings, citations, settings, or identity can cross a new boundary.
| A chat UI control | `docs/reference/chat-controls.md` |
| A user-facing app page or major surface | A guide under `docs/guides/` |

## Regenerating the inventory

The application surface inventory is generated, not hand-written:

```powershell
python .\scripts\build_docs_inventory.py
```

This writes `docs/_data/app_surface.yml`. Commit the regenerated file with your
change. The inventory deliberately does not record the application version, so
it only changes when the application surface actually changes.

## Verifying

```powershell
python .\functional_tests\test_docs_app_surface_coverage.py
python .\functional_tests\test_docs_site_quality.py
```

The coverage test fails when any inventory item is undocumented, and when the
committed inventory is stale relative to the application.

## Internal-only flags

A settings key that has no admin-facing UI and is purely an internal rollout,
telemetry, or tuning switch may be exempted. Add it to `CAPABILITY_EXEMPTIONS`

Check warning on line 53 in .github/instructions/docs_coverage.instructions.md

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains security control, sanitization, or audit marker. Recommendation%3A Confirm the change does not weaken auth, CSRF, CSP, XSS defenses, settings sanitization, redaction, audit logging, or tests.

Check warning on line 53 in .github/instructions/docs_coverage.instructions.md

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains external connection or remote asset marker. Recommendation%3A Review whether changed code can send prompts, files, credentials, cookies, settings, logs, or user data to a new sink.
in `functional_tests/test_docs_app_surface_coverage.py` **with a written
justification**. Exemptions are themselves checked for staleness, so a flag that
is later removed from the application will fail the test until the exemption is
deleted.

Do not use an exemption to avoid writing documentation for a user-facing
capability.

## Screenshots and videos

Documentation pages declare media slots that render a visible placeholder card
until the asset exists. To add a screenshot, save the file at the exact path the
placeholder names, for example `docs/images/admin/general-tab.png`. No YAML or
code change is required.

Videos are never committed to the repository. Upload the recording to YouTube or
Microsoft Stream, save a poster frame under `docs/images/video-posters/`, and add
the watch URL to the slot in `docs/_data/media.yml`.

Outstanding media is listed at `/contributing/media-status/`. Missing media does
not fail the build, so it never blocks a change, but it stays visible.

## Writing quality

Documentation pages must explain **what a capability does and why someone would
use it**, not restate control names.

Do not write:

- "Turns X on or off" or "Sets X" as a description.
- The same boilerplate paragraph across multiple sections or pages.

Check warning on line 84 in .github/instructions/docs_coverage.instructions.md

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains secret or sensitive data source marker. Recommendation%3A Pair this source with any nearby network, logging, serialization, or process execution sink before approving.
- Procedures that only describe using a form, such as "Open the page, change the
fields, save".
- Prerequisites that would apply to any page.

Never invent a setting, default, field, or behavior. A shorter accurate page is
better than a longer speculative one.

## Page structure

Write plain markdown with real `##` and `###` headings. The site generates its
"On this page" table of contents and heading anchors from rendered `h2`/`h3`
elements, so pages authored as HTML card markup get neither. Do not add
`<section>`, `<div>`, or card/badge markup to documentation pages.

## Browser assets

The documentation site loads no third-party assets. Everything is vendored under
`docs/assets/vendor/` and pinned by version. Do not add a CDN `<script>`,
`<link>`, `@import`, or webfont URL to any docs layout, include, stylesheet, or
page. See `local_browser_assets.instructions.md`.

Check warning on line 104 in .github/instructions/docs_coverage.instructions.md

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains AI, plugin, agent, or workspace boundary marker. Recommendation%3A Check whether prompts, chat history, uploaded documents, embeddings, citations, settings, or identity can cross a new boundary.
2 changes: 1 addition & 1 deletion application/single_app/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
EXECUTOR_TYPE = 'thread'
EXECUTOR_MAX_WORKERS = 30
SESSION_TYPE = 'filesystem'
VERSION = "0.260.019"
VERSION = "0.260.022"
IS_DEVELOPMENT = is_development_env_enabled()

SESSION_COOKIE_SAMESITE = os.getenv('SESSION_COOKIE_SAMESITE', 'Lax')
Expand Down
4 changes: 4 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
_site
.sass-cache
.jekyll-metadata

node_modules/
package.json
package-lock.json
1 change: 1 addition & 0 deletions docs/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ group :jekyll_plugins do
gem "jekyll-seo-tag"
gem "jekyll-sitemap"
gem "jekyll-relative-links"
gem "jekyll-redirect-from"
gem "jekyll-optional-front-matter"
gem "jekyll-readme-index"
gem "jekyll-titles-from-headings"
Expand Down
5 changes: 2 additions & 3 deletions docs/Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ GEM
liquid (= 4.0.4)
mercenary (~> 0.3)
minima (= 2.5.1)
nokogiri (>= 1.19.3, < 2.0)
nokogiri (>= 1.16.2, < 2.0)
rouge (= 3.30.0)
terminal-table (~> 1.4)
webrick (~> 1.8)
Expand Down Expand Up @@ -244,8 +244,6 @@ GEM
racc (~> 1.4)
nokogiri (1.19.4-x86_64-linux-gnu)
racc (~> 1.4)
nokogiri (1.19.3-x86_64-linux-gnu)
racc (~> 1.4)
octokit (4.25.1)
faraday (>= 1, < 3)
sawyer (~> 0.9)
Expand Down Expand Up @@ -291,6 +289,7 @@ DEPENDENCIES
jekyll-livereload
jekyll-optional-front-matter
jekyll-readme-index
jekyll-redirect-from
jekyll-relative-links
jekyll-seo-tag
jekyll-sitemap
Expand Down
Loading
Loading