Skip to content

docs(release-prep): correct stale 37/37 test metric to actual suite size#701

Merged
kcenon merged 1 commit into
developfrom
docs/issue-698-correct-test-metrics
Jun 19, 2026
Merged

docs(release-prep): correct stale 37/37 test metric to actual suite size#701
kcenon merged 1 commit into
developfrom
docs/issue-698-correct-test-metrics

Conversation

@kcenon

@kcenon kcenon commented Jun 19, 2026

Copy link
Copy Markdown
Owner

What

Correct the stale 37/37 tests passing metric to the actual 1,118 test cases across 55 suites in README.md, README.kr.md, docs/PRODUCTION_QUALITY.md, docs/PRODUCTION_QUALITY.kr.md, and docs/performance/SPRINT_2_PERFORMANCE_RESULTS.md.

Why

Part of #667 (v1.0 release prep). Addresses the "Correct stale metrics ... before the cut" acceptance-criterion of #698. The hardcoded 37/37 predates large test-suite growth and no longer reflects the suite.

How

Surgical text replacements only — the count is derived from a static count of GoogleTest TEST/TEST_F/TEST_P/TYPED_TEST macros (1,118 across 55 files). The 100% pass-rate / CI-green framing is retained; only the stale count is updated. The same count is applied consistently in the Korean-localized docs.

Part of #667
Relates to #698

@kcenon kcenon merged commit 86c8328 into develop Jun 19, 2026
7 checks passed
@kcenon kcenon deleted the docs/issue-698-correct-test-metrics branch June 19, 2026 05:17
kcenon added a commit that referenced this pull request Jun 19, 2026
* docs: apply mechanical doc-review fixes (#668)

* docs: fix 26 anchors, ~90 cross-references, compiler floor drift

- Regenerate 26 broken intra-file anchors in ARCHITECTURE_GUIDE and
  ARCHITECTURE_ISSUES (+ .kr.md) using correct GitHub slug algorithm
  (preserve & double-dash, strikethrough/RESOLVED suffix handling).
- Apply path-rename map across 40+ files: 01-ARCHITECTURE.md ->
  ARCHITECTURE.md, 02-API_REFERENCE.md -> API_REFERENCE.md,
  guides/USER_GUIDE.md -> guides/QUICK_START.md, bare ARCHITECTURE_GUIDE.md
  -> advanced/ARCHITECTURE_GUIDE.md, guides/MIGRATION_GUIDE.md ->
  advanced/MIGRATION_GUIDE_V2.md.
- Standardize compiler floor to GCC 13+/Clang 17+/MSVC 2022+/Apple Clang
  14+ across 9 docs (FAQ, QUICK_START, CONTRIBUTING, DI_AND_CONCEPTS,
  API_REFERENCE_CORE, PRODUCTION_QUALITY, advanced/ARCHITECTURE, README
  platform row). Add follow-up note to CHANGELOG[.kr].md reconciling
  historical entries.
- Align version headers to authoritative 0.4.0.0 in 11 guides
  (STREAM_PROCESSING, DISTRIBUTED_TRACING, ADVANCED_ALERTS,
  PRODUCTION_QUALITY, BENCHMARKS, KNOWN_ISSUES, PROJECT_STRUCTURE,
  STORAGE_BACKENDS, EXPORTER_DEVELOPMENT, RELIABILITY_PATTERNS, etc.).
- Fix TUTORIAL[.kr].md 10+ relative-path errors to examples/ and docs/.
- Fix README.md contributing anchor (support--contributing).
- Rewrite docs/integration/README.md to remove 5 missing sub-guides,
  correct ECOSYSTEM.md depth, point to consolidated INTEGRATION.md.
- Add root README links to CHANGELOG, SECURITY, CODE_OF_CONDUCT,
  TRACEABILITY.
- Mark missing peer docs (PHASE3_VERIFICATION_REPORT.md, COLLECTOR_DEVELOPMENT.kr.md,
  MIGRATION.kr.md, INTEGRATION.kr.md) with TODO comments pointing to
  available alternatives.
- Update OTEL_COLLECTOR_SIDECAR Last Updated timestamp; correct
  TUNING.md -> PERFORMANCE_TUNING.md typo in ALERT_PIPELINE.

* docs: add post-fix re-validation report

* chore(release): prepare monitoring_system for v1.0.0 (#669)

* docs(readme): add v1.0 API stability section and update version references

Update FetchContent example from v0.1.0 to v1.0.0. Add API Stability
section documenting public API freeze, stable interfaces, Result-based
create() factory methods, and CMake target name. Add matching Korean
translation in README.kr.md.

Fix broken cross-file anchors in API_REFERENCE docs that referenced
a non-resolvable fragment identifier.

Relates to #667

* chore(version): bump version to 1.0.0

Bump project version from 0.1.0 to 1.0.0 across all version sources:
CMakeLists.txt, vcpkg.json, and vcpkg overlay port manifest.
Reset port-version to 0 for the new major release.

* refactor(api): add Result<T> factory methods to public API classes

Add static create() factory methods returning Result<T> to:
- ring_buffer<T>::create()
- metric_storage::create()
- time_series_buffer<T>::create()
- performance_monitor_adapter::create()

Also update make_monitor_adapter() to return Result.
Existing throwing constructors are preserved but marked
as deprecated in favor of the new Result-based API.

* test(api): add tests for Result<T> factory methods

Add 11 new test cases verifying the create() factory methods:
- ring_buffer::create() valid/invalid config (2 tests)
- metric_storage::create() valid/invalid config (2 tests)
- time_series_buffer::create() valid/invalid/usage (3 tests)
- performance_monitor_adapter::create() valid/null (2 tests)
- make_monitor_adapter() valid/null (2 tests)

* docs(changelog): add v1.0.0 release entry

Add 1.0.0 release section with Result-based create() factory methods,
version bump, stable CMake target, and deprecated throwing constructors.

Relates to #667

* fix(docs): correct ring_buffer::create() code examples in README

The create() method takes ring_buffer_config, not an integer.
Update both English and Korean README examples to show
proper config-based construction.

* style(test): add trailing newline to test_metric_storage.cpp

* docs(changelog): add comparison links and note breaking change

Add keep-a-changelog comparison link references for v1.0.0
and Unreleased. Document make_monitor_adapter() return type
change as a breaking change from v0.x.

* fix(api): remove duplicate deleted copy/assign declarations in metric_storage

The copy constructor and copy assignment operator were declared as
deleted twice, causing a compilation error on all platforms.

* feat(exporters): complete Jaeger/Zipkin protobuf serialization (#672)

* feat(exporters): complete Jaeger/Zipkin protobuf serialization

Replace the stub to_protobuf() implementations on jaeger_span_data and
zipkin_span_data with full proto3 wire-format encoders targeting the
published Jaeger api_v2 model.proto (Span, KeyValue, SpanRef, Process,
Batch) and Zipkin zipkin.proto (Span, Endpoint, Annotation, ListOfSpans)
schemas.

The encoder is zero-dependency and header-only, living under
include/kcenon/monitoring/exporters/internal/:

- protobuf_wire.h: varint / fixed64 / length-delimited primitives, tag
  encoding, hex<->bytes helpers, and a minimal reader used by round-trip
  tests.
- jaeger_proto.h: strongly-typed DTOs and encode/decode for Jaeger
  api_v2 Span, KeyValue, SpanRef, Process, Batch with the field numbers
  listed above. Trace IDs are zero-padded to 16 bytes, span IDs to 8.
- zipkin_proto.h: DTOs and encode/decode for Zipkin Span, Endpoint,
  Annotation, ListOfSpans. Supports textual span kind parsing and
  encodes tags as the proto map<string,string> synthetic-message form.

jaeger_exporter::send_grpc_batch now emits a Jaeger Batch message with
Content-Type application/x-protobuf. zipkin_exporter::send_protobuf_batch
now emits a ListOfSpans message to POST /api/v2/spans.

Round-trip tests in test_trace_exporters.cpp cover varint encoding, hex
conversion, single-span round-trip fidelity for tags / parent refs /
service name on both formats, and batch-level encode/decode for Jaeger
Batch and Zipkin ListOfSpans.

Docker-backed integration tests against jaegertracing/all-in-one and
openzipkin/zipkin containers remain a follow-up; CLAUDE.md updated to
reflect the narrower remaining gap.

Closes #670

* fix(exporters): always pad Zipkin trace_id to 8 bytes

Previously, when the input trace_id was empty or non-hex, hex_to_bytes
returned an empty vector and the encoder emitted no trace_id field.
Decoded spans then had a zero-length trace_id, which Zipkin rejects.

Mirror the Jaeger behavior: if the decoded hex is not exactly 16 bytes
we left-pad to 8 bytes, producing a valid on-wire ID in all cases.

* docs(compliance): add ISO 27001 and 20000 mapping (#673)

Document which monitoring_system features help satisfy specific
ISO/IEC 27001:2022 Annex A controls and ISO/IEC 20000-1:2018 service
management clauses, plus the gaps that remain the operator's
responsibility.

Covers:
- A.5 organizational controls: A.5.7, A.5.23, A.5.25, A.5.26, A.5.27,
  A.5.30
- A.8 technological controls: A.8.8, A.8.15, A.8.16, A.8.17 (partial),
  A.8.20 (partial), A.8.28
- ISO/IEC 20000-1 clauses: 8.3.3, 8.3.4, 8.4.2, 8.4.4, 8.5.1, 8.5.2,
  8.5.3, 8.6

The mapping uses 'help satisfy' language throughout; it explicitly
does not claim certification and lists ten known gaps that require
organisational controls, tamper-evident sinks, or further development.

Registered as MON-COMP-001 in docs/README.md and linked from the
top-level README under a new Compliance section.

Closes #671

* refactor(structure): consolidate src/impl into feature directories (#680)

Move every file out of src/impl/ into the appropriate feature
directory under src/{alert,collectors,core,utils}/. This removes
the legacy 'impl' bucket and co-locates implementations with their
feature peers.

Mapping:
  src/impl/adaptive_monitor.cpp           -> src/core/
  src/impl/battery_collector.cpp          -> src/collectors/
  src/impl/container_collector.cpp        -> src/collectors/
  src/impl/interrupt_collector.cpp        -> src/collectors/
  src/impl/network_metrics_collector.cpp  -> src/collectors/
  src/impl/platform_metrics_collector.cpp -> src/collectors/
  src/impl/process_metrics_collector.cpp  -> src/collectors/
  src/impl/uptime_collector.cpp           -> src/collectors/
  src/impl/tracing/distributed_tracer.cpp -> src/core/
  src/impl/alerting/*.h                   -> src/alert/
  src/impl/web/*.h                        -> src/core/
  src/impl/metric_query_engine.h          -> src/utils/

Forwarding headers (src/impl/adaptive_monitor.h and
src/impl/tracing/distributed_tracer.h) are deleted; their .cpp users
now include the canonical public headers under
include/kcenon/monitoring/<feature>/ directly.

CMakeLists.txt source paths updated to point at the new locations.
The legacy/new dual-structure branch and the hardcoded source list
are intentionally left untouched - those are sub-issues #676, #677,
and #678 of EPIC #674.

Closes #675
Part of #674

* refactor(cmake): remove legacy directory fallback from monitoring_system library (#681)

The library definition at the root carried two parallel branches:

1. Outer if(EXISTS .../kcenon/monitoring AND EXISTS .../src) gating a
   'new directory structure' build path.
2. Inner if(SOURCE_COUNT GREATER 0) gating the GLOB result, with an
   else() that hardcoded 11 cpp files (Fall back to legacy structure).
3. Outer else() that hardcoded the same 11 cpp files (Use legacy
   directory structure).

After PR #680 consolidated src/impl into the canonical feature
directories, the legacy branches can never trigger:

- include/kcenon/monitoring and src/ both always exist.
- The GLOB always finds sources (33 files at the time of writing).
- The hardcoded fallback list is a stale subset of the real source
  set; activating it would silently miss most of the library.

Replace the dual-structure scaffolding with a single GLOB-based
add_library() call. CMakeLists.txt drops 57 lines (996 -> 939) and
the build now has exactly one path, mirroring the EPIC #674 goal of
collapsing the legacy fallback before further CMake decomposition.

No behavioural change for current builds (the GLOB path was already
the live one). The hardcoded source lists in the deleted fallback
branches no longer reflect the actual src/ layout, so removing them
also eliminates a drift hazard.

* refactor(cmake): replace hardcoded source lists with structured globbing (#682)

Replace every remaining hardcoded .cpp/.h listing in the build with
file(GLOB ... CONFIGURE_DEPENDS) so CMake auto-detects new sources
on reconfigure, eliminating drift between filesystem and build lists.

Hardcoded blocks replaced (8):
- CMakeLists.txt MONITORING_MODULE_SOURCES (4 .cppm paths)
- CMakeLists.txt monitoring_hardware_plugin sources (5 .cpp paths)
- CMakeLists.txt monitoring_container_plugin sources (1 .cpp path)
- CMakeLists.txt install(FILES adapters/*.h) (9 .h paths)
- tests/CMakeLists.txt monitoring_system_tests (~46 .cpp paths)
- examples/CMakeLists.txt 17 single-file add_executable blocks
- benchmarks/CMakeLists.txt monitoring_benchmarks (6 .cpp paths)
- integration_tests/CMakeLists.txt SCENARIO/PERFORMANCE/FAILURE_TESTS

GLOBs that gained CONFIGURE_DEPENDS (5):
- MONITORING_HEADERS, MONITORING_SOURCES (main library)
- SCENARIO_TESTS, PERFORMANCE_TESTS, FAILURE_TESTS (integration tests)

Hardware/container plugin libraries no longer redundantly recompile
collector .cpp files that the main monitoring_system library already
provides via its MONITORING_SOURCES glob and PUBLIC dependency. The
plugin libraries now compile only their own wrappers; collector code
is linked transitively.

Tests intentionally excluded from monitoring_system_tests are kept
out via list(REMOVE_ITEM): test_buffering_strategies (depends on
internal headers), test_collector_registry (superseded), and
test_thread_context (superseded by test_thread_context_simple).

Examples that are not currently buildable (PoCs, work-in-progress
TODOs, depend on internal APIs) are similarly excluded by name from
the example glob to preserve prior behaviour.

Closes #677
Part of #674

* refactor(cmake): decompose CMakeLists.txt into per-concern modules (#683)

Top-level CMakeLists.txt: 949 -> 46 lines (orchestrator only).

The previous monolithic file mixed options, dependency discovery,
compile flags, source globs, target definitions, install rules, and
the build summary in one ~950-line file. Every change to one concern
required scrolling through ~600 lines of unrelated content.

Decomposed into:
  cmake/options.cmake          - option(...) declarations + module
                                 CMake-version check
  cmake/dependencies.cmake     - find_package + sibling add_subdirectory
                                 + header-only fallback discovery for
                                 common/thread/logger/network/gRPC
  cmake/compile_options.cmake  - monitoring_system_interface, warning
                                 flags, sanitizers, SIMD detection,
                                 apply_monitoring_simd_definitions helper
  cmake/sources.cmake          - file(GLOB_RECURSE ...) calls populating
                                 MONITORING_HEADERS / SOURCES / MODULE_SOURCES
                                 / HARDWARE_PLUGIN_SOURCES /
                                 CONTAINER_PLUGIN_SOURCES / ADAPTER_HEADERS
  cmake/targets.cmake          - monitoring_system, monitoring_system_modules,
                                 monitoring_hardware_plugin,
                                 monitoring_container_plugin + dependency
                                 link wiring + IMPORTED-target tracking
                                 (MONITORING_CAN_INSTALL)
  cmake/install.cmake          - tiered install scheme (Tier 1 headers,
                                 Tier 2 targets, Tier 3 EXPORT, Tier 4
                                 package config) including the Tier 2
                                 fallback for non-IMPORTED dep builds
  cmake/test.cmake             - tests/ + integration_tests/ subdirectories
  cmake/samples.cmake          - examples/ + benchmarks/ subdirectories
  cmake/summary.cmake          - end-of-configure status block

Existing helper modules under cmake/ (MonitoringCompatibility.cmake,
monitoring_system-config.cmake.in) are unchanged.

Behaviour parity is preserved:
  - Same options, defaults, and FATAL_ERROR conditions
  - Same dependency discovery order (Threads -> common_system ->
    thread_system -> logger_system -> network_system -> gRPC ->
    transport-interface probe)
  - Same fallback ladder for each dependency (find_package CONFIG,
    sibling add_subdirectory, header-only)
  - Same IMPORTED-vs-non-IMPORTED tracking that drives Tier 3 EXPORT
    skip on add_subdirectory builds (CI sibling-checkout path)
  - Same monitoring_system / monitoring_system_modules /
    monitoring_hardware_plugin / monitoring_container_plugin targets
  - Same install layout and package config emission
  - Same status messages

Closes #678
Part of #674

* refactor(tests): mirror src/ feature layout in tests/ (#684)

Reorganize the previously-flat tests/ directory to mirror the eight src/
feature directories established by the prior sub-issues (#675-#678).
Tests that target src/-less feature areas (reliability, exporters,
storage, health, di, config) are grouped under tests/integration/.

Categorisation tally (56 .cpp files):
  - alert       3
  - collectors 14
  - context     2
  - core       14  (incl. adapters, adaptive, optimization, interfaces, tracing)
  - platform    1
  - plugins     4  (incl. factory)
  - utils       7
  - integration 11
  Total feature-owned: 45 (80.4%)
  Cross-feature:       11 (19.6%)

The 80.4% feature-owned share clears the 70% threshold from the EPIC
decision rule, so Option A (mirror src/) is the chosen layout.

CMake test registration (tests/CMakeLists.txt) switches from a flat
GLOB to GLOB_RECURSE; CONFIGURE_DEPENDS keeps the file list
maintenance-free as new tests are added. The set of files added to
each test target is unchanged: monitoring_system_tests still receives
the same 50 sources, and the three standalone executables
(monitoring_interfaces_compile_test, monitoring_thread_safety_test,
monitoring_container_plugin_test) keep their own paths updated.

Documentation paths are updated in docs/TRACEABILITY.md and the
architecture/migration guides under docs/advanced/ to reflect the new
test locations.

Closes #679
Part of #674

* chore(includes): migrate to canonical kcenon/thread/* paths (#686)

Update vcpkg consumer integration test to use the canonical
<kcenon/thread/utils/formatter.h> include path. The legacy
<thread_system/utilities/formatter.h> path is now a [[deprecated]]
forwarding header in thread_system and is scheduled for removal
in the next minor release.

Closes #685

* chore(release): verify SHA512 against actual archive (#687) (#688)

Add an independent SHA512 verification step to the release sync
workflow that re-downloads the GitHub release archive and recomputes
the digest before the reusable sync workflow commits a new portfile
to the vcpkg overlay registry.

The reusable sync workflow at kcenon/common_system already performs
this check internally (see kcenon/common_system#675, PR #676), but
adding a caller-side verify-archive job in this repo guards against
drift if the reusable workflow changes or is repointed in the future.

Implementation notes:
- File-based hashing (curl -o file, then sha512sum) instead of piping
  curl into sha512sum, so a 404 cannot silently produce the empty-input
  hash cf83e1357eefb8bdf...
- Explicit empty-input SHA512 sentinel guard
- Archive size sanity check (>= 1024 bytes)
- sync job depends on verify-archive via needs:, so a failed
  verification halts the registry update before any commit

Audit summary:
- on-release-sync-registry.yml: hardened (this PR)
- All other workflows in this repo (ci.yml, sanitizers.yml,
  benchmarks.yml, etc.): do not compute or write SHA512 to portfiles,
  no change needed.

Closes #687
Part of kcenon/common_system#674

* docs(audit): classify collector/plugin stubs and support levels (#691)

* docs(audit): add component support-status classification

Add docs/SUPPORT_STATUS.md (MON-QUAL-006) classifying every collector,
plugin, and exporter by code-verified support level (production,
experimental, test-only). Register the new document in the docs registry.

Classification is based on the code as SSOT: source implementation
presence, build linkage, dedicated tests, and factory registration.

Closes #689

* docs(collectors): mark test-only stub collectors and link support status

Add a support-status pointer to README and the plugin API reference so
users do not mistake placeholder components for production features.

Add @warning doxygen comments to logger_system_collector,
thread_system_collector, and plugin_metric_collector headers: these
declare a collector interface with no compiled implementation, no test,
and no factory registration. Implementation or removal is tracked in #690.

Relates to #689

* docs: designate governance SSOT and add redirect stubs (#694)

Co-authored-by: flonics-claude <flonics.claude.1@gmail.com>

* test(perf): add benchmark regression gate, module CI matrix, and fuzz harness (#695)

Add a committed-baseline benchmark regression gate, dedicated C++20 module
CI coverage, and a libFuzzer harness for the internal wire-format decoder.

Benchmark regression gate:
- benchmarks/scripts/compare_benchmarks.py compares a Google Benchmark JSON
  run against a version-controlled baseline and exits non-zero on any
  regression beyond a configurable threshold (default cpu_time, 10%).
- benchmarks/baselines/ubuntu-24.04.json holds a committed (seeded) baseline.
- .github/workflows/benchmarks.yml gains a deterministic regression-gate step
  that runs the comparator against the committed baseline.

C++20 module CI:
- .github/workflows/build-modules.yml builds the monitoring_system_modules
  target with MONITORING_ENABLE_MODULES=ON across GCC 14 and Clang 18, which
  the existing ci.yml header-only matrix never exercised.

Fuzzing:
- fuzz/protobuf_wire_fuzzer.cpp drives the protobuf wire-format decode
  primitives (the Jaeger/Zipkin span deserialization input surface) under
  libFuzzer + AddressSanitizer.
- fuzz/CMakeLists.txt and the BUILD_FUZZERS option (Clang-only) wire the
  target via cmake/options.cmake and cmake/samples.cmake.
- fuzz/corpus/protobuf_wire holds seed inputs.
- .github/workflows/fuzzing.yml runs weekly (cron) and on manual dispatch.

Not build-verified locally: the vcpkg dependency chain cannot be resolved in
this environment, so the new CI/harness wiring has not been compiled or run.

Closes #693

* refactor(collectors): resolve test-only stub collectors (#696)

* refactor(collectors): resolve test-only stub collectors

Resolve the three test-only stub collectors flagged by audit #689:

- Remove logger_system_collector.h and thread_system_collector.h. Both
  declared a large collector API (plus anomaly/health/auto-scaler helper
  classes) with no compiled implementation, no test, and no factory
  registration. Their declared statistics had no concrete data source: the
  logger_to_monitoring_adapter and thread_to_monitoring_adapter only expose
  generic IMonitorable metrics, not the rich per-domain stats the headers
  promised. Implementing faithfully would have required speculative new APIs,
  so the headers are deleted.

- Slim plugin_metric_collector.h to its production metric_collector_plugin
  interface. The unimplemented plugin_metric_collector manager class and
  plugin_factory (declared-but-undefined members) are removed; the
  pure-virtual metric_collector_plugin interface is kept because it is
  implemented by system_resource_collector, container_plugin, and
  hardware_plugin.

- Remove the dead plugin_collector_example.cpp (already excluded from the
  build) and the removed-collector references in system_collectors_example.cpp
  and thread_to_monitoring_adapter.h.

Closes #690

* docs(collectors): update support status and references after stub removal

Reflect the resolution of the three test-only stub collectors:

- docs/SUPPORT_STATUS.md: drop the three test-only rows, record zero
  test-only collectors, and update marker accounting and follow-up issues.
- docs/ARCHITECTURE.md, docs/PROJECT_STRUCTURE.md,
  docs/guides/COLLECTOR_DEVELOPMENT.md: remove logger_system_collector and
  thread_system_collector from collector tables/trees and replace the
  removed plugin_metric_collector/plugin_factory usage examples with the
  production collector_registry and metric_factory registration paths.
- docs/plugin_api_reference.md, docs/compliance/iso-mapping.md: update the
  support-status note and logger-integration evidence to the production
  logger_to_monitoring_adapter.
- CHANGELOG.md: record the removals under [Unreleased].

Relates to #690

* fix(error): remap monitoring_error_code into common reserved -300..-399 (#699)

monitoring_error_code was a positive enum (std::uint32_t, 1000-9999), so
codes funneled into common's shared error_info.code were classified as
"Success"/"Invalid" instead of "MonitoringSystem". Change the underlying
type to std::int32_t and renumber all 69 codes into common's reserved
-300..-399 band. Also fix 19 adapter sites in monitoring_to_common /
common_to_monitoring that hand-built positive codes (1/2) and bypassed
to_common_error(), and sync the core.cppm C++20 module re-declaration to
the header SSOT (it had drifted to a different inline value set).

Non-breaking: monitoring is untagged, so this lands before the v1.0 tag
at zero SemVer cost.

Closes #697

* chore(ci): propagate cross-system conformance linter (advisory) (#700)

Copy the ecosystem conformance linter (scripts/conformance_lint.py) verbatim
from common_system and add an ADVISORY (warning-only) Conformance workflow, per
the gate-propagation epic kcenon/common_system#701. The linter checks the
ecosystem structural/metadata conventions (version 3-way match, examples/, fuzz/,
include/kcenon layout, no committed test artifacts, README.kr parity).

The workflow runs the linter but does not fail CI yet (wrapped to exit 0 with a
::warning::), so the repo is not red-walled while its deviations are remediated.
Flip to enforcing/required once green.

Part of kcenon/common_system#701

* docs(release-prep): correct stale 37/37 test metric to actual suite size (#701)

* docs(changelog): fold Unreleased stub-removal entries into the [1.0.0] release line (#703)

* fix(vcpkg): bump kcenon registry baseline

The pinned kcenon registry baseline (50d89f5b) resolves
kcenon-common-system@0.2.0 to a port whose SHA512 no longer matches
the v0.2.0 source tarball (the upstream tag was re-created), so the
vcpkg chain validation fails at find_package(common_system) across
the x64-linux, arm64-osx and x64-windows triplets.

The registry already corrects this at HEAD: common-system is now
0.2.0 port-version 3 with the matching hash. Bump the baseline
50d89f5b -> 1be52cbd so the chain installs again. This also raises
the chain floor: thread-system 0.3.1 -> 0.3.2, database-system
0.1.0 -> 0.1.1, plus port-version bumps on logger/container/network/
pacs.

* ci(modules): make gcc-14 modules leg advisory

gcc-14 raises an internal compiler error (segfault) while emitting
the C++20 module BMI for src/modules/adaptive.cppm. The module source
is unchanged and clang-18 compiles it cleanly, so this is a compiler
bug rather than a source defect.

Make the gcc leg non-blocking: on a build failure it emits a CI
warning and exits 0, mirroring the repo's advisory-check pattern in
conformance.yml. clang-18 remains the gating module build, so a real
module regression still fails CI.

---------

Co-authored-by: flonics-claude <flonics.claude.1@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant