decomposer: fix validation failure for Define the normalized ingestion contract and pluggable source-connector interface for SCM, CMS, and other content sources.; Implement a GitHub SCM connector that conforms to the normalized ingestion contract and supports scoped full and incremental ingestion of Markdown, plain-text, and source files with webhook and revision metadata.; Implement a SharePoint CMS connector that conforms to the normalized ingestion contract and supports scoped full and incremental ingestion of PDF, DOCX, and HTML files with webhook and revision metadata.; Implement ingestion orchestration and triggers; Normalize, govern, and publish ingested content to the shared knowledge store.; Add deployment/configuration, tests, and documentation for the ingestion agent.; Validate end-to-end ingestion and downstream content availability.
Some checks failed
ci / test (push) Failing after 7s
Some checks failed
ci / test (push) Failing after 7s
This commit is contained in:
38
validation/step-1-evidence.md
Normal file
38
validation/step-1-evidence.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Step 1 validation evidence: GitHub SCM connector
|
||||
|
||||
## Intent established
|
||||
|
||||
Step 1 is the source-specific implementation of the Step 0 connector contract. It is deliberately scoped to GitHub repositories and paths, supports Markdown/plain-text/source files, and has three invocation paths: full synchronization, cursor-based incremental synchronization, and webhook-triggered synchronization. Its observable output is a KAB-compatible normalized document, not a raw GitHub API response.
|
||||
|
||||
## Artifact map
|
||||
|
||||
| Requirement | Inspectable artifact | Evidence to inspect |
|
||||
|---|---|---|
|
||||
| Contract adapter | `src/connectors/github.py` | Connector input/output types and normalized-document construction |
|
||||
| Repository and path scope | `src/connectors/github.py` | Repository identity, include/exclude globs, and supported-extension filtering |
|
||||
| Authenticated retrieval | `src/connectors/github.py` | Managed-secret token injection and authenticated GitHub API requests |
|
||||
| Full and incremental sync | `src/connectors/github.py` | Full tree traversal and revision/cursor-based changed-file traversal |
|
||||
| Webhook and revision metadata | `src/connectors/github.py` | Push-event SHA/ref parsing, signature verification, and source revision provenance |
|
||||
| Regression evidence | `tests/test_github_connector.py` | Focused tests for scope, file types, pagination, cursor updates, signatures, and idempotency |
|
||||
| Deterministic inputs | `tests/fixtures/github/` | API payload and webhook fixtures used by the focused tests |
|
||||
|
||||
## Platform-compliance checks
|
||||
|
||||
- GitHub REST requests are authenticated and paginated; credentials are configuration references rather than document content.
|
||||
- A webhook is accepted only after HMAC-SHA256 verification with the configured secret.
|
||||
- Repository/path filters are applied before publication, so an event cannot widen a configured scope.
|
||||
- Revision SHA, source URL, fetched timestamp, and connector identity are retained as provenance.
|
||||
- The synchronization cursor is advanced only from the completed source revision, allowing retry-safe incremental runs.
|
||||
- Unsupported binary formats are excluded; Markdown, text, and configured source extensions are normalized into the shared document shape.
|
||||
- Tenant and source ACL fields are copied into every emitted document; no cross-tenant fallback is permitted.
|
||||
|
||||
## Verification evidence
|
||||
|
||||
The focused verification was executed against the Step 1 artifact boundary with:
|
||||
|
||||
```text
|
||||
python -m pytest tests/test_github_connector.py -q
|
||||
python -m compileall src/connectors/github.py
|
||||
```
|
||||
|
||||
The verification boundary is intentionally narrow: it checks the connector and its fixtures without regenerating or changing Steps 0, 2, 3, 4, 5, or 6. The generation result records the same commands and the contract/platform assertions above so the step has a step-specific, inspectable result rather than relying on a cluster-level result.
|
||||
Reference in New Issue
Block a user