Four task branches are green and unmerged, nothing is pushed, and three plan
bugs plus three agent mistakes were fixed along the way. Written so the next
session can pick up without re-deriving any of it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The launcher read the agent out of each brief with [a-z-]*, which cannot match
content-i18n-migrator. Tasks 04, 05 and 06 silently fell back to
astro-architect. Now also fails loudly if the name is missing or has no agent
definition, rather than launching the wrong specialist.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The first lockfile was reconstructed from a node_modules tree installed with
--package-lock=false, so its entries carried no resolved or integrity fields
and npm ci could not fetch from it. Regenerated from a clean install.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Standard conventional type, and its absence rejected a legitimate lockfile
commit during task 01.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The scaffold shipped with installs pinned to --package-lock=false, on a
misreading of AGENTS.md that has since been corrected. npm ci needs this file,
and npm ci is how every task worktree spins up.
Also adds 'build' to the commit-msg type list; it is a standard conventional
type and its absence rejected this very commit.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
AGENTS.md listed package-lock.json under 'Never touch', meaning never
hand-edit. Task 01's agent read it as never create, and shipped the scaffold
with no lockfile and installs pinned to --package-lock=false. That breaks the
parallel worktree setup outright: worktree.sh and launch.sh both spin up with
npm ci, which requires a lockfile.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The pre-existing root package.json has two scripts and no dependencies, and
there is no package-lock.json until task 01 scaffolds Astro, so every launch
died on `npm ci` before reaching the agent.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Routes each task to its CLI per MODEL-ROUTING.md (Codex for 01/03/15/16/19,
Gemini for 02/18, MiniMax for the rest), creates the worktree, installs the
toolchain once task 01 has produced a package.json, and runs the agent headless
with permission prompts disabled — these run unattended, and a blocked edit
would just hang.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds the agent-facing workspace and a 20-task plan for migrating the site
to Astro. Nothing here implements the refactor; these are briefs, rules and
templates that the task agents read.
- .agents/ holds context, rules, checklists, skills, specialist agents,
component/page/config templates and gate scripts. It is vendor-neutral so
MiniMax, Gemini and Codex can all read it; CLAUDE.md just points at
AGENTS.md.
- .husky/ plus .lintstagedrc.json wire the three gate tiers. gate.sh locks on
the shared git-common-dir so parallel worktrees serialise, and guards the
assertion count in scripts/verify.mjs against a coverage drop.
- plans/astro-refactor/ carries the phase graph, per-task briefs and the
model-routing recommendation.
These files must be tracked before fanning out: a worktree only checks out
tracked files, so an untracked plan is invisible to every agent working in one.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`merge --ff-only main` cannot work: the histories diverged some time ago, so
the step fails with `Not possible to fast-forward` and the publish stalls.
Document the normal merge the branch's own history already uses, the stale
local `pages` fast-forward that has to happen first, the take-main-wholesale
conflict resolution, and the tree-equality check that is the real invariant.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The skills-review desk is static, so "which draft would you ship?" needs a
stateful counterpart. vote-service is a small Go API on its own pod backed by
a JSON file on a ReadWriteOnce PVC, with one active vote per skill per source
IP as the anti-abuse rule and CORS (ALLOWED_ORIGIN) as the caller boundary.
Deployment notes that differ from the obvious path, all confirmed against the
live cluster: the image is side-loaded with `ctr image import` plus
`imagePullPolicy: Never` because kubelet has no credentials for the Nexus ref;
the pod is pinned to `kubernets` because the hostpath PV takes a nodeAffinity
for whichever node first binds it; and public exposure is Caddy on the VPS,
not the cloudflared tunnel.
The ingress controller runs with `use-forwarded-headers` off, so nginx
overwrites X-Forwarded-For with its own peer — every visitor would collapse
into one voter and each skill would cap at one vote overall. Caddy stamps the
true remote address into X-Client-IP, which nginx forwards untouched, and
clientIP() reads that first. Scoped to this app rather than flipping the
global flag, which would change client-IP handling for every other ingress.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Add 'Source on Gitea' link next to every 'Open the X lab' link,
pointing to https://git.marcospaulo.dev.br/netcracker/ai-for-dummies/...
- Same download links added to both SilverBullet guides (Preview +
Source on Gitea) under Path A and Path B.
- Tighten standalone verify rule: only block external <script src> and
<link rel=stylesheet href>. Plain <a href=https://...> hyperlinks are
not runtime dependencies.
- Unslop pass across all deck text, SilverBullet EN/PT, hands-on/rules
header/label/README: kill triplets, dramatic single-word sentences,
'matrix below / looks good / cuts the opposite failure' rhetoric.
Header subtitle now reads 'Toggle rules. Same task, different
coverage.' (was 'different leash').
verify: all six checks pass.
- New section 'Verification' between hands-on and sources.
- Three evidence layers (static / behavior / integration), each with its
own exit-code-printing gate snippet.
- Four anti-pattern cards (pipe, swallow, cache, skip integration).
- 'Run it yourself' block links to /hands-on/starter and /hands-on/rules.
- Topnav gains 08 verify anchor.
- Companion SilverBullet pages (EN + PT) written under Guides/:
* 'AI For Dummies Verification and Evidence.md'
* 'AI For Dummies Verificação e Evidência.md'
- Both pages reference all 7 existing deck sections and the two labs.
Verify pass: content, interaction, and standalone for presentation, plus
the three rules-page checks.
- New hands-on/rules/ interactive page: five toggleable rule sources
(AGENTS.md, gate-discipline skill, Husky pre-commit, check-ui-contract
enforcer, commitlint) rebuild a ruled prompt live against a naive prompt.
- Visual system mirrors hands-on/starter (same palette, vanilla JS).
- index.html hands-on section now links both labs.
- docs/operations-guide.md gains a 'Hands-on rules lab' subsection.
- README project structure lists the new lab.
- verify.mjs passes content, interaction, and standalone checks for both labs.