Planning stub only. This phase is follow-on work after the shipped 1.0
baseline and does not change the current release contract until a later review
accepts it.
Phase A defines a reusable reporting line for sc-compose so repos can add
lint, test, smoke, diagram, and custom publishable reports without
reinventing generation flow, output layout, or publication handoff.
The phase exists because multiple consumer shapes already need the same underlying reporting patterns:
atm-corestyle state-machine and SQL-query diagram reports with repeated panels, JSON sidecars, and generated report pagessc-lintstyle lint/test/smoke and other evidence reports- future repo-specific custom producers that must plug into the same shared contract without changing the aggregator behavior
It also queues one explicit sc-observability 1.1.0 adoption closure so the
CLI logging layer used by report-producing workflows does not drift behind the
shared runtime.
The proof standard for this phase is not "one nice HTML report." It is "multiple clearly different report families can plug into one shared artifact, catalog, verification, and publication-handoff contract without inventing a new reporting model per repo."
- keep
sc-composerruntime-agnostic - keep network publish and browser-open behavior outside the core engine
- keep report generation owned by producer recipes such as
just lint,just test,just smoke, and repo-specific custom producers - reserve
just reportsfor aggregation, verification, and deterministic latest-entrypoint/index reporting as defined indocs/requirements.mdunder### Phase A Producer Recipe Contract (Planning Only) - treat wrapper-owned open helpers as optional add-ons rather than part of the shared Phase A command contract
- separate authored docs from generated report evidence
- prefer a report catalog plus machine-readable metadata over hard-coded file paths
- treat GitHub issue
#56source-collection/render-many work as foundational for source-driven report families - prefer typed semantic specs for diagrams where possible, with Mermaid retained only as a transitional output or migration input
- centralize template families and shared panel chrome instead of reimplementing them in each consumer repo
A1- report artifact contract and catalog
A2- producer-recipe and
justcommand contract
- producer-recipe and
A3- source-collection, metadata-extraction, and render-many contract
A4- semantic diagram-spec contract
A5- template-family and shared panel-chrome contract
A6- latest/archive output policy and
just reportsaggregator contract
- latest/archive output policy and
A7- publish-manifest and CI handoff contract
A8- proof-by-example through multiple report families
A9sc-observability1.1.0adoption, retained-log policy decision, and deprecatedemitmigration
Phase A treats the following families as the minimum proof that the shared model is genuinely reusable rather than tuned to one repo:
- producer commands such as
just state-diagramsandjust sql-diagrams - repeated panels rendered from many semantic source inputs rather than one hand-written page
- panel-fragment or per-panel entrypoint support where consumers need drill-in pages
- mandatory text-copy output, optional JSON-copy output, and JSON sidecars for QA verification
- publish-manifest output suitable for later CI or wrapper publication
- producer commands such as
just lint,just test, andjust smoke - one latest artifact set plus optional timestamped archive copies
- shared report pages that aggregate multiple evidence producers without requiring a special-case aggregator per repo
- JSON sidecars and publish-manifest output with the same catalog-driven discovery contract used by diagram families
- producer-command names and repo-local source inputs may vary by repo
- report discovery, verification, sidecar shape, latest/archive policy, and publish-manifest handoff stay shared across families
atm-coreandsc-lintare illustrative family labels only; the A5 template-family key remains the catalog discriminator- producer extension-point typing remains owned by the A1 report artifact contract
- adding a repo-specific custom producer must require only new catalog entries and templates/specs, not a new aggregator or verification model
Phase A should leave the repo with:
- one implementation-ready report artifact contract with:
- report catalog/manifest
- source specs/templates separated from generated outputs
- latest plus optional archive output rules
- machine-readable per-report metadata
- one explicit producer contract for:
- standard producers such as lint/test/smoke
- repo-specific custom producers that do not break shared report handling
- one source-collection and render-many contract suitable for generic source-driven report families
- one explicit template-family model for at least:
- lint/test/smoke evidence reports
- public API / CLI / ICD style reports
- diagram/state-machine and SQL-query reports
- one shared panel shell contract with:
- mandatory per-panel copy button
- optional per-panel copy-to-JSON button
- one defined output policy for latest artifact overwrite and optional timestamped archive copy
- one defined machine-readable publish-manifest contract in
docs/requirements.mdfor CI or wrapper publishing - multiple example families that prove the shared model is generic enough for
both
atm-corestyle diagrams andsc-lintstyle evidence reports - one explicit plan for
sc-observability1.1.0adoption in the CLI logging layer, including:- logger typestate compatibility
- retained-log policy enablement using logger-managed defaults
- explicit decision to keep direct
Logger::emit(...)because the released1.1.0surface does not require alog/try_logmigration here - explicit
sc-observenon-adoption decision at the CLI/logger seam