Skip to content

[Documentation] Close canonical architecture coverage and live traceability gaps #159

Description

@seonghobae

Why this issue exists

PR #149 establishes the first coherent canonical mightyETL documentation spine, but the documentation graph must remain code-current and must not become a one-time snapshot that immediately drifts while other commercial-readiness work continues.

The current protected baseline is develop@622e5e6c3d534f230c390f10e3832efadfc01825. PR #149 supplies or rewrites the core families: PRD, TRD, Architecture, Security, ADR index + detailed ADRs, UML, ERD, API contract, Threat Model, Test Strategy, Operability, Traceability, Documentation Assessment, AGENTS/CLAUDE/CHANGELOG, plus machine-checkable documentation tests.

That is structurally much stronger than protected develop, but it is not yet sufficient as a durable acquisition-grade source of truth because live repository work continues to expand while #149 remains Draft.

Live drift discovered after #149 was created

The canonical graph must reconcile all material work below without promoting it to shipped truth before protected integration:

All open PRs above are active_pr; issues describing unresolved product/security/control work are planned or known_gap as appropriate. None is implemented_on_develop until the corresponding exact code and evidence integrate into protected history.

Fresh writer / source-identity evidence

PR #149 is actively being modified by another writer. Its PR body still names historical head 5f1c10891c32c5c56f1ab97ae8eea529d0466423, while GitHub's live ref is 74c24a3a8950009fdffc2d5f660f40ee3250b863 on unchanged base develop@622e5e6c3d534f230c390f10e3832efadfc01825. This mismatch is direct evidence that exact-head/run facts embedded in the body are already stale and that this loop must not race that source branch.

PR #157 shows the same pattern: its body names historical head d43c257c044ed3006980317bd8932cb5b22a32ab, while its live ref is aa558f25363bfb833e49ed79b49cfdbea39c8eea. PR #164 is also under an independent live writer and currently sits at e9cec632d0b2336040a3e86363dc0348e0cab059; its hosted workflows are queued and therefore not passing evidence.

These SHAs are dated execution evidence only. Canonical architecture must describe capability/lifecycle state, not freeze unstable pull-request head identities into timeless design prose.

Sufficiency decision

Core architecture families — present in #149

The following are considered the minimum canonical spine and are represented by #149:

  • Product Requirements (PRD.md)
  • Technical Requirements (TRD.md)
  • System Architecture (ARCHITECTURE.md)
  • ADR index and detailed status-bearing ADRs (docs/adr/)
  • UML / component / sequence / state / deployment views (docs/UML.md)
  • ERD / logical data model with persisted-vs-planned distinction (docs/ERD.md)
  • API/error/event contract entry point (docs/API_CONTRACT.md)
  • Security and Threat Model
  • Test Strategy
  • Operability
  • Requirement/decision/code/test/PR traceability
  • Documentation completeness assessment
  • AGENTS / CLAUDE / CHANGELOG alignment

This is necessary but not sufficient by file count alone.

Remaining cross-cutting coverage that must be explicit and discoverable

For each category below, either maintain a dedicated canonical document or explicitly index the existing authoritative section(s). Do not create duplicate prose merely to satisfy a filename checklist.

  1. Roadmap / lifecycle status — dependency order, accepted issues, active PRs, planned work, superseded paths, release milestones and exit criteria.
  2. Data governance / privacy / retention — data classification, payload retention, principal/tenant authority, purpose limitation, deletion/retention, audit evidence, PII handling without blanket masking, and known gaps.
  3. Migration / rollback / compatibility — database migrations, connector/API compatibility, stack replacement rules, rollback/forward-recovery, downgrade constraints and operator evidence.
  4. Release / provenance — release acceptance, versioning, CHANGELOG, SBOM/provenance, reproducibility, artifact/license/NOTICE requirements, rollback and protected-release proof.
  5. Deployment / failure domains — standalone and modular MSA deployment profiles, dependencies that are optional vs required, degraded modes, queue/broker/database failures and recovery.
  6. Research / standards doctoring — one discoverable index from product/ADR decisions to authoritative standards and APA 7 references where material; feature-specific doctoring may remain distributed if indexed.
  7. Connector support matrix — production / scaffold / removed-from-discovery / planned status, transport/auth prerequisites, target/source semantics, support evidence and non-goals. This must reconcile [Product gap] Eliminate production scaffold-only connector implementations #153/fix(connectors): remove Qlik scaffold from production registry #156/fix(cdc): remove MySQL scaffold from production discovery #158/fix(cdc): remove SQL Server scaffold from production discovery #163 and must not advertise reference-only scaffolds as supported connectors.
  8. Operational SLI/SLO evidence — distinguish target requirements from actually measured attainment; never invent SLA/SLO success from prose.
  9. Acquisition-diligence controls — licensing/copyright status ([Acquisition diligence] Establish explicit repository licensing and copyright policy #151), dependency/license obligations, security review, tenant/data authority, backups/recovery, supply chain, and residual known risks.
  10. Identity / trust-boundary authority — gateway JWT (fix(gateway): replace placeholder token handling with JWT resource server #142) and downstream ETL authentication ([Product/Security Gap] Replace direct ETL HTTP Basic trust boundary #161) are separate boundaries; canonical Security/Threat/Deployment/API material must not imply that an edge JWT control automatically solves direct/east-west service authentication.
  11. Quality-gate evidence semantics — document that synthetic-merge-only source execution and vacuous zero-class coverage are not accepted release evidence; bind ci: schedule NVIDIA OpenCode maintenance agent #121 and [Quality gate] Make JaCoCo fail closed when production class selection is empty #162/fix(coverage): make JaCoCo production gate non-vacuous #164 to the exact controls they repair.

Required live traceability reconciliation

After #149 stabilizes or after a successor documentation branch is created from protected develop:

Documentation-as-code acceptance

Add or extend tests so they fail when material documentation drifts from live repository contracts. At minimum verify where practical:

  • canonical documentation/index files resolve;
  • ADR index, ADR IDs, statuses and supersession links are consistent;
  • Mermaid/code fences parse or pass structural checks;
  • public service/API names and lifecycle status vocabulary match source contracts;
  • protected baseline cannot advertise active_pr functionality as shipped;
  • newly removed scaffold connectors are not still documented as production-capable;
  • machine-readable OpenAPI/AsyncAPI artifacts, once feat(api): add machine-readable HTTP and CDC contracts #157 integrates, are linked and versioned from the canonical API/event documentation;
  • database object names/statuses in the ERD remain synchronized with actual migrations and compatibility artifacts;
  • release, migration, rollback, data-governance and licensing authority locations are discoverable from the documentation index;
  • security architecture distinguishes gateway authentication from direct/east-west ETL authentication;
  • test strategy cannot call zero analyzed production classes 100% coverage and identifies the fail-closed non-vacuity invariant;
  • source/provenance docs distinguish literal PR source from GitHub synthetic merge revisions;
  • stale literal exact-head/run IDs are restricted to dated evidence, not timeless architecture assertions.

Writer/stack safety

Do not race an active writer on #149. The live-vs-body head mismatch above proves the branch is currently moving. Reconcile it read-only and perform source documentation updates only after that branch is stable or from a new direct-develop successor after #149 merges/closes. A documentation branch conflict blocks only that branch; continue other non-conflicting mightyETL work.

The same branch-local freeze applies to #157 and #164 for the remainder of the invocation because their source heads moved under another writer. Metadata/issue truth can still be maintained without mutating those source refs.

Do not deepen or rewrite the #121#143#148 stack solely to make documentation current. Document active stack state truthfully and repair source ancestry only for independent integration value.

Completion criteria

This issue can close only when:

  • the canonical documentation spine is integrated on protected develop;
  • the cross-cutting categories above each have one clearly discoverable authoritative location or an explicit documented non-applicability decision;
  • the live material PR/issue set is represented by source-backed status/traceability without stale shipped claims;
  • connector support, trust boundaries, source identity, and quality-gate evidence semantics agree with protected code/workflows;
  • documentation consistency tests pass on the exact integrated head;
  • security/data/operability/migration/release/standards links are coherent;
  • no maintainer or buyer must reconstruct the current product architecture from chat history or PR bodies.

Documentation completion is not a commercial-loop terminal state. After this issue or #149 is green/merged/waiting, the autonomous loop must immediately return to the live implementation/security/product queue and continue safe work.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: authAuthentication, authorization, identity, or tenant isolationarea: ci-cdCI, GitHub Actions, checks, release, or supply chainarea: dependenciesDependency or lockfile maintenancearea: securitySecurity boundary, hardening, or vulnerability preventiondocumentationImprovements or additions to documentationpriority: mediumNormal-priority or P2 workstatus: triagedOpen issue has an organization taxonomy assignmenttype: docsDocumentation, ADR, PRD, or technical writing

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions