Files
Aura/fieldtests/m1-self-description/s3_vocabulary_breadth/breadth_probe.sh
T
claude 9124275bf3 fieldtest: m1-self-description — 5 examples, 1 bug / 3 friction / 3 spec-gap
Binary-only milestone fieldtest for milestone 36 (self-description): a
fieldtester agent bootstrapped from the release binary (d26f0c8) alone —
no engine sources, no repo docs, no bootstrap card — and drove five
end-to-end scenarios: cold bootstrap -> author -> validate (green,
synthetic + real EURUSD, 3944 trades), execution semantics +
latch/edge-pulse idiom (green), vocabulary breadth (33 nodes / 7 folds /
17 metrics / 6+6 blocks, every entry with a meaning), document ramp from
a bare {} (green, 3 members), trace/measurement path (dead-ends,
tracked).

Verdict: the bootstrap card (#267, closed as superseded) is empirically
redundant for the bootstrap->author->validate spine. Two seams keep the
promise short of end-to-end, both tracked outside M1: the declared-tap
drop on the registration path (#327, the missing mechanism of #312/M6)
and the sugar<->document axis namespace (#328, prerequisite of the #319
retirement). Friction routed: #329 #330 #331; evidence comments on #312
and #324. Milestone 36 closed with this adjudication; the fieldtest spec
remains the usual git-ignored working file.

refs #267, refs #312, refs #319
2026-07-24 11:06:22 +02:00

47 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Scenario 3 — vocabulary self-description breadth probe.
# Protected property: every closed-vocabulary entry class the binary exposes is
# REACHABLE and carries a non-empty one-line meaning; no entry's meaning is a
# byte-for-byte duplicate of another entry in the SAME class (a duplicate is a
# non-discriminating meaning).
# Binary-only: uses nothing but `aura` introspection output.
set -u
AURA="${AURA:?set AURA to the release binary path}"
fail=0
echo "== node vocabulary: every node resolves via --node with a meaning =="
nodes=$("$AURA" graph introspect --vocabulary | awk '{print $1}')
for n in $nodes; do
line=$("$AURA" graph introspect --node "$n" 2>&1 | head -1)
case "$line" in
"$n — "*) : ;; # "<Name> — <meaning>"
*) echo " MISSING/BAD meaning for node $n: [$line]"; fail=1 ;;
esac
done
echo " nodes probed: $(echo "$nodes" | wc -w)"
echo "== duplicate node one-liners (non-discriminating meanings) =="
"$AURA" graph introspect --vocabulary \
| sed -E 's/^[A-Za-z0-9_]+ +//' \
| sort | uniq -c | sort -rn \
| awk '$1 > 1 { print " x"$1" identical: "substr($0, index($0,$2)) }'
echo "== folds carry a meaning =="
"$AURA" graph introspect --folds | awk 'NF==0{next} {print " ok: "$1}'
echo "== process blocks resolve via --block =="
for b in $("$AURA" process introspect --vocabulary | awk '{print $1}'); do
"$AURA" process introspect --block "$b" >/dev/null 2>&1 && echo " ok: $b" || { echo " BAD: $b"; fail=1; }
done
echo "== campaign blocks resolve via --block =="
for b in $("$AURA" campaign introspect --vocabulary | awk '{print $1}'); do
"$AURA" campaign introspect --block "$b" >/dev/null 2>&1 && echo " ok: $b" || { echo " BAD: $b"; fail=1; }
done
echo "== metrics carry an applicability tag + meaning =="
"$AURA" process introspect --metrics | awk '{print " ok: "$1}'
echo "RESULT: fail=$fail"