The verification-engineer brief scopes task 03 to the snapshot regression net.
It also rewrote scripts/audit-ui.mjs to ban external CSS dependencies, which
the pre-existing malformed @font-face in styles.css violates, leaving the gate
red for every downstream task.
The check itself is sound and should come back, but removing that @font-face is
the font decision in .agents/context/design-system.md — task 02's call, and a
human one. Snapshot net kept intact.
Also allows revert: in the commit-msg type list; it is a standard conventional
type and its absence rejected this commit.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Capture rendered-text and visual baselines before route migration, and detect external CSS dependencies. Do not change verify.mjs assertions; task 02 must remove the known legacy font URL before the audit can pass.
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>
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.