This document validates integration seams between ecosystem components after implementing all MUST requirements.
| Component | Repository | Status |
|---|---|---|
Formatrix Docs |
formatrix-docs |
✓ Implemented |
Recon-Silly-Ation |
recon-silly-ation |
✓ Implemented |
Docubot |
recon-silly-ation/Docubot.res |
✓ Implemented |
Docudactyl |
recon-silly-ation/Docudactyl.res |
✓ Implemented |
blocky-writer |
blocky-writer |
Boundary declared (formatrix-docs#61); no integration |
| Rust (commands.rs) | AffineScript (Protocol.res) | Status |
|---|---|---|
|
|
|
|
Uses |
✓ ALIGNED |
|
Same structure |
✓ ALIGNED |
|
Same structure |
✓ ALIGNED |
| Rust (ffi.rs) | AffineScript Usage | Status |
|---|---|---|
|
|
| Rust (ast.rs) | AffineScript (Protocol.res) | Status |
|---|---|---|
|
|
|
|
|
✓ ALIGNED (conceptually) |
|
|
✓ ALIGNED (conceptually) |
| Protocol.res | Docubot.res | Status |
|---|---|---|
|
Uses own |
|
|
|
| Protocol.res | Docubot.res | Status |
|---|---|---|
|
|
✓ ALIGNED |
|
|
✓ ALIGNED |
|
|
✓ ALIGNED |
|
|
✓ ALIGNED |
| Protocol.res | Docudactyl.res | Status |
|---|---|---|
|
|
✓ ALIGNED (conceptually) |
|
Returns |
✓ ALIGNED |
| Protocol.res | Docudactyl.res | Status |
|---|---|---|
|
|
|
|
|
✓ ALIGNED |
|
|
| Protocol.res | Docudactyl.res | Status |
|---|---|---|
|
Step returns |
| Protocol.res | Docudactyl.res | Status |
|---|---|---|
|
|
|
|
Not implemented |
| Protocol.res | Both Components | Status |
|---|---|---|
|
Docudactyl has |
✓ ALIGNED (conceptually) |
| Protocol.res | Docubot.res | Status |
|---|---|---|
|
Uses single approver model |
| Protocol.res | Docubot.res | Status |
|---|---|---|
|
|
✓ ALIGNED |
| Protocol.res | Implementation | Status |
|---|---|---|
|
Not yet implemented |
PENDING |
| Protocol.res | Implementation | Status |
|---|---|---|
|
Not yet implemented |
PENDING |
|
Not yet implemented |
PENDING |
| Protocol.res | Implementation | Status |
|---|---|---|
|
Not yet implemented |
PENDING |
| Protocol.res | Docubot.res | Status |
|---|---|---|
|
|
Inbound notice: formatrix-docs#61.
Long form: docs/ecosystem/ECOSYSTEM.adoc.
Machine-readable: .machine_readable/integrations/blocky-writer.a2ml.
No integration is proposed. The seam is recorded so neither side invents a second, incompatible shape.
blocky-writer (rust/pdftool_core) |
Formatrix Docs consumer | Status |
|---|---|---|
|
Optional overlay on graph / relationship views (FD-C01) |
⚪ RECORDED, not consumed |
|
Display name for a landed value |
⚪ RECORDED, not consumed |
-
SEAM-1A: Missing
idandsourcein RustDocumentEvent -
SEAM-2A:
repoContextfield mismatch (missingdependencies,readme) -
SEAM-3B: Missing
progressfield in pipeline execution -
SEAM-5A-D: ArangoDB schemas not implemented
-
SEAM-1B: Format type enum vs string (mapping sufficient)
-
SEAM-2C: Audit event type representation (string acceptable)
-
SEAM-3C: Rich enforcement results (string errors acceptable MVP)
-
SEAM-3D: Detailed shipping results (string acceptable MVP)
-
SEAM-4B: Multi-approver workflow (single approver acceptable MVP)
| Seam | Component A | Component B | Status |
|---|---|---|---|
SEAM-1 |
Formatrix Docs |
RSA |
|
SEAM-2 |
RSA |
Docubot |
|
SEAM-3 |
RSA |
Docudactyl |
|
SEAM-4 |
Docubot |
Docudactyl |
✓ 1 minor gap |
SEAM-5 |
All |
ArangoDB |
❌ Not implemented |
SEAM-6 |
Formatrix Docs |
blocky-writer |
⚪ Boundary declared; seam recorded, not consumed |
-
Apply critical fixes (documented below)
-
Proceed to SHOULD requirements
-
Implement ArangoDB integration in SHOULDs
-
Re-run seam check after SHOULDs
[Formatrix Docs] [RSA/Protocol]
DocumentEvent { documentEvent {
type: Created|Modified|etc id: string <-- ADD
hash: String eventType: Created|etc
path: String =====> hash: string
format: String path: string
timestamp: f64 format: string
} timestamp: float
source: string <-- ADD
}[Protocol.res] [Docubot.res]
generationRequest { (function params)
requestId: string =====> Uses inline params
documentType: string documentType enum
format: string format enum
context: repoContext repoContext type
priority: int (not tracked)
}[Protocol.res] [Docudactyl.res]
healthCheck { componentHealth {
componentId: string =====> componentId: componentId
status: healthStatus status: componentStatus
latencyMs: option<float> latencyMs: option<float>
version: option<string> version: option<string>
checkedAt: float lastCheck: float
}