Skip to content

fix(ci): desktop-native-linux honors the classifier it depends on - #1153

Merged
rickylabs merged 1 commit into
mainfrom
fix/desktop-native-honors-classifier
Aug 3, 2026
Merged

fix(ci): desktop-native-linux honors the classifier it depends on#1153
rickylabs merged 1 commit into
mainfrom
fix/desktop-native-honors-classifier

Conversation

@rickylabs

Copy link
Copy Markdown
Owner

Summary

desktop-native-linux declared needs: classify but never read the verdict, so it built a .deb
and a signed updater on every PR — 20/20 in the last-20-PR audit (~41 min), including one-file
.agents/ changes (#1055, #1063, #1123) where both scaffold tiers correctly skipped. The job now
reads the classifier outputs exactly like its two siblings and short-circuits to a
skipped-by-policy step when the classifier said neither scaffold tier is needed.

Design notes:

  • No new routing in YAML. No dedicated desktop signal exists yet — ci: scope every expensive job to a capability vector — paths decide, labels override #1152 adds needs_desktop
    in the classifier. Until then the conservative proxy is run_static || run_runtime: desktop runs
    whenever any scaffold tier runs, and skips only when the tested classifier said no scaffold work.
  • Fail-closed preserved: a failed classify forces RUN=true; only an explicit
    run_static=false && run_runtime=false from a successful classify skips.
  • Reporting preserved: the job still starts and reports SUCCESS via the exact
    scaffold-static skipped-by-policy pattern, so it stays eligible as a required check.
  • lane-visibility now includes the desktop lane so a policy skip is distinguishable from a real
    run.

Scope

Slices

  • S1 gate desktop-native-linux on classifier outputs + skipped-by-policy reporting — 5848e90

Validation

  • deno test .github/scripts/ci-classify-changes.test.ts — 30 passed, 0 failed (classifier
    untouched; self-check green)
  • YAML parse of .github/workflows/e2e-cli.yml — OK
  • Docs-only skip demo: verification PR against this branch (classifier says skip → desktop reports
    skipped-by-policy) — evidence to follow in a PR comment

Harness

Drift / Debt

  • none

)

The job declared needs: classify but never read the verdict, so it built
a .deb and signed updater on every PR (20/20 in the last-20 audit, ~41
min). It now runs only when the classifier says either scaffold tier
runs, short-circuiting to the scaffold-static skipped-by-policy pattern
otherwise so it stays eligible as a required check. Fail-closed: a
failed classify still forces a full run; a dedicated needs_desktop
signal is #1152 scope.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PVEZJ1CBtRYNXzGQRZrTat
@rickylabs

rickylabs commented Aug 3, 2026

Copy link
Copy Markdown
Owner Author

[PHASE: IMPL] [VERDICT: —]

Docs-only skip verified live. Demo PR #1154 (docs-only diff against this branch, opted into the gate via e2e-cli-gate) produced run 30825776156:

Job Outcome Steps that ran
classify changes success full classify (self-check + diff + decide)
scaffold-static success Skipped by policy only
scaffold-runtime success Skipped by policy only
desktop-native-linux success Skipped by policy only

Before this fix, the identical input (docs-only diff, both tiers skipped) built a .deb + signed updater — proven on #1055/#1063/#1123. The job now reports SUCCESS without building, so it remains eligible as a required check. Demo PR closed after capture; its branch is deleted. The PR's own full run 30825732011 is green across all four jobs (workflow edit forces a full run, as designed).

Acceptance evidence

@rickylabs
rickylabs merged commit 28f4bf6 into main Aug 3, 2026
34 of 44 checks passed
@rickylabs
rickylabs deleted the fix/desktop-native-honors-classifier branch August 3, 2026 15:30
rickylabs added a commit that referenced this pull request Aug 3, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PVEZJ1CBtRYNXzGQRZrTat
@github-actions github-actions Bot added the canary:0.0.4-canary.1 Published NetScript prerelease 0.0.4-canary.1 label Aug 3, 2026
rickylabs added a commit that referenced this pull request Aug 3, 2026
Evidence-base definition widened with per-claim citations instead of silent
promotion; note-accumulation and the #1142 mitigation downgraded to [asserted]
with gaps stated; identity derivation re-anchored on the release-canary.yml
wiring; drift-gate section reduced to its observable contract; quota/transport
gates given a recorded-output proof form; stage-C operability wired to
tooling.md/agent-handoff.md and codex-watch turn interception; D2 tension
(#1153/#1155 pre-ratification merges) surfaced rather than claimed away.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq
rickylabs added a commit that referenced this pull request Aug 3, 2026
…ile, rolling canary cadence (#1161)

* chore(harness): bootstrap milestone-orchestrator authoring run + locked outline

Run dir + supervisor identity + plan of record for the three #1120 artifacts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq

* docs(harness): rolling canary cadence — trigger, membership, D3 identity, note, drift gate

The schedule artifact of #1120. Wave boundary as the canary point and content-derived
membership are [observed] from the 0.0.4 trace; open questions stay [asserted] and
owner-undecided. Wires to the shipped release:canary-label surface (#1121/#1122);
publish mechanics remain with netscript-release; #1119's collision is disambiguated,
not deepened.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq

* docs(harness): milestone-run profile — stage contracts, pre-merge gate, cut checklist, DoD

The run artifact of #1120. Every gate carries its observed firing evidence and a stated
did-not-run signature; the honesty rule (#1092/#1146 precedents) and the #1142 false-red
trap are encoded. Role judgement stays in the orchestrator skill; canary schedule in
canary-cadence.md; publish mechanics in netscript-release.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq

* feat(harness): agent-milestone-orchestrator skill + regenerated .claude/skills mirror

The role artifact of #1120: clustering, wave sequencing, re-planning absorption,
delegation judgement, merge authority, canary-point decisions, honesty rules, and
supervision pitfalls — every rule marked [observed] (0.0.4 trace) or [asserted].
Gate lists, run artifacts, label mechanism, and routing are referenced, never
restated. Mirror regenerated via agentic:sync-claude (incl. aspire and
netscript-release mirrors that were stale on main); agentic:check-claude green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq

* chore(harness): close out authoring run — S4 evidence + status flip recorded

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq

* fix(harness): apply Sol adversarial review findings C1-C9, M1-M6

Evidence-base definition widened with per-claim citations instead of silent
promotion; note-accumulation and the #1142 mitigation downgraded to [asserted]
with gaps stated; identity derivation re-anchored on the release-canary.yml
wiring; drift-gate section reduced to its observable contract; quota/transport
gates given a recorded-output proof form; stage-C operability wired to
tooling.md/agent-handoff.md and codex-watch turn interception; D2 tension
(#1153/#1155 pre-ratification merges) surfaced rather than claimed away.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq

* fix(harness): Sol cycle-2 — fix C3-residue/C10/M7, demonstrate C7+M4 gates; escalate C9, M1/M2

The two previously undemonstrated gates now carry real negative cases
(gate-demos.md): check 3 fires RED on a synthetic new-ignore diff and stays
GREEN on excluded-path quotes; the #1142 selection rule recovers PR #1155's
true pre-merge verdict from a live rollup containing a post-merge FAILURE.
D2 evidence box unticked pending the owner's ruling; the [observed]
source-of-record dispute is recorded in drift.md for the owner.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq

* chore(harness): record owner rulings — D2 orchestrated-delivery reading; [observed] definition ratified

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq

* fix(harness): Sol cycle-3 residues — C10 tag-existence implication dropped, M8 stale acceptance row

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq

* chore(harness): record Sol cycle-4 PASS — eval loop closed green

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq

* chore(harness): note mirror/label event race; retrigger CI with ready-merge label present

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ReZGc3KP8xvEuruz1io7Pq

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ci(e2e-cli): desktop-native-linux ignores the classifier it depends on — builds a .deb on every docs PR

1 participant