-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathGOALS.yaml
More file actions
145 lines (127 loc) · 5.89 KB
/
Copy pathGOALS.yaml
File metadata and controls
145 lines (127 loc) · 5.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
version: 2
mission: "The operational discipline for working with AI agents — principles that turn ad-hoc agent usage into a reliable, compounding practice."
goals:
# ── Structure checks ──
# Factor file naming matches new factor titles
- id: factor-naming-consistent
description: "Factor files are numbered 01-12 and filenames reflect the new factor titles"
check: |
expected="01-context-is-everything 02-track-everything-in-git 03-one-agent-one-job 05-research-before-you-build 07-validate-externally 08-lock-progress-forward 09-extract-learnings 10-compound-knowledge 12-measure-outcomes 06-isolate-workers 11-supervise-hierarchically 10-compound-knowledge"
count=0
for name in $expected; do
[ -f "factors/${name}.md" ] && count=$((count+1))
done
[ "$count" -ge 12 ]
weight: 10
# All 12 factors have required sections and minimum depth
- id: all-factors-written
description: "All 12 factors have Rule, rationale, and What Good Looks Like sections with 500+ words of substantive content"
check: |
count=0
for f in factors/0[1-9]-*.md factors/1[0-2]-*.md; do
[ -f "$f" ] || continue
grep -qi '## .*Rule' "$f" || continue
grep -qi 'What good looks like' "$f" || continue
words=$(wc -w < "$f" | tr -d ' ')
[ "$words" -ge 500 ] || continue
count=$((count+1))
done
[ "$count" -ge 12 ]
weight: 10
# ── Substance checks (post pre-mortem v2) ──
# Foundation factors (I-III) have "Without Tooling" sections
- id: foundation-without-tooling
description: "Factors 01-03 each have a 'Without tooling' or 'Without Tooling' section"
check: |
count=0
for f in factors/01-*.md factors/02-*.md factors/03-*.md; do
[ -f "$f" ] && grep -qi 'without tooling' "$f" && count=$((count+1))
done
[ "$count" -ge 3 ]
weight: 9
# Factor I mentions observable symptoms (not just invisible metrics)
- id: factor-i-observable-symptoms
description: "Factor I discusses observable symptoms of context overload, not just the 40% rule"
check: |
grep -qi 'symptom\|repeats itself\|ignores.*instructions\|confabulat' factors/01-*.md
weight: 8
# Factor VIII has flywheel/compounding content (the hero)
- id: factor-viii-flywheel
description: "Factor VIII contains the compounding equation or flywheel pattern content"
check: |
grep -qi 'flywheel\|compounding equation\|retrieval rate\|decay rate' factors/08-*.md
weight: 9
# Scale factors (X-XII) framed as the factory altitude (same factors at fleet scale)
- id: scale-factors-factory-altitude
description: "Factors 10-12 are framed as the factory altitude (same factors at fleet scale), not an optional/skippable tier"
check: |
count=0
for f in factors/10-*.md factors/11-*.md factors/12-*.md; do
[ -f "$f" ] && grep -qi 'factory altitude\|fleet scale\|grow into\|in miniature' "$f" && count=$((count+1))
done
[ "$count" -ge 3 ]
weight: 8
# ── README checks ──
# README reflects the pivot (no stale framing)
- id: readme-reflects-pivot
description: "README contains the new tagline and does not reference old framing"
check: |
grep -q 'Operational Discipline' README.md && \
! grep -q 'Shift-Left Validation' README.md && \
! grep -q 'DevOps for Vibe-Coding' README.md
weight: 8
# README has required structural sections
- id: readme-sections
description: "README contains hero/pitch, quickstart, factor overview with tiering, and reference implementation sections"
check: |
grep -qi 'knowledge compound\|smarter over time\|institutional memory' README.md && \
grep -qi 'quickstart\|getting started\|5.minute' README.md && \
grep -qi 'foundation.*workflow.*knowledge\|tier' README.md && \
grep -qi 'without tooling\|no plugin\|zero.infrastructure\|no.tooling' README.md
weight: 9
# README has minimum depth (not a stub)
- id: readme-depth
description: "README has at least 800 words of content"
check: |
words=$(wc -w < README.md | tr -d ' ')
[ "$words" -ge 800 ]
weight: 7
# ── Archival checks ──
# Old factors archived with mapping table
- id: archive-with-mapping
description: "Old factors archived in _archived/factors-v1/ with a MAPPING.md file"
check: |
[ -d "_archived/factors-v1" ] && \
[ -f "_archived/factors-v1/MAPPING.md" ] && \
ls _archived/factors-v1/*.md 2>/dev/null | grep -v MAPPING | wc -l | grep -q '[1-9]'
weight: 7
# ── Hygiene checks ──
# No stale framing references anywhere in active content
- id: no-stale-framing
description: "No active docs reference 'coding agents only' or the old validation-only framing"
check: |
! grep -rl 'coding agents only\|Shift-Left Validation\|DevOps for Vibe-Coding' \
factors/ docs/ README.md CONTRIBUTING.md 2>/dev/null | grep -v _archived | grep -v 'docs/plans/' | grep -q .
weight: 7
# Internal link integrity
- id: no-broken-links
description: "All markdown internal links resolve to existing files"
check: |
broken=0
for f in $(find . -name '*.md' -not -path './_archived/*' -not -path './.agents/*' -not -path './.beads/*'); do
grep -oP '\]\(\.\/[^)]+\)' "$f" 2>/dev/null | sed 's/\](\.\///' | sed 's/)//' | while read link; do
link=$(echo "$link" | sed 's/#.*//')
[ -n "$link" ] && [ ! -e "$link" ] && broken=$((broken+1)) && echo "BROKEN: $f -> $link"
done
done
[ "$broken" -eq 0 ]
weight: 6
# PRODUCT.md exists and is current
- id: product-defined
description: "PRODUCT.md exists with Mission, Target Personas, and Competitive Landscape sections"
check: |
[ -f PRODUCT.md ] && \
grep -q '## Mission' PRODUCT.md && \
grep -q '## Target Personas' PRODUCT.md && \
grep -q '## Competitive Landscape' PRODUCT.md
weight: 5