Session
12:22 (microdancing — conference corpus analysis + workshop
research)
Scraped and analyzed two conference playlists end-to-end: Enterprise
AI Summit Spring 2026 (IT Revolution, 27 talks) and AIE World's Fair
2026 (AI Engineer, 358 talks, 14 private)
Built full data pipeline with yt-dlp + custom scripts:
metadata/stats JSONs, 371 cleaned transcripts (~1.33M words), Layer-1
structuring (roles, org classification, genre), 2-pass codebook (20
topics, 7 message frames, evidence styles), blind per-talk
extraction
Ran Rule-of-5 review twice: on the analysis design (reshaped
single-corpus plan into comparative study; killed cross-corpus traction
comparison) and on the spec v2 (verified data claims, defaults added,
READY)
Pre-registered hypotheses sealed with checksum
(HYPOTHESES.sealed.md), opened only after coding; scorecard
verdict: half supported (tenured experience-led EAIS, vendor-heavy
AIEWF), half refuted (AIEWF is more metric-grounded and invokes industry
history MORE; "all the same" refuted by 20-topic spread)
Key findings: EAIS = transformation conference (78% org, 43%
culture, no unique themes); AIEWF = construction conference (20 topics,
11 unique clusters); both led by war stories (~52%) but A falls back on
culture framing, B on product/standardization claims; evidence styles: A
personal-anecdote (57%) vs B company-metrics (39%, 210 numeric claims
cataloged)
Extracted 235 quantitative claims into data_points.json
(reusable dataset)
Built 11-talk leverage list mapped to my usage profile (context
churn, 29 untested skills, rate-limit pressure): B081, B106, B268, B338,
B140 top tier
Wrote skills dossier for workshop business: coder skills (10) vs
non-coder skills (8), evidence-backed training formats (hackathons → 40%
adoption, 2-week role courses, leader mandates), sales proof points (93%
usage, 4.5x vs 3x velocity, 20x shipping)
All work committed on data/conference-analysis branch
of microdancing (commits 9736c73, cc807f4, fbaf715, pushed to origin);
repo path
para/areas/dev/gh/charly/microdancing/conference-analysis/
Decisions: raw VTTs (61MB) excluded from git; traction metrics only
within-conference; conclusions scoped to "programs as curated"
Next: choose workshop primary buyer persona
(HR/L&D for non-coders vs CTO for engineers vs lab directors) →
draft actual workshop content (curriculum, exercises, timing); external
inputs needed: Argentina pricing/market data, vertical selection, stack
choice
Grilled the FP&A design from the Family FP&A architecture
doc against real data (247 Galicia PDFs incl. ARS+USD accounts; 7
MercadoPago settlement CSVs, 346 rows); 9 decisions resolved one by
one
Major pivot: hledger is the ledger engine — journal
canonical (per-statement-period files + include tree, balance assertion
per posting from printed saldos), EDN stays as committed parse IR;
verification caught hledger gotcha: tags must be
; key: value comments, bare key: value parses
as amountless postings
Design encoded in OpenSpec: add-fpna-core (6
capabilities, design.md, 23 tasks) + add-mercadopago-source
(uniform pipeline, hledger CSV import as test oracle); both validate
--strict
11 beads tickets with quantified Must gates, anti-goals, base_commit
anchors, openspec external-refs; issue-review pass applied all
remediations
Visa modeled as liability account; validation = thin hledger-check
wrapper + parse completeness; English accounts, verbatim Spanish payees;
UI = hledger-web + squint FP&A views (deferred custom API)
Rule-of-5 review of the setup found 2 red gates (typos rejected
EDN/inicial/mis; projections.yml schema-invalid) + bootstrap gap → all
fixed; just check is now a single green gate
Decisions: no reinvention of ledger semantics; loud conflicts never
silent merges; private financial knowledge committed in-repo
(.whisper/), not in global store
Commits through 0a20ed0 + whisper init; all pushed
Shipped the file-headers convention
(prompt-system-file-headers.md, v1.1.0, status: tested):
every source file opens with Purpose/Responsibilities/Rationale;
undescribable-in-one-sentence = cohesion violation; stale header worse
than none; rationale = latest entry + issue link, history in
tracker/git
Full reviewed plan executed in 6 commits (Phase 0 convention → Phase
1 creation-time hooks in
context-guardian/tdd/implement-plan/create-issues → Phase 2 review-time
hooks in issue-review
pass-5/code-review/modularity-diagnostician/resonant-refactor → Phase 3
dogfooding: headers on 5 repo scripts + just header-audit
gate)
Rule-of-5 review of the implementation caught the plan's own
CRITICAL recurring in execution: code-review source/distilled version
drift perpetuated (and documented as intentional in CHANGELOG) → fixed,
plus cli.mjs header restyle, tdd Step 4 sync, audit-snippet fix
Built incitaciones-wp1:
just sync-manifest now fails on distilled-marker ↔︎
source-frontmatter version mismatch; check immediately caught 8
pre-existing repo-wide drifts, all reconciled (closed the ticket); one
mis-bump (multi-agent-review vs parallel-review source paths) caught and
reverted pre-commit — manifest source paths can be counterintuitive
Reorganized the essentials bundle to the measured
top-8 from the skill-usage analysis (commit, rule-of-5-universal, tdd,
issue-review, debug, create-issues, create-handoff, grill-me); published
page regenerates in pages CI
Decisions: rationale lives in the file (latest entry) with history
in tracker/git; verified promotion of file-headers deferred until real
use in an external codebase; nucleus issue-review roundtrips left
intentionally stale (experimental artifacts)
Knowledge routed to
~/.whisper/repos/cv/charly-vibes/incitaciones/env.md
(committed + pushed)
Next: use file-headers in an external codebase →
promote to verified; optionally regenerate nucleus roundtrips
(just nucleus-roundtrip issue-review); periodic
just trace-insights to re-tune essentials
Session:15:27
(whisper — first crates.io release via tag-triggered GHA)
Confirmed whisper-vibes was never published — root
cause: repo had no.github/workflows/ at
all; org convention is tag-pushed GHA releases (cf. dont,
genesis), not manual publishing
Set repo secrets from existing configs per user directive (no new
logins): CARGO_REGISTRY_TOKEN read from
~/.cargo/credentials.toml, TAP_GITHUB_TOKEN =
existing GH_TOKEN
Release succeeded on attempt 3 after two real workflow bugs: (1)
darwin staging used artifact names as cargo target dirs → fixed to
x86_64/aarch64-apple-darwin; (2) cargo publish
dirty-workdir check tripped by untracked
bins//dist/ → gitignored; plus a rerun
collision with the release created by attempt 2 (deleted, reran failed
jobs)
v0.3.0 fully shipped: crates.io, GitHub Release (5
archives + checksums), tap formula + scoop manifest both committed
("Update turu to 0.3.0")
Discovered dont v0.3.0 release failed
at macOS/Windows build stage — its tap/scoop/publish steps never ran;
worth investigating
Open follow-up: whisper-bez — repo still has no
ci.yml (only release workflow)
Knowledge routed to
~/.whisper/repos/cv/charly-vibes/whisper/env.md (infra
facts + release gotchas)
Next: add ci.yml (whisper-bez);
optionally port same bins//dist/ gitignore fix
+ build fix to dont's release
Cut v0.9.0: changelog [Unreleased] →
[0.9.0] - 2026-09-15, npm version minor, tag
verified then git push origin main v0.9.0 in one command —
zero tag incidents (the whisper-documented sequence held)
New gotcha recorded in whisper: tarball CDN lags registry
metadata — curl HEAD 404s for minutes after a successful
publish; verify with npm pack <pkg>@<ver>
(client fetch), not curl; CI log + pkg@ver line is the
authoritative success signal
GitHub Pages deploy green — published site serves the reorganized
essentials
Verified all three repos pushed (incitaciones, jornal, whisper);
beads solo mode (no Dolt remote, known)
Next: (unchanged) use file-headers in an external
codebase → promote to verified; optional nucleus roundtrip regen;
periodic trace-insights re-tune of essentials
Session
16:04 (microdancing — memory systems report, amnesia-tested)
Follow-up session on conference-analysis: extracted
memory/knowledge-base insights from corpus B (AIEWF) transcripts — read
6 key talks in full (Khemani 115, Malcolm 003, Druga 122, Chin 214,
Iusztin 336, Castro 259) + verified cluster talks (216, 306, 331, 208,
283)
Created conference-analysis/memory-systems-report.md: 6
findings sections (consumer memory convergence away from vector RAG;
enterprise memory as shared-state problem; Druga's ablation result —
ranked decisions-ledger recall beats vector RAG AND oracle injection;
markdown-files backlash/graph memory; personal KBs as agent substrate) +
5 cross-cutting takeaways + gaps section
Ran installed rule-of-5-universal review with pre-review claim
validation against corpus: 0 CRITICAL, 1 HIGH (method overstatement —
corpus A claimed "all transcripts read" when coding used abstracts + 4
openings), 4 MEDIUM, 5 LOW → verdict NEEDS_REVISION → applied all 11
fixes → READY
Report amnesia-compliant: inline glossary (7 terms), corpora
defined, caption-garbling caveat, path scope stated, all 10 talks linked
with view counts
Knowledge routed to whisper (microdancing/env.md):
conference-analysis infra facts + amnesia-test method discipline
Next: memory/persistence architecture flagged as
repo's biggest structural unlock (Savkin talk 338, in leverage list tier
1) — candidates for building it; workshop persona choice still pending
from 12:22 session
Session:16:17
(whisper — ci.yml + turu consolidate shipped, both tickets closed)
Renewed whisper context and shipped both open beads tickets:
whisper-bez (.github/workflows/ci.yml +
justfile ci: fmt-check lint test build-locked — the
--locked build catches Cargo.lock drift before
release.yml's cargo publish --locked trips; commit
1664c56) and whisper-ae0
(turu consolidate: wholesale rename when canonical dir
absent, per-entry move, text merge by extending with trimmed-line dedup,
legacy dirs removed; commit e217adf) — TDD throughout, 5
new tests, just ci green, end-to-end verified on a
synthetic workspace
Folded-in safety fix: legacy_variants colon rule
matched ANY dir containing a colon — real false positive found in this
very workspace (ak:akielbowicz, a multi-repo legacy root
holding other repos' knowledge); detection now requires the post-colon
path to equal the bare repo name. Lesson: detection that only warns can
be loose; detection that moves data cannot
Snapped via /next; cargo quirk noted: cargo build
reports fresh but target/debug/turu stays stale after src
changes — cargo clean -p whisper-vibes before smoke-testing
binaries
Created dont-piwl (P2) in the dont repo with real
run-log diagnosis: all three failed releases died at
cargo build --release --locked with "cannot update the lock
file" (Cargo.lock drift), NOT the darwin-triple bug (dont's staging is
already correct); ticket lists lockfile sync +
bins//dist/ gitignore + ci.yml locked-build
gate + rerun procedure; synced via bd dolt push
Discovered another agent actively working in dont mid-operation
(Cargo.toml/lock in flight, branch moved under me, pre-push fmt/lint
failing on their unformatted edits) — stopped pushing rather than fight
the concurrent session; only a 1-line passive jsonl re-export commit
remains local there (Dolt DB has everything)
Next: whisper ready for v0.4.0 tag (consolidate +
ci.yml) to exercise release.yml; check dont's state before any further
work there — dont-piwl may already be in progress by the other
session
Fixed nu::shell::shared_keybindings_name warning on
nushell startup: atuin-generated ~/.cache/nushell/atuin.nu
appends two keybindings (Ctrl+R search, Up history search) both named
atuin; renamed the second to atuin-up —
verified clean sourcing
Caveat noted: file is regenerated by atuin init nu, so
the rename may be overwritten on next atuin run/update (same one-line
fix reapplies)
Whisper routing skipped: not durable enough (trivially
rediscoverable, fix lives in the generated file itself)
Built the missing bulk flow on top of chat-download.sh:
scripts/download-all.sh walks every stored
chat (largest first) through backfill → one full export pass; resumable
via state markers
(data/download-all/done|failed/<jid>), logged
(logs/run-<ts>.log + per-chat
chat-<jid>.log with failure reasons), paced
(--limit 50–100 vs WhatsApp rate limits), Ctrl-C safe;
--requeue clears failed
backfill gained --json (machine-readable
RESULT {exhausted,capped,...} line) so the script knows
when a chat's history is exhausted
New link command (exporter.linkByName) →
data/by-name/: symlinks
<slug>.txt → transcript and
<slug>/ → media, slugified chat names (accents
stripped, collision-safe, relative targets), rebuilt from scratch each
run so renames stay in sync
Fixed two real bugs found by running it: VALID_JID
rejected @broadcast/@newsletter suffixes
(status@broadcast failed every run); export only iterated
chats.json/contacts so live-captured LID chats without metadata never
got transcripts — now merges message-dir filenames
Fixed design gap: done chats were skipped entirely, so new live
messages never re-exported and transient media misses never retried →
export is now one full pass over ALL chats at end of run (single
connection, transient retries, permanent failures still
cache-skipped)
Media audit: 4,132 media messages — 636 on disk, ~3,172 permanent
mac-mismatch (LID rekey limitation, phone can't re-serve own old media;
media-ingest from phone storage is the only bypass), ~324
transient retried each run now
README fully updated (bulk section, data layout, commands, corrected
stale claim about media failure caching)
6 commits pushed to origin/main (1ebde53..6d53688 +
export fix); all 34 tests green
Next: maintenance runs of
download-all.sh will keep retrying the ~324 transient media
misses; if the ~3,172 mac-mismatch files matter, run
media-ingest --chat <ref> per chat (adb, phone
storage) — EMHVE-style recoveries suggest high yield
Session:16:24
(dotfiles — atuin keybinding fix made permanent)
Follow-up to 16:14 session: replaced the non-persistent manual
rename with a durable fix — dedupe snippet in
dot_config/nushell/config.nu (chezmoi source) right after
source ~/.cache/nushell/atuin.nu: renames any later
keybinding sharing a name with an earlier one (atuin →
atuin-<index>), so it survives
atuin init nu regenerating the cache file
Verified end-to-end: regenerated
~/.cache/nushell/atuin.nu from atuin init nu,
sourced full config → zero warnings; dedupe logic unit-tested against
synthetic duplicates (renames correctly)
Side finding: current atuin now emits unique names natively
(atuin + atuin_up_arrow) — snippet is
belt-and-suspenders against stale cached files and future
regressions
Committed 40322ac to dotfiles work_files
branch (commit skill followed: diff reviewed, user-gated message,
explicit path) + pushed; chezmoi applied to live config
Whisper routing skipped: same rationale as 16:14 — the fix is
self-documenting in config.nu comments and trivially rediscoverable
Mined the conference-analysis corpus (344 AIEWF + 27 EAIS
transcripts) for agent-skill (SKILL.md) management/build/update
practices; densest cluster: B171 FactSet (skill-centric harness), B261
Garry Tan (skillify-it), B049 QuantumBlack (build→share→govern), B166
Nubank (2,000-skill security vetting), B331 (runtime skill baking), B002
Vercel
Created workshop/skill_management_practices.md:
building (routing descriptions, progressive-disclosure ladder, skillify
capture loop, minimal harness support), updating (evals on model
upgrade, runtime bake, lifecycle mechanics, commit-history health
metric), managing (5 governance dimensions, security supply-chain,
adoption wall)
Ran rule-of-5-universal review on the new doc (via review router;
close/rule-of-5 skills are now pointers into consolidated skills): 0
CRITICAL, 1 HIGH + 5 MEDIUM + 4 LOW, all fixed in place — the HIGH and 3
MEDIUMs were my own overclaims/misattributions caught by re-checking
transcripts (e.g. "#1 reason" vs "these are the reasons"; Vercel claims
assembly, not authorship)
Verdict READY; note complements skills_dossier.md (human-skills
side) with cross-refs
Whisper: appended transcript-mining technique note to
repos/cv/charly-vibes/microdancing/notes.md
Next: README contents table doesn't list workshop/
docs (skill_management_practices.md, skills_dossier.md,
research_labs_addendum.md) — offered to add, no answer yet; any new
workshop doc should follow the corpus-attribution style (talk ID +
YouTube link, interpretation marked as such)
75 tests green (27 unit / 14 baseline / 34 lifecycle);
just ci incl. --locked; specs and changes
validate --strict
v0.4.0 released: changelog, version bump, tag
v0.4.0 → Release workflow success — GH Release with 5
platform archives + checksums, crates.io publish, homebrew/scoop taps
updated
Knowledge routed to ~/.whisper/.../whisper/env.md
(lifecycle summary + time-crate parse gotcha + --locked/version-bump
gotcha); filed beads ticket for the open bundle-transport strategic
fork
Next: use the new commands from real agent sessions
(recall/distill in daily work) to validate the design under load; decide
bundle transport when a second machine actually needs shared knowledge;
distill pass over accumulated env.md/notes.md would be the first real
exercise of the dreaming contract
Produced first-ever project status report (engineering audience,
Unknown/Unrated — no agreed baseline); evidence-grounded from
beads/git/dont prime. Key finding: 19 open issues, stale P0, missed
CHANGELOG entry, epistemic hygiene lagging the code
Housekeeping: closed stale P0 dont-flvw (verified dd7a90f satisfied
all criteria), backfilled CHANGELOG for v0.3.0, released to main (user
authorized direct-to-main workflow)
Genesis adoption tickets: closed stale dont-4so7; dont-88m8 —
genesis-vibes 0.4→0.6, caller-supplied cli_version (32 call sites
migrated, CLI_VERSION moved to crate root); dont-7xv8 — genesis::fixture
adoption via TestProject wrapper, 57 test files migrated, net −459
lines. Both TDD-first
All 8 eval bug tickets fixed TDD-first: dont-12cp (phantom
suggest-term → dont vocab), dont-dbmi (--lock-readiness remediation →
dont show), dont-tdx4 (dont lock guard removed, matches docs), dont-regm
(in-process store mutex — flock is per-process on BSD/macOS),
dont-ap30+toy4 (doubted claims block dont check; --ungrounded removed),
dont-z8sr (--as-of hidden), dont-mt4j (confidence 0.0–1.0 validated),
dont-rzh0 (HTTP limitation documented; impl deferred pending network-dep
decision)
Multiple pre-existing tests codified the buggy behavior
(suggest-term guidance, lock rejection) — updated them as part of the
fixes
v0.4.0 released: CHANGELOG (doubted-blocking framed
as subject to dont-bpuo), version bump, tag v0.4.0 pushed. All 81 test
targets green, hooks passing throughout
Whisper: flock platform-semantics gotcha routed to
repos/cv/charly-vibes/dont/env.md
Next: decide dont-bpuo (suite-wide vs repo-local
gate); set revisit date for deferred dont-pnx (MCP server); close or
merge superseded docs/add-changelog PR (open since 2026-06-18); define
v0.4.0-followup baseline so the next status report can be rated
Session:18:47
(charly — ddl tool-family evaluation vs conference-analysis
insights)
Evaluated the dulce-de-leche tool family (ddl + 10 managed tools)
against the microdancing/conference-analysis corpus (AIEWF n=343):
alignment matrix by B-corpus cluster weights, then usage-grounded
verdict after operator redirect
Usage census (34 charly repos + PATH): spine = wai (20 repos,
ongoing) + testaruda (8, ongoing); turu light-use;
espectacular/dont/fabbro init-and-forget (dont's 7 Cozo DBs frozen on
one init day); vampiro dead (not installed); pretender never configured;
ddl itself 1 repo. beads (external) out-adopts every family tool (25 vs
20) — with the confound that AGENTS.md mandates bd
Verdict written: real spine inside an init-and-forget shell + dead
weight; pipeline exists in docs only (no tool consumes another's
workflow state; genesis = status aggregation only); author uses
2/10 daily → falsifies ddl's bundle premise
Value plan: fund the spine; wire integrations
(espectacular←testaruda tests, pretender→testaruda graph);
export-then-kill vampiro/dont; freeze ddl until checksums+real formulas;
every tool gets a falsifiable metric or is demoted to experiments/
Findings confirmed in source: installer.rs downloads have NO
checksum/signature/pin verification; managed-block context proliferation
(7 blocks in ddl's AGENTS.md)
Rule-of-5 review of the report artifact (close-style, 4 stages to
convergence): 3 CRITICAL fixed (beads "5×" math error; 2-vs-3-tool spine
inconsistency; "nothing reads state" overstatement), census-scope +
export-before-kill + mandate-confound fixes applied in place — artifact
READY
Stale-claim flag: report's F3 still cites placeholder Homebrew
formulas from the old adversarial-eval doc, but DDL-cnh was closed 17:21
today (formulas fixed pre-rekey) — verify before acting on F3; the
missing-checksum finding in installer.rs stands
Next: (1) turn the 5 value-improvement moves into
bd issues (charly area or per-tool repos); (2) verify
placeholder-formula status and correct report F3; (3) decide ddl reframe
(supply-chain integrity + metrics surface vs freeze)
Status report for genesis-foundation (engineering audience,
Green/Medium-confidence; no formal baseline → schedule Unrated); flagged
pretender hook missing, unowned epics, stale-ticket momentum risk
genesis-u40 shipped TDD-first: guide::run/run_formatted reserve exit
2 for internal I/O failures (exit 1 unchanged for user errors); testable
*_with_writers variants; contract documented (rustdoc +
guide.md + evals.md + new CHANGELOG.md compat note). Repo-wide audit
found zero exit==1 user-error assertions
genesis-9o5 fixed: Appendix A compliance matrix (verified every cell
in source before editing — only 2 of 4 listed corrections were actually
stale); dead cross-rig gate genesis-4iw force-closed (multi-rig routing
removed, condition verified in source)
genesis-zxv core slice shipped: genesis::evals — ErrorTaxonomy (6
ERR_* codes), lenient parse_envelope (portable
nonzero+parseable-envelope assertion), Scenario spec replayed against
in-memory AgentStep transcripts, reusable checks (hint-blindness,
hallucination classification). Worked end-to-end scenario test; no LLM,
no subprocess runner
Rule-of-5 review of all session changes: verdict READY, 2 MEDIUMs →
genesis-lzv filed and immediately fixed (Scenario::run → Result,
ok_envelope taxonomy corrected to tool-fault, panic-doc precision,
empty-replay test, doctest). 414 tests green, clippy --all-targets
clean
genesis-vjp CLOSED after verifying dont v0.4.0 in source (envelope
caller-supplied cli_version, CliFormat/CliVerbosity/discovery adopted,
45 test suites green): all 6 tool repos + DDL on genesis-vibes 0.6,
11/11 child tickets closed
Whisper: exit-code contract, evals semantics (blindness only via
agent_followed_hint), dead cross-rig gates, adoption status →
repos/cv/charly-vibes/genesis/env.md
Next: only genesis-ntg (P0 Agent Value Alignment
epic) remains open — breakdown needs dont input; evals module's
managed-block audit util + AIX-ablation are follow-up slices; EXCL-002
version decision (Unreleased changelog entry) at next release
/renew on ddl: resumed DDL-9c2 (turu toolset) + DDL-ei3
(binary-first install chain), both held open on macOS/Windows smoke
verification (CI is linux-only)
Built the cross-platform Smoke workflow (macOS arm64 + Windows
amd64): download ddl release binary → ddl install turu →
PATH + status/doctor detection; workflow_dispatch (+build_from_source
for iteration) + release trigger; PRs #1–#3 with extraction fixes (chmod
on macOS tar.gz, Expand-Archive needs .zip ext)
Released v0.4.0 (first release with turu manifest entry + DDL-ei3
chain); smoke immediately caught 2 real product bugs: DDL-2rb
(unauthenticated GitHub API 403 rate limit on shared runner IPs →
github_client() with GITHUB_TOKEN/GH_TOKEN Bearer support + distinct 403
error, PR #4) and DDL-71i (Windows os error 33)
DDL-71i root cause (found by code reading after 3 blind fix
attempts, per failure-persistence stop rule): Manifest::save reopened
manifest.json while the record path held it under fs2 lock_exclusive —
Windows LockFileEx byte-range locks block SAME-PROCESS handles,
deterministic ERROR_LOCK_VIOLATION on every Windows install; Unix locks
never block same-process writes so Linux CI never saw it. Fixed with
single-handle read-modify-write (read_manifest_from/write_manifest_to,
Manifest::parse empty-file handling; PRs #5/#8/#9)
Also fixed: smoke assertion false-positive (turu's own doctor JSON
contains "pack not installed"), GITHUB_TOKEN not auto-exposed as env var
(PR #10), test hardcoded ddl_version missed by v0.4.0 bump
Both smoke runners green (runs 35028164994,
35034184442): DDL-9c2, DDL-ei3, DDL-2rb, DDL-71i all closed; 3-platform
gate satisfied
Released v0.5.0 (carries the fixes; binaries + crates.io published);
openspec simplify-install-chain archived (bootstrap spec updated,
validate --specs --strict 5/5)
Known limitation discovered: release-published smoke trigger can't
fire for workflow-created releases (GITHUB_TOKEN recursion suppression)
— dispatch manually or switch release workflow to a PAT
Process miss to own: one commit (DDL-71i retry 2/2) landed directly
on main via push — was caught, CI verified, subsequent work strictly
branch+PR
Next: set TAP_GITHUB_TOKEN secret + re-run
tap/scoop updates (DDL-2um); optional PAT for release workflow to
re-enable release-triggered smoke; turu smoke asset naming stays
binary-first everywhere
Ran full skill-library audit against the microdancing workshop
corpus practices (Rule-of-5 reviewed the audit itself; caught my own
false positive on eval-field consumption — analyze-traces.js DOES read
it passively), then filed and executed the follow-ups
Shipped just security-audit (8am): 245-file corpus scan
for supply-chain risk patterns, wired into sync-manifest; advisory
filter evidence-tuned, negative-tested (3 injected risk classes
detected)
Built active skill-eval harness (env):
just skill-eval <name> — 2 runs × (actor + judge) pi
sessions, judge blind to the skill (anti reward-hacking); rubrics +
fixtures for all 7 essentials; rerun-on-model-change ritual in README
release section + CONTRIBUTING
Harness caught 2 genuine skill deficiencies on first runs: issues
actor sliced 6 horizontal layer tickets despite guidance (e5v →
create-issues 1.4.1 hard title lint) and grill-me bundled questions per
turn (tth → 1.0.1 hard one-question rule); both evals now green (issues
2/2, grill-me 3/3 consecutive)
Harness bug found and fixed: maxdepth-1 flatten silently dropped
multi-file router members — actors ran on thin mode tables only; flatten
now recursive
rbn: 32 trigger clauses added to descriptions (delta +242 words vs
320 budget, baseline captured first); new sync-manifest gate
scripts/trigger-overlap.py fails on clause-less descriptions or ≥2-token
clause overlaps without "only when" boundary
Released v0.10.0 (8pv; minor not patch — scope grew): CI publish +
Pages green, tarball verified via npm pack, reinstalled pi + npx copies,
post-release skill-eval commit PASS 2/2
Deviations/gotchas: pre-push skills-dir gate blocks pushes after any
manifest change → regenerate first (hit twice); bd close has no
--append-notes (use --reason-file); npm version needs clean tree (.pi/
and .claude/skills/ gitignored, bd hooks regen committed)
Next: 1r7 decision (needs user input: suppress
member standalones vs dual-path vs document overlap); collect ajp
evidence from live sessions; 0tf/22y low-risk fixes
Evaluated dont-bpuo (suite-wide vs repo-local epistemic
gate) with real evidence before deciding: ran dont check
across all 8 suite repos — vacuous pass on empty stores (pretender "all
claims grounded", 12K db), exit 1 on uninitialized repos
(wai/crua/livin); only testaruda/vampiro have real claim corpora; ah
signals reads .dont/events/*.json repo-locally by
mechanism; dont's own gate actually runs at pre-commit, not pre-push
(ticket premise corrected)
Decision: gate is repo-local and opt-in —
suite-wide wiring rejected (vacuous gate = enforcement theater;
hard-fails uninitialized repos; contradicts permissive-by-default
design). ADR added to docs/enforcement.md with 3-step
adoption ladder
Dogfooded through dont itself: dont ground → claim
01M2KQ8BQYPY5G71XYSHJS55HV verified, evidence anchored to
ADR (dont-grill pack still not installed — dont-k4rr; ran self-check
inline)
Follow-ups filed: testaruda-zvbw +
vampiro-bf6 (wire gate where real corpora exist),
dont-d8jf (DX: distinguish vacuous pass from grounded
pass)
PR #2 squash-merged to main (5ef52cb), feature branch
deleted local+remote, just check-claims + pre-commit hooks
green, beads dolt pushed, dont-bpuo closed
Next: review CLI-CONSISTENCY in_progress trio
(dont-wf5/rxs/p0ow, from a prior session); testaruda/vampiro wiring
chores unblocked; dont-72gk (tracked db.cozo) still the only dirty-state
item