fix: per-crate README audit + VERSION no longer drifts (26.6.26)#28
Merged
Conversation
A correctness release with one real framework bug fix surfaced by the audit.
VERSION drift (framework bug)
Every crate's `pub const VERSION` was a hardcoded `"26.6.24"` literal that
nothing kept in sync with the workspace version — so firefly_kernel::VERSION,
the actuator /actuator/version payload, and the startup banner all reported a
stale release number. The `version_matches_crate_version` guard tests only
passed while the workspace happened to sit at 26.6.24; the previous release
(26.6.25) actually shipped with these tests red. All 52 hardcoded constants
now derive from env!("CARGO_PKG_VERSION") (the re-exporting crates already
chained to firefly_kernel::VERSION), and the cli FRAMEWORK_VERSION const plus
the six unit/integration tests that asserted VERSION == "26.6.24" against a
frozen literal were de-hardcoded the same way. VERSION can never drift again.
(The cli render_for / SBOM-parser fixtures keep their literal sample versions
— that string is arbitrary test data, not the build version.)
Per-crate README audit (43 confirmed fixes across 28 crates)
Every one of the 74 crate READMEs was audited against that crate's actual
shipped public API, each finding verified against the source before applying:
- Phantom / incomplete public surface: admin AdminDeps.environment; openapi
RouteDef (request_schema/response_schema/query_schema/pageable),
Parameter::{query,header}, Builder::{add_schema,add_schema_descriptors,
from_inventory,docs_router}, DocsConfig; orchestration CompensationPolicy
(all 6 variants) + SagaError; starter-web WebStack::{set_security,
set_exception_advice}; testkit BuiltSlice::web_client; idp Error +
change_password; security/webhooks/kernel/transactional/plugins.
- Wrong signatures / variants: notifications-* EmailStatus::SENT/FAILED ->
Sent/Failed (serde rename only affects the wire form); plugins
Vec<Arc<dyn Any>> -> the real Extension = Arc<dyn Any + Send + Sync>;
notifications-twilio / session-redis param names.
- Wrong facts: admin bean graph ships dependency `edges` (not nodes-only);
backoffice middleware order includes TraceContext; container warm->form typo;
resilience / starter-core / eda-kafka / session-* fixes.
- Stale version pins: README dependency examples pinned the long-stale 26.6.7;
now use the self-maintaining minor pin version = "26.6".
firefly-cache doc comment
Removed the stale "once the Redis adapter ships in the next minor" note —
firefly-cache-redis (RedisAdapter) has shipped and is a published member.
(The audit flagged the cache README as wrong here; the README was right and
the lib.rs comment was the stale one — fixed the actual source of truth.)
make ci green end to end: 315 suites, 4484 tests, 0 failed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
A correctness release (
26.6.26). An audit of all 74 per-crate READMEs against each crate's real public API turned up 43 doc fixes and surfaced a genuine framework bug.1.
VERSIONno longer drifts (framework bug — also repairsmain)Every crate's
pub const VERSIONwas a hardcoded"26.6.24"literal that nothing kept in sync with the workspace version. Sofirefly_kernel::VERSION, the actuator/actuator/versionpayload, and the startup banner all reported a stale release number, and theversion_matches_crate_versionguard tests only passed while the workspace happened to sit at26.6.24.Fix: all 52 hardcoded constants now derive from
env!("CARGO_PKG_VERSION")(the re-exporting crates already chained tofirefly_kernel::VERSION). ThecliFRAMEWORK_VERSIONconst and the six unit/integration tests that assertedVERSION == "26.6.24"against a frozen literal were de-hardcoded the same way.VERSIONcan never drift again.(The
clirender_for/ SBOM-parser fixtures keep their literal sample versions — that string is arbitrary test data exercising the render/parse logic, not the build version.)2. Per-crate README audit — 43 confirmed fixes across 28 crates
Each finding was verified against the source before applying:
adminAdminDeps.environment;openapiRouteDef(4 fields),Parameter::{query,header},Builder::{add_schema, add_schema_descriptors, from_inventory, docs_router},DocsConfig;orchestrationCompensationPolicy(all 6 variants) +SagaError;starter-webWebStack::{set_security, set_exception_advice};testkitBuiltSlice::web_client;idpError+change_password;security/webhooks/kernel/transactional/plugins.notifications-*EmailStatus::SENT/FAILED→Sent/Failed(the#[serde(rename)]only affects the wire form);pluginsVec<Arc<dyn Any>>→ the realExtension = Arc<dyn Any + Send + Sync>.adminbean graph does ship dependencyedges(not "nodes-only");backofficemiddleware order includesTraceContext;containerwarm→formtypo;resilience/starter-core/eda-kafka/session-*.26.6.7→ now the self-maintaining minor pinversion = "26.6".3.
firefly-cachedoc commentThe audit flagged the
cacheREADME for referencingfirefly-cache-redisas if it didn't exist yet. The README was right —firefly-cache-redis(RedisAdapter) is a shipped, published member. The actually-stale thing was thecache/src/lib.rscomment ("once the Redis adapter ships in the next minor"); fixed the real source of truth instead. (Caught as a false positive during verification.)Verification
make cigreen end-to-end: 315 suites, 4484 tests, 0 failed — including everyversion_matches_*/version_is_stampedguard, which now hold for every release rather than only at26.6.24.Follows #26 (README + first chapters) and #27 (full book audit).