Skip to content

twin: PR#59 r3 matrix run - #65

Merged
ualtinok merged 19 commits into
masterfrom
twin-pr59-r3
Aug 26, 2026
Merged

ualtinok merged 19 commits into
masterfrom
twin-pr59-r3

Conversation

@ualtinok

@ualtinok ualtinok commented Aug 26, 2026 •

Copy link
Copy Markdown
Contributor

CI-only twin of PR #59 at aa1f2f8 (fork PRs skip the Rust matrix). Not for merge.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith with what you need. Autofix is disabled.

ualtinok and others added 19 commits August 26, 2026 17:22
The manifest block introduced earlier in this branch named its commit field
build_commit, while master already ships build_git_sha and build_lock_digest
on server.describe, consumed by ck's dashboard and its build-skew detector.
Two names for one fact inside a single response is a reader trap, and renaming
the shipped field would have broken an older ck against a newer daemon by
making the skew check fail open. Align the unreleased name onto the shipped
vocabulary instead.

CONSUMER-IMPACT: Renames ManifestProvenance.build_commit to build_git_sha in
subc-protocol. The field is unreleased -- it was introduced earlier in this
same branch and has never appeared in a published crate -- so no out-of-tree
consumer can have decoded or constructed it under the old name, and there is
no deprecation window to honour. Net effect against master is unchanged from
the introducing commit: one additive optional block whose fields old daemons
ignore during manifest decode, with Rust literal constructors of ModuleManifest
still needing the source update that commit described. Wire field names on
server.describe and the daemon provenance record are untouched by this commit
and remain byte-identical to master.
The sweep enumerated ManifestProvenance's fields by hand, so a field added
later would escape it silently. Destructuring makes that a compile error
(E0027) at the sweep instead.
CONSUMER-IMPACT: Manifests carrying non-printable or over-long provenance values are now refused where they were previously accepted; this changes behavior for any module already sending such values.
CONSUMER-IMPACT: Manifest provenance values that are empty are now rejected during HELLO decoding; modules previously sending empty declarations must omit the field or provide a non-empty value.
The CK_BUILD_REV rename replaced names that already ship on master
(build.rs emission, server.describe build fields, the ck skew check) —
subconscious's own provenance skew detector. Reverting per the #58
ruling keeps the rename from silently retargeting it.

The two names now mark two different provenance sources rather than one
name meaning either: SUBC_BUILD_* is this repo's build.rs git probe,
while CK_BUILD_REV is injected as a process env by release scripts in
other fleet repos.

Blast radius is four in-crate sites; cargo:rustc-env never escapes the
crate build, so no consumer sees the change.

CONSUMER-IMPACT: none — reverts to the names already shipped on master.
…pelling

The provenance human-output test pinned linux_proc_sha256, so it failed honestly on macOS (which reports macos_spawn_inode) and on Windows (which has no probe and correctly reports unavailable). The cfg split now lands on capability rather than spelling: probe-capable platforms assert a match plus membership in the closed RunningImageEvidence set, and platforms without a probe assert the unavailable verdict positively rather than skipping.

CONSUMER-IMPACT: none — test-only.
Windows CI rejected `subc-core` (lib) under -D warnings: both
RunningImageEvidence constructors are cfg-gated to their probing platform
(LinuxProcSha256 under target_os="linux", MacosSpawnInode under
any(target_os="macos", test)), so on a platform with no probe the
unqualified import had no user.

The gate is the union of its users, including `test`, and that term is
load-bearing rather than defensive: compare_spawn_inode is compiled under
cfg(test) on every platform, so a Windows *test* build does construct the
type. Gating on any(linux, macos) alone would have traded the lib break for
a test break on the same platform.

Verified by mutation: narrowing the gate to target_os="macos" fails the
Linux build at both constructor sites (E0433, 2 errors). Windows itself
remains unverifiable locally -- no rustup, so no cross-target check -- and
is left to the twin.

CONSUMER-IMPACT: none -- compile-gating only, no behavior or wire change.
@ualtinok

Copy link
Copy Markdown
Contributor Author

Twin served its purpose: full matrix green at 3e3d984 after the rebase; content merged to master via the twin branch.

@ualtinok
ualtinok merged commit e71d189 into master Aug 26, 2026
4 checks passed
@ualtinok
ualtinok deleted the twin-pr59-r3 branch August 26, 2026 14:43
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.

2 participants