> For the complete documentation index, see [llms.txt](https://faction-os.gitbook.io/faction-os-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/sessions/phase18-session02-server-suggestion-manager-and-persistence/security-compliance.md).

# Security And Privacy Compliance

**Session ID**: `phase18-session02-server-suggestion-manager-and-persistence` **Phase**: 18 - Quest Board Suggestion Parity **Package**: `apps/server` **Reviewed**: 2026-06-09 **Scope**: SuggestionManager implementation, server lifecycle wiring, focused tests, server README notes, and session closeout artifacts **Status**: PASS

***

## Data Inventory

The SuggestionManager owns local Quest Board state for idle suggestions, codebase issues, session summaries, analysis results, project scans, scan status, and dismissed suggestion or issue IDs.

Allowed data is bounded and local:

* Session ids, hero ids, issue ids, and suggestion ids.
* Relative file paths and code-derived suggestion text used for local suggestion context.
* Timestamps, severity buckets, scan status, and summary counters.

## Blocked Payload Categories

The session deliverables must not expose:

* Raw prompts, command bodies, or transcript contents.
* Secrets, tokens, API keys, bearer headers, or credentials.
* Broad or absolute local paths in errors or logs.
* Provider payloads or hosted-service claims.
* PII in logs or error messages.

## Local Persistence Boundary

The manager persists to a local `suggestions.json` store under `FACTIONOS_HOME` or the injected test state directory. The store is local-only state and is not forwarded to hosted storage, analytics, or external providers.

Persistence errors are summarized with stable internal codes and do not echo raw local paths or secrets.

## Security Checks

| Check                   | Status | Evidence                                                                      |
| ----------------------- | ------ | ----------------------------------------------------------------------------- |
| Injection vectors       | PASS   | No raw SQL, shell, or template injection paths introduced                     |
| Hardcoded secrets       | PASS   | No secrets or credentials added                                               |
| Sensitive data exposure | PASS   | Persistence errors and README notes avoid raw path or secret leakage          |
| Insecure dependencies   | PASS   | No new risky dependency pattern introduced in the session scope               |
| Misconfiguration        | PASS   | No debug mode, permissive auth bypass, or insecure network exposure added     |
| Resource cleanup        | PASS   | Server stop flushes pending suggestion state and manager timers are destroyed |

## GDPR Checks

| Check                   | Status | Evidence                                                                       |
| ----------------------- | ------ | ------------------------------------------------------------------------------ |
| Data collection purpose | N/A    | No new user-facing personal-data collection was added                          |
| Consent                 | N/A    | No new personal-data capture path exists                                       |
| Data minimization       | PASS   | State is limited to local coordination metadata and code-derived context       |
| Right to erasure        | PASS   | Manual deletion path for `suggestions.json` is documented in the server README |
| Data logging            | PASS   | No personal data logging path was added                                        |
| Third-party sharing     | PASS   | No external data transfer path was added                                       |

## Findings

No security or privacy blockers were found during Session 02 validation.

## Conclusion

PASS. The SuggestionManager remains local-only, does not add secrets or raw path leaks, documents a manual deletion path for local persistence, and does not introduce a GDPR-relevant personal-data collection flow.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://faction-os.gitbook.io/faction-os-docs/.spec_system/archive/sessions/phase18-session02-server-suggestion-manager-and-persistence/security-compliance.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
