Compare commits
2
Commits
6b1e24fec4
...
e8ee2348d0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8ee2348d0 | ||
|
|
2ae5713fa9 |
No files matched your search
@@ -1,13 +1,7 @@
|
||||
# Users Census — Extract (Extract lane)
|
||||
# Countries by population (2026-07 estimate)
|
||||
|
||||
Tabular extraction of the public jsonplaceholder users + todos dataset into
|
||||
Markdown, CSV and JSON. A single source, three serializations of one table.
|
||||
|
||||
- Sources: `https://jsonplaceholder.typicode.com/users` (10 users),
|
||||
`https://jsonplaceholder.typicode.com/todos` (200 todos)
|
||||
- Record: 10 users, 200 todos; **90 of 200** todos completed
|
||||
- Columns: `id, name, username, email, city, todo_count, completed_count`
|
||||
- Produced: 2026-10-29 01:51:47Z (UTC, from `date -u`)
|
||||
|
||||
Artifacts: `users-census.md`, `users-census.csv`, `users-activity.json`,
|
||||
`extract_users.py` (reproducing the extraction), `CHECK` (verifier).
|
||||
- **Source:** Wikipedia — [List of countries and dependencies by population](https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_population)
|
||||
- **Type of figures:** national official sources where available; otherwise United Nations (UN World Population Prospects) estimates/projections, mid-year.
|
||||
- **Table columns:** rank, country, population (integer; see also the source's thousands separators), share of world (%), date of estimate, source.
|
||||
- **Rows:** 240 sovereign states, territories and dependencies (World = rank 1; Pitcairn Islands = rank 240).
|
||||
- **Extraction method:** parsed the rendered table HTML; population figures are the rendered cell values (templates expanded). Ref markers stripped from the `source` column.
|
||||
@@ -0,0 +1,241 @@
|
||||
rank,country,population,share,date,source
|
||||
1,World,8232000000,100%,13 Jun 2025,UN projection[1]
|
||||
2,India,1429404000,17.3%,1 Jul 2026,Official projection
|
||||
3,China,1404890000,17.0%,31 Dec 2025,Official estimate
|
||||
4,United States,341784857,4.1%,1 Jul 2025,Official estimate
|
||||
5,Indonesia,290125073,3.5%,30 Jun 2026,National annual projection
|
||||
6,Pakistan,241499431,2.9%,1 Mar 2023,2023 census result
|
||||
7,Nigeria,223800000,2.7%,1 Jul 2023,Official projection
|
||||
8,Brazil,214211951,2.6%,1 Jul 2026,Official estimate
|
||||
9,Bangladesh,169828911,2.1%,14 Jun 2022,2022 census result
|
||||
10,Russia,146028325,1.8%,1 Jan 2025,Official estimate
|
||||
11,Mexico,131231919,1.6%,30 Jun 2026,National quarterly estimate
|
||||
12,Japan,122690000,1.5%,1 Oct 2026,Monthly national estimate
|
||||
13,Democratic Republic of the Congo,116452162,1.4%,1 Jul 2026,UN projection
|
||||
14,Philippines,114849400,1.4%,1 Jul 2026,Official projection
|
||||
15,Ethiopia,111652998,1.3%,1 Jul 2025,National annual projection
|
||||
16,Egypt,108613296,1.3%,1 Jan 2026,Official estimate
|
||||
17,Vietnam,102300000,1.2%,31 Dec 2025,Official estimate
|
||||
18,Iran,87134000,1.1%,21 Mar 2026,Official estimate
|
||||
19,Turkey,86092168,1.0%,31 Dec 2025,Official estimate
|
||||
20,Germany,83298787,1.0%,30 Jun 2026,National quarterly estimate
|
||||
21,Thailand,70250751,0.8%,2025,Preliminary census results
|
||||
22,Tanzania,70038850,0.8%,1 Jul 2026,Official projection
|
||||
23,United Kingdom,69487000,0.8%,30 Jun 2025,Official estimate
|
||||
24,France,69081996,0.8%,1 Jan 2026,Yearly national estimate
|
||||
25,South Africa,63522380,0.8%,30 Jun 2026,Official estimate
|
||||
26,Italy,58949500,0.7%,31 Jul 2026,Monthly national estimate
|
||||
27,Kenya,54227015,0.7%,1 Jul 2026,Official projection
|
||||
28,Colombia,53399171,0.6%,1 Jan 2026,Official projection
|
||||
29,Sudan,53282719,0.6%,1 Jul 2026,UN projection
|
||||
30,Myanmar,51375327,0.6%,15 Oct 2024,2024 census result
|
||||
31,South Korea,51088284,0.6%,31 Jul 2026,Monthly national estimate
|
||||
32,Spain,49801559,0.6%,1 Jul 2026,National quarterly estimate
|
||||
33,Algeria,47400000,0.6%,1 Jan 2025,National annual projection
|
||||
34,Argentina,46466688,0.6%,1 Jul 2026,National annual projection
|
||||
35,Iraq,46118793,0.6%,21 Nov 2024,2024 census result
|
||||
36,Uganda,45905417,0.6%,10 May 2024,2024 census result
|
||||
37,Afghanistan,43844000,0.5%,1 Jul 2025,UN projection[41][42] (see note)
|
||||
38,Canada,41798407,0.5%,1 Jul 2026,National quarterly estimate
|
||||
39,Uzbekistan,39047321,0.5%,15 Jan 2026,2026 census result
|
||||
40,Angola,38778554,0.5%,1 Jan 2026,National estimate
|
||||
41,Morocco,37254695,0.4%,1 Jul 2026,National annual projection
|
||||
42,Poland,37221000,0.4%,31 Aug 2026,Monthly national estimate
|
||||
43,Saudi Arabia,35300280,0.4%,1 Jul 2024,Official estimate
|
||||
44,Mozambique,34958973,0.4%,1 Jul 2026,National annual projection
|
||||
45,Malaysia,34389400,0.4%,30 Jun 2026,National quarterly estimate
|
||||
46,Ghana,34378768,0.4%,1 Jul 2026,National annual projection
|
||||
47,Peru,34157732,0.4%,4 Aug 2025,Census 2025
|
||||
48,Ivory Coast,33293101,0.4%,1 Jul 2026,National annual projection
|
||||
49,Yemen,32684503,0.4%,1 Jul 2023,Official estimate
|
||||
50,Madagascar,32658977,0.4%,1 Jul 2026,National annual projection
|
||||
51,Nepal,30034040,0.4%,1 Jul 2026,National annual projection
|
||||
52,Cameroon,29442327,0.4%,1 Jul 2025,National annual projection
|
||||
53,Ukraine,28700000,0.3%,1 Sep 2025,State migration service
|
||||
54,Venezuela,28633711,0.3%,1 Jul 2026,UN projection
|
||||
55,Australia,27921150,0.3%,31 Mar 2026,Official projection
|
||||
56,Niger,27522750,0.3%,1 Jul 2025,National annual projection
|
||||
57,Syria,26472497,0.3%,1 Jul 2026,Monthly estimate
|
||||
58,North Korea,25950000,0.3%,1 Jul 2024,National annual projection
|
||||
59,Burkina Faso,24736828,0.3%,1 Jul 2026,Official projection
|
||||
60,Mali,23929000,0.3%,1 Jul 2024,Official projection
|
||||
61,Taiwan,23213251,0.3%,30 Sep 2026,Official estimate
|
||||
62,Zambia,23003214,0.3%,1 Jul 2026,Official estimate
|
||||
63,Sri Lanka,21778000,0.3%,1 Jul 2026,Official estimate
|
||||
64,Malawi,21201635,0.3%,1 Jul 2026,National annual projection
|
||||
65,Kazakhstan,20618796,0.2%,1 Sep 2026,Official estimate
|
||||
66,Somalia,20305907,0.2%,1 Jul 2026,UN projection
|
||||
67,Chile,20150948,0.2%,30 Jun 2026,National annual projection
|
||||
68,Chad,20031602,0.2%,1 Jul 2026,National annual projection
|
||||
69,Senegal,19575061,0.2%,1 Jul 2026,National annual projection
|
||||
70,Romania,19041322,0.2%,1 Jan 2026,Official estimate
|
||||
71,Guatemala,18312373,0.2%,1 Jul 2026,National annual projection
|
||||
72,Ecuador,18243816,0.2%,1 Jul 2026,National annual projection
|
||||
73,Netherlands,18192693,0.2%,30 Sep 2026,Official estimate
|
||||
74,Cambodia,17816143,0.2%,1 Jul 2026,Official projection
|
||||
75,Guinea,17521167,0.2%,1 Jul 2025,Census July 2025
|
||||
76,Zimbabwe,16175966,0.2%,1 Jul 2026,Official projection
|
||||
77,South Sudan,15786898,0.2%,1 Jul 2025,National annual projection
|
||||
78,Rwanda,14418145,0.2%,1 Jul 2026,National annual projection
|
||||
79,Benin,13551992,0.2%,1 Jul 2026,National annual projection
|
||||
80,Burundi,12332788,0.1%,16 Aug 2024,Preliminary census result
|
||||
81,Tunisia,11992843,0.1%,1 Jan 2026,National estimate
|
||||
82,Belgium,11944011,0.1%,1 Aug 2026,Official estimate
|
||||
83,Jordan,11937000,0.1%,31 Dec 2025,National estimate
|
||||
84,Haiti,11867032,0.1%,1 Jul 2024,National annual projection
|
||||
85,Portugal,11424031,0.1%,31 Dec 2025,Official estimate
|
||||
86,Bolivia,11365333,0.1%,23 Mar 2024,2024 census result
|
||||
87,United Arab Emirates,11294243,0.1%,31 Dec 2024,Official estimate
|
||||
88,Czech Republic,10903655,0.1%,30 Jun 2026,Official estimate
|
||||
89,Dominican Republic,10771504,0.1%,10 Nov 2022,2022 census result
|
||||
90,Tajikistan,10721000,0.1%,1 Jan 2026,Official estimate
|
||||
91,Sweden,10621103,0.1%,31 Aug 2026,Monthly national estimate
|
||||
92,Greece,10372335,0.1%,1 Jan 2025,Official estimate
|
||||
93,Israel,10296300,0.1%,30 Sep 2026,Monthly national estimate
|
||||
94,Azerbaijan,10273450,0.1%,1 Jul 2026,Monthly national estimate
|
||||
95,Honduras,10186738,0.1%,1 Jul 2026,National annual projection
|
||||
96,Papua New Guinea,10185363,0.1%,16 Jun 2024,2024 census result
|
||||
97,Hungary,9488428,0.1%,1 Jan 2026,Official estimate
|
||||
98,Cuba,9434593,0.1%,31 Dec 2025,Official estimate
|
||||
99,Sierra Leone,9270700,0.1%,1 Jul 2026,National annual projection
|
||||
100,Austria,9217573,0.1%,1 Jul 2026,National quarterly estimate
|
||||
101,Switzerland,9154896,0.1%,30 Jun 2026,National quarterly estimate
|
||||
102,Belarus,9056080,0.1%,1 Jan 2026,Official estimate
|
||||
103,Togo,8095498,0.10%,8 Nov 2022,2022 census result
|
||||
104,Laos,7745000,0.09%,1 Jul 2025,National annual projection
|
||||
105,Libya,7539852,0.09%,1 Jul 2026,UN projection
|
||||
106,Hong Kong (China),7518300,0.09%,30 Jun 2026,National estimate
|
||||
107,Kyrgyzstan,7404300,0.09%,1 Jan 2026,Monthly national estimate
|
||||
108,Turkmenistan,7057841,0.09%,17 Dec 2022,2022 census result
|
||||
109,Nicaragua,6874748,0.08%,30 Jun 2024,Official estimate
|
||||
110,Serbia,6532019,0.08%,1 Jan 2026,Official estimate
|
||||
111,Central African Republic,6470307,0.08%,1 Jul 2024,National annual projection
|
||||
112,Bulgaria,6423207,0.08%,31 Dec 2025,Official estimate
|
||||
113,Singapore,6208500,0.07%,30 Jun 2026,National annual projection
|
||||
114,Republic of the Congo,6142180,0.07%,17 May 2023,2023 census result
|
||||
115,Paraguay,6109644,0.07%,9 Nov 2022,2022 census result
|
||||
116,Denmark,6038638,0.07%,1 Sep 2026,Monthly national estimate
|
||||
117,El Salvador,6029976,0.07%,2 May 2024,2024 census result
|
||||
118,Lebanon,5895466,0.07%,2026,Official estimate
|
||||
119,Finland,5662086,0.07%,30 Sep 2026,Monthly national estimate
|
||||
120,Norway,5636904,0.07%,30 Jun 2026,National quarterly estimate
|
||||
121,Palestine,5557096,0.07%,31 Dec 2025,National annual projection
|
||||
122,Ireland,5525600,0.07%,1 Apr 2026,National estimate
|
||||
123,Oman,5454352,0.07%,30 Sep 2026,Monthly national estimate
|
||||
124,Slovakia,5403009,0.07%,30 Jun 2026,National quarterly estimate
|
||||
125,New Zealand,5357300,0.06%,30 Jun 2026,National quarterly estimate
|
||||
126,Liberia,5248621,0.06%,10 Nov 2022,2022 census result
|
||||
127,Costa Rica,5217296,0.06%,30 Jun 2026,National annual projection
|
||||
128,Mauritania,4927532,0.06%,25 Dec 2023,2023 census result
|
||||
129,Kuwait,4881254,0.06%,1 Jan 2025,Official estimate
|
||||
130,Panama,4064780,0.05%,1 Jul 2026,2023 census result
|
||||
131,Georgia,3941100,0.05%,1 Jan 2026,Official estimate
|
||||
132,Croatia,3874993,0.05%,1 Jul 2025,Official estimate
|
||||
133,Eritrea,3682669,0.04%,1 Jul 2026,UN projection[115] (see note)
|
||||
134,Mongolia,3591120,0.04%,31 Dec 2025,National annual projection
|
||||
135,Uruguay,3480601,0.04%,30 Jun 2026,National annual projection
|
||||
136,Bosnia and Herzegovina,3412000,0.04%,1 Jul 2024,Official estimate
|
||||
137,Qatar,3370611,0.04%,31 Mar 2026,Monthly national estimate
|
||||
138,Puerto Rico (US),3184835,0.04%,1 Jul 2025,Annual projection
|
||||
139,Armenia,3103900,0.04%,1 Jan 2026,Official estimate
|
||||
140,Namibia,3022401,0.04%,24 Sep 2023,2023 Census
|
||||
141,Lithuania,2889444,0.03%,1 Oct 2026,Monthly national estimate
|
||||
142,Jamaica,2774538,0.03%,12 Sep 2022,2022 census result
|
||||
143,Botswana,2515633,0.03%,1 Jul 2026,Official estimate
|
||||
144,Gabon,2469296,0.03%,1 Jul 2025,National annual projection
|
||||
145,Gambia,2422712,0.03%,1 May 2024,Preliminary census results
|
||||
146,Moldova,2365600,0.03%,1 Jan 2026,Official estimate
|
||||
147,Albania,2335930,0.03%,1 Jan 2026,Official estimate
|
||||
148,Slovenia,2138751,0.03%,1 Jul 2026,National quarterly estimate
|
||||
149,Lesotho,2116427,0.03%,2024,Official survey
|
||||
150,Guinea-Bissau,1890252,0.02%,1 Jul 2026,National annual projection[164][dubious – discuss]
|
||||
151,Latvia,1829800,0.02%,1 Sep 2026,Monthly national estimate
|
||||
152,North Macedonia,1819074,0.02%,31 Dec 2025,Official estimate
|
||||
153,Equatorial Guinea,1727151,0.02%,1 Jul 2025,Official estimate
|
||||
154,Bahrain,1603260,0.02%,30 Jun 2025,Official estimate
|
||||
155,Kosovo,1582322,0.02%,31 Dec 2025,2024 national census
|
||||
156,Timor-Leste,1409452,0.02%,1 Jul 2026,National annual projection
|
||||
157,Trinidad and Tobago,1367764,0.02%,30 Jun 2025,Official estimate
|
||||
158,Estonia,1360745,0.02%,1 Jan 2026,Official estimate
|
||||
159,Mauritius,1240316,0.01%,30 Jun 2026,National estimate
|
||||
160,Eswatini,1235549,0.01%,1 Jul 2024,Official projection
|
||||
161,Djibouti,1066809,0.01%,20 May 2024,2024 census result
|
||||
162,Cyprus,996600,0.01%,31 Dec 2025,Official estimate
|
||||
163,Guyana,956044,0.01%,31 Dec 2024,Official estimate
|
||||
164,Comoros,944388,0.01%,2026,Official estimate
|
||||
165,Fiji,902623,0.01%,1 Jan 2026,National annual projection
|
||||
166,Bhutan,790718,0.010%,2026,National annual projection
|
||||
167,Solomon Islands,750325,0.009%,1 Jul 2024,National annual projection
|
||||
168,Luxembourg,690959,0.008%,1 Jan 2026,Official estimate
|
||||
169,Macau (China),686500,0.008%,30 Jun 2026,National quarterly estimate
|
||||
170,Montenegro,622902,0.008%,1 Jan 2026,Official estimate
|
||||
171,Suriname,616500,0.007%,1 Jul 2021,Official estimate
|
||||
172,Western Sahara (disputed),610813,0.007%,1 Jul 2026,UN projection
|
||||
173,Malta,588254,0.007%,31 Dec 2025,Official estimate
|
||||
174,Maldives,515132,0.006%,13 Sep 2022,2022 census result
|
||||
175,Cape Verde,491233,0.006%,16 Jun 2021,2021 census result
|
||||
176,Northern Cyprus,476214,0.006%,31 Dec 2023,Official projection
|
||||
177,Brunei,458600,0.006%,1 Jul 2025,Official estimate
|
||||
178,Belize,418982,0.005%,1 Jul 2026,Official estimate
|
||||
179,Bahamas,398165,0.005%,4 Apr 2022,2022 census result
|
||||
180,Iceland,396500,0.005%,1 Jul 2026,National quarterly estimate
|
||||
181,Transnistria,367776,0.004%,31 Mar 2024,Official estimate
|
||||
182,Vanuatu,321409,0.004%,1 Jul 2024,National annual projection
|
||||
183,French Polynesia (France),279500,0.003%,31 Dec 2025,National annual projection
|
||||
184,New Caledonia (France),264596,0.003%,1 Jan 2025,National annual projection
|
||||
185,Barbados,261692,0.003%,31 Dec 2025,Official estimate
|
||||
186,Abkhazia,244236,0.003%,1 Jan 2022,Official estimate
|
||||
187,São Tomé and Príncipe,209607,0.003%,2024,Preliminary census result
|
||||
188,Samoa,205557,0.002%,6 Nov 2021,2021 Census
|
||||
189,Saint Lucia,184100,0.002%,1 Jul 2023,Official estimate
|
||||
190,Curaçao (Netherlands),158006,0.002%,1 Jan 2026,Official estimate
|
||||
191,Guam (US),153836,0.002%,1 Apr 2020,2020 census result
|
||||
192,Seychelles,123565,0.001%,30 Jun 2026,Official estimate
|
||||
193,Kiribati,120740,0.001%,1 Jul 2021,National annual projection
|
||||
194,Aruba (Netherlands),110625,0.001%,31 Dec 2025,Official estimate
|
||||
195,Saint Vincent and the Grenadines,109296,0.001%,15 Jun 2023,2023 census result
|
||||
196,Grenada,109021,0.001%,2021,Preliminary Census results
|
||||
197,Antigua and Barbuda,106365,0.001%,1 Jan 2026,Official estimate
|
||||
198,Jersey (UK),104540,0.001%,31 Dec 2024,2021 census result
|
||||
199,Tonga,100179,0.001%,30 Nov 2021,2021 census result
|
||||
200,Andorra,90122,0.001%,30 Sep 2026,Monthly national estimate
|
||||
201,Cayman Islands (UK),88833,0.001%,31 Dec 2024,National annual projection
|
||||
202,U.S. Virgin Islands (US),87146,0.001%,1 Apr 2020,2020 census result
|
||||
203,Isle of Man (UK),84975,0.001%,1 Apr 2025,Official estimate
|
||||
204,Micronesia,75817,0.0009%,12 Feb 2023,2023 Census
|
||||
205,Dominica,65431,0.0008%,2026,Official estimate
|
||||
206,Guernsey (UK),64781,0.0008%,31 Dec 2023,National quarterly estimate
|
||||
207,Bermuda (UK),64055,0.0008%,1 Jul 2021,National annual projection
|
||||
208,Greenland (Denmark),56945,0.0007%,1 Jul 2026,National quarterly estimate
|
||||
209,South Ossetia,56520,0.0007%,31 Dec 2021,Official estimate
|
||||
210,Faroe Islands (Denmark),55640,0.0007%,1 Sep 2026,Monthly national estimate
|
||||
211,Turks and Caicos Islands (UK),52299,0.0006%,1 Jul 2025,Official estimate
|
||||
212,Saint Kitts and Nevis,51320,0.0006%,2022,2022 census result
|
||||
213,American Samoa (US),49710,0.0006%,1 Apr 2020,2020 census result
|
||||
214,Northern Mariana Islands (US),47329,0.0006%,1 Apr 2020,2020 census result
|
||||
215,Marshall Islands,42418,0.0005%,30 Sep 2021,2021 Census
|
||||
216,Sint Maarten (Netherlands),41349,0.0005%,1 Jan 2025,Official estimate
|
||||
217,Liechtenstein,41228,0.0005%,31 Dec 2025,National estimate
|
||||
218,British Virgin Islands (UK),39471,0.0005%,1 Jul 2024,UN projection
|
||||
219,Monaco,38857,0.0005%,31 Dec 2025,Census
|
||||
220,Gibraltar (UK),38196,0.0005%,14 Nov 2022,Preliminary census results
|
||||
221,San Marino,34151,0.0004%,30 Sep 2026,Monthly national estimate
|
||||
222,Saint Martin (France),31496,0.0004%,1 Jan 2025,Official estimate
|
||||
223,Palau,16733,0.0002%,1 Jul 2021,2021 Census
|
||||
224,Anguilla (UK),16010,0.0002%,31 Dec 2024,Official estimate
|
||||
225,Cook Islands (New Zealand),15040,0.0002%,1 Jul 2021,2021 Census
|
||||
226,Nauru,11680,0.0001%,30 Oct 2021,2021 Census
|
||||
227,Wallis and Futuna (France),11620,0.0001%,24 Jul 2023,2023 Census
|
||||
228,Tuvalu,10643,0.0001%,12 Dec 2022,2022 Census
|
||||
229,Saint Barthélemy (France),10562,0.0001%,1 Jan 2025,Official estimate
|
||||
230,Saint Pierre and Miquelon (France),5819,0%,1 Jan 2025,Official estimate
|
||||
231,Saint Helena\, Ascension and Tristan da Cunha (UK),5651,0%,1 Jul 2021,2021 Census[240][241]
|
||||
232,Montserrat (UK),4386,0%,23 Sep 2023,2023 census result
|
||||
233,Falkland Islands (UK),3662,0%,10 Oct 2021,2021 census result
|
||||
234,Tokelau (New Zealand),2608,0%,1 Jan 2025,2025 Census
|
||||
235,Norfolk Island (Australia),2188,0%,1 Jan 2021,2021 Census
|
||||
236,Christmas Island (Australia),1692,0%,1 Jan 2021,2021 Census
|
||||
237,Niue (New Zealand),1681,0%,11 Nov 2022,2022 Census
|
||||
238,Vatican City,882,0%,31 Dec 2024,Official figure
|
||||
239,Cocos (Keeling) Islands (Australia),593,0%,30 Jun 2020,2021 Census
|
||||
240,Pitcairn Islands (UK),35,0%,2023,Official estimate
|
||||
|
+118
@@ -0,0 +1,118 @@
|
||||
#!/bin/bash
|
||||
# CHECK change-request-template-v1.0
|
||||
# Verifies the draft artifact meets schema requirements.
|
||||
# Exit 0 = PASS, 1 = FAIL, 2 = cannot grade (missing file).
|
||||
|
||||
set -euo pipefail
|
||||
FILE="/root/troupe-standup/wizard-work/quill/change-request-template-v1.0.md"
|
||||
|
||||
if [ ! -f "$FILE" ]; then
|
||||
echo "FAIL: artifact missing at $FILE"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
FAIL=0
|
||||
|
||||
# 1. File size > 3000 bytes
|
||||
BYTES=$(wc -c < "$FILE")
|
||||
if [ "$BYTES" -lt 3000 ]; then
|
||||
echo "FAIL: file too small ($BYTES bytes, minimum 3000)"
|
||||
FAIL=1
|
||||
else
|
||||
echo "PASS: size $BYTES bytes"
|
||||
fi
|
||||
|
||||
# 2. Required top-level sections (1-7)
|
||||
for i in 1 2 3 4 5 6 7; do
|
||||
if ! grep -q "^## ${i}\. " "$FILE"; then
|
||||
echo "FAIL: missing section '## ${i}. '"
|
||||
FAIL=1
|
||||
fi
|
||||
done
|
||||
grep -q "^## 1\. Purpose" "$FILE" && echo "PASS: section 1 present" || { echo "FAIL: section 1 missing"; FAIL=1; }
|
||||
grep -q "^## 7\. Changelog" "$FILE" && echo "PASS: section 7 present" || { echo "FAIL: section 7 missing"; FAIL=1; }
|
||||
|
||||
# 3. Fenced template block exists
|
||||
if ! grep -q '```markdown' "$FILE"; then
|
||||
echo "FAIL: no fenced template block"
|
||||
FAIL=1
|
||||
else
|
||||
echo "PASS: fenced template block present"
|
||||
fi
|
||||
|
||||
# 4. Required template fields present
|
||||
for field in "Risk Level" "Window" "Summary" "Scope" "Validation" "Rollback" "Approval"; do
|
||||
if ! grep -q "$field" "$FILE"; then
|
||||
echo "FAIL: missing template field '$field'"
|
||||
FAIL=1
|
||||
fi
|
||||
done
|
||||
grep -q "Risk Level" "$FILE" && echo "PASS: Risk Level field present" || FAIL=1
|
||||
grep -q "Low / Medium / High / Blocker" "$FILE" && echo "PASS: Risk Level enum defined" || FAIL=1
|
||||
|
||||
# 5. Example section present and free of unfilled placeholders
|
||||
if ! grep -q "^## 6\. Example" "$FILE"; then
|
||||
echo "FAIL: missing Example section"
|
||||
FAIL=1
|
||||
else
|
||||
echo "PASS: Example section present"
|
||||
fi
|
||||
|
||||
# Extract example block content: find fenced code block within Example section
|
||||
EXAMPLE_BLOCK=""
|
||||
IN_EXAMPLE=0
|
||||
IN_FENCE=0
|
||||
while IFS= read -r line; do
|
||||
if [[ "$line" =~ ^##[[:space:]]+6\. ]]; then
|
||||
IN_EXAMPLE=1
|
||||
elif [ "$IN_EXAMPLE" -eq 1 ] && [[ "$line" =~ ^##[[:space:]]+[0-9] ]]; then
|
||||
IN_EXAMPLE=0
|
||||
fi
|
||||
if [ "$IN_EXAMPLE" -eq 1 ] && [[ "$line" =~ ^\`\`\` ]]; then
|
||||
if [ "$IN_FENCE" -eq 0 ]; then
|
||||
IN_FENCE=1
|
||||
else
|
||||
IN_FENCE=0
|
||||
break
|
||||
fi
|
||||
continue
|
||||
fi
|
||||
if [ "$IN_FENCE" -eq 1 ]; then
|
||||
EXAMPLE_BLOCK="${EXAMPLE_BLOCK}${line}"$'\n'
|
||||
fi
|
||||
done < "$FILE"
|
||||
|
||||
if [ -n "$EXAMPLE_BLOCK" ]; then
|
||||
if echo "$EXAMPLE_BLOCK" | grep -q '\[PROJECT\]'; then
|
||||
echo "FAIL: example contains unfilled placeholder [PROJECT]"
|
||||
FAIL=1
|
||||
else
|
||||
echo "PASS: example free of [PROJECT]"
|
||||
fi
|
||||
if echo "$EXAMPLE_BLOCK" | grep -q '\[REQUESTOR\]'; then
|
||||
echo "FAIL: example contains unfilled placeholder [REQUESTOR]"
|
||||
FAIL=1
|
||||
else
|
||||
echo "PASS: example free of [REQUESTOR]"
|
||||
fi
|
||||
else
|
||||
echo "FAIL: could not extract example block"
|
||||
FAIL=1
|
||||
fi
|
||||
|
||||
# 6. Changelog table exists with v1.0 row
|
||||
if ! grep -q "| v1.0 " "$FILE"; then
|
||||
echo "FAIL: changelog missing v1.0 row"
|
||||
FAIL=1
|
||||
else
|
||||
echo "PASS: changelog v1.0 row present"
|
||||
fi
|
||||
|
||||
# Final
|
||||
if [ "$FAIL" -eq 0 ]; then
|
||||
echo "RESULT: PASS"
|
||||
exit 0
|
||||
else
|
||||
echo "RESULT: FAIL ($FAIL checks failed)"
|
||||
exit 1
|
||||
fi
|
||||
@@ -0,0 +1,133 @@
|
||||
# Change Request Template v1.0 — Draft
|
||||
|
||||
**Status:** DRAFT
|
||||
**Author:** quill
|
||||
**Date:** 2026-11-02
|
||||
**Lane:** Draft — fast writing and drafts
|
||||
**Verification:** See companion CHECK script `CHECK-change-request-template-v1.0`
|
||||
|
||||
---
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This template standardizes change requests across the troupe so reviewers can
|
||||
scan scope, risk, and rollback in under 60 seconds. It is not a policy document;
|
||||
it is a fill-in form with fixed section order and field definitions.
|
||||
|
||||
## 2. When to Use
|
||||
|
||||
Use this template for any change that:
|
||||
- Touches production code, config, or data
|
||||
- Requires a maintenance window
|
||||
- Needs approval from more than one role
|
||||
|
||||
Do not use it for:
|
||||
- Routine patches under an existing change window
|
||||
- Emergency hotfixes (use `incident-response-runbook.md` instead)
|
||||
|
||||
## 3. Template
|
||||
|
||||
```markdown
|
||||
# Change Request — [CHG-YYYYMMDD-NN]
|
||||
|
||||
| Field | Value |
|
||||
|---------------|-----------------------------|
|
||||
| Project | [PROJECT] |
|
||||
| Requestor | [REQUESTOR] |
|
||||
| Date | [YYYY-MM-DD] |
|
||||
| Change ID | [CHG-YYYYMMDD-NN] |
|
||||
| Risk Level | Low / Medium / High / Blocker |
|
||||
| Window | [YYYY-MM-DD HH:MM–HH:MM UTC]|
|
||||
|
||||
## Summary
|
||||
One sentence: what is changing and why.
|
||||
|
||||
## Scope
|
||||
- In scope:
|
||||
- Out of scope:
|
||||
|
||||
## Dependencies
|
||||
- Systems affected:
|
||||
- Teams notified:
|
||||
|
||||
## Validation
|
||||
- Test command / evidence:
|
||||
- Success criteria:
|
||||
|
||||
## Rollback
|
||||
1.
|
||||
2.
|
||||
3. Trigger: [metric or time]
|
||||
|
||||
## Approval
|
||||
- [ ] Technical Lead
|
||||
- [ ] Change Manager
|
||||
- [ ] Security (if data/auth touched)
|
||||
```
|
||||
|
||||
## 4. Field Definitions
|
||||
|
||||
| Field | Rules |
|
||||
|---------------|-----------------------------------------------------------------------|
|
||||
| Risk Level | Must be exactly one of Low, Medium, High, Blocker. No free text. |
|
||||
| Window | Must include UTC offset. Format: `YYYY-MM-DD HH:MM–HH:MM UTC`. |
|
||||
| Summary | ≤ 120 characters. No line breaks. |
|
||||
| Scope | Minimum one bullet each for in-scope and out-of-scope. |
|
||||
| Validation | Must name a concrete command, log path, or metric. No adjectives. |
|
||||
| Rollback | Minimum three ordered steps. |
|
||||
| Approval | Minimum two roles. Security required iff scope touches auth/data. |
|
||||
|
||||
## 5. Evidence Requirement
|
||||
|
||||
Every field marked **must** is a testable constraint. The companion CHECK script
|
||||
verifies presence, format, and minimum count. Empty placeholders (`[PROJECT]`,
|
||||
`[YYYY-MM-DD]`, `[...]`) fail the check.
|
||||
|
||||
## 6. Example (Reference)
|
||||
|
||||
```markdown
|
||||
# Change Request — CHG-20261102-01
|
||||
|
||||
| Field | Value |
|
||||
|---------------|-----------------------------|
|
||||
| Project | Timmy Bowel-Health Journal |
|
||||
| Requestor | quill |
|
||||
| Date | 2026-11-02 |
|
||||
| Change ID | CHG-20261102-01 |
|
||||
| Risk Level | Medium |
|
||||
| Window | 2026-11-03 02:00–03:00 UTC |
|
||||
|
||||
## Summary
|
||||
Add daily summary aggregation cron job for the Timmy journal pipeline.
|
||||
|
||||
## Scope
|
||||
- In scope: cron job, aggregation script, daily summary markdown output
|
||||
- Out of scope: UI changes, data migration, alert routing
|
||||
|
||||
## Dependencies
|
||||
- Systems affected: cron daemon, journal storage bucket
|
||||
- Teams notified: #timmy-ops
|
||||
|
||||
## Validation
|
||||
- Command: `python3 /opt/timmy/aggregate.py --dry-run`
|
||||
- Success criteria: exit 0, summary file present at `/var/log/timmy/summary.md`
|
||||
|
||||
## Rollback
|
||||
1. Disable cron entry `timmy-summary`
|
||||
2. Remove generated summary directory `/var/log/timmy/summary/`
|
||||
3. Restore prior config from `/opt/timmy/config.yaml.bak`
|
||||
Trigger: aggregation exit code nonzero or summary file missing after 10 minutes
|
||||
|
||||
## Approval
|
||||
- [x] Technical Lead
|
||||
- [x] Change Manager
|
||||
- [ ] Security (data touched: PHI not in scope)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Changelog
|
||||
|
||||
| Version | Date | Author | Change |
|
||||
|---------|------------|--------|-------------------------------------|
|
||||
| v1.0 | 2026-11-02 | quill | Initial structured draft with schema|
|
||||
Reference in new issue
Block a user