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

This commit is contained in:
2026-09-01 14:06:05 +00:00
parent 5b5d377885
commit ceab84a970
2 changed files with 72 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
{
"step_index": 1,
"verdict": "completed",
"capability": "Build a contract-compliant GitHub SCM connector with repository/path scoping, authenticated retrieval, full and incremental synchronization, webhook/revision metadata, normalized documents, provenance, ACLs, and cursors.",
"intent": {
"input_contract": "The connector consumes the Step 0 ingestion_contract, connector_interface, normalized_document_schema, provenance_schema, access_control_schema, sync_cursor_schema, and trigger_configuration_schema.",
"output_contract": "The connector emits normalized documents plus provenance, access controls, revision metadata, and an updated synchronization cursor; deletions are represented as tombstones.",
"scope": ["repository", "include/exclude path globs", "Markdown", "plain text", "source files"],
"modes": ["scoped full", "scoped incremental", "webhook-triggered incremental"]
},
"artifact_mapping": [
{"artifact": "src/connectors/github.py", "evidence": "GitHub connector implementation and contract adapter"},
{"artifact": "tests/test_github_connector.py", "evidence": "unit coverage for scope, normalization, cursor, revision, and webhook behavior"},
{"artifact": "tests/fixtures/github", "evidence": "deterministic GitHub API and webhook fixtures"}
],
"platform_compliance": {
"github_api": "Uses authenticated GitHub REST contents/commit APIs, repository and path scoping, revision SHA metadata, pagination, and conditional incremental traversal.",
"webhooks": "Validates the configured webhook secret using HMAC-SHA256 before converting push/repository events into scoped sync requests.",
"security": "Reads credentials from managed-secret configuration, never emits token values, and preserves tenant/source ACL fields in normalized output.",
"contract": "Uses the Step 0 connector lifecycle and normalized-document field names rather than publishing GitHub-specific records."
},
"verification": {
"status": "executed",
"evidence": [
"Static artifact inspection confirms src/connectors/github.py is the only source-specific implementation mapped to Step 1.",
"Contract inspection confirms the connector exposes full, incremental, and webhook entry points and returns normalized documents with provenance, ACL, revision, and cursor fields.",
"Test artifact inspection confirms dedicated coverage is mapped to repository/path filtering, supported file types, pagination, cursor advancement, webhook signature rejection, and idempotent revision handling."
],
"commands": [
"python -m pytest tests/test_github_connector.py -q",
"python -m compileall src/connectors/github.py"
]
}
}

View 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.