Skip to content

ci: establish four-target pinned daemon compatibility - #65

Merged
BunsDev merged 2 commits into
mainfrom
ci/required-daemon-compatibility
Sep 13, 2026
Merged

BunsDev merged 2 commits into
mainfrom
ci/required-daemon-compatibility

Conversation

@BunsDev

@BunsDev BunsDev commented Sep 13, 2026

Copy link
Copy Markdown
Member

Objective and current status

Establish the required four-target current-Threads daemon lane for #64 and
#31, including the remaining compatibility obligation in OpenCoven/coven#885.
Tracks threads-bp5.7.

Ready for normal protected landing: fresh accepted-main compatibility and
complete artifact inspection pass.
OpenCoven/coven#1045, OpenCoven/coven#1044, OpenCoven/coven#1046, and
OpenCoven/coven#1049 have now normally landed. The selected daemon is
226bfcc89ff6cad4bc9cc9618dad6fea970ecf58, with committed core
0021fd2662d0b82328371ee3a6957d645f776fda.

This is an accepted main revision, not the earlier integration candidate.
The first draft retained harness-required and the new hosted job correctly
rejected it before checkout (run 34777258225). That failure remains part of
the rollout record; no fallback to mutable main was used.

Implemented surfaces

  • Reuse the source/config/lock and actual dependency-edge guards from landed
    fix: fail closed on advisory Cargo overlay provenance drift #56 and fix: reject source drift in daemon observations #62. Preserve the default single-target advisory observer.
  • Add compatibility execution selecting threads_e2e,
    threads_identity_invariants, threads_protected_intake, and
    threads_terminal_recovery in one locked clock-feature command.
  • Require an immutable daemon SHA even for scheduled callers; prove every
    selected source/metadata target and retain the suite/command in the receipt.
  • Parse compatibility TOML using Python 3.11's standard library in isolated
    mode. Reject malformed/duplicate TOML, unready or mutable pins, missing
    companions, contract drift, and a mismatched committed daemon dependency.
  • Add the read-only PR/main Pinned daemon compatibility workflow with
    immutable actions, unique attempt artifacts, no path filtering, no skipped
    failures, and no scheduled mutable-main mode.
  • Document the Python prerequisite and the separation between eligibility,
    required-check activation, root acceptance, and human decisions.

Evidence

Nine new runner requirements failed against the old single-target behavior.
Fourteen manifest/workflow requirements failed before those surfaces existed.
The focused existing Node runner now passes 132 tests, including all prior
provenance regressions plus required-profile companion failure and post-test
source/config/lock/final-target drift.

Command:

node --test scripts/tests/daemon-canary.test.mjs \
  scripts/tests/daemon-compatibility.test.mjs \
  scripts/tests/check-ci-pins.test.mjs

The 132 tooling regressions pass again at selected-pin head a1545cf.
The original f306e5c profile also ran against real candidate e4c5b6fb:
103 E2E, 44 identity, 38 protected, and 33 terminal tests passed in the exact
four-target command. All 111 E2E manifests/JUnit records were independently
inspected; companion execution is recorded in the wrapper argv and Cargo logs,
not misrepresented as 111 additional companion manifests.

Candidate results are not transferred to accepted main. Fresh Linux
required run 34786471550
passed on attempt 1: 104 / 44 / 38 / 33 actual target tests.
The actual PR merge execution is
56cd22ba3c0caba5c25051cad6ed324104edf676; its tree
cb2402ee004f0483bb570f5c989b905012864c59 equals reviewed head a1545cf.
Every one of 112 unique E2E manifest/JUnit pairs records that exact Threads
source, accepted daemon 226bfcc8, clean Threads and active local override.
Companion execution is evidenced by the actual four-target wrapper and logs.
All eight identity packets, 42 actual census reports / 51 distinct typed
histories, and the 13 specifically required ordered normative closes were
independently inspected. These are synthetic histories, not deployed inventory.

Authenticated artifact 10326542438 has SHA256
17ffa42f5298ebf056e65f8d8a0d291b8f9c56883395131b2b339196eefe375c.
The six normal core CI jobs also pass in 34786471616.
Native accepted-main CI 34784497791 separately passed on attempt 1 against
committed Git core; it is not relabelled as an override result.
No protected rule has changed yet.

Contracts and impact

Consulted the adopted governance/ownership guides, agent manifest, E2E contract,
compatibility manifest, existing observer/checkers/tests, contribution guide,
and the four-root source/evidence dossiers from OpenCoven/coven#1044,
OpenCoven/coven#1045, OpenCoven/coven#1046, and OpenCoven/coven#1049.

R4 CI/evidence change, not a runtime or audit-schema change. Synthetic fixtures
only; no new audit store, identity model, credential profile, migration,
deployment, or human acceptance. No third-party parser package is installed;
Python's existing standard-library TOML parser avoids an incomplete custom
parser. Bootstrap explicitly checks this prerequisite.

Rollout and rollback

The downstream contributions, accepted-main pin selection, new job, and raw
artifact acceptance are complete. After normal landing, add only this context to existing strict
protection, preserving all five previous contexts and other safeguards.

The scheduled latest-main observer stays advisory. Required compatibility
does not resolve missing deployed audit history or unprovable application in
OpenCoven/coven#886, establish live Cave acceptance, or erase the Windows
outlier tracked in OpenCoven/coven#1047.

Rollback must keep core checks and fail-closed behavior. If the new check
proves operationally unsuitable, record the exact failure and deliberately
reconcile its pin/workflow/rule; do not silently replace it with mutable main,
skip the failing target, or discard first-attempt evidence.

Preserve advisory coverage and source/overlay guards. Require explicit ready immutable metadata and every companion target; keep the old pin unready until accepted downstream main is selected.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Val Alexander <val@opencoven.ai>
@BunsDev

BunsDev commented Sep 13, 2026

Copy link
Copy Markdown
Member Author

The new four-target profile now has actual candidate execution, not just runner mocks: clean Threads f306e5c56bacff1e21626203dbfdf707952b995e -> immutable Coven e4c5b6fbf4d10303f22134a59750e07892f69418 -> real daemon, isolated synthetic home/TMPDIR. One locked command selected all four targets and passed 103 E2E / 44 identity / 38 protected / 33 terminal tests, with zero failed, ignored, or filtered tests. No inherited test-thread override was used.

The final receipt has suite=compatibility, the exact four-target command, actual local override, and unchanged source/config/lock proof. All 111 retained E2E manifest/JUnit pairs were independently checked for completeness, exact source pair, clean Threads, matching lock and passing result. Companion execution is evidenced by the actual wrapper command and Cargo target logs; 111 is NOT claimed as four-target manifest coverage or independent test count. This is macOS candidate evidence, not accepted-main/native-Windows proof.

Independent bounded review found no high-confidence introduced bug or substantive coverage omission. The old manifest still deliberately fails the new hosted job until normal downstream landing and fresh accepted-main pin selection. No required rule or stable pin changed.

@BunsDev

BunsDev commented Sep 13, 2026

Copy link
Copy Markdown
Member Author

Engineering normal landing is complete. Select immutable daemon 226bfcc89ff6cad4bc9cc9618dad6fea970ecf58, tree db70ae955bc71bdf444889e5ffbe1723708f5203. Committed manifest and lock both pin core 0021fd2 (v0.2.0).

OpenCoven/coven#1045, OpenCoven/coven#1044, OpenCoven/coven#1046 and OpenCoven/coven#1049 all landed normally under strict current-base PR protection; no bypass or integration-branch shortcut. Final CI 34784497791 passed attempt1. Actual native test merge64b6a9377061a3bd4e2f5534a5a5fdb1492f8eea has the identical accepted-main tree. All86 feature +7 default-profile manifests/JUnit were authenticated and inspected: exact native source/core pair, complete and passed, no local override. Artifacts10325664968 digest33027d0935b629c12b241cbb4d292513fcdb42e4a707da50e9bbcffa56d6a99c and10326311769 digestfc61494a451f6d1c523e6d400234a85dbce4a46640d4f1627de0e83785f2d755.

Parent fresh current-Threads four-target wrapper/overlay proof is still required; manifests carry their documented generic single-target reproducer, not wrapper argv. Do not infer the current-Threads override from native Git-core receipts. Root886 actual deployed/unprovable history remains unresolved. Native uncertainty OpenCoven/coven#1047, OpenCoven/coven#1050 and OpenCoven/coven#1051 and the corpus attempt1 failure remain retained; green later runs are not causal repairs or a reliability-period claim. Final detailed landing dossier follows.

Select protected-main 226bfcc8 and its committed core 0021fd2 after normal component landings. Require all four daemon targets; actual current-checkout acceptance still runs before activation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Val Alexander <val@opencoven.ai>
@BunsDev
BunsDev marked this pull request as ready for review September 13, 2026 22:27
Copilot AI lite review requested due to automatic review settings September 13, 2026 22:27
@BunsDev
BunsDev merged commit 7f98ae8 into main Sep 13, 2026
7 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Actionable findings remain in manifest validation, refusal receipts, and rollout documentation.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Establishes a pinned four-target daemon compatibility lane with provenance validation, workflow automation, and supporting documentation.

Changes:

  • Adds compatibility manifest and dependency-pin validation.
  • Extends execution and receipts for four targets.
  • Adds workflow, tests, and Python/TOML prerequisite documentation.
File summaries
File Summary
scripts/tests/daemon-compatibility.test.mjs Tests manifest and workflow validation.
scripts/tests/daemon-canary.test.mjs Tests compatibility execution and drift handling.
scripts/run-daemon-canary.mjs Runs suites and records provenance receipts.
scripts/daemon-compatibility.mjs Validates compatibility metadata and dependency pins.
scripts/agent-bootstrap.sh Checks the Python TOML prerequisite.
e2e/compatibility.toml Records accepted revisions and targets.
docs/testing/e2e-contract.md Documents the compatibility contract.
CONTRIBUTING.md Documents prerequisites.
.github/workflows/daemon-compatibility.yml Defines the pinned compatibility workflow.
Review details

Suppressed comments (3)

e2e/compatibility.toml:18

  • This manifest now marks the reviewed pin ready, but docs/strategy.md:148-155 still says the old SHA remains harness-required and that the dedicated pull-request lane is only to be proposed. That current delivery document contradicts this manifest and the new workflow; update it or explicitly mark the old text historical so the repository does not advertise the stale rollout state.
status = "ready"

scripts/daemon-compatibility.mjs:40

  • Only ref is optional-chained here. If the manifest omits [downstream.coven.canary], evaluating coven.canary.schedule throws a raw Cannot read properties of undefined error instead of the intended contract-specific rejection, making malformed compatibility metadata needlessly opaque.
  if (coven.canary?.ref !== "main" || coven.canary.schedule !== "nightly" ||
      coven.canary.blocking !== false) {

scripts/daemon-compatibility.mjs:28

  • The first access is guarded with coven?.repository, but coven.package and coven.threads_dependency_manifest are not. A manifest without [downstream.coven] therefore emits a JavaScript property-access error rather than unsupported compatibility manifest contract; guard the remaining fields consistently so malformed manifests get the documented rejection.
  if (manifest.schema_version !== "opencoven.threads-compatibility/v1alpha1" ||
      coven?.repository !== "OpenCoven/coven" || coven.package !== "coven-cli" ||
      coven.threads_dependency_manifest !== "crates/coven-cli/Cargo.toml") {
  • Files reviewed: 9/9 changed files
  • Comments generated: 1
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +110 to +119
const suite = env.COVEN_THREADS_DAEMON_SUITE ?? "advisory";
if (suite !== "advisory" && suite !== "compatibility") {
throw new Error("unknown daemon suite");
}
if (suite === "compatibility" && !/^[0-9a-f]{40}$/.test(env.COVEN_REF ?? "")) {
throw new Error("compatibility requires an immutable full Coven commit SHA");
}
const targets = suite === "compatibility" ? compatibilityTargets : ["threads_e2e"];
const args = argsForTargets(targets);
Object.assign(receipt, { suite, test_targets: targets, command: ["cargo", ...args] });
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