localhost1978/localhost / LOCALHOST1978 /SSK_DocGen /SSK_DocGen_Manual_Testing_Guide.md
localhost1978's picture
|
download
raw
10.3 kB
# SSK_DocGen P0 Manual Testing Guide
Status: Prepared for manual Xcode testing. All results are `Not run`.
This guide verifies the local P0 path:
```text
Xcode MCP client
-> SSK_StorageHost acp-agent
-> com.ssk.vaulthost Mach XPC
-> SSK_StorageHost daemon
-> private SSK_DocGen worker
-> isolated documentation ledger
```
Do not use this guide as proof of a pass until the evidence record contains an
actual Xcode result and matching source hashes.
## 1. Safety Rules
- Use Xcode for all builds and tests in this procedure.
- Use an isolated workspace root and an isolated vault root.
- Do not use the production workspace as a writable fixture.
- Do not use a shared or production vault.
- Do not put a file path or executable path in an MCP or XPC request.
- Keep the test Mac offline when the test does not require another local process.
- Keep all DocGen P0 traffic local. Do not enable a remote or non-loopback route.
- Record `Not run`, `Pass`, `Fail`, or `Blocked` for each check.
## 2. Prepare Isolated Roots
1. Create an isolated workspace directory in Finder.
2. Put the minimum supported source fixture in that directory.
3. Create an isolated vault directory in Finder.
4. Put these approved resource fixtures directly in the isolated vault root:
- `docc_index.json`;
- `graph.json`;
- `DocC_Index.md`.
5. Make both JSON files valid JSON.
6. Keep `docc_index.json` below 2 MiB.
7. Keep `graph.json` and `DocC_Index.md` below 256 KiB.
8. Record the two absolute paths in the evidence record. Do not put them in a
client request.
Result: **Not run**
## 3. Configure SSKVaultHost
1. Open `SovereignSurvivalKit.xcodeproj` in Xcode.
2. Select the `SSKVaultHost` scheme.
3. Open the Run action environment settings.
4. Set `SSK_DOCGEN_WORKSPACE` to the absolute isolated workspace root.
5. Set `SSK_DOCGEN_VAULT` to the absolute isolated vault root.
6. Confirm that both values name existing directories.
7. Confirm that the scheme uses a macOS destination.
8. Record the Xcode version, macOS version, destination, and configuration.
Expected result: The lifecycle application accepts only the two valid absolute
directories. It does not accept a missing, relative, or non-directory value.
Result: **Not run**
## 4. Build and Run SSKVaultHost
1. Build the `SSKVaultHost` scheme in Xcode.
2. Run `SSKVaultHost`.
3. Inspect its standard-error diagnostics in Xcode.
4. Confirm one of these results:
- `SSKVaultHost: launch agent is ready.`; or
- `SSKVaultHost: launch agent requires user approval.`
5. If approval is required, approve the background item in macOS System
Settings. Run `SSKVaultHost` again.
6. Confirm that it reports that the launch agent is ready.
Expected result: `SSKVaultHost` stores the approved roots and registers the
launch agent. It does not start an MCP server.
Result: **Not run**
## 5. Inspect the Built Lifecycle Bundle
Use Xcode's Products group and Show in Finder. Inspect `SSKVaultHost.app`.
Confirm that these items exist:
```text
SSKVaultHost.app/Contents/MacOS/SSKVaultHost
SSKVaultHost.app/Contents/MacOS/SSK_StorageHost
SSKVaultHost.app/Contents/MacOS/SSK_DocGen
SSKVaultHost.app/Contents/Library/LaunchAgents/com.ssk.vaulthost.plist
```
Confirm that the plist contains:
- `Label = com.ssk.vaulthost`;
- `BundleProgram = Contents/MacOS/SSK_StorageHost`;
- `MachServices/com.ssk.vaulthost = true`;
- `RunAtLoad = true`;
- `KeepAlive = true`.
Confirm that the three executables are signed by the expected development team.
Result: **Not run**
## 6. Confirm Secure Stored Configuration
1. Inspect the current user's Application Support directory.
2. Confirm that `SovereignSurvivalKit/DocGenHost` is an owner-only directory.
3. Confirm that `configuration.json` is an owner-only regular file.
4. Confirm that the file contains only the approved workspace and vault roots
and the supported format version.
5. Do not copy this file into test evidence. Record only the permissions and
pass or fail result.
6. Restart the daemon without the two environment overrides.
7. Confirm that the daemon reads the stored configuration.
Expected result: The MCP client never supplies these roots. The daemon fails
closed if the stored configuration is missing, malformed, linked, or insecure.
Result: **Not run**
## 7. Prepare the Xcode MCP Entry
Use one of these paths:
### XCP plug-in path
1. Select the `XCPSSKPlugin` scheme.
2. Build the scheme in Xcode.
3. Confirm that the plug-in resources contain `SSK_StorageHost` and
`ssk-intelligence-plugin.json`.
4. Confirm that the manifest command is `./Resources/SSK_StorageHost`.
5. Confirm that its only argument is `acp-agent`.
6. Install or load the plug-in by the approved Xcode procedure.
### Stable agent path
1. Use the stable `SSK_Agent` link created in Application Support.
2. Confirm that it resolves to the embedded `SSK_StorageHost` executable.
3. Configure Xcode to use the stable executable with the `acp-agent` argument.
Do not configure Xcode to start `SSK_DocGen serve`.
Result: **Not run**
## 8. List P0 Resources
Start the configured MCP agent from Xcode. Ask the client to list resources.
Expected resources:
| Name | URI | MIME type |
| --- | --- | --- |
| SSK DocC Index | `ssk://spec:SSK-DocGen-P0/ledger/documentation/docc-index` | `application/json` |
| SSK Codebase Graph | `ssk://spec:SSK-DocGen-P0/ledger/documentation/codebase-graph` | `application/json` |
| SSK Documentation Index | `ssk://spec:SSK-DocGen-P0/ledger/documentation/master-index` | `text/markdown` |
Confirm that no DocGen prompt, generation tool, curation tool, synthesis tool,
or generic file-browser resource is present. Confirm that the existing commerce
tools remain present and unchanged.
Result: **Not run**
## 9. Read Each P0 Resource
For each URI in Section 8:
1. Send one MCP resource-read request.
2. Confirm that the request crosses the named XPC route.
3. Confirm that the daemon starts the bundled private worker.
4. Confirm that the returned URI and MIME type match the requested resource.
5. Confirm that JSON resources contain valid JSON.
6. Confirm that the Markdown resource contains text.
7. Confirm that the response contains no workspace path, vault path, home path,
bundle path, worker path, key, claim, or credential.
8. Confirm that standard output contains MCP protocol data only.
9. Confirm that diagnostics appear on standard error only.
Result for DocC index: **Not run**
Result for codebase graph: **Not run**
Result for documentation index: **Not run**
## 10. MCP and XPC Negative Cases
Run each case separately. Record the exact external error category. Do not
expect an internal path or sensitive detail.
| Case | Expected result | Result |
| --- | --- | --- |
| Unknown logical resource URI | Invalid resource request | **Not run** |
| Client-supplied file URI | Invalid resource request | **Not run** |
| Malformed XPC data | Typed failure; no worker start | **Not run** |
| Unsupported XPC version | Typed failure; no worker start | **Not run** |
| Unknown XPC command | Typed failure; no worker start | **Not run** |
| Duplicate active request ID | Typed failure | **Not run** |
| Missing audit token | Connection rejected | **Not run** |
| Wrong signing team | Connection rejected | **Not run** |
| Unsigned or invalid caller | Connection rejected | **Not run** |
| Daemon unavailable | Redacted MCP failure | **Not run** |
| Worker unavailable | Redacted MCP failure | **Not run** |
| Request cancellation | One cancellation result and child cleanup | **Not run** |
| Request timeout | One timeout result and child cleanup | **Not run** |
## 11. Resource Security Negative Cases
Use only the isolated vault. Restore the fixture after each case.
| Case | Expected result | Result |
| --- | --- | --- |
| Missing approved resource | Redacted unavailable failure | **Not run** |
| Leaf file replaced by a symlink | Read rejected | **Not run** |
| Ancestor directory replaced by a symlink | Read rejected | **Not run** |
| FIFO, socket, device, or directory at resource leaf | Read rejected | **Not run** |
| `docc_index.json` larger than 2 MiB | Read rejected | **Not run** |
| Graph or Markdown index larger than 256 KiB | Read rejected | **Not run** |
| File changes during read | Read rejected | **Not run** |
| Invalid JSON in a JSON resource | Read rejected | **Not run** |
| Absolute path in resource content | Path redacted | **Not run** |
| Sensitive JSON key or PEM data | Sensitive value redacted or response rejected | **Not run** |
| Insecure stored-configuration permissions | Daemon fails closed | **Not run** |
| Stored configuration is a symlink | Daemon fails closed | **Not run** |
## 12. Xcode Test Targets
Run the applicable tests in Xcode and record exact test names and counts:
- `SSK_AbstractionsTests`: resource and host-command models;
- `SSK_FoundationTests`: process worker, XPC router, XPC bridge, and caller
authorization;
- `SSK_ProvidersTests`: secure host configuration, MCP facade, external
redaction, commerce surface, and daemon configuration;
- `SSK_DocGenTests`: private resource reader and worker protocol.
Do not claim that a shared `SSK_DocGen` scheme exists. If Xcode does not show a
required package test target, record `Blocked`.
Result: **Not run**
## 13. Full-Chain Result and Evidence
After the checks finish:
1. Record the exact scheme, target, destination, configuration, Xcode version,
macOS version, date, and operator.
2. Attach the Xcode test report or screenshot.
3. Record the source and configuration SHA-256 values listed in the evidence
record.
4. Record bundle, signing, launch-agent, XPC, MCP, worker, and resource-security
failures as separate categories.
5. Mark the full chain `Pass` only if the three resources list and read through
`SSK_StorageHost acp-agent` and no direct Xcode DocGen command remains.
Full-chain result: **Not run**
Evidence record:
`/Users/voxels/SovereignSurvivalKit/next/dev/ssk_docgen_p0_xcode_evidence.md`
## 14. Deferred Phases
- P1 local refresh is planned. It is not available in P0.
- P2 proposal, approval, publication, and rollback are planned. They are not
available in P0.
- P3 enrolled-peer read access is planned. It is not available in P0.
Do not use the P0 manual result as proof for a deferred phase.

Xet Storage Details

Size:
10.3 kB
·
Xet hash:
a77f9564502a0dee6a20188b0303317d2444f2462805913ef092c7d9e22cc1e6

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.