++ dirname ./run.sh
+ cd .
+ echo 1128
+ echo '2.0-SNAPSHOT BUILD'
2.0-SNAPSHOT BUILD
+ date
Tue Jun 30 07:31:02 UTC 2026
+ uptime
07:31:02 up 1 min, 0 users, load average: 2.51, 0.69, 0.24
+ head=git@github.com:yegor256/dogent.git
+ ff=default
+ image=yegor256/ruby
+ rebase=false
+ squash=false
+ head_branch=master
+ author=yegor256
+ tag=0.13.2
+ vars=('--env=head=git@github.com:yegor256/dogent.git' '--env=tag=0.13.2' '--env=scripts=( '\''export '\''\'\'''\''head=git@github.com:yegor256/dogent.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''tag=0.13.2'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head_branch=master'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''author=yegor256'\''\'\'''\'''\'' '\'';'\'' '\''sudo /usr/bin/install-node.sh'\'' '\'';'\'' '\''npm install --no-color'\'' '\'';'\'' '\''pdd -f /dev/null -v'\'' '\'';'\'' '\''[[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1'\'' '\'';'\'' '\''sed -i "s/0\.0\.0/${tag}/" package.json'\'' '\'';'\'' '\''sed -i "s/0\.0\.0/${tag}/" src/version.js'\'' '\'';'\'' '\''npm test --no-color'\'' '\'';'\'' '\''git commit -am "set version to ${tag}"'\'' '\'';'\'' '\''chmod 600 ../npmrc'\'' '\'';'\'' '\''npm publish --access=public --no-color --userconfig=../npmrc'\'' '\'';'\'' )' '--env=head_branch=master' '--env=author=yegor256')
+ scripts=('export '\''head=git@github.com:yegor256/dogent.git'\''' ';' 'export '\''tag=0.13.2'\''' ';' 'export '\''head_branch=master'\''' ';' 'export '\''author=yegor256'\''' ';' 'sudo /usr/bin/install-node.sh' ';' 'npm install --no-color' ';' 'pdd -f /dev/null -v' ';' '[[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1' ';' 'sed -i "s/0\.0\.0/${tag}/" package.json' ';' 'sed -i "s/0\.0\.0/${tag}/" src/version.js' ';' 'npm test --no-color' ';' 'git commit -am "set version to ${tag}"' ';' 'chmod 600 ../npmrc' ';' 'npm publish --access=public --no-color --userconfig=../npmrc' ';')
+ directory=
+ container=yegor256_dogent_301
+ as_root=false
+ set -e -o pipefail
+ hostname
ip-172-31-30-240
+ pwd
/tmp/rultor-xKjZ
+ git --version
git version 2.34.1
+ docker --version
Docker version 25.0.3, build 4debf41
+ mkdir -p /home/ubuntu/.ssh
+ echo -e 'Host github.com\n\tStrictHostKeyChecking no\n'
+ chmod 600 /home/ubuntu/.ssh/config
+ git clone --recurse-submodules git@github.com:yegor256/dogent.git repo
Cloning into 'repo'...
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
+ cd repo
+ git config user.email gpg@rultor.com
+ git config user.name Rultor.com
+ '[' -z 'export '\''head=git@github.com:yegor256/dogent.git'\''' ']'
+ cd ..
+ cat
+ '[' false = true ']'
+ cat
+ chmod a+x entry.sh
+ cat
+ echo 'export '\''head=git@github.com:yegor256/dogent.git'\''' ';' 'export '\''tag=0.13.2'\''' ';' 'export '\''head_branch=master'\''' ';' 'export '\''author=yegor256'\''' ';' 'sudo /usr/bin/install-node.sh' ';' 'npm install --no-color' ';' 'pdd -f /dev/null -v' ';' '[[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1' ';' 'sed -i "s/0\.0\.0/${tag}/" package.json' ';' 'sed -i "s/0\.0\.0/${tag}/" src/version.js' ';' 'npm test --no-color' ';' 'git commit -am "set version to ${tag}"' ';' 'chmod 600 ../npmrc' ';' 'npm publish --access=public --no-color --userconfig=../npmrc' ';'
+ sensitive=()
+ set -ex -o pipefail
+ '[' -z 0.13.2 ']'
+ [[ 0.13.2 =~ ^[a-zA-Z0-9\.\-]+$ ]]
+ echo 'tag name is valid: "0.13.2"'
tag name is valid: "0.13.2"
+ cd repo
++ git tag -l 0.13.2
+ '[' -n '' ']'
+ BRANCH_NAME=__rultor
++ wc -l
++ git show-branch __rultor
+ '[' 0 -gt 0 ']'
+ export BRANCH_NAME
+ git checkout -b __rultor
Switched to a new branch '__rultor'
+ docker_when_possible
+ true
++ tail -n 1
++ sed 's/ /\n/g'
++ uptime
+ load=0.26
++ bc
++ echo 0.26 '>' 30
+ '[' 0 -eq 1 ']'
+ echo 'load average is 0.26, low enough to run a new Docker container'
load average is 0.26, low enough to run a new Docker container
+ break
+ cd ..
+ '[' -n '' ']'
+ use_image=yegor256/ruby
+ docker pull yegor256/ruby
Using default tag: latest
latest: Pulling from yegor256/ruby
cb259a83ac3d: Pulling fs layer
4f4fb700ef54: Pulling fs layer
50778be6ae7c: Pulling fs layer
de39015cb2a0: Pulling fs layer
c5d1f12c356a: Pulling fs layer
e9b75b04736a: Pulling fs layer
74aacb7acb4e: Pulling fs layer
b343964c14ed: Pulling fs layer
2da5d65999c3: Pulling fs layer
de39015cb2a0: Waiting
c5d1f12c356a: Waiting
e9b75b04736a: Waiting
74aacb7acb4e: Waiting
b343964c14ed: Waiting
2da5d65999c3: Waiting
4f4fb700ef54: Verifying Checksum
4f4fb700ef54: Download complete
50778be6ae7c: Verifying Checksum
50778be6ae7c: Download complete
cb259a83ac3d: Verifying Checksum
cb259a83ac3d: Download complete
e9b75b04736a: Verifying Checksum
e9b75b04736a: Download complete
74aacb7acb4e: Verifying Checksum
74aacb7acb4e: Download complete
c5d1f12c356a: Verifying Checksum
c5d1f12c356a: Download complete
2da5d65999c3: Verifying Checksum
2da5d65999c3: Download complete
b343964c14ed: Verifying Checksum
b343964c14ed: Download complete
de39015cb2a0: Verifying Checksum
de39015cb2a0: Download complete
cb259a83ac3d: Pull complete
4f4fb700ef54: Pull complete
50778be6ae7c: Pull complete
de39015cb2a0: Pull complete
c5d1f12c356a: Pull complete
e9b75b04736a: Pull complete
74aacb7acb4e: Pull complete
b343964c14ed: Pull complete
2da5d65999c3: Pull complete
Digest: sha256:1e3d8ad5ebf9fd2b323717b6b1213e233d033d7dec9eaac9d19bf72b6e5caaf7
Status: Downloaded newer image for yegor256/ruby:latest
docker.io/yegor256/ruby:latest
+ docker ps --filter=status=exited
+ grep --quiet '\syegor256_dogent_301\s*$'
+ ls -al .
total 48
drwx------ 3 ubuntu ubuntu 4096 Jun 30 07:31 .
drwxrwxrwt 12 root root 4096 Jun 30 07:31 ..
-rwxrwxr-x 1 ubuntu ubuntu 666 Jun 30 07:31 end.sh
-rwxrwxr-x 1 ubuntu ubuntu 498 Jun 30 07:31 entry.sh
-rw-rw-r-- 1 ubuntu ubuntu 74 Jun 30 07:30 npmrc
-rw-rw-r-- 1 ubuntu ubuntu 5 Jun 30 07:31 pid
drwxrwxr-x 8 ubuntu ubuntu 4096 Jun 30 07:31 repo
-rwxrwxr-x 1 ubuntu ubuntu 6573 Jun 30 07:30 run.sh
-rw-rw-r-- 1 ubuntu ubuntu 685 Jun 30 07:31 script.sh
-rw-rw-r-- 1 ubuntu ubuntu 5519 Jun 30 07:31 stdout
++ pwd
++ pwd
+ docker run -t --rm -v /tmp/rultor-xKjZ:/main --env=head=git@github.com:yegor256/dogent.git --env=tag=0.13.2 '--env=scripts=( '\''export '\''\'\'''\''head=git@github.com:yegor256/dogent.git'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''tag=0.13.2'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''head_branch=master'\''\'\'''\'''\'' '\'';'\'' '\''export '\''\'\'''\''author=yegor256'\''\'\'''\'''\'' '\'';'\'' '\''sudo /usr/bin/install-node.sh'\'' '\'';'\'' '\''npm install --no-color'\'' '\'';'\'' '\''pdd -f /dev/null -v'\'' '\'';'\'' '\''[[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1'\'' '\'';'\'' '\''sed -i "s/0\.0\.0/${tag}/" package.json'\'' '\'';'\'' '\''sed -i "s/0\.0\.0/${tag}/" src/version.js'\'' '\'';'\'' '\''npm test --no-color'\'' '\'';'\'' '\''git commit -am "set version to ${tag}"'\'' '\'';'\'' '\''chmod 600 ../npmrc'\'' '\'';'\'' '\''npm publish --access=public --no-color --userconfig=../npmrc'\'' '\'';'\'' )' --env=head_branch=master --env=author=yegor256 --hostname=docker --privileged --net=host --dns 8.8.8.8 --add-host docker:127.0.0.1 --memory=8g --memory-swap=16g --oom-kill-disable --cidfile=/tmp/rultor-xKjZ/cid -w=/main -v /var/run/docker.sock:/var/run/docker.sock --name=yegor256_dogent_301 yegor256/ruby /main/entry.sh
WARNING: Your kernel does not support OomKillDisable. OomKillDisable discarded.
+ set -e
+ set -o pipefail
+ shopt -s dotglob
+ useradd -m -G sudo r
++ awk -F : '$3 > 100 { print $1 }'
++ cat /etc/group
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G nogroup r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G ubuntu r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G systemd-journal r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G systemd-network r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G messagebus r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G _ssh r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G polkitd r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G ssh r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G docker r
+ for g in $(cat /etc/group | awk -F ':' '$3 > 100 { print $1 }')
+ usermod -a -G r r
+ usermod -s /bin/bash r
+ echo '%sudo ALL=(ALL) NOPASSWD:ALL'
+ cp -R /root/.bashrc /root/.cache /root/.gemrc /root/.profile /root/.ssh /home/r
+ cp -R ./cid ./end.sh ./entry.sh ./npmrc ./pid ./repo ./run.sh ./script.sh ./stdout /home/r
+ rm -rf repo
+ chown -R r:r /home/r
+ chmod a+x /home/r/script.sh
+ cat /home/r/script.sh
#!/usr/bin/env bash
set -e
set -o pipefail
if [ -e /home/r/.profile ]; then source /home/r/.profile; fi
shopt -s expand_aliases
alias 'sudo=sudo -i'
export HOME=/home/r
cd "${HOME}/repo"
export 'head=git@github.com:yegor256/dogent.git' ; export 'tag=0.13.2' ; export 'head_branch=master' ; export 'author=yegor256' ; sudo /usr/bin/install-node.sh ; npm install --no-color ; pdd -f /dev/null -v ; [[ "${tag}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit -1 ; sed -i "s/0\.0\.0/${tag}/" package.json ; sed -i "s/0\.0\.0/${tag}/" src/version.js ; npm test --no-color ; git commit -am "set version to ${tag}" ; chmod 600 ../npmrc ; npm publish --access=public --no-color --userconfig=../npmrc ;
+ su --login r --command /home/r/script.sh
+ bash
+ curl -fsSL https://deb.nodesource.com/setup_18.x
1;31m2026-06-30 07:31:45 -
===============================================================================
DEPRECATION WARNING
===============================================================================
Node.js 18.x is no longer actively supported!
You will not receive security or critical stability updates for this version.
You should migrate to a supported version of Node.js as soon as possible.
Please see https://nodesource.com/products/distributions for details about which
version may be appropriate for you.
The NodeSource Node.js distributions site contains
information both about supported versions of Node.js and N|Solid supported Linux
distributions. To learn more about usage, see:
https://nodesource.com/products/distributions
===============================================================================
Continuing in 10 seconds ...
0m
38;5;79m2026-06-30 07:31:55 - Installing pre-requisites0m
Get:1ohttp://archive.ubuntu.com/ubuntu noble InRelease [256 kB]
Get:2ohttp://security.ubuntu.com/ubuntu3noble-security1InReleasee[1261kB]/256 k0m
Get:3ohttps://download.docker.com/linux/ubuntu0noble InReleasea[48.56kB]/2566kB0m33m
Get:4 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]
Get:5 http://archive.ubuntu.com/ubuntu noble-backports InRelease [126 kB]
Get:6ohttp://security.ubuntu.com/ubuntu noble-security/main amd64 Packages [976 kB]
Get:7ohttp://security.ubuntu.com/ubuntuhnoble-security/multiverse amd64 Packages [43.8 kB]
Get:8 http://security.ubuntu.com/ubuntuhnoble-security/universemamd64 Packages [1,487 kB]
Get:9 http://security.ubuntu.com/ubuntu2noble-security/restricted amd64 Packages [1,339 kB]
Get:10Phttps://download.docker.com/linux/ubuntu noble/stable amd64 Packages [71.2 kB]
Get:11Phttp://archive.ubuntu.com/ubuntu4noble/restricted8amd643Packages [117 kB]
Get:12ihttp://archive.ubuntu.com/ubuntu0noble/universemamd64 Packages [19.3 MB]
Get:13 http://archive.ubuntu.com/ubuntu3noble/main9amd640Packages [1,808 kB]
Get:14 http://archive.ubuntu.com/ubuntu3noble/multiverse amd643Packages [331 kB]
Get:15 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [2,108 kB]
Get:162http://archive.ubuntu.com/ubuntusnoble-updates/main3amd64mPackages [1,296 kB]
Get:172http://archive.ubuntu.com/ubuntusnoble-updates/restricted amd64 Packages [1,412 kB]
Get:182http://archive.ubuntu.com/ubuntusnoble-updates/multiverse amd64 Packages [49.5 kB]
Get:192http://archive.ubuntu.com/ubuntusnoble-backports/universe amd64 Packages [35.9 kB]
Get:202http://archive.ubuntu.com/ubuntusnoble-backports/multiverse amd64 Packages [671 B]
Get:212http://archive.ubuntu.com/ubuntusnoble-backports/main amd64 Packages [48.9 kB]
Fetchedo31.1gMBmint3se(10.10MB/s)ackages 0 B/48.9 kB 0%]0m33m
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
15 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
ca-certificates is already the newest version (20260601~24.04.1).
curl is already the newest version (8.5.0-2ubuntu10.9).
gnupg is already the newest version (2.4.4-2ubuntu17.4).
gnupg set to manually installed.
The following NEW packages will be installed:
apt-transport-https
0 upgraded, 1 newly installed, 0 to remove and 15 not upgraded.
Need to get 3,970 B of archives.
After this operation, 36.9 kB of additional disk space will be used.
Get:1ohttp://archive.ubuntu.com/ubuntu noble-updates/universe amd64 apt-transport-https all 2.8.3 [3,970 B]
Fetchedo3,970]Bmint0st(1170kB/s)970 B 0%]0m33m
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package apt-transport-https.
(Reading database ... 20501 files and directories currently installed.)
Preparing to unpack .../apt-transport-https_2.8.3_all.deb ...
Unpacking apt-transport-https (2.8.3) ...
Setting up apt-transport-https (2.8.3) ...
Hit:1ohttp://archive.ubuntu.com/ubuntu noble InRelease
Hit:2ohttp://archive.ubuntu.com/ubuntu1noble-updates]InReleaseed to deb.nodesou0m
Hit:3ahttps://download.docker.com/linux/ubuntu nobleiInReleaseaders] [Connectin0m
Hit:4ahttp://archive.ubuntu.com/ubuntuhnoble-backportstInReleasecurity.ubuntu.c0m
Get:5ahttps://deb.nodesource.com/node_18.xcnodistrouInReleasem[12.1 kB]
Hit:6ohttp://security.ubuntu.com/ubuntumnoble-security InRelease
Get:7ohttps://deb.nodesource.com/node_18.x nodistro/main amd64 Packages [12.1 kB]
Fetchedo24.2gkBminr0s0(54.63kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
15 packages can be upgraded. Run 'apt list --upgradable' to see them.
1;34m2026-06-30 07:32:06 - Repository configured successfully.0m
38;5;79m2026-06-30 07:32:06 - To install Node.js, run: apt install nodejs -y0m
38;5;79m2026-06-30 07:32:06 - You can use N|solid Runtime as a node.js alternative0m
1;32m2026-06-30 07:32:06 - To install N|solid Runtime, run: apt install nsolid -y
0m
+ apt-get install --yes nodejs
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
nodejs
0 upgraded, 1 newly installed, 0 to remove and 15 not upgraded.
Need to get 29.7 MB of archives.
After this operation, 187 MB of additional disk space will be used.
Get:1ohttps://deb.nodesource.com/node_18.x nodistro/main amd64 nodejs amd64 18.20.8-1nodesource1 [29.7 MB]
Fetchedo29.7gMBBin91s (54.9]MB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package nodejs.
(Reading database ... 20505 files and directories currently installed.)
Preparing to unpack .../nodejs_18.20.8-1nodesource1_amd64.deb ...
Unpacking nodejs (18.20.8-1nodesource1) ...
Setting up nodejs (18.20.8-1nodesource1) ...
+ node --version
v18.20.8
+ npm --version
10.8.2
1G0K1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0Knpm warn deprecated glob@10.5.0: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K
added 162 packages, and audited 163 packages in 11s
1G0K⠸1G0K
1G0K⠸1G0K48 packages are looking for funding
1G0K⠸1G0K run `npm fund` for details
1G0K⠸1G0K
3 vulnerabilities (1 low, 1 moderate, 1 high)
To address all issues (including breaking changes), run:
npm audit fix --force
Run `npm audit` for details.
1G0K⠸1G0Knpm notice
npm notice New major version of npm available! 10.8.2 -> 11.18.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.18.0
npm notice To update run: npm install -g npm@11.18.0
npm notice
1G0K⠸1G0KFound 9 lines in /home/r/repo/.pdd
My version is 0.23.1
Ruby version is 3.4.9 at x86_64-linux
Reading from root dir .
Excluding node_modules/**/*
Excluding src/rules/unfinished.js
Excluding test/test_unfinished.js
Excluding src/rules/jargon.js
/usr/local/bundle/gems/pdd-0.23.1/lib/pdd/sources.rb:90: warning: undefining the allocator of T_DATA class FileMagic
/home/r/repo/.claude/settings.local.json is a binary file (70 bytes)
/home/r/repo/components.svg is a binary file (11957 bytes)
/home/r/repo/eslint.config.js is a binary file (4737 bytes)
/home/r/repo/package-lock.json is a binary file (73975 bytes)
/home/r/repo/package.json is a binary file (1103 bytes)
/home/r/repo/src/answer.js is a binary file (2401 bytes)
/home/r/repo/src/args.js is a binary file (3398 bytes)
/home/r/repo/src/defaults.js is a binary file (1490 bytes)
/home/r/repo/src/document.js is a binary file (744 bytes)
/home/r/repo/src/dogent.js is a binary file (5562 bytes)
/home/r/repo/src/fragments/bullets.js is a binary file (552 bytes)
/home/r/repo/src/fragments/frontmatter.js is a binary file (746 bytes)
/home/r/repo/src/fragments/header.js is a binary file (514 bytes)
/home/r/repo/src/fragments/prose.js is a binary file (450 bytes)
/home/r/repo/src/fragments/snippet.js is a binary file (466 bytes)
/home/r/repo/src/log.js is a binary file (1027 bytes)
/home/r/repo/src/markdown.js is a binary file (3144 bytes)
/home/r/repo/src/mask.js is a binary file (496 bytes)
/home/r/repo/src/openai.js is a binary file (1729 bytes)
/home/r/repo/src/oracle.js is a binary file (1438 bytes)
/home/r/repo/src/prompt.js is a binary file (4247 bytes)
/home/r/repo/src/quoted.js is a binary file (1108 bytes)
/home/r/repo/src/region.js is a binary file (716 bytes)
/home/r/repo/src/report.js is a binary file (2150 bytes)
/home/r/repo/src/rules/ambiguous-or.js is a binary file (1673 bytes)
/home/r/repo/src/rules/atomic.js is a binary file (1703 bytes)
/home/r/repo/src/rules/budget.js is a binary file (1239 bytes)
/home/r/repo/src/rules/command.js is a binary file (1570 bytes)
/home/r/repo/src/rules/concise.js is a binary file (1448 bytes)
/home/r/repo/src/rules/conditional.js is a binary file (1676 bytes)
/home/r/repo/src/rules/counter-example.js is a binary file (1688 bytes)
/home/r/repo/src/rules/crowded.js is a binary file (1721 bytes)
/home/r/repo/src/rules/dead-import.js is a binary file (3460 bytes)
/home/r/repo/src/rules/default.js is a binary file (1692 bytes)
/home/r/repo/src/rules/description-length.js is a binary file (1779 bytes)
/home/r/repo/src/rules/description-triggers.js is a binary file (1617 bytes)
/home/r/repo/src/rules/description-voice.js is a binary file (2091 bytes)
/home/r/repo/src/rules/done.js is a binary file (1338 bytes)
/home/r/repo/src/rules/duplicate-section.js is a binary file (1810 bytes)
/home/r/repo/src/rules/emoji.js is a binary file (1669 bytes)
/home/r/repo/src/rules/emphasis.js is a binary file (2384 bytes)
/home/r/repo/src/rules/empty.js is a binary file (1415 bytes)
/home/r/repo/src/rules/example.js is a binary file (1608 bytes)
/home/r/repo/src/rules/external-link.js is a binary file (2081 bytes)
/home/r/repo/src/rules/fence-language.js is a binary file (1415 bytes)
/home/r/repo/src/rules/format.js is a binary file (2059 bytes)
/home/r/repo/src/rules/frontmatter.js is a binary file (1959 bytes)
/home/r/repo/src/rules/grouped.js is a binary file (1278 bytes)
/home/r/repo/src/rules/hedging.js is a binary file (1514 bytes)
/home/r/repo/src/rules/hidden-char.js is a binary file (2423 bytes)
/home/r/repo/src/rules/homoglyph.js is a binary file (2316 bytes)
/home/r/repo/src/rules/index.js is a binary file (4058 bytes)
/home/r/repo/src/rules/inline-code.js is a binary file (2585 bytes)
/home/r/repo/src/rules/line-length.js is a binary file (1175 bytes)
/home/r/repo/src/rules/meta-reference.js is a binary file (1765 bytes)
/home/r/repo/src/rules/name-format.js is a binary file (1412 bytes)
/home/r/repo/src/rules/name-matches-dir.js is a binary file (1726 bytes)
/home/r/repo/src/rules/no-articles.js is a binary file (1278 bytes)
/home/r/repo/src/rules/ordered.js is a binary file (1592 bytes)
/home/r/repo/src/rules/passive.js is a binary file (1390 bytes)
/home/r/repo/src/rules/persona.js is a binary file (1576 bytes)
/home/r/repo/src/rules/placement.js is a binary file (1833 bytes)
/home/r/repo/src/rules/polite.js is a binary file (1501 bytes)
/home/r/repo/src/rules/positive.js is a binary file (1564 bytes)
/home/r/repo/src/rules/pseudo-heading.js is a binary file (1471 bytes)
/home/r/repo/src/rules/punctuation.js is a binary file (1694 bytes)
/home/r/repo/src/rules/quantifier.js is a binary file (2027 bytes)
/home/r/repo/src/rules/rationale.js is a binary file (1515 bytes)
/home/r/repo/src/rules/redundant.js is a binary file (2131 bytes)
/home/r/repo/src/rules/referential.js is a binary file (2164 bytes)
/home/r/repo/src/rules/section-level.js is a binary file (1359 bytes)
/home/r/repo/src/rules/self-contained.js is a binary file (1874 bytes)
/home/r/repo/src/rules/short-sections.js is a binary file (1249 bytes)
/home/r/repo/src/rules/simple.js is a binary file (2156 bytes)
/home/r/repo/src/rules/stale.js is a binary file (1700 bytes)
/home/r/repo/src/rules/terms.js is a binary file (2337 bytes)
/home/r/repo/src/rules/token-count.js is a binary file (1269 bytes)
/home/r/repo/src/rules/tool-clarity.js is a binary file (1647 bytes)
/home/r/repo/src/rules/transition.js is a binary file (1705 bytes)
/home/r/repo/src/rules/unique.js is a binary file (1682 bytes)
/home/r/repo/src/rules/units.js is a binary file (3688 bytes)
/home/r/repo/src/rules/untrusted.js is a binary file (2513 bytes)
/home/r/repo/src/rules/vague.js is a binary file (1970 bytes)
/home/r/repo/src/rules/weak-verb.js is a binary file (1747 bytes)
/home/r/repo/src/sources.js is a binary file (1456 bytes)
/home/r/repo/src/usage.js is a binary file (1617 bytes)
/home/r/repo/src/verdict.js is a binary file (883 bytes)
/home/r/repo/src/version.js is a binary file (334 bytes)
/home/r/repo/src/violation.js is a binary file (821 bytes)
/home/r/repo/src/yaml.js is a binary file (1461 bytes)
/home/r/repo/test/test_ambiguous_or.js is a binary file (1331 bytes)
/home/r/repo/test/test_answer.js is a binary file (3055 bytes)
/home/r/repo/test/test_args.js is a binary file (11059 bytes)
/home/r/repo/test/test_atomic.js is a binary file (3369 bytes)
/home/r/repo/test/test_budget.js is a binary file (1385 bytes)
/home/r/repo/test/test_command.js is a binary file (800 bytes)
/home/r/repo/test/test_concise.js is a binary file (1067 bytes)
/home/r/repo/test/test_conditional.js is a binary file (1442 bytes)
/home/r/repo/test/test_counter_example.js is a binary file (1566 bytes)
/home/r/repo/test/test_coverage.js is a binary file (5127 bytes)
/home/r/repo/test/test_crowded.js is a binary file (980 bytes)
/home/r/repo/test/test_dead_import.js is a binary file (3390 bytes)
/home/r/repo/test/test_default.js is a binary file (1428 bytes)
/home/r/repo/test/test_defaults.js is a binary file (2475 bytes)
/home/r/repo/test/test_description_length.js is a binary file (1595 bytes)
/home/r/repo/test/test_description_triggers.js is a binary file (1457 bytes)
/home/r/repo/test/test_description_voice.js is a binary file (1652 bytes)
/home/r/repo/test/test_dogent.js is a binary file (8972 bytes)
/home/r/repo/test/test_done.js is a binary file (1555 bytes)
/home/r/repo/test/test_duplicate_section.js is a binary file (1208 bytes)
/home/r/repo/test/test_emoji.js is a binary file (1051 bytes)
/home/r/repo/test/test_emphasis.js is a binary file (1601 bytes)
/home/r/repo/test/test_empty.js is a binary file (3110 bytes)
/home/r/repo/test/test_example.js is a binary file (1692 bytes)
/home/r/repo/test/test_external_link.js is a binary file (2411 bytes)
/home/r/repo/test/test_fence_language.js is a binary file (847 bytes)
/home/r/repo/test/test_fixtures.js is a binary file (1333 bytes)
/home/r/repo/test/test_format.js is a binary file (2162 bytes)
/home/r/repo/test/test_frontmatter.js is a binary file (1982 bytes)
/home/r/repo/test/test_grouped.js is a binary file (1177 bytes)
/home/r/repo/test/test_hedging.js is a binary file (1448 bytes)
/home/r/repo/test/test_hidden_char.js is a binary file (1664 bytes)
/home/r/repo/test/test_hints.js is a binary file (893 bytes)
/home/r/repo/test/test_homoglyph.js is a binary file (1150 bytes)
/home/r/repo/test/test_inline_code.js is a binary file (2270 bytes)
/home/r/repo/test/test_jargon.js is a binary file (3474 bytes)
/home/r/repo/test/test_line_length.js is a binary file (1190 bytes)
/home/r/repo/test/test_log.js is a binary file (2220 bytes)
/home/r/repo/test/test_markdown.js is a binary file (4049 bytes)
/home/r/repo/test/test_mask.js is a binary file (827 bytes)
/home/r/repo/test/test_meta_reference.js is a binary file (1723 bytes)
/home/r/repo/test/test_name_format.js is a binary file (1292 bytes)
/home/r/repo/test/test_name_matches_dir.js is a binary file (2241 bytes)
/home/r/repo/test/test_no_articles.js is a binary file (1460 bytes)
/home/r/repo/test/test_openai.js is a binary file (2980 bytes)
/home/r/repo/test/test_oracle.js is a binary file (3190 bytes)
/home/r/repo/test/test_ordered.js is a binary file (1640 bytes)
/home/r/repo/test/test_passive.js is a binary file (1424 bytes)
/home/r/repo/test/test_persona.js is a binary file (1606 bytes)
/home/r/repo/test/test_placement.js is a binary file (1686 bytes)
/home/r/repo/test/test_polite.js is a binary file (1409 bytes)
/home/r/repo/test/test_positive.js is a binary file (2202 bytes)
/home/r/repo/test/test_prompt.js is a binary file (3533 bytes)
/home/r/repo/test/test_pseudo_heading.js is a binary file (1451 bytes)
/home/r/repo/test/test_punctuation.js is a binary file (1663 bytes)
/home/r/repo/test/test_quantifier.js is a binary file (1996 bytes)
/home/r/repo/test/test_quoted.js is a binary file (693 bytes)
/home/r/repo/test/test_rationale.js is a binary file (1735 bytes)
/home/r/repo/test/test_redundant.js is a binary file (1497 bytes)
/home/r/repo/test/test_referential.js is a binary file (1663 bytes)
/home/r/repo/test/test_report.js is a binary file (3785 bytes)
/home/r/repo/test/test_rules.js is a binary file (442 bytes)
/home/r/repo/test/test_section_level.js is a binary file (1397 bytes)
/home/r/repo/test/test_self_contained.js is a binary file (1460 bytes)
/home/r/repo/test/test_short_sections.js is a binary file (819 bytes)
/home/r/repo/test/test_simple.js is a binary file (1787 bytes)
/home/r/repo/test/test_sources.js is a binary file (2861 bytes)
/home/r/repo/test/test_stale.js is a binary file (1578 bytes)
/home/r/repo/test/test_terms.js is a binary file (1491 bytes)
/home/r/repo/test/test_token_count.js is a binary file (1177 bytes)
/home/r/repo/test/test_tool_clarity.js is a binary file (1294 bytes)
/home/r/repo/test/test_transition.js is a binary file (1576 bytes)
/home/r/repo/test/test_unique.js is a binary file (854 bytes)
/home/r/repo/test/test_units.js is a binary file (4925 bytes)
/home/r/repo/test/test_untrusted.js is a binary file (3837 bytes)
/home/r/repo/test/test_usage.js is a binary file (1766 bytes)
/home/r/repo/test/test_vague.js is a binary file (1962 bytes)
/home/r/repo/test/test_verdict.js is a binary file (1395 bytes)
/home/r/repo/test/test_version.js is a binary file (408 bytes)
/home/r/repo/test/test_violation.js is a binary file (886 bytes)
/home/r/repo/test/test_weak_verb.js is a binary file (1325 bytes)
/home/r/repo/test/test_yaml.js is a binary file (2041 bytes)
Reading .github/workflows/actionlint.yml ...
Reading .github/workflows/copyrights.yml ...
Reading .github/workflows/dogent.yml ...
Reading .github/workflows/eslint.yml ...
Reading .github/workflows/markdown-lint.yml ...
Reading .github/workflows/pdd.yml ...
Reading .github/workflows/reuse.yml ...
Reading .github/workflows/typos.yml ...
Reading .github/workflows/up.yml ...
Reading .github/workflows/yamllint.yml ...
Reading .gitignore ...
Reading .pdd ...
Reading .pre-commit-hooks.yaml ...
Reading .rultor.yml ...
Reading CLAUDE.md ...
Reading LICENSE.txt ...
Reading LICENSES/MIT.txt ...
Reading README.md ...
Reading REUSE.toml ...
Reading test/fixtures/negative/conflicting.md ...
Reading test/fixtures/negative/duplicate.md ...
Reading test/fixtures/negative/vague.md ...
Reading test/fixtures/positive/commits.md ...
Reading test/fixtures/positive/deploys.md ...
> @yegor256/dogent@0.13.2 test
> mocha 'test/**/*.js' --timeout 60000
1G0K
0m0m
0m AmbiguousOr0m
32m 32m✔39m0m90m flags an and/or alternative0m
32m 32m✔39m0m90m flags a slashed alternative0m
32m 32m✔39m0m90m accepts a backticked path0m
32m 32m✔39m0m90m accepts a plain command0m
0m Answer0m
32m 32m✔39m0m90m renders one SARIF result as a human violation line0m
32m 32m✔39m0m90m skips a malformed result instead of crashing the run0m
32m 32m✔39m0m90m drops a result that omits its confidence0m
32m 32m✔39m0m90m drops a result that denies any contradiction0m
32m 32m✔39m0m90m drops a result whose denial carries an adjective before the noun0m
0m Answer confidence0m
32m 32m✔39m0m90m drops a warning the model is unsure about0m
32m 32m✔39m0m90m drops a warning that misses the confidence floor0m
32m 32m✔39m0m90m keeps a warning the model is sure about0m
32m 32m✔39m0m90m shows the model confidence beside a warning it kept0m
0m Args paths0m
32m 32m✔39m0m90m keeps every path that carries no dash0m
32m 32m✔39m0m90m drops recognized flags from the paths0m
32m 32m✔39m0m90m collects an unknown option0m
32m 32m✔39m0m90m finds nothing unknown among recognized flags0m
32m 32m✔39m0m90m treats a dashed token after the separator as a path0m
32m 32m✔39m0m90m reports nothing unknown for a token past the separator0m
0m Args flags0m
32m 32m✔39m0m90m detects the sarif flag0m
32m 32m✔39m0m90m reports no sarif flag when absent0m
32m 32m✔39m0m90m detects the offline flag0m
32m 32m✔39m0m90m reports no offline flag when absent0m
32m 32m✔39m0m90m reads the sarif flag from the equals syntax0m
0m Args help0m
32m 32m✔39m0m90m detects the long help flag0m
32m 32m✔39m0m90m detects the short help flag0m
32m 32m✔39m0m90m reports no help flag when absent0m
32m 32m✔39m0m90m never counts the help flag as unknown0m
32m 32m✔39m0m90m never counts the short help flag as unknown0m
0m Args suppress0m
32m 32m✔39m0m90m reads a single suppressed rule0m
32m 32m✔39m0m90m splits a comma-joined suppress list0m
32m 32m✔39m0m90m merges repeated suppress options0m
32m 32m✔39m0m90m suppresses nothing when the option is absent0m
32m 32m✔39m0m90m never counts the suppress option as unknown0m
0m Args headers0m
32m 32m✔39m0m90m reads a single custom header0m
32m 32m✔39m0m90m merges repeated header options0m
32m 32m✔39m0m90m keeps a colon inside the header value0m
32m 32m✔39m0m90m adds no header when the option is absent0m
32m 32m✔39m0m90m rejects a header that carries no colon0m
32m 32m✔39m0m90m never counts the header option as unknown0m
0m Args hints0m
32m 32m✔39m0m90m detects the hints flag0m
32m 32m✔39m0m90m reports no hints flag when absent0m
32m 32m✔39m0m90m never counts the hints flag as unknown0m
0m Args verbose0m
32m 32m✔39m0m90m detects the verbose flag0m
32m 32m✔39m0m90m reports no verbose flag when absent0m
32m 32m✔39m0m90m never counts the verbose flag as unknown0m
0m Args show-prompt0m
32m 32m✔39m0m90m detects the show-prompt flag0m
32m 32m✔39m0m90m reports no show-prompt flag when absent0m
32m 32m✔39m0m90m never counts the show-prompt flag as unknown0m
0m Args model0m
32m 32m✔39m0m90m reads the chosen model0m
32m 32m✔39m0m90m reports an empty model when absent0m
32m 32m✔39m0m90m lets the last model win when repeated0m
32m 32m✔39m0m90m never counts the model option as unknown0m
0m Args token0m
32m 32m✔39m0m90m reads the chosen token0m
32m 32m✔39m0m90m reports an empty token when absent0m
32m 32m✔39m0m90m lets the last token win when repeated0m
32m 32m✔39m0m90m never counts the token option as unknown0m
0m Args version0m
32m 32m✔39m0m90m detects the version flag0m
32m 32m✔39m0m90m reports no version flag when absent0m
32m 32m✔39m0m90m never counts the version flag as unknown0m
0m Atomic0m
32m 32m✔39m0m90m flags two sentences welded by a mid-line terminator0m
32m 32m✔39m0m90m flags a semicolon-joined pair of instructions0m
32m 32m✔39m0m90m accepts a single atomic instruction0m
32m 32m✔39m0m90m accepts an Oxford-comma list closed by and0m
32m 32m✔39m0m90m accepts a coordinated noun object trailing and0m
32m 32m✔39m0m90m accepts a coordinated gerund object trailing and0m
32m 32m✔39m0m90m accepts a temporal adverb trailing then0m
32m 32m✔39m0m90m leaves an and-joined verb pair for the oracle0m
0m Atomic abbreviations0m
32m 32m✔39m0m90m accepts an inline example introduced by e.g.0m
32m 32m✔39m0m90m accepts an inline clarification introduced by i.e.0m
32m 32m✔39m0m90m accepts a trailing list closed by etc.0m
0m Budget flags0m
32m 32m✔39m0m90m flags a file that exceeds the instruction budget0m
0m Budget accepts0m
32m 32m✔39m0m90m accepts a file within the instruction budget0m
0m Budget reports0m
32m 32m✔39m0m90m reports the total instruction count in the message0m
0m Command0m
32m 32m✔39m0m90m flags a line that opens with a pronoun0m
32m 32m✔39m0m90m accepts an imperative line0m
0m Concise0m
32m 32m✔39m0m90m flags a file past the line budget0m
32m 32m✔39m0m90m accepts a file within the line budget0m
32m 32m✔39m0m90m ignores a lone trailing newline0m
0m Conditional0m
32m 32m✔39m0m90m flags a line with if and else0m
32m 32m✔39m0m90m flags a line with when and otherwise0m
32m 32m✔39m0m90m accepts a single if guard0m
32m 32m✔39m0m90m ignores keywords inside a code span0m
0m CounterExample0m
32m 32m✔39m0m90m flags a for-example-do-not line with a backticked sample0m
32m 32m✔39m0m90m flags an instead-of-writing line with a quoted sample0m
0m CounterExample acceptance0m
32m 32m✔39m0m90m accepts a clean positive instruction0m
32m 32m✔39m0m90m accepts an introducer with no sample0m
0m coverage0m
32m 32m✔39m0m90m triggers every deterministic rule0m31m (160ms)0m
32m 32m✔39m0m90m registers every rule file in the pipeline0m
0m Crowded flags0m
32m 32m✔39m0m90m flags a section that exceeds the instruction limit0m
0m Crowded accepts0m
32m 32m✔39m0m90m accepts a section within the instruction limit0m
0m DeadImport0m
32m 32m✔39m0m90m flags a missing import target0m
32m 32m✔39m0m90m accepts an import that resolves beside the manifesto0m
32m 32m✔39m0m90m resolves imports from the manifesto directory0m
0m DeadImport chains0m
32m 32m✔39m0m90m flags an import chain that loops back0m
32m 32m✔39m0m90m flags a chain nested deeper than five levels0m
32m 32m✔39m0m90m accepts a chain nested exactly five levels0m
0m Default0m
32m 32m✔39m0m90m flags an optionally marker without a default0m
32m 32m✔39m0m90m flags a you-may marker without a default0m
32m 32m✔39m0m90m accepts an optional line that states a default0m
32m 32m✔39m0m90m ignores a marker inside a code span0m
0m Defaults parsing0m
32m 32m✔39m0m90m reads one flag from a single-line file0m
32m 32m✔39m0m90m splits an option and its value on one line0m
32m 32m✔39m0m90m keeps whitespace inside an option value0m
32m 32m✔39m0m90m drops a blank line0m
32m 32m✔39m0m90m drops a comment line0m
0m Defaults lookup0m
32m 32m✔39m0m90m returns nothing when no file exists0m
32m 32m✔39m0m90m prefers the current directory over the home0m
32m 32m✔39m0m90m falls back to the home when the current directory lacks one0m
0m DescriptionLength0m
32m 32m✔39m0m90m flags an oversized description0m
32m 32m✔39m0m90m flags an empty stub0m
32m 32m✔39m0m90m accepts a concise description0m
32m 32m✔39m0m90m ignores a file that is not a skill0m
0m DescriptionTriggers0m
32m 32m✔39m0m90m flags a short description with no trigger0m
32m 32m✔39m0m90m accepts a description that says when to use the skill0m
32m 32m✔39m0m90m ignores a file that is not a skill0m
0m DescriptionVoice0m
32m 32m✔39m0m90m flags a first-person description0m
32m 32m✔39m0m90m flags a second-person description0m
32m 32m✔39m0m90m accepts a third-person description with a trigger0m
32m 32m✔39m0m90m ignores a file that is not a skill0m
0m dogent0m
32m 32m✔39m0m90m exits non-zero when a manifesto breaks a rule0m31m (125ms)0m
32m 32m✔39m0m90m reports zero problems for a clean manifesto0m31m (125ms)0m
32m 32m✔39m0m90m lints default manifestos when handed a directory0m31m (125ms)0m
32m 32m✔39m0m90m skips the LLM when handed the offline flag0m31m (122ms)0m
32m 32m✔39m0m90m exits with a usage error on an unknown option0m31m (96ms)0m
0m dogent verbose0m
32m 32m✔39m0m90m prints each scanned manifesto path under the verbose flag0m31m (121ms)0m
32m 32m✔39m0m90m hides the scanning notes without the verbose flag0m31m (122ms)0m
0m dogent file size0m
32m 32m✔39m0m90m announces the line count and byte size of a scanned manifesto0m31m (124ms)0m
0m dogent show-prompt0m
32m 32m✔39m0m90m reveals the AI prompt under the show-prompt flag0m31m (167ms)0m
32m 32m✔39m0m90m hides the AI prompt without the show-prompt flag0m31m (165ms)0m
0m dogent missing path0m
32m 32m✔39m0m90m exits with a readable message when a passed path does not exist0m31m (99ms)0m
0m dogent local summary0m
32m 32m✔39m0m90m labels the local summary line on its own0m31m (128ms)0m
0m dogent rules count0m
32m 32m✔39m0m90m reports how many rules it applied0m31m (124ms)0m
0m dogent timing0m
32m 32m✔39m0m90m prints the analysis duration beside the problem count0m31m (122ms)0m
0m dogent local short circuit0m
32m 32m✔39m0m90m stays away from the LLM when a local rule already fired0m31m (123ms)0m
0m dogent suppress0m
32m 32m✔39m0m90m silences a named rule and exits clean0m31m (125ms)0m
0m dogent hints0m
32m 32m✔39m0m90m prints a fixing hint for a firing rule when asked0m31m (122ms)0m
32m 32m✔39m0m90m prints no hints block when not asked0m31m (123ms)0m
0m dogent defaults0m
32m 32m✔39m0m90m reads options from a .dogent file in the current directory0m31m (123ms)0m
0m dogent help0m
32m 32m✔39m0m90m exits with success when asked for help0m31m (96ms)0m
32m 32m✔39m0m90m prints the usage banner when asked for help0m31m (98ms)0m
0m dogent version0m
32m 32m✔39m0m90m exits with success when asked for the version0m31m (96ms)0m
32m 32m✔39m0m90m prints a dotted number triple when asked for the version0m31m (98ms)0m
0m Done0m
32m 32m✔39m0m90m flags a skill with no completion check0m
32m 32m✔39m0m90m accepts a skill with a Verify section0m
32m 32m✔39m0m90m accepts a skill that confirms the test passes0m
32m 32m✔39m0m90m ignores a file that is not a skill0m
0m DuplicateSection0m
32m 32m✔39m0m90m flags two identical headings0m
32m 32m✔39m0m90m flags case and space insensitively0m
0m DuplicateSection acceptance0m
32m 32m✔39m0m90m accepts distinct headings0m
0m Emoji0m
32m 32m✔39m0m90m flags a decorative emoji0m
32m 32m✔39m0m90m accepts plain ASCII prose0m
32m 32m✔39m0m90m ignores an emoji inside a code span0m
0m Emphasis0m
32m 32m✔39m0m90m flags a curated all-caps word0m
32m 32m✔39m0m90m flags a run of consecutive all-caps words0m
32m 32m✔39m0m90m flags repeated punctuation0m
32m 32m✔39m0m90m accepts a lone acronym0m
32m 32m✔39m0m90m accepts adjacent short acronyms0m
0m Empty flags0m
32m 32m✔39m0m90m flags a hollow heading that is followed by a heading0m
32m 32m✔39m0m90m flags the last heading when the file ends after it0m
32m 32m✔39m0m90m flags a heading before a heading and a heading before EOF0m
32m 32m✔39m0m90m flags only the hollow heading in a mixed file0m
0m Empty accepts0m
32m 32m✔39m0m90m accepts a heading with prose beneath it0m
32m 32m✔39m0m90m accepts a heading with bullets beneath it0m
32m 32m✔39m0m90m accepts a heading with a snippet beneath it0m
0m Empty edge0m
32m 32m✔39m0m90m flags a lone heading at end of file0m
0m Empty companion to Grouped0m
32m 32m✔39m0m90m together cover the section-instruction relationship0m
0m Example0m
32m 32m✔39m0m90m flags a SKILL.md that only describes0m
32m 32m✔39m0m90m accepts a SKILL.md carrying a code block0m
32m 32m✔39m0m90m accepts a SKILL.md carrying an example heading0m
32m 32m✔39m0m90m ignores a file that is not a skill0m
0m ExternalLink0m
32m 32m✔39m0m90m flags a bare https URL0m
32m 32m✔39m0m90m flags a bare http URL0m
32m 32m✔39m0m90m accepts a URL inside inline code0m
32m 32m✔39m0m90m accepts a URL inside a fenced block0m
32m 32m✔39m0m90m accepts a plain command with no URL0m
0m ExternalLink guard0m
32m 32m✔39m0m90m accepts a URL when a data-only guard sits in a separate section0m
32m 32m✔39m0m90m still flags a URL when no guard is declared0m
0m FenceLanguage0m
32m 32m✔39m0m90m flags a bare fence with no language0m
32m 32m✔39m0m90m accepts a fence that names a language0m
0m fixtures0m
36m - stays silent through the model for commits.md0m
36m - stays silent through the model for deploys.md0m
36m - lets the oracle catch the flaw in conflicting.md0m
36m - lets the oracle catch the flaw in duplicate.md0m
36m - lets the oracle catch the flaw in vague.md0m
0m Format0m
32m 32m✔39m0m90m flags a generating skill with no format0m
32m 32m✔39m0m90m accepts a generating skill that shows a snippet0m
32m 32m✔39m0m90m accepts a generating skill with a format section0m
32m 32m✔39m0m90m accepts a skill that generates nothing0m
32m 32m✔39m0m90m ignores a file that is not a skill0m
0m Frontmatter0m
32m 32m✔39m0m90m flags a skill that opens without frontmatter0m
32m 32m✔39m0m90m accepts a skill that declares every required key0m
32m 32m✔39m0m90m flags a skill that drops a required key0m
32m 32m✔39m0m90m flags a frontmatter key outside the allowed set0m
32m 32m✔39m0m90m ignores frontmatter on a file that is not a skill0m
0m Grouped0m
32m 32m✔39m0m90m flags an instruction that precedes every section0m
32m 32m✔39m0m90m accepts an instruction that sits under a section0m
32m 32m✔39m0m90m never counts a frontmatter key as loose instruction0m
0m Hedging0m
32m 32m✔39m0m90m flags hedge words in a soft instruction0m
32m 32m✔39m0m90m accepts a firm command0m
32m 32m✔39m0m90m keeps "every" clear of the "very" boundary0m
32m 32m✔39m0m90m ignores hedge words quoted inside inline code0m
0m HiddenChar0m
32m 32m✔39m0m90m flags a zero-width space0m
32m 32m✔39m0m90m flags a right-to-left override0m
32m 32m✔39m0m90m accepts a U+FE0F that completes an emoji variation sequence0m
32m 32m✔39m0m90m flags a lone U+FE0F not bound to an emoji base0m
32m 32m✔39m0m90m accepts clean ASCII prose0m
0m hints0m
32m 32m✔39m0m90m offers a hint method on every assembled rule0m
32m 32m✔39m0m90m returns a non-empty paragraph from every rule hint0m
32m 32m✔39m0m90m keeps every rule hint on a single line0m
0m Homoglyph0m
32m 32m✔39m0m90m flags a Cyrillic look-alike0m
32m 32m✔39m0m90m flags a Greek look-alike0m
32m 32m✔39m0m90m accepts pure ASCII prose0m
0m InlineCode flags0m
32m 32m✔39m0m90m flags a bare filename with a known extension0m
32m 32m✔39m0m90m flags a bare path with a slash0m
32m 32m✔39m0m90m flags a bare command-line flag0m
32m 32m✔39m0m90m flags a bare shell command with an argument0m
0m InlineCode accepts0m
32m 32m✔39m0m90m accepts an already backticked literal0m
32m 32m✔39m0m90m accepts plain prose with no literal token0m
32m 32m✔39m0m90m leaves an @-import to the dead-import rule0m
0m Jargon0m
32m 32m✔39m0m90m flags an undefined acronym0m
32m 32m✔39m0m90m accepts an acronym expanded in parentheses0m
32m 32m✔39m0m90m accepts an acronym whose initials match a later gloss0m
32m 32m✔39m0m90m accepts an allowlisted acronym0m
32m 32m✔39m0m90m ignores an acronym inside a code span0m
0m Jargon definitions0m
32m 32m✔39m0m90m accepts an acronym defined as expansion before parentheses0m
32m 32m✔39m0m90m accepts an acronym defined with "stands for"0m
32m 32m✔39m0m90m accepts an acronym defined with "Read X as"0m
0m Jargon allowlist0m
32m 32m✔39m0m90m accepts a filename on the allowlist0m
32m 32m✔39m0m90m still flags a token merely qualified by a following noun0m
0m LineLength0m
32m 32m✔39m0m90m flags a line wider than the limit0m
32m 32m✔39m0m90m accepts lines within the limit0m
32m 32m✔39m0m90m points the violation one column past the limit0m
0m Log0m
32m 32m✔39m0m90m writes an info line to its output stream0m
32m 32m✔39m0m90m writes a debug line to its error stream when verbose0m
32m 32m✔39m0m90m paints debug notes through its colorizer0m
32m 32m✔39m0m90m drops a debug line when not verbose0m
32m 32m✔39m0m90m keeps debug notes off the output stream0m
0m Log error0m
32m 32m✔39m0m90m writes an error line to its error stream without verbose0m
32m 32m✔39m0m90m keeps error lines off the output stream0m
0m Markdown0m
32m 32m✔39m0m90m parses a lone header into one header piece0m
32m 32m✔39m0m90m parses a fenced block into one snippet piece0m
32m 32m✔39m0m90m collapses consecutive bullets into one bullets piece0m
32m 32m✔39m0m90m keeps each bullet as its own inner prose piece0m
32m 32m✔39m0m90m keeps two prose lines as two pieces0m
32m 32m✔39m0m90m tracks the line number of a header0m
0m Markdown bullet continuations0m
32m 32m✔39m0m90m keeps the list open across a wrapped continuation line0m
32m 32m✔39m0m90m folds a continuation into the bullet it belongs to0m
32m 32m✔39m0m90m joins the continuation text to its bullet0m
0m Markdown line endings0m
32m 32m✔39m0m90m strips trailing carriage returns from CRLF prose0m
0m mask0m
32m 32m✔39m0m90m blanks out an inline-code span0m
32m 32m✔39m0m90m keeps every column offset intact0m
32m 32m✔39m0m90m leaves prose without backticks untouched0m
0m MetaReference0m
32m 32m✔39m0m90m flags an "as an AI" self-reference0m
32m 32m✔39m0m90m flags a "these instructions" self-reference0m
32m 32m✔39m0m90m accepts a plain command0m
32m 32m✔39m0m90m ignores a self-reference inside a code span0m
32m 32m✔39m0m90m stays disjoint from persona role assignment0m
0m NameFormat0m
32m 32m✔39m0m90m flags a skill whose name is not kebab-case0m
32m 32m✔39m0m90m accepts a skill whose name is kebab-case0m
32m 32m✔39m0m90m ignores a name on a file that is not a skill0m
0m NameMatchesDir0m
32m 32m✔39m0m90m accepts a name that equals its parent directory0m
32m 32m✔39m0m90m flags a name that differs from its parent directory0m
32m 32m✔39m0m90m resolves the parent of a bare filename against the filesystem0m
32m 32m✔39m0m90m ignores a name inside a dot-prefixed generated directory0m
32m 32m✔39m0m90m ignores a file that is not a skill0m
0m NoArticles0m
32m 32m✔39m0m90m flags the article "the"0m
32m 32m✔39m0m90m accepts a line free of articles0m
32m 32m✔39m0m90m ignores an article quoted inside inline code0m
32m 32m✔39m0m90m ignores an article inside a frontmatter slug0m
0m Openai0m
32m 32m✔39m0m90m returns the assistant message content from the reply0m
32m 32m✔39m0m90m reports the token usage the reply carries0m
32m 32m✔39m0m90m fails fast when the endpoint rejects the request0m
0m Openai rejection0m
32m 32m✔39m0m90m reveals the response body, not just the bare status code0m
0m Openai endpoint0m
32m 32m✔39m0m90m targets the chat-completions path beneath the configured base URL0m
32m 32m✔39m0m90m trims a trailing slash from the configured base URL0m
0m Oracle0m
32m 32m✔39m0m90m turns the AI reply into rendered violations0m
32m 32m✔39m0m90m surfaces the token usage the chat reported0m
32m 32m✔39m0m90m logs the full prompt it sends to the chat0m
0m Oracle prompt log0m
32m 32m✔39m0m90m announces the prompt size before sending it0m
32m 32m✔39m0m90m indents every logged prompt line by two spaces0m
0m Ordered0m
32m 32m✔39m0m90m flags an unordered bullet with a sequence marker0m
32m 32m✔39m0m90m flags a then-marked unordered bullet0m
32m 32m✔39m0m90m accepts a numbered step0m
32m 32m✔39m0m90m accepts an unordered bullet with no sequence marker0m
32m 32m✔39m0m90m ignores a marker word inside a code span0m
0m Passive0m
32m 32m✔39m0m90m flags a must-be-validated line0m
32m 32m✔39m0m90m flags an are-emitted line0m
32m 32m✔39m0m90m accepts an imperative line0m
32m 32m✔39m0m90m accepts an attributive participle before a noun0m
0m Persona0m
32m 32m✔39m0m90m flags a you-are role line0m
32m 32m✔39m0m90m flags an act-as role line0m
32m 32m✔39m0m90m flags an as-a-role preface0m
32m 32m✔39m0m90m accepts a plain imperative0m
32m 32m✔39m0m90m accepts a mid-line as-a phrase0m
0m Placement flags0m
32m 32m✔39m0m90m flags a critical section buried in the middle third0m
0m Placement accepts0m
32m 32m✔39m0m90m accepts a critical section leading the file0m
32m 32m✔39m0m90m ignores a heading without a critical keyword0m
0m Polite flags0m
32m 32m✔39m0m90m flags a please courtesy phrase0m
32m 32m✔39m0m90m flags a make sure to scaffolding phrase0m
0m Polite accepts0m
32m 32m✔39m0m90m accepts a plain command with no courtesy0m
32m 32m✔39m0m90m ignores courtesy words quoted inside inline code0m
0m Positive0m
32m 32m✔39m0m90m flags a do-not line0m
32m 32m✔39m0m90m flags a never line0m
32m 32m✔39m0m90m flags a contracted do-not line0m
32m 32m✔39m0m90m flags a banned bullet item0m
0m Positive acceptance0m
32m 32m✔39m0m90m accepts a positive imperative0m
32m 32m✔39m0m90m accepts a ban word used mid-line as a modifier0m
32m 32m✔39m0m90m ignores a ban hidden inside a code span0m
0m Prompt0m
32m 32m✔39m0m90m carries the manifesto body verbatim0m
32m 32m✔39m0m90m opens its sections with first-level Markdown headers0m
32m 32m✔39m0m90m wraps the manifesto body in a fenced Markdown snippet0m
32m 32m✔39m0m90m asks the oracle to hunt for inconsistencies0m
32m 32m✔39m0m90m hands the oracle no Checks section0m
32m 32m✔39m0m90m bullets no rule for the oracle to apply0m
32m 32m✔39m0m90m omits the phantom line a trailing newline would add0m
0m Prompt reply shape0m
32m 32m✔39m0m90m asks the oracle to score each warning with a confidence0m
32m 32m✔39m0m90m grants the oracle permission to report nothing0m
32m 32m✔39m0m90m asks the oracle to explain how the lines clash0m
0m Prompt reasoning caveats0m
32m 32m✔39m0m90m tells the oracle to honor explicit branch words0m
32m 32m✔39m0m90m tells the oracle that sequencing is compatible0m
32m 32m✔39m0m90m tells the oracle that try-then-fallback is compatible0m
32m 32m✔39m0m90m tells the oracle to look for a resolving line first0m
0m PseudoHeading0m
32m 32m✔39m0m90m flags a bold label ending in a colon0m
32m 32m✔39m0m90m flags an underscore-emphasized label0m
0m PseudoHeading acceptance0m
32m 32m✔39m0m90m accepts a real second-level heading0m
32m 32m✔39m0m90m accepts a line with inline bold inside other words0m
0m Punctuation0m
32m 32m✔39m0m90m flags a sentence that opens in lower case0m
32m 32m✔39m0m90m flags a sentence that lacks a closing period0m
32m 32m✔39m0m90m accepts a sentence cased and stopped correctly0m
32m 32m✔39m0m90m leaves section headings untouched0m
32m 32m✔39m0m90m inspects the text of a bullet beyond its marker0m
0m Quantifier flags0m
32m 32m✔39m0m90m flags a several quantity word0m
32m 32m✔39m0m90m flags an a few quantity phrase0m
32m 32m✔39m0m90m flags a multiple quantity word0m
0m Quantifier accepts0m
32m 32m✔39m0m90m accepts an exact count0m
32m 32m✔39m0m90m ignores a quantity word inside a code span0m
32m 32m✔39m0m90m ignores a quantity quoted inside a described thesis0m
0m quoted0m
32m 32m✔39m0m90m marks a word after a report-that clause as quoted0m
32m 32m✔39m0m90m leaves a word before any report clause unquoted0m
0m Rationale0m
32m 32m✔39m0m90m flags a because line0m
32m 32m✔39m0m90m flags a this-keeps line0m
32m 32m✔39m0m90m flags a the-reason line0m
0m Rationale acceptance0m
32m 32m✔39m0m90m accepts a clean imperative0m
32m 32m✔39m0m90m accepts an imperative containing so-that mid-line0m
0m Redundant0m
32m 32m✔39m0m90m flags a generic "Be helpful and accurate" line0m
32m 32m✔39m0m90m flags "Write clean code" regardless of case0m
32m 32m✔39m0m90m flags a generic instruction inside a bullet list0m
32m 32m✔39m0m90m accepts a project-specific instruction0m
0m Referential0m
32m 32m✔39m0m90m flags an it-subject line0m
32m 32m✔39m0m90m flags a this-subject line0m
32m 32m✔39m0m90m accepts a demonstrative determiner0m
32m 32m✔39m0m90m accepts a named subject0m
32m 32m✔39m0m90m ignores a pronoun inside a code span0m
0m Report0m
32m 32m✔39m0m90m counts every violation it holds0m
32m 32m✔39m0m90m renders each violation inside its body0m
32m 32m✔39m0m90m keeps the problem count out of its body0m
0m Report summary0m
32m 32m✔39m0m90m summarises the total inside its summary0m
32m 32m✔39m0m90m appends the analysis duration when handed one0m
32m 32m✔39m0m90m omits the duration when none is given0m
32m 32m✔39m0m90m invites a false-positive report when problems exist0m
32m 32m✔39m0m90m stays silent about false positives when clean0m
0m Report hints0m
32m 32m✔39m0m90m renders the hint of a rule that reported a violation0m
32m 32m✔39m0m90m names each firing rule only once0m
32m 32m✔39m0m90m emits nothing when no violation fired0m
0m rules0m
32m 32m✔39m0m90m hands every assembled rule a violations method0m
0m SectionLevel0m
32m 32m✔39m0m90m accepts a lone leading title0m
32m 32m✔39m0m90m flags a first-level heading below the title0m
32m 32m✔39m0m90m flags a third-level heading0m
32m 32m✔39m0m90m accepts a second-level heading0m
0m SelfContained0m
32m 32m✔39m0m90m flags a mentioned-above reference0m
32m 32m✔39m0m90m flags a section-below reference0m
32m 32m✔39m0m90m accepts a concrete markdown link0m
32m 32m✔39m0m90m ignores a reference inside a code span0m
0m ShortSections0m
32m 32m✔39m0m90m flags a section name of four words0m
32m 32m✔39m0m90m accepts a two-word section name0m
0m Simple0m
32m 32m✔39m0m90m flags a tangled multi-clause line0m
32m 32m✔39m0m90m accepts a short imperative line0m
32m 32m✔39m0m90m accepts one conjunction with one comma0m
32m 32m✔39m0m90m accepts a comma-separated list carrying no conjunction0m
32m 32m✔39m0m90m accepts a coordinated list inside a single when clause0m
0m Sources0m
32m 32m✔39m0m90m keeps a plain file path untouched0m
32m 32m✔39m0m90m expands a directory into its default manifesto files0m
32m 32m✔39m0m90m skips default manifestos that the directory lacks0m
32m 32m✔39m0m90m finds manifestos nested inside subdirectories0m
32m 32m✔39m0m90m ignores manifestos buried inside node_modules0m
0m Sources error handling0m
32m 32m✔39m0m90m throws a clear error when a passed path does not exist0m
0m Stale0m
32m 32m✔39m0m90m flags a latest reference0m
32m 32m✔39m0m90m flags an as-of-today reference0m
32m 32m✔39m0m90m flags a hardcoded version literal0m
32m 32m✔39m0m90m ignores a version inside a fenced code block0m
32m 32m✔39m0m90m accepts a durable rule0m
0m Terms0m
32m 32m✔39m0m90m flags two synonyms of one concept0m
32m 32m✔39m0m90m accepts one consistent term0m
32m 32m✔39m0m90m accepts "bot" beside "agent" as domain-distinct nouns0m
32m 32m✔39m0m90m ignores synonyms inside code spans0m
0m TokenCount0m
32m 32m✔39m0m90m flags a file that overflows the token cap0m
32m 32m✔39m0m90m accepts a file within the token cap0m
32m 32m✔39m0m90m counts the tokens hidden inside frontmatter0m
0m ToolClarity0m
32m 32m✔39m0m90m flags running the script0m
32m 32m✔39m0m90m flags using the tool0m
32m 32m✔39m0m90m ignores a backticked command0m
32m 32m✔39m0m90m accepts a proper name0m
0m Transition0m
32m 32m✔39m0m90m flags a leading "furthermore" connector0m
32m 32m✔39m0m90m flags a leading "in summary" connector0m
32m 32m✔39m0m90m accepts a plain command0m
32m 32m✔39m0m90m accepts a line with no leading connector0m
32m 32m✔39m0m90m ignores a connector inside inline code0m
0m Unfinished flags0m
32m 32m✔39m0m90m flags a line carrying a TODO token0m
32m 32m✔39m0m90m flags a line carrying an angle-bracket placeholder0m
32m 32m✔39m0m90m flags a line ending in a bare ellipsis0m
0m Unfinished accepts0m
32m 32m✔39m0m90m accepts a finished imperative line0m
32m 32m✔39m0m90m ignores an angle-bracket placeholder inside inline code0m
0m Unique0m
32m 32m✔39m0m90m flags an instruction that repeats another0m
32m 32m✔39m0m90m accepts a file with distinct instructions0m
0m Units0m
32m 32m✔39m0m90m flags a bare ceiling number0m
32m 32m✔39m0m90m flags a bare delay number0m
32m 32m✔39m0m90m accepts a number carrying a unit0m
32m 32m✔39m0m90m accepts a number carrying a spelled unit0m
0m Units exemptions0m
32m 32m✔39m0m90m accepts a numbered list ordinal0m
32m 32m✔39m0m90m accepts a version number0m
32m 32m✔39m0m90m ignores digits welded to an identifier0m
32m 32m✔39m0m90m accepts the lower bound of a range whose unit trails the upper bound0m
32m 32m✔39m0m90m ignores a number inside a code span0m
0m Units identifiers0m
32m 32m✔39m0m90m accepts a count noun added to the whitelist0m
32m 32m✔39m0m90m ignores a status code after "code"0m
0m Units follow-up0m
32m 32m✔39m0m90m accepts a four-digit calendar year0m
32m 32m✔39m0m90m accepts an edition suffix after an apostrophe0m
32m 32m✔39m0m90m ignores digits inside a bare URL0m
32m 32m✔39m0m90m accepts a method-count unit noun0m
32m 32m✔39m0m90m accepts a unit word past a masked code span0m
0m Untrusted0m
32m 32m✔39m0m90m flags an unguarded read of a page0m
32m 32m✔39m0m90m flags an unguarded fetch of a url0m
32m 32m✔39m0m90m accepts a guarded data-only instruction0m
32m 32m✔39m0m90m accepts a line that consumes no external source0m
32m 32m✔39m0m90m ignores a source named inside a code span0m
0m Untrusted scope and sources0m
32m 32m✔39m0m90m accepts a consuming line when a guard sits in a separate section0m
32m 32m✔39m0m90m ignores a skill reading its own bare output0m
32m 32m✔39m0m90m flags an unguarded read of command output0m
0m Untrusted hyphen boundaries0m
32m 32m✔39m0m90m ignores a verb buried in a hyphenated compound word0m
32m 32m✔39m0m90m ignores a verb trailing a hyphenated compound word0m
0m Untrusted environment variables0m
32m 32m✔39m0m90m accepts a url read from a host-injected environment variable0m
0m Usage0m
32m 32m✔39m0m90m adds the tokens of another tally0m
32m 32m✔39m0m90m keeps the model name when adding to an empty tally0m
32m 32m✔39m0m90m estimates cost from the per-model price table0m
32m 32m✔39m0m90m prices a million tokens of gpt-5.4 from its table entry0m
32m 32m✔39m0m90m charges nothing for a model absent from the price table0m
32m 32m✔39m0m90m renders a one-line summary of the exchange0m
0m Vague0m
32m 32m✔39m0m90m flags a properly qualifier0m
32m 32m✔39m0m90m flags a clean qualifier0m
32m 32m✔39m0m90m flags a fast qualifier0m
32m 32m✔39m0m90m accepts a measurable criterion0m
32m 32m✔39m0m90m ignores a qualifier inside a code span0m
0m Vague described positions0m
32m 32m✔39m0m90m ignores a qualifier quoted inside a described thesis0m
0m Verdict0m
32m 32m✔39m0m90m shows the confidence as a percentage beside the warning0m
32m 32m✔39m0m90m rounds the confidence to a whole percentage0m
32m 32m✔39m0m90m delegates its SARIF result to the wrapped violation0m
32m 32m✔39m0m90m exposes the rule id of the violation it wraps0m
0m version0m
32m 32m✔39m0m90m matches the semantic version shape0m
0m Violation0m
32m 32m✔39m0m90m carries its rule id into the SARIF result0m
32m 32m✔39m0m90m renders a human line with the location ahead of the message0m
0m WeakVerb0m
32m 32m✔39m0m90m flags a leading handle verb0m
32m 32m✔39m0m90m flags a leading manage verb0m
32m 32m✔39m0m90m accepts a precise leading verb0m
32m 32m✔39m0m90m ignores a weak verb inside a code span0m
0m Yaml0m
32m 32m✔39m0m90m parses a flat key into one pair0m
32m 32m✔39m0m90m reads the value of a key0m
32m 32m✔39m0m90m tracks the absolute line of a key0m
32m 32m✔39m0m90m holds no pair for a comment line0m
32m 32m✔39m0m90m folds a literal block scalar into the value0m
32m 32m✔39m0m90m folds a folded block scalar into the value0m
32m 32m✔39m0m90m keeps the key row of a block scalar0m
32m 32m✔39m0m90m stops folding a block scalar at the next key0m
92m 0m32m 468 passing0m90m (3s)0m
36m 0m36m 5 pending0m
1G0K⠙1G0K[__rultor 8e4b55d] set version to 0.13.2
2 files changed, 3 insertions(+), 3 deletions(-)
1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0Knpm warn publish npm auto-corrected some errors in your package.json when publishing. Please run "npm pkg fix" to address these errors.
1G0K⠼1G0Knpm warn publish errors corrected:
npm warn publish "bin[dogent]" script name was cleaned
npm warn publish "repository" was changed from a string to an object
npm warn publish "repository.url" was normalized to "git+https://github.com/yegor256/dogent.git"
1G0K⠼1G0Knpm notice
1G0K⠼1G0Knpm notice 📦 @yegor256/dogent@0.13.2
1G0K⠼1G0Knpm notice Tarball Contents
1G0K⠼1G0Knpm notice 1.1kB LICENSE.txt
npm notice 11.7kB README.md
npm notice 1.1kB package.json
npm notice 2.4kB src/answer.js
npm notice 3.4kB src/args.js
npm notice 1.5kB src/defaults.js
npm notice 744B src/document.js
npm notice 5.6kB src/dogent.js
npm notice 552B src/fragments/bullets.js
npm notice 746B src/fragments/frontmatter.js
npm notice 514B src/fragments/header.js
npm notice 450B src/fragments/prose.js
npm notice 466B src/fragments/snippet.js
npm notice 1.0kB src/log.js
npm notice 3.1kB src/markdown.js
npm notice 496B src/mask.js
npm notice 1.7kB src/openai.js
npm notice 1.4kB src/oracle.js
npm notice 4.2kB src/prompt.js
npm notice 1.1kB src/quoted.js
npm notice 716B src/region.js
npm notice 2.1kB src/report.js
npm notice 1.7kB src/rules/ambiguous-or.js
npm notice 1.7kB src/rules/atomic.js
npm notice 1.2kB src/rules/budget.js
npm notice 1.6kB src/rules/command.js
npm notice 1.4kB src/rules/concise.js
npm notice 1.7kB src/rules/conditional.js
npm notice 1.7kB src/rules/counter-example.js
npm notice 1.7kB src/rules/crowded.js
npm notice 3.5kB src/rules/dead-import.js
npm notice 1.7kB src/rules/default.js
npm notice 1.8kB src/rules/description-length.js
npm notice 1.6kB src/rules/description-triggers.js
npm notice 2.1kB src/rules/description-voice.js
npm notice 1.3kB src/rules/done.js
npm notice 1.8kB src/rules/duplicate-section.js
npm notice 1.7kB src/rules/emoji.js
npm notice 2.4kB src/rules/emphasis.js
npm notice 1.4kB src/rules/empty.js
npm notice 1.6kB src/rules/example.js
npm notice 2.1kB src/rules/external-link.js
npm notice 1.4kB src/rules/fence-language.js
npm notice 2.1kB src/rules/format.js
npm notice 2.0kB src/rules/frontmatter.js
npm notice 1.3kB src/rules/grouped.js
npm notice 1.5kB src/rules/hedging.js
npm notice 2.4kB src/rules/hidden-char.js
npm notice 2.3kB src/rules/homoglyph.js
npm notice 4.1kB src/rules/index.js
npm notice 2.6kB src/rules/inline-code.js
npm notice 3.7kB src/rules/jargon.js
npm notice 1.2kB src/rules/line-length.js
npm notice 1.8kB src/rules/meta-reference.js
npm notice 1.4kB src/rules/name-format.js
npm notice 1.7kB src/rules/name-matches-dir.js
npm notice 1.3kB src/rules/no-articles.js
npm notice 1.6kB src/rules/ordered.js
npm notice 1.4kB src/rules/passive.js
npm notice 1.6kB src/rules/persona.js
npm notice 1.8kB src/rules/placement.js
npm notice 1.5kB src/rules/polite.js
npm notice 1.6kB src/rules/positive.js
npm notice 1.5kB src/rules/pseudo-heading.js
npm notice 1.7kB src/rules/punctuation.js
npm notice 2.0kB src/rules/quantifier.js
npm notice 1.5kB src/rules/rationale.js
npm notice 2.1kB src/rules/redundant.js
npm notice 2.2kB src/rules/referential.js
npm notice 1.4kB src/rules/section-level.js
npm notice 1.9kB src/rules/self-contained.js
npm notice 1.2kB src/rules/short-sections.js
npm notice 2.2kB src/rules/simple.js
npm notice 1.7kB src/rules/stale.js
npm notice 2.3kB src/rules/terms.js
npm notice 1.3kB src/rules/token-count.js
npm notice 1.6kB src/rules/tool-clarity.js
npm notice 1.7kB src/rules/transition.js
npm notice 1.5kB src/rules/unfinished.js
npm notice 1.7kB src/rules/unique.js
npm notice 3.7kB src/rules/units.js
npm notice 2.5kB src/rules/untrusted.js
npm notice 2.0kB src/rules/vague.js
npm notice 1.7kB src/rules/weak-verb.js
npm notice 1.5kB src/sources.js
npm notice 1.6kB src/usage.js
npm notice 883B src/verdict.js
npm notice 336B src/version.js
npm notice 821B src/violation.js
npm notice 1.5kB src/yaml.js
1G0K⠼1G0Knpm notice Tarball Details
1G0K⠼1G0Knpm notice name: @yegor256/dogent
1G0K⠼1G0Knpm notice version: 0.13.2
1G0K⠼1G0Knpm notice filename: yegor256-dogent-0.13.2.tgz
1G0K⠼1G0Knpm notice package size: 47.4 kB
1G0K⠼1G0Knpm notice unpacked size: 168.1 kB
1G0K⠼1G0Knpm notice shasum: 80658293f0589a8582a8119ca75bd304f4521630
1G0K⠼1G0Knpm notice integrity: sha512-8d3ihgHDap+tC[...]Fiy4dJD6LaqJg==
1G0K⠼1G0Knpm notice total files: 90
1G0K⠼1G0Knpm notice
1G0K⠼1G0Knpm notice Publishing to https://registry.npmjs.org/ with tag latest and public access
1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K⠋1G0K⠙1G0K⠹1G0K⠸1G0K⠼1G0K⠴1G0K⠦1G0K⠧1G0K⠇1G0K⠏1G0K+ @yegor256/dogent@0.13.2
1G0K⠏1G0K+ mv /home/r/repo .
++ whoami
+ chown -R root repo
+ '[' -n '' ']'
++ whoami
+ sudo chown -R ubuntu repo
+ cd repo
+ git checkout __rultor
Already on '__rultor'
+ git tag 0.13.2 -m '0.13.2: tagged by rultor.com'
+ git reset --hard
HEAD is now at 8e4b55d set version to 0.13.2
+ git clean -fd
+ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
+ git branch -D __rultor
Deleted branch __rultor (was 8e4b55d).
+ git push --all origin
Everything up-to-date
+ git push --tags origin
To github.com:yegor256/dogent.git
* [new tag] 0.13.2 -> 0.13.2
container ef164403c9ac8141f4557f33c6b643912a2e40798738e6e8873a5dbf1ea752fe is dead
Tue Jun 30 07:33:27 UTC 2026