Diagnosed the router-consolidation (incitaciones-oyz) breakage:
rule-of-5-universal had no usable URL (manifest pointed at a "moved"
stub; llms.txt/index.html linked the router-architecture essay);
site/build.sh single-level reference glob silently dropped nested router
members from review-unified.md + llms-full.txt; installed pointer skill
instructed reading a relative path that doesn't exist on disk
(live-triggered)
Ran the recovered rule-of-5-universal skill on fix proposals A/B/C →
converged on compiled-pointers doctrine: a pointer is a
permanent build artifact (provenance banner + full member content),
compiled from the router member dir into every surface;
disable_model_invocation already makes it zero-cost always-on, so
deletion (mtw) was pointless anyway
Implemented (7 commits, issue 06i): scripts/lib/compile.mjs +
compile-pointers.mjs CLI (single compiler for site, npm/pi, skills
catalog, flat installs); manifest pointer_for on all 8 pointers; site
build generates {member}-unified.md per router member + compiled pointer
pages + recursive unified docs/llms-full + title links to content not
source; pi-resources/skills-dir ship self-contained installed pointers;
sync-manifest pointer_for gate; AGENTS.md policy: pointers permanent,
never deleted (closes mtw); review skill-eval 2/2
Fixed validate-distilled no-op (issue 4ah): functions ran in
command-substitution subshells so ERRORS/WARNINGS increments were
discarded — gate always exited 0; now global ISSUES + recursive
reference scan; stripped drifting frontmatter from
doc-link-verifier/whisper SKILL.md (manifest is single metadata source);
gate proven to fail on injected violation
Released v0.10.1 via GHA (npm-publish.yml on tag; pages.yml on
main): CHANGELOG finalized, npm version patch, catalog regen (npm
version bumps installed-version → freshness gate tripped →
regen+re-tag), both workflows green, npm latest=0.10.1, live site serves
compiled pointer URLs
Misc: accidentally bd-closed 0tf with a scripted head -1 grab —
reopened immediately, closed 4ah instead; pi-package/ is locally
git-excluded (regenerated by CI on tag)
Next: file/automate a just release
recipe (changelog → npm version → catalog regen → re-tag → push) so the
version-embeds-freshness chicken-and-egg is scripted once; 3 open P2s
(1r7 install-layer policy, 22y lefthook link false-positives, ajp
trigger monitoring) + reopened 0tf remain
Diagnosed the user-reported install failure:
npm install incitaciones (incl.
pi install npm:incitaciones) died in postinstall with
ERR_MODULE_NOT_FOUND — package.json files omitted
scripts/lib/, so the published tarball lacked
compile.mjs which generate-pi-resources.mjs
imports; every install of 0.10.1 was broken
Fixed by adding scripts/lib/ to files
(c6131e4, issue kbk filed+closed P0); verified fix by packing the
tarball locally and running the postinstall against it (47 prompts
generated) before releasing
Released v0.10.2: CHANGELOG entry,
npm version patch --no-git-tag-version (footgun — no tag
created; had to git tag manually after noticing
push --tags was a no-op), pre-push hook blocked on stale
skills/ catalog → just generate-skills-dir + commit
(20984da), CI publish green, registry serves 0.10.2
End-to-end verified: reinstalled to ~/.pi/agent/npm,
compile.mjs ships, 47 skills generated; npm 26 blocks lifecycle scripts
pending npm install-scripts approve (benign here —
pi-package/ ships pre-built in the tarball)
Misc: bd close must run from the repo root (fails outside
workspace); first fix commit rode along the staged beads export —
harmless
Next: still open: 1r7 install-layer policy, 22y
lefthook link false-positives, ajp trigger monitoring, reopened 0tf, and
the just release recipe idea (0tf-adjacent; this session
re-hit the chicken-and-egg)
Extracted both microdancing analysis branches into standalone repos,
history preserved via git-filter-repo in temp clones
(source untouched), force-pushed over the empty initial commits:
coffe ← data/datos-uso-ia (tip
09c063e): 12 commits; scripts/usage-tracker.py +
viz-gantt.py + data/ outputs;
data/TRACKING.md renamed to README.md; blog
drafts deliberately left in microdancing
tv ← data/conference-analysis (tip
52e59b1): 7 commits; conference-analysis/ promoted to repo
root (398 files: spec, sealed hypotheses, playlists, transcripts,
reports)
Decision: beads runs in plain-JSONL mode (like dont/wai
track it) after bd dolt push to git+ssh remotes
kept failing: wai's own remote ref refs/dolt/data is
diverged (no common ancestor), and a fresh push died in the
git-remote-cache machinery (git rev-parse
fatal "must be run in a work tree", URL user dropped); config
no-db: true → .beads/issues.jsonl is source of
truth; git tracks only config.yaml +
issues.jsonl (negations in root .gitignore against global
~/.gitignore.beads/ rule), local
embeddeddolt/ stays untracked — brief mistake deleting it
broke bd; restored via bd init --from-jsonl with issues
intact
dolt debugging trail (context for future): cv SSH alias
lives in ~/.ssh/profiles/ (Include) → dolt's embedded git
resolved it, but custom GIT_SSH_COMMAND overrides
broke/hung pushes; wai has the exact git+ssh://git@cv/...
remote format that once worked
All pushed: coffe (eb3c877, d3ae449) and tv (409647d3→b6fd781) up to
date with origin
Next: wai's dolt remote still diverged — needs
bd bootstrap someday; otherwise repos ready: extend
usage-tracker (config/CLI) and reuse conference-analysis pipeline for
new corpora
Resumed talleres via /renew; identified the four queued user
decisions from batch-b. 91–93 PyME Digital Operations Track:
parked (valuable but outside Phorma expertise) — distilled the
evaluation into design principles #18–20 (expertise
boundary on content not audience; evidence/expertise/home gate for new
audiences+categories with two-tier demand: market data→shell max, client
opportunity→design investment; parked decisions need a recorded
tripwire). New Parked section in catalog.md preserving
the option-(b) skeleton + CEPE anchors + tripwire (first 71/75 LatAm
deliveries or acquired PyME-ops expertise). Commit 37050ce
Rule-of-5 review of the principles proposal before committing:
caught 4 HIGH issues (decide-to-build waiver loophole,
audience-vs-content boundary conflation that would delegitimize category
7, no inbound-demand path, undefined tripwire home) → revised to 3
merged principles; converged stage 4
CABA analysis DONE per the scheduled 4-step plan
(caba-analysis-2026-09-18.md, commit 1718e57): live spot-checks — 4
exact verifications (UADE 3,840,376 total confirmed arithmetically,
UCEMA 3×320,000, UBA Sociales 595,584/714,701, UBA FCE n8n/agéntica
diploma page) + 1 DEAD primary URL (UBA FCE posgrado diploma —
press-corroboration hedged, articles unopened) + 1 blocked (Tarifar
429); framing audit („decisively shifted"/„highest volume"/„thousands" =
tool gloss, no numbers); segment mapping — scientific AI segment
(1/3/5/6, 81–83) = empty field, university diplomas contest 7x with
credentials, CAME-UTN free supply confirms 91–93 park, councils =
channel archetype not market
Launch shortlist for Sasha's decision: 83 → 81 → 51 → 21 →
31 with per-rung readiness (designing = outreach-ready; shell =
interest-registration only, never delivery promises); first-channel rec
= CONICET direct (zero incumbent); §8 gap tripwire (re-run null search
per push/quarterly); pricing = derived observation only, decisions →
delivery playbook
Second Rule-of-5 pass on the analysis note (converged stage 4):
fixed readiness rungs, pricing-band self-contradiction, missing gap
tripwire, unverified press claim
Pushed: talleres main 27aaeaf..1718e57 (2 commits, pre-push
one-pager gate green)
Next: Sasha calls on §7 decisions (shortlist
approval, design-vs-outreach sequencing — rec: outreach first, channel =
CONICET, in-company pricing, 71/72 CABA sequencing); then
bioimage/pathology deep-research prompt run + intake per 15:3x plan;
open: verify-before-use list (Microsoft eval-faq, MCP SEP versions,
Inzlicht) before any C-6/C-9/C-15 adoption