rfd-2nd — end-to-end verification of the new (rfd-iqz) clein-based CD pipeline before cutting v0.6 on Clojars. Goal: confirm the migrated
bb clojars/bb clojars-stubstasks produce artefacts matching the v0.6.2 baseline shape, with all deltas attributable to intended improvements (rfd-t0t bug fixes, rfd-8g9 new features).No Clojars push, no git tag. The two
clein deployinvocations below were run withCLOJARS_USERNAME=dryrun CLOJARS_PASSWORD=dryrunso each fails at the Clojars 401-Unauthorized step after producing the local jar with bundled pom.
✓ Release-pipeline shape is correct. Both jars build, both poms
are well-formed, coords are unchanged (day8.re-frame/tracing and
day8.re-frame/tracing-stubs), source contents match v0.6.2 baseline
byte-for-byte except for documented rfd-t0t / rfd-8g9 deltas.
✗ Test-pipeline has 6 known failures. bb test runs 74 deftests /
208 assertions; 6 fail. None block the release-jar build, but bb test is the CI gate so v0.6 won't publish until they're addressed.
Two of the failures (rfd-t0t #40 macroexpansion timeout, rfd-8g9 item
7 trace-shape assertions) are mine and need fix-up; the other two
appear pre-existing and were likely masked by the legacy lein test
classpath. See § "Test failures" below.
⚠ rfd-t0t #40 fix is incomplete. The recur carve-out in
cs/macro_types.cljc (commit db9b7de) was hypothesised as the fix
but the integration test now shows macroexpansion still hangs past the
5s timeout. Filed as a follow-up — needs deeper investigation into
dbgn.clj's zipper walker, possibly insert-trace's fixed-point
behavior with tail-call recur sites.
# Root coord — day8.re-frame/tracing
$ CLOJARS_USERNAME=dryrun CLOJARS_PASSWORD=dryrun clojure -M:clein deploy
# Stubs coord — day8.re-frame/tracing-stubs
$ cd tracing-stubs && CLOJARS_USERNAME=dryrun CLOJARS_PASSWORD=dryrun clojure -M:clein deploy
# Test pipeline (matches CI step `bb test`)
$ bb test
Both deploy invocations produced the local jar + pom and failed at
the Clojars push step with HTTP 401, as expected with bogus
credentials. The local artefacts under target/ are byte-identical
to what would have been pushed had real credentials been used.
The most-recent published release on Clojars is v0.6.2 (March 2021, ahead of the local CHANGELOG.md's last entry). Both coords were fetched from https://repo.clojars.org/day8/re-frame/ for comparison.
Source files (per-file diff vs tracing-0.6.2.jar):
| File | Status |
|---|---|
day8/re_frame/tracing.cljc | byte-identical |
day8/re_frame/tracing_stubs.cljc | byte-identical |
day8/re_frame/debux/core.clj | byte-identical |
day8/re_frame/debux/dbgn.clj | byte-identical |
day8/re_frame/debux/common/macro_specs.cljc | byte-identical |
day8/re_frame/debux/common/skip.cljc | byte-identical |
day8/re_frame/debux/common/util.cljc | +106 lines — schema docstring (rfd-t0t commit 6b4f042) + production-mode loud-fail (rfd-8g9 item 8, 10d27fd) |
day8/re_frame/debux/cs/macro_types.cljc | +12 lines — recur carve-out (rfd-t0t item 1, db9b7de) |
deps.cljs | byte-identical |
day8/re_frame/tracing/runtime.cljc | NEW — wrap-handler!/unwrap-handler! API (rfd-8g9 item 7, 4ed07c9) |
META-INF differences:
META-INF/leiningen/day8.re-frame/tracing/{LICENSE, README.md, project.clj}. clein doesn't generate these (lein-
specific metadata). Downstream consumers don't depend on them.META-INF/maven/day8.re-frame/tracing/{pom.xml, pom.properties} — clein generates these via tools.build.pom.xml — dependencies:
| Dep | Baseline (0.6.2) | Dry-run (0.6.2--) | Notes |
|---|---|---|---|
| org.clojure/clojure | 1.10.3 (provided) | 1.12.1 (provided) | rfd-t0t bump; deferred from rfd-iqz to match re-frame's pin |
| org.clojure/clojurescript | 1.10.773 (provided + 3 exclusions) | 1.12.42 (provided + 3 exclusions) | rfd-t0t bump; same exclusions preserved |
| thheller/shadow-cljs | 2.11.22 (provided) | 3.2.0 (provided) | bumped to load clein cleanly (older shadow hit a closure-compiler BROWSER_2023 feature mismatch) |
| re-frame/re-frame | 1.2.0 (provided) | 1.4.5 (provided) | rfd-t0t bump |
| net.cgrand/macrovich | 0.2.1 (compile) | 0.2.2 (compile) | rfd-t0t patch bump |
| clojure-future-spec | 1.9.0 (compile) | 1.9.0 (compile) | unchanged |
| zprint, eftest, io.aviso/pretty, reloaded.repl | test-scope | (absent) | clein doesn't emit test-scope deps in pom; these are dev-only and lived in lein's :dev profile. Downstream consumers don't pull test-scope deps. |
Various <scm>, <build>, <repositories> shape | lein/maven layout | clein/tools.build layout | non-functional structural difference |
Verdict on tracing pom: structurally aligned with v0.6.2 baseline. All version bumps were either rfd-t0t-driven (operator already aware) or made during this dry-run to get clein loading. Provided/compile scope splits match exactly. Exclusions preserved.
Source file (per-file diff vs tracing-stubs-0.6.2.jar):
| File | Status |
|---|---|
day8/re_frame/tracing.cljc | byte-identical |
Pom dependencies:
| Dep | Baseline (0.6.2) | Dry-run (0.6.2--) |
|---|---|---|
| org.clojure/clojure | 1.10.3 (compile) | 1.12.1 (provided) |
The baseline lists clojure as compile-scope; the dry-run lists it as provided-scope. The provided-scope shape is more correct for a stubs package (consumer always supplies clojure). Minor delta worth flagging in release notes.
bb test)74 deftests, 208 assertions, 6 failures. CI will fail on this until addressed.
| Test | File:line | Source | Recommendation |
|---|---|---|---|
loop-recur-macroexpand-terminates | regression_test.clj:85 | rfd-t0t db9b7de | rfd-t0t #40 fix is incomplete. Add recur to :skip-form-itself-type did not stop the macroexpansion divergence. Needs deeper investigation in dbgn.clj. |
loop-recur-evaluates-correctly | regression_test.clj:95 | rfd-t0t db9b7de | Same root cause as above. |
wrap-fx-emits-code-traces-when-called (line 105) | runtime_test.clj | rfd-8g9 4ed07c9 (item 7) | Test bug: (str some-list) doesn't pretty-print under CLJ — should be (pr-str ...). The captured trace stream is correct; only the assertion regex is at fault. |
wrap-fx-emits-code-traces-when-called (line 107) | runtime_test.clj | rfd-8g9 4ed07c9 (item 7) | Same — (str ...) vs (pr-str ...). |
remove-skip-test | core_test.clj:194 | pre-existing | Was probably masked by lein test's classpath; surfaces under bb test. Investigate separately. |
defn-traced-trailing-attr | traced_macros_test.clj:78 | pre-existing | Same. |
The two test-bug failures (runtime_test) are 1-character fixes
(str → pr-str). The loop-recur failures need real
investigation. The two pre-existing failures need triage —
possibly classpath-related, possibly silent regressions that the lein
test scope was hiding.
None of the six failures affect the release jars themselves: clein deploy doesn't run tests. But CI does, so they need fixing before the operator pushes a v0.6 tag (which would trigger CD).
.github/workflows/*.yml
files were edited in rfd-iqz but not exercised on a real GitHub
Actions runner. The first push from the operator will be the live
test of the new workflow shape. Most-likely-to-break-first:
CLOJARS_TOKEN_FOR_TRACING and _TRACING_STUBS secrets must
exist on the repo with publish permissions for the matching
coords. The legacy CD used these names and presumably the
secrets carry over; verify in repo Settings → Secrets.bb test-browser not run. The CLJC browser-test build is
separate and currently can't run because indenting_test.cljc
requires dbgn.clj (CLJ-only). Either rename
indenting_test.cljc → .clj or restrict the shadow :browser- test :ns-regexp to skip it. Tracking as a separate concern;
not blocking v0.6 since the legacy CD didn't run browser-test
either (lein test only ran CLJ-side, lein ci ran karma which
uses a different runner).The dry-run confirms the structural correctness of the new pipeline. Functional correctness gates on the test failures, which are localized and tractable.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |